Follow along with the video below to see how to install our site as a web app on your home screen.
Примечание: This feature may not be available in some browsers.
Это за какой период?Поставил версию 1.1 настройки те же. Бешена версия думаю денег хватитПосмотреть вложение 346012
Коллега, я тут проходил мимо, скачал вашего робота, потестировать предложенную систему, но уж больно медленно он тестируется из-за обращения к индикатору через iCustom. Потом вспомнил, что делал расчёт значений индикатора BetterVolume в самом советнике в виде обычной функции. Я для себя изменил код вашего советника, скорость тестирования выросла в 5-6 раз. Счёл нужным поделиться с вами кодом.можно, проверяйте.
double red[2],white[2];
//red[0] = iCustom(NULL,0,"bettervolume1.4",0,"",ind_MAPeriod,ind_LookBack,0, i);
//red[1] = iCustom(NULL,0,"bettervolume1.4",0,"",ind_MAPeriod,ind_LookBack,0, i+1);
//white[0] = iCustom(NULL,0,"bettervolume1.4",0,"",ind_MAPeriod,ind_LookBack,4, i);
//white[1] = iCustom(NULL,0,"bettervolume1.4",0,"",ind_MAPeriod,ind_LookBack,4, i+1);
GetBetterVolume(ind_LookBack,i,red[0],yl,gr,white[0],mg);
GetBetterVolume(ind_LookBack,i+1,red[1],yl,gr,white[1],mg);
да это хороший вариант, спасибо.Коллега, я тут проходил мимо, скачал вашего робота, потестировать предложенную систему, но уж больно медленно он тестируется из-за обращения к индикатору через iCustom. Потом вспомнил, что делал расчёт значений индикатора BetterVolume в самом советнике в виде обычной функции. Я для себя изменил код вашего советника, скорость тестирования выросла в 5-6 раз. Счёл нужным поделиться с вами кодом.
[CODE lang="clike" title="Better Volume x.x"]//+------------------------------------------------------------------+
//| Функция принимает переменные red,yellow,green,white,magenta |
//| и записывает в них значения столбцов соответствующего цвета |
//| индикатора BeterVolume |
//| look_back - расчётный период индикатора |
//| bar - номер свечи, для которой рассчитывается значение индикатора|
//+------------------------------------------------------------------+
void GetBetterVolume(int look_back,int bar,double &red,double &yellow,double &green,double &white,double &magenta)
{
double Range,Value2=0,Value3=0,HiValue2=0,HiValue3=0,LoValue3=FLT_MAX,tempv2=0,tempv3=0;
red=0;
yellow=0;
green=0;
white=0;
magenta=0;
MqlRates rates[];
ArraySetAsSeries(rates,true);
if(CopyRates(_Symbol,_Period,bar,look_back,rates)<=0)
return;
Range=rates[0].high-rates[0].low;
Value2=rates[0].tick_volume*Range;
long min_volume=LONG_MAX;
for(int j=0; j<look_back; j++)
{
if(rates[j].tick_volume<min_volume)
min_volume=rates[j].tick_volume;
tempv2=rates[j].tick_volume*(rates[j].high-rates[j].low);
if(NormalizeDouble(tempv2,_Digits)>=NormalizeDouble(HiValue2,_Digits))
HiValue2=tempv2;
if(NormalizeDouble(rates[j].tick_volume*(rates[j].high-rates[j].low),_Digits)!=0)
{
double hl=rates[j].high-rates[j].low;
if(NormalizeDouble(hl,_Digits)!=0)
tempv3=rates[j].tick_volume/hl;
if(tempv3>HiValue3)
HiValue3=tempv3;
if(tempv3<LoValue3)
LoValue3=tempv3;
}
}
if(rates[0].tick_volume==min_volume)
yellow=double(min_volume);
if(NormalizeDouble(Value2,_Digits)==NormalizeDouble(HiValue2,_Digits) &&
rates[0].close>(rates[0].high+rates[0].low)/2.0)
red=double(rates[0].tick_volume); // Climax High
if(NormalizeDouble(Value3,_Digits)==NormalizeDouble(HiValue3,_Digits))
green=double(rates[0].tick_volume);
if(NormalizeDouble(Value2,_Digits)==NormalizeDouble(HiValue2,_Digits)
&& NormalizeDouble(Value3,_Digits)==NormalizeDouble(HiValue3,_Digits))
magenta=double(rates[0].tick_volume);
if(NormalizeDouble(Value2,_Digits)==NormalizeDouble(HiValue2,_Digits) &&
rates[0].close<=NormalizeDouble((rates[0].high+rates[0].low)/2.0,_Digits))
white=double(rates[0].tick_volume); // Climax Low
}
[/CODE]
Использование
C-подобный:double red[2],white[2]; //red[0] = iCustom(NULL,0,"bettervolume1.4",0,"",ind_MAPeriod,ind_LookBack,0, i); //red[1] = iCustom(NULL,0,"bettervolume1.4",0,"",ind_MAPeriod,ind_LookBack,0, i+1); //white[0] = iCustom(NULL,0,"bettervolume1.4",0,"",ind_MAPeriod,ind_LookBack,4, i); //white[1] = iCustom(NULL,0,"bettervolume1.4",0,"",ind_MAPeriod,ind_LookBack,4, i+1); GetBetterVolume(ind_LookBack,i,red[0],yl,gr,white[0],mg); GetBetterVolume(ind_LookBack,i+1,red[1],yl,gr,white[1],mg);
Правильно мыслите. Я вот только сомневаюсь в необходимости самого этого параметра - "wait_for_signal_bars". Насколько я понимаю, это вы его добавили в систему, чтобы отсекать слишком долгие участки ожидания сигнала. Хотя, я не очень вникал в тему.да это хороший вариант, спасибо.
еще один момент как можно ускоритьего работу, запоминать последние "wait_for_signal_bars" свечей, а не обсчитывать их каждый раз. тоже должен ускорить тестирование в несколько раз.
займусь на днях.
Идея норм. Нужно просто доработать советник. И тестировать на нормальных котировках в Метатрейдер 5Спасибо lsv107 за предложенные функции. Дошли руки, внедрил в советника и его стало возможно тестировать с адекватной скоростью )
Стратегия слабовата, на стандартных настройках сливает вообще везде.
лучшие результаты получились по AUDCAD, EURUSD, USDJPY.
Отчеты и файлы настроек прикрепил.
Надо было завести будильник - разбудил быВот здесь я спалПосмотреть вложение 340275
спасибо за советник,а можно ли в него добавить трейлинг стоп?Спасибо lsv107 за предложенные функции. Дошли руки, внедрил в советника и его стало возможно тестировать с адекватной скоростью )
Стратегия слабовата, на стандартных настройках сливает вообще везде.
лучшие результаты получились по AUDCAD, EURUSD, USDJPY.
Отчеты и файлы настроек прикрепил.