Как правильно оптмизировать советник - страница 5

 
Loring писал (а) >>
Я не претендую на всемогучесть... Да пока сыроват, но, похоже, имеет право на жизнь... Мне единомышленники нужны ( прграммисты ) которые могут идеей помочь.. Где-то и я им подскажу. Опыт - есть...

А можно поподробнее. Если стесняешься (так, шутка), то координаты в профиле.

 

Vinin, проверь почту... Сейчас читаю твою игрушку "VininE Game". Очень изящно. Богата Россия умными людми...

 
Нашёл досадную ошибку при вычислении размера лота. Заранее извиняюсь... Не хотел обидеть... Сработало педагогическое прошлое...
       double lot = NormalizeDouble(AccountFreeMargin() * MaximumRisk/100000/step,1); //*step
Великолепный алгоритм реинвестирования. Кое чего не понял... Щас пороюсь по хелпам, пока советник прогоняется на тестере ...
 
Loring писал (а) >>
Нашёл досадную ошибку при вычислении размера лота. Заранее извиняюсь... Не хотел обидеть... Сработало педагогическое прошлое...Великолепный алгоритм реинвестирования. Кое чего не понял... Щас пороюсь по хелпам, пока советник прогоняется на тестере ...

Может на step забыл умножить. И округление 0.

 

Наоборот сделал лишнее умножение... Лот сразу на порядок уменьшился и алгоритм его всегда до 0,1 выравнивал... Есть предчувствие, что может на японке не заработать. Делится на фиксированный коэф., а должно, вроде домнажаться на Point... Проверю пойже.

Но как он лоты стал глотать... Профит растёт как на дрожжах. Только риск не совсем понятно выставляется ( я понял 1/MaximumRisk) ... Переделаю для себя в проценты... Хорошо когда исходник под руками, а то долго соображал почему риск задан челым числом, да ещё с десятичной точкой....

 
Loring писал (а) >>

Наоборот сделал лишнее умножение... Лот сразу на порядок уменьшился и алгоритм его всегда до 0,1 выравнивал... Есть предчувствие, что может на японке не заработать. Делится на фиксированный коэф., а должно, вроде домнажаться на Point... Проверю пойже.

Но как он лоты стал глотать... Профит растёт как на дрожжах. Только риск не совсем понятно выставляется ( я понял 1/MaximumRisk) ... Переделаю для себя в проценты... Хорошо когда исходник под руками, а то долго соображал почему риск задан челым числом, да ещё с десятичной точкой....

Приведу свою функцию.

double getLots() {
   if (MaximumRisk>0) {
      double minlot=MarketInfo(Symbol(),MODE_MINLOT);
      double maxlot = MarketInfo(Symbol(), MODE_MAXLOT);       
      double step=MarketInfo(Symbol(),MODE_LOTSTEP);

      double lot = NormalizeDouble(AccountFreeMargin() * MaximumRisk / 100000.0/step, 0)*step; 
      lot=MathMax(MathMin(lot,maxlot),minlot);
      
   }
   else lot=Lots;
   return(lot); 
}
А письмо прочитал, и ответил. Но вопросов больше чем ответов.
 

За ответ спасибо...

А функция NormalizeDouble округляет до целого, а шаг лота 0,1 ... В результате lot =0 и

lot=MathMax(MathMin(lot,maxlot),minlot);
выравнивает его до minlot... проверено не однократно простыми принтами выдаваемыми в лог... После исправления округления вылезло лишнее умножение на step... Тоже проверил... Если заменить на мой вариант, то включается алгоритм реинвестирования и каждый последующий лот растёт с учётом разрешонного риска... или я не понял программу... Блин тестер начал показывать дикие прибыли. сейчас закончит, покажу чего вышло.
 
Loring писал (а) >>

За ответ спасибо...

А функция NormalizeDouble округляет до целого, а шаг лота 0,1 ... В результате lot =0 и

выравнивает его до minlot... проверено не однократно простыми принтами выдаваемыми в лог... После исправления округления вылезло лишнее умножение на step... Тоже проверил... Если заменить на мой вариант, то включается алгоритм реинвестирования и каждый последующий лот растёт с учётом разрешонного риска... или я не понял программу... Блин тестер начал показывать дикие прибыли. сейчас закончит, покажу чего вышло.

Наверно в делении лишний 0 сидит.

А результат хотелось бы конечно посмотреть.

 

Ну вот чего вышло ...

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