Перейти к содержанию

HRMonitor автоматическое переключение майнеров при понижении hashrate или при повышении прибыльности, инструмент для сбора статистики по монетам или алгоритмам и просто органайзер батников


Serzh Black

Рекомендуемые сообщения

исправления и добавления в 0.69:

 

по нажатию [C]

1. профит в USD показывается даже если программа считает его в юанях

2. отображается количество монет в день

3. отображается количество блоков в день (для соло)

 

вообще из программы получается еще и не плохой онлайн калькулятор профита (сам не похвалишь, никто не похвалит ))))). Онлайн не в том смысле, что надо заполнить форму на сайте и получить одноразовую чушь, а в том плане, что данные оперативно подтягиваются из надежных источников и прогноз обновляется раз в минуту.

 

Изменено пользователем Serzh Black
Ссылка на комментарий
Поделиться на другие сайты

TradeSatoshi API постоянно отваливается, помогите правильно написать регулярное выражение под coinmarketcap

 

Пробовал так

 

        my $coinrate = &GetContentFromURL("https://api.coinmarketcap.com/v1/ticker/bitcoin-private/?convert=BTC");
        $CStat{$c}{rate} = $1 if $coinrate =~ /\{"id": "bitcoin-private",.+?"price_btc": "(\d+\.\d+)"\}/;

 

и так

 

        my $coinrate = &GetContentFromURL("https://api.coinmarketcap.com/v1/ticker/bitcoin-private/");

        $CStat{$c}{rate} = $1 if $coinrate =~ /"price_btc": "(\d+\.\d+)"/;

 

Всё равно ошибка


 

 

 

 

Ссылка на комментарий
Поделиться на другие сайты

вот это вариант точно работает

$CStat{$c}{rate} = $1 if $coinrate =~ /"price_btc": "(\d+\.\d+)"/;

Ссылка на комментарий
Поделиться на другие сайты

1 час назад, Serzh Black сказал:

вот это вариант точно работает

$CStat{$c}{rate} = $1 if $coinrate =~ /"price_btc": "(\d+\.\d+)"/;

 

Кидаю конфиг в личку, а то беда вообще

 

image.thumb.png.f180a10772f5b36e686443da90acc2f6.png

Ссылка на комментарий
Поделиться на другие сайты

а блокревард и блоктайм для btcp вы где берете? если нигде и не задаете вручную, то как же оно посчитается?

смотрите еще раз пример для ravencoin.

а курс с биржи берется правильно.

Ссылка на комментарий
Поделиться на другие сайты

для расчетов профита в битках всего навсего нужно: блоктайм, блокревард, хэшрейт и курс.

 

чтобы проверить достаточно ли данных и какие данные скормлены программе можно на этапе отладки добавить в eval монет(ы) в самом конце такую строчку: print " - $c: $CStat{$c}{hr} - $CStat{$c}{br} - $CStat{$c}{bt} - $CStat{$c}{rate}\n";

 

    eval     => '
        $CStat{$c}{hr} =~ s/,//g;
        $CStat{$c}{algo} = "Equihash";
        $CStat{$c}{hr} = $CStat{$c}{hr}*1000;
        my $coinrate = &GetContentFromURL("https://api.coinmarketcap.com/v1/ticker/bitcoin-private/?convert=BTC");
        $CStat{$c}{rate} = $1 if $coinrate =~ /"price_btc": "(\d+\.\d+)"/;
        print " - $c: $CStat{$c}{hr} - $CStat{$c}{br} - $CStat{$c}{bt} - $CStat{$c}{rate}\n";
    ',

если будут пустоты - то данных недостаточно

 

Ссылка на комментарий
Поделиться на другие сайты

Использование профита с yiimp пулов, полагаю, вопросов не вызывает. А для самостоятельного расчета профита составил небольшой пример. Думаю, если его разобрать, потом провести эксперименты с другой монетой, то в дальнейшем вы будете описывать новые монеты не глядя. Достаточно будет скопировать нужный вариант из примера конфига и исправить данные.

 

запуск:

hrm.exe --profit --nowindows

 

пример конфига (hrm.cfg) с комментариями:

%VARS = (
	'EV'  => '
		# необязательный кусок кода, который нужен лишь для отображения и сравнения сложностей из разных источников
		print " - WTM difficulty: $CStat{GBX1}{diffwtm}\n";
		print " - Block explorer difficulty: $CStat{GBX4}{diff}\n";
		print " - Check results here: http://whattomine.com/coins/225-gbx-neoscrypt\n";
	',
);

###################################################################
# COINS                                                           #
###################################################################

%C = (

# данные с WTM. расчет профита по HR
'GBX1' =>
{
	'wtmname'     => 'GoByte',
	'skip'        => 'monitor',
},

# данные с WTM. расчет профита по diff
'GBX2' =>
{
	'wtmname'     => 'GoByte',
	'skip'        => 'monitor',
	'eval'        => '
		# пересчет сложности в HR (HRM считает по мощности)
		# для dagger hashimoto формула не должна содержать 0x100000000
		$CStat{$c}{hr} = $CStat{$c}{diffwtm}*0x100000000/$CStat{$c}{bt};
	',
},

# данные с WTM. HR с block explorer. расчет профита по HR
'GBX3' =>
{
	'wtmname'     => 'GoByte',
	'skip'        => 'monitor',
	'hrurl'       => 'https://explorer.gobyte.network/api/getmininginfo',
	'hrregexp'    => '"networkhashps": (.*?),',
},

# данные с WTM. diff с block explorer. расчет профита по diff
# рекомендуемый вариант для монет которые есть на WTM
# если биржевой курс WTM устраивает
'GBX4' =>
{
	'wtmname'     => 'GoByte',
	'skip'        => 'monitor',
	'hrurl'       => 'https://explorer.gobyte.network/api/getmininginfo',
	'hrregexp'    => '"difficulty": (.*?),',
	'eval'        => '
		# сохраним diff только лишь для сравнения с WTM. 
		$CStat{$c}{diff} = $CStat{$c}{hr};
		# пересчет diff в HR
		$CStat{$c}{hr} = $CStat{$c}{hr}*0x100000000/$CStat{$c}{bt};
	',
},

# данные с WTM. diff с block explorer. курс с биржи. расчет профита по diff
# рекомендуемый вариант для монет которые есть на WTM
# в действительности в этом примере нам с WTM нужен только алгоритм и block reward,
# block time при расчете по diff не нужен, а курс мы берем с биржи
'GBX5' =>
{
	'wtmname'     => 'GoByte',
	'skip'        => 'monitor',
	'hrurl'       => 'https://explorer.gobyte.network/api/getmininginfo',
	'hrregexp'    => '"difficulty": (.*?),',
	'eval'        => '
		# пересчет diff в HR
		$CStat{$c}{hr} = $CStat{$c}{hr}*0x100000000/$CStat{$c}{bt};
		# курс с биржи
		my $prices = &GetContentFromURL("https://stocks.exchange/api2/prices");
		$CStat{$c}{rate} = $1 if $prices =~ /\{"buy":"(\d+\.?\d*)","sell":"\d+\.?\d*","market_name":"GBX_BTC"/;
	',
},

# все данные заданны вручную. 
# diff с block explorer. курс с биржи. расчет профита по diff
# рекомендуемый вариант для монет которых нет на WTM
'GBX6' =>
{
	'wtmname'     => 'любое имя которого нет на WTM',
	'skip'        => 'monitor',
	'hrurl'       => 'https://explorer.gobyte.network/api/getmininginfo',
	'hrregexp'    => '"difficulty": (.*?),',
	'eval'        => '
		# обозначим алгоритм монеты. обязательно!
		$CStat{$c}{algo} = "NeoScrypt";
		# block reward. обязательно!
		$CStat{$c}{br} = 7.5;
		# block time в секундах. может быть любым, если расчет по diff
		# но лучше указывать правильное значение
		$CStat{$c}{bt} = 150;
		# пересчет сложности в HR
		$CStat{$c}{hr} = $CStat{$c}{hr}*0x100000000/$CStat{$c}{bt};
		# курс с биржи
		my $prices = &GetContentFromURL("https://stocks.exchange/api2/prices");
		$CStat{$c}{rate} = $1 if $prices =~ /\{"buy":"(\d+\.?\d*)","sell":"\d+\.?\d*","market_name":"GBX_BTC"/;
	',
},

);

%ALGSHR = ('NeoScrypt'     => '2');

1;

 

ЗЫ: обновил версию, в которой сохраняется сложность с WTM и которую можно использовать в программе

 

 

 

Изменено пользователем Serzh Black
Ссылка на комментарий
Поделиться на другие сайты

Ну тогда ещё подскажи необразованному, где брать block reward на примере suprnova

Изменено пользователем Riva
Ссылка на комментарий
Поделиться на другие сайты

Причем тут пул? Посмотрите примеры. Для вас в первую очередь и публикую. Еще раз повторю: из спецификации монеты

Ссылка на комментарий
Поделиться на другие сайты

@Riva Можете взять с WTM:  https://whattomine.com/coins.json. По каждой монете есть "block_time": и "block_reward":

Ссылка на комментарий
Поделиться на другие сайты

Спасибо, с этим разобрался.

 

А что делать с теми монетами у которых нет ещё биржевого курса и вообще неизвестна стоимость. Например, монета Transend TCS. Как присвоить такой монете жёсткий показатель цены (временно) скажем в 0.000001 BTC (0.01$ примерно). Саму цену стартовую примерно можно прикинуть исходя из количества монет.

 

Вообщем как задать постоянную константу цены?

Изменено пользователем Riva
Ссылка на комментарий
Поделиться на другие сайты

HRM v.0.71

 

Теперь в профит режиме используется значение {hrlimit} монеты. Это индивидуальный аналог общего лимита по монетам $VARS{LT}

 

Как это использовать

 

В процессе мониторинга одной монеты (и всех ее форков) было выяснено, что сложность сети меняется слишком редко. Это вызывает следующее: месяц блокчейн монеты находится в анабиозе в результате слишком высокой сложности. Хотя пулы и самостоятельные вычисления в HRM показывают не плохой профит по этой монете, на самом деле это не так. Мощность мала, блоки находятся существенно реже значения block time, разработчикам даже приходится арендовать мощности, чтобы сеть жила. Примерно через месяц сеть корректирует сложность, она падает раз в 5, соответственно профит в 5 раз вверх. Т.к. сложность фиксирована, то профит постоянен и не зависит от количества майнеров (мощности сети). Блоки сыпятся как из рога изобилия, но такой "клондайк" продолжается день-два, затем сложность вверх, майнеры уходят, и все повторяется.

 

Установка {hrlimit} для таких монет позволит HRM не майнить монету не смотря на хороший вычисленный профит (это все враки!) и поймать момент резкого падения сложности. Устанавливаем {hrlimit} в значение ниже которого монета будет находиться на паузе и будет исключена из майнинга. Когда профит "подскочит" HRM снимет паузу и включит монету в майнинг. День майнинга в это время по профиту, как правило, равносилен неделе при обычных раскладах

 

Изменено пользователем Serzh Black
Ссылка на комментарий
Поделиться на другие сайты

@Riva 

5 часов назад, Riva сказал:

Вообщем как задать постоянную константу цены?

$CStat{$c}{rate} = 0.000001;                        

Ссылка на комментарий
Поделиться на другие сайты

@Serzh Black Если я правильно понял суть проблемы, то для таких монет лучше рассчитывать профит по сложности, а не по хэшрейту, а не чесать правое ухо через левое плечо, устанавливая hrlimit для профит режима.

Кстати, о каких монетах идет речь?

Изменено пользователем 5alex
Ссылка на комментарий
Поделиться на другие сайты

@5alex вообще говоря лучше всегда использовать сложность. если сложность меняется с каждым блоком или в течение небольшого промежутка времени, то можно использовать hashrate. у таких монет график сложности вполне адекватный

image.thumb.png.0c51d98ac6322a7e902ccfbd09629e82.png

image.thumb.png.e532ccf83c52edf6304b32c49d98f829.png

 

а для тех форков сейчас он выглядит так:

 

image.thumb.png.28fccaf3b016981ba465f631cbda8550.png

 

Когда ее начинал майнить на графике была вертикальная ступенька.

 

По поводу "не чесать правое ухо через левое плечо, устанавливая hrlimit для профит режима" не понял. если сейчас для нее не установить hrlimit, то она будет в профите и будет майнится, но по факту профита нет. блоки редки. монет мало. транзакции подтверждаются очень долго.

 

Что за монеты не скажу, уж простите. Но нашел я такое их поведение при помощи HRM. Все yiimp пулы, которые нахожу добавляю в закладки. Для каждого создаю батник с --getcoins для обычных и с --getalgos и --getcoins для мультипулов с конвертацией. Периодически запускаю и смотрю что в профите. Если появилось что-то новенькое или ситуация кардинально изменилась, то выясняю почему и стоит ли это внимания. Читаю что пишут разрабы в своих каналах и пользователи. В общем определенное количество времени в день этому посвящаю.

 

Ссылка на комментарий
Поделиться на другие сайты

5 часов назад, Serzh Black сказал:

блокчейн монеты находится в анабиозе в результате слишком высокой сложности.

Если сложность слишком высокая, и расчет ведется именно по сложности, то откуда возьмется "не плохой профит"?

 

 

Ссылка на комментарий
Поделиться на другие сайты

Ну как откуда. Из биржевого курса и из расчета что монету майнят и новые блоки в рамках блоктайм

Ссылка на комментарий
Поделиться на другие сайты

15 часов назад, Serzh Black сказал:

Как это использовать

 

Ну сделайте пример на какой-то "левой" монете, а то вообще не понятно как задать {hrlimit} "заведомо больше максимального и максимально возможного профита по всем монетам"

Ссылка на комментарий
Поделиться на другие сайты

@Riva    Например вот так:

 hrlimit  => '1.23456',

цифры профита подставите свои.)

Ссылка на комментарий
Поделиться на другие сайты

To Serzh Black.

Подскажи, пожалуйстаб как так получается, что при разных вариантах расчтеа, получается разный профит. Причем на примере монеты BWK он отличается в 2 раза!

На монете RVN по твоему примеру - примерно одинаково.

Может у меня ошибка в коде? Какой вариант расчета предпочительнее использовать: по Diff по HR?

###################################################################
# COINS                                                           #
###################################################################
#\d - цифра
#\d+ - одна или несколько цифр
#\. - точка
#. - любой символ
#.+ - один или несколько любых символов
#скобки - это то что пытаемся найти.

%C = (

#============================================================================================================

#профит считается по diff
'BWK(d)' =>
{
    'wtmname'     => 'BWK',
    'hrurl'       => 'http://explorer.bulwarkcrypto.com/api/getdifficulty',
    'hrregexp'    => '(\d+\.\d+)',
    'skip'        => 'monitor',

    'eval'        => '
        # обозначим алгоритм монеты. обязательно!
        $CStat{$c}{algo} = "Nist5";
        # block reward. обязательно!
        $CStat{$c}{br} = 21.875;
        # block time в секундах. может быть любым, если расчет по diff
        # но лучше указывать правильное значение
        $CStat{$c}{bt} = 90;
        # пересчет сложности в HR
        $CStat{$c}{hr} = $CStat{$c}{hr}*0x100000000/$CStat{$c}{bt};
        # курс с биржи
        my $RATE = &GetContentFromURL("https://api.crypto-bridge.org/api/v1/ticker");
        $CStat{$c}{rate} = $1 if $RATE =~ /\{"id":"BWK_BTC",.+?"bid":"(\d+\.\d+)"\}/;
#        print "BWK Excange Rate (CryptoBridge):  $CStat{$c}{rate}\n";
    ',
},

#профит (hr) считается по hashrate, данным из спецификации монеты 
'BWK(hr)' =>
{
    'wtmname'     => 'BWK',
    'hrurl'       => 'http://explorer.bulwarkcrypto.com/api/getnetworkhashps',
    'hrregexp'    => '(\d+)',
    'skip'        => 'monitor',

    'eval'        => '
        # обозначим алгоритм монеты. обязательно!
        $CStat{$c}{algo} = "Nist5";
        # block reward. обязательно!
        $CStat{$c}{br} = 21.875;
        # block time в секундах. может быть любым, если расчет по diff
        # но лучше указывать правильное значение
        $CStat{$c}{bt} = 90;
        # курс с биржи
        my $RATE = &GetContentFromURL("https://api.crypto-bridge.org/api/v1/ticker");
        $CStat{$c}{rate} = $1 if $RATE =~ /\{"id":"BWK_BTC",.+?"bid":"(\d+\.\d+)"\}/;
#        print "BWK Excange Rate (CryptoBridge):  $CStat{$c}{rate}\n";
    ',
},

#============================================================================================================


);
###################################################################
# PROFIT MODE                                                     #
###################################################################

#Мой средний хэшрейт на алгоритме:
%ALGSHR = (
        'Nist5'        => '600',
);


1;

Ссылка на комментарий
Поделиться на другие сайты

@Shpirny да. в два раза. сложность и hr прямо пропорциональны. если hr растет то bt падает. и наоборот. для большинства алго сложность это средний hr * bt с коэфицентом 1/2^32. грубо говоря из сложности можно получить средний hr за определенное время из которого сеть установила сложность.

судя по сложности 28301.73675817  hr на тот момент был 1350611486626 (что сходится с WTM). сейчас эксплорер показывает 632270364827. т.е. в два раза меньше. если эксплорер не врет (не должен по идее) то добиваются блоки с высокой сложностью и через какое-то время когда сеть скорректирует сложность расчеты выровняются но не совпадут. помониторьте монетку, отпишитесь. интересно. надеюсь я мыслю правильно.

ЗЫ: расчет надо вести по сложности

 

Ссылка на комментарий
Поделиться на другие сайты

можно так

if (true) { ... }
elsif (true) { ... }
elsif (true) { ... }
elsif (true) { ... }
...
else { .. }

но Perl полиморфный язык. есть 15 разных способов это сделать

Изменено пользователем Serzh Black
Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
  • Similar Topics

×
×
  • Создать...