Появилось время, почитал код. есть следующие замечания:
- tick_volume > 1.0 - на реале работает не стабильно, тем более в мультивалютном режиме. может пропускать входы.
- для ускорения тестов и вообще работы совы надо отказаться от
- дублирования логов Print(q); fWriteDataToFile(q);
- и желательно от опроса индикаторов и пересчёта ордеров на каждом тике
- Take_Profit = MathMax ( Take_Profit, NormalizeDouble( stoplevel * Point / old_point,1 ) ); и подобные, может работать не так как задумывалось при переходе с double -> int предлагаю исправить на:
Take_Profit = ( int )( MathMax ( Take_Profit, MathCeil( stoplevel * Point / old_point ) ) );
А Вы какую версию смотрели-то?
Тип данных у TakeProfit и StopLoss - double (это для тех, кто любит с точностью до одного тика в пятизначной котировке), поэтому никакой потери данных в Take_Profit = MathMax ( Take_Profit, NormalizeDouble( stoplevel * Point / old_point,1 ) ); не будет. За этим следит #property strict в начале кода и выдало бы предупреждение. Что-то из расчетов было перенесено в OnInit(), индикаторы пересчитываются раз в 15 минут (с образованием новой свечи на М15). Print и запись в файл из версии для оптимизации убраны. Про tick_volume я писал уже, что можем пропускать входы в редких случаях, этот вариант остался от того советника, с которого все начиналось.
Добавлено: 25-05-2016 15:14:25
В функции открытия ордеров имеется цикл из пяти попыток открыться, если с первого раза помешали.
Добавлено: 26-05-2016 13:29:09
Обновления.
