Помощь в кодировании - страница 407

 

Здравствуйте ребята, мне нужна ваша помощь по индикатору, который я сделал. По сути, это тестер, который должен использоваться только для оптимизации настроек стратегии (а также тестирования ее работы). В режиме тестирования (Optimize в False) он работает отлично и выдает коэффициент выигрыша и баланс для параметров по умолчанию. Но мне трудно заставить работать функцию оптимизации. Результат для лучших настроек всегда оказывается меньшим значением (PeriodMin). Я думаю, может быть, дело в том, как я использую буферы, объявленные внутри двойной функции Optimization (см. строки 616 и 617, а также строки 746 и 747, используемые для освобождения буферов). Думаю, дело не только в этом, потому что если я не использую эти буферы (установив AllowMultipleOpenTrades в False), это все равно не дает согласованных результатов. Если кто-то может взглянуть и помочь, я буду благодарен. Большое спасибо.

Файлы:
 
airquest:
Не уверен, что вы пытаетесь сделать. Может быть это?

Боюсь, что нет. Позвольте мне проиллюстрировать это скриншотом. На розовой верхней стрелке хорошо видно, что красный бар LOW намного больше, чем синий бар HIGH. Тем не менее, соответствующий вывод в индикаторе Linear Bar Diff выше нуля!!! (см. нижнюю розовую стрелку). Когда красный бар Low больше синего бара High, разница обоих баров должна быть отрицательной, а не положительной. Зеленые стрелки показывают другой пример той же проблемы.

С уважением

Файлы:
example.png  25 kb
 
mrcodix:
Боюсь, что нет. Позвольте мне проиллюстрировать это скриншотом. На розовой верхней стрелке хорошо видно, что красная полоса LOW намного больше, чем синяя полоса HIGH. Тем не менее, соответствующий вывод в индикаторе Linear Bar Diff выше нуля!!! (см. нижнюю розовую стрелку). Когда красный бар Low больше синего бара High, разница обоих баров должна быть отрицательной, а не положительной. Зеленые стрелки показывают другой пример той же проблемы. С уважением.

Так может быть вот это? Вы должны увидеть, что буферы 3 и 4 связаны не с High VS Open и Low VS Open, а с Close VS Open.

Файлы:
 
mrcodix:
Боюсь, что нет. Позвольте мне проиллюстрировать это скриншотом. На розовой верхней стрелке хорошо видно, что красный бар LOW намного больше, чем синий бар HIGH. Тем не менее, соответствующий вывод в индикаторе Linear Bar Diff выше нуля!!! (см. нижнюю розовую стрелку). Когда красный бар Low больше синего бара High, разница обоих баров должна быть отрицательной, а не положительной. Зеленые стрелки показывают другой пример той же проблемы. С уважением.

Или это с выбором использования High/Low VS Open или Close VS Open.

Файлы:
 
airquest:
Здравствуйте ребята, мне нужна ваша помощь по поводу индикатора, который я сделал. По сути, это тестер, который должен использоваться только для оптимизации настроек стратегии (а также тестирования ее работы). В режиме тестирования (Optimize в False) он работает отлично и выдает коэффициент выигрыша и баланс для параметров по умолчанию. Но мне трудно заставить работать функцию оптимизации. Результат для лучших настроек всегда оказывается меньшим значением (PeriodMin). Я думаю, может быть, дело в том, как я использую буферы, объявленные внутри двойной функции Optimization (см. строки 616 и 617, а также строки 746 и 747, используемые для освобождения буферов). Думаю, дело не только в этом, потому что если я не использую эти буферы (установив AllowMultipleOpenTrades в False), это все равно не дает согласованных результатов. Если кто-то может взглянуть и помочь, я буду благодарен. Большое спасибо.

airquest

Ваши массивы recTP[] и recSL[] в строке 602 не имеют размера (они имеют размер 0, так как объявлены в начале цикла), попробуйте изменить их размер перед циклом for().

 
airquest:
Или это связано с выбором использования High/Low VS Open или Close VS Open.

Нет, вот что я имел в виду.

int start()

{

int counted_bars=IndicatorCounted();

int i;

//int UpDays, DownDays, NeutralDays;

double BarH, BarL, BarC;

//----

for(i=0; i<Bars; i++)

{

BarH = High - Open;

BarL = Open - Low;

BarC = Close - Open;

//if(BarC>0) UpDays +=1;

//else if(BarC<0) DownDays +=1;

//else if(BarC==0) NeutralDays +=1;

ExtMapBuffer1 = BarH;

ExtMapBuffer2 = BarL;

ExtMapBuffer5 = BarH - BarL;

}

//----

return(0);

}

Теперь я вроде как разобрался сам, но все равно спасибо за попытку.

Может ли кто-нибудь сказать мне, почему этот индикатор: Candles Ratio " Metatrader Files не показывает выход за последние несколько свечей? На представленной картинке этого не видно.

 
mladen:
airquest Ваши массивы recTP[] и recSL[] в строке 602 не имеют размера (они имеют размер 0, так как объявлены в начале цикла), попробуйте изменить их размер перед циклом for().

Спасибо, Младен, я сделал это, но все равно оптимизация не дает правильных результатов. Если я устанавливаю Optimize в True, он выдает наименьшее значение как наилучшую настройку (период полосы = 5), в то время как при False и BandsPeriod по умолчанию 40, например, он показывает лучший коэффициент выигрыша, чем с 5. В принципе, идея оптимизации заключается в том, чтобы найти, какие настройки дают лучший коэффициент выигрыша. Я перечитал код сотни раз и не могу найти, что не так. если у вас есть идеи, иначе, возможно, это потерянное дело lol.

Это с добавленным ArrayResize. Также исправил некоторые ошибки, но все равно не дает тех же результатов, что и без оптимизации:

Файлы:
 
airquest:
Спасибо Младен, я сделал это, но все равно оптимизация не дает правильных результатов. Если я переключу Optimize на True, он дает наименьшее значение как наилучшую настройку (период полосы = 5), в то время как на False и по умолчанию BandsPeriod на 40, например, он показывает лучший коэффициент выигрыша, чем с 5. В основном идея оптимизации заключается в том, чтобы найти, какие настройки дают лучший коэффициент выигрыша. Я перечитал код сотни раз и не могу найти, что не так. Если у вас есть идеи, иначе, возможно, это потерянное дело lol. Это с добавленным ArrayResize. Также исправил некоторые ошибки, но все равно не дает тех же результатов, что и без оптимизации:

Не знаю почему, но при проверке результатов путем записи CSV-файла, общее количество сделок, выигрышей и баланс умножаются на коэффициент 10 : http://clip2net.com/s/38YHODl...

 
airquest:
Не знаю почему, но при проверке результатов путем записи CSV файла, общие сделки, выигрыши и баланс умножаются на фактор 10 : Microsoft Excel - BB+CCI_FX-EURUSD-H1-SA-1.csv...

airquest

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

 
mladen:
airquest Насколько я вижу, общие сделки и выигрыши в порядке (иначе они должны были бы заканчиваться 0).

Ну, все же... Вот некоторые тесты:

- Настройки по умолчанию (без оптимизации, WriteCSV - True) : http://clip2net.com/s/38YSV53

- Оптимизация установлена на True, PeriodMin на 20 и PeriodMax на 20 : http://clip2net.com/s/38YT2hN.

Первый тест дает согласованные значения (CSV файл и результаты на экране совпадают). Это нормально, потому что оба значения получены из одних и тех же переменных. Но во втором случае результаты opti умножаются почти на 10 по сравнению с результатами экрана. Хотя в итоге они должны быть одинаковыми...

В любом случае, не стоит торопиться, возможно, со временем я пойму, в чем дело. Спасибо за помощь, Младен.

Причина обращения: