Какая формула счастья для OnTester()

 

Если использовать для тестирования советника оптимизируемый параметр Custom
Что лучше применить в OnTester()?
Например мне надо подобрать параметр где в приоритете будет максимальное кол-во прибыльных сделок не зависимо от прибыли. Как это организовать?

//+----------------------------------------------------------------+
//| Tester function mql4                                           |
//+----------------------------------------------------------------+
double OnTester(){
int PT = TesterStatistics(STAT_PROFIT_TRADES); //Прибыльные трейды
return(PT);}

Кто как тестирует? Поделитесь))


 

Я так понимаю все тестируют по параметру "Balance"
Ну тогда не буду заморачиваться и продолжу в том же стиле тесты.

 

Много кто OnTester() использует. Но альтруистов мало наверное ))

Я только OnTester() и пользуюсь. "Формулы счастья" у меня нет, но функция эта позволяет решить много проблем и недостатков стандартных вариантов, сделать очень гибкие настройки и возможности. Ещё через неё можно вывести специфическую статистику в журнал, я так и делаю.

В общем, начинайте изобретать и делиться кодом, народ подтянется ))

Например, мне оптимизация по такому критерию часто нужна:

return(NormalizeDouble((TesterStatistics(STAT_PROFIT) / TesterStatistics(STAT_EQUITY_DD)), 2));

Если ближе к Вашему примеру, то так полезно будет:

extern int TesterMinPercentProfitTrades = 66;

double OnTester()
{
    double PercentProfitTrades = 0;
    if (TesterStatistics(STAT_PROFIT_TRADES) > 0)
        PercentProfitTrades = TesterStatistics(STAT_PROFIT_TRADES) / TesterStatistics(STAT_TRADES) * 100;
    if (PercentProfitTrades >= TesterMinPercentProfitTrades)
         return(NormalizeDouble((TesterStatistics(STAT_PROFIT) / TesterStatistics(STAT_EQUITY_DD)), 2));
    else return(0);
}

И это только примитивный пример.

Или такой вариант:

double OnTester()
{
    double PercentProfitTrades = 0;
    if (TesterStatistics(STAT_PROFIT_TRADES) > 0)
        PercentProfitTrades = TesterStatistics(STAT_PROFIT_TRADES) / TesterStatistics(STAT_TRADES) * 100;
    return(NormalizeDouble((TesterStatistics(STAT_PROFIT) / TesterStatistics(STAT_EQUITY_DD) * PercentProfitTrades / 100), 2));
}

Много чего придумать можно, было бы время на все эти эксперименты.

 
Sergey Basov:

Много кто OnTester() использует.

Что то не заметно, ни одного предложения или рассуждения кроме вас))

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

А как всё это подбирать для себя по нужным критериям?
Где можно увидеть итог составленной формулы?
Например, если что то мне нужно сложить, получить итог, то я смотрю по Comment или Print полученные результаты.

Много чего придумать можно, было бы время на все эти эксперименты.

Это точно, времени не хватает.

 

https://www.mql5.com/ru/articles/2358

R-квадрат как оценка качества кривой баланса стратегии
R-квадрат как оценка качества кривой баланса стратегии
  • 2017.10.24
  • Vasiliy Sokolov
  • www.mql5.com
Каждая торговая стратегия нуждается в объективной оценке ее эффективности. Для этого используется обширный ряд статистических параметров. Многие из них просты в расчете и показывают интуитивно понятные метрики. Другие сложнее в построении и в интерпретации значений. Несмотря на все это многообразие, есть очень мало качественных метрик для...
 
Natalya Dzerzhinskaya:

Что то не заметно, ни одного предложения или рассуждения кроме вас))

Подозреваю, что тем, кто добрался до OnTester(), уже некогда на форуме болтать ))

Natalya Dzerzhinskaya:

А как всё это подбирать для себя по нужным критериям?

Где можно увидеть итог составленной формулы?
Например, если что то мне нужно сложить, получить итог, то я смотрю по Comment или Print полученные результаты.

Не очень понял вопрос. Итог составленной формулы на вкладке "Результаты оптимизации" видно:

А через Print() специфическую статистику только вывожу из OnTester(). Всё просто. Результат OnTester() одиночного прогона тоже в журнале видно.

Кстати, если торговая система изначально плоха, то никакая оптимизация всё равно не поможет, подгонка будет. Но я думаю, Вы уже об этом знаете.

Тестирование стратегий - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
Тестирование стратегий - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
  • www.metatrader5.com
Тестер стратегий позволяет тестировать и оптимизировать торговые стратегии (советники) перед началом использования их в реальной торговле. При тестировании советника происходит его однократная прогонка с начальными параметрами на исторических данных. При оптимизации торговая стратегия прогоняется несколько раз с различным набором параметров...
 
Sergey Basov:

Подозреваю, что тем, кто добрался до OnTester(), уже некогда на форуме болтать ))

На столько всё серьёзно?))

Не очень понял вопрос. Итог составленной формулы на вкладке "Результаты оптимизации" видно:

Это я знаю, что в графе видно. Я имею ввиду составленную формулу как проверить? Как её вообще составлять?))

Кстати, если торговая система изначально плоха, то никакая оптимизация всё равно не поможет, подгонка будет. Но я думаю, Вы уже об этом знаете.

Это точно.
Перед началом изобретения сначала включается воображение.

 
NatashkaFX:


Женское счастье был бы милый pядом
Hу, а больше ничего не надо... 

 

Я так составил для себя, показывает % прибыльных трейдов по отношению к убыточным. 
Рассматриваю параметры те у которых показатель 80% и выше.

//+------------------------------------------------------------------+
//| Tester function                                                  |
//+------------------------------------------------------------------+
double OnTester(){//Процент(%) прибыльных трейдов
     int AllTrades=0,ProfitTrades=0,LossTrades=0,ProfitPercent=0,SeriesPrfOrd=0;
     SeriesPrfOrd=TesterStatistics(STAT_MAX_CONPROFIT_TRADES);
     if(TesterStatistics(STAT_TRADES)>0)AllTrades=TesterStatistics(STAT_TRADES);
     if(TesterStatistics(STAT_PROFIT_TRADES)>0)ProfitTrades=TesterStatistics(STAT_TRADES)-TesterStatistics(STAT_LOSS_TRADES);
     if(TesterStatistics(STAT_LOSS_TRADES)>0)LossTrades=TesterStatistics(STAT_TRADES)-TesterStatistics(STAT_PROFIT_TRADES);
     if(ProfitTrades!=0 && ProfitTrades>=LossTrades)ProfitPercent=((ProfitTrades*100)/((AllTrades*100)/100));
     if((ProfitPercent>=60 && AllTrades>15)||SeriesPrfOrd>=8) return(ProfitPercent);
else return(0);}
 

Раньше в  онтестере у меня считалось  - Баланс/Просадку * Количество сделок ведь чем больше количество сделок тем меньше шансов попасть на переоптимизацию.

Но потом я стал умножать на Квадратный корень из количества сделок, а не просто на количество.  Мне так кажется более правильным. Зависимость уменьшилась от количества сделок но все равно влияние на результат остался.

Правда должен отметить, что у меня скальпинговая система. 
 
NatashkaFX:

Я так понимаю все тестируют по параметру "Balance"
Ну тогда не буду заморачиваться и продолжу в том же стиле тесты.

Добрый день, Наталья.Параметр символ в тестере стратегий выставляется в другом окне, разве этого не достаточно?