Вы можете представить фрагмент лога, иллюстрирующий проблему?
Не понял фрагмент какого лога Вам нужен?
Я говорил о том что тест на истории "затыкается" сразу после первой же команды взаимозакрытия ордеров (когда ордера разного размера). Т.е. получается (как и должно быть) остаточный ордер (но без номера) и дальше ничего уже не тестируется.
Чтобы убедиться в этом ниже приведу пример эксперта для теста. Это не тот эксперт на котором я наткнулся на эту особенность (тот большой и сложный). Я просто сейчас "на коленке" его сваял для демонстрации "затыка" теста. Он естественно не претендует на работоспособность в реале и создан исключительно для прогона на истории. Я конечно понимаю что реально работать на таком эксперте нельзя (но на это он не претендует).
Я говорил о том что тест на истории "затыкается" сразу после первой же команды взаимозакрытия ордеров (когда ордера разного размера). Т.е. получается (как и должно быть) остаточный ордер (но без номера) и дальше ничего уже не тестируется.
Чтобы убедиться в этом ниже приведу пример эксперта для теста. Это не тот эксперт на котором я наткнулся на эту особенность (тот большой и сложный). Я просто сейчас "на коленке" его сваял для демонстрации "затыка" теста. Он естественно не претендует на работоспособность в реале и создан исключительно для прогона на истории. Я конечно понимаю что реально работать на таком эксперте нельзя (но на это он не претендует).
bool first=true; int start() { int total=OrdersTotal(); if(first) { OrderSend(Symbol(),OP_BUY,0.1,Ask,0,0,0); first=false; } if(total==1) { OrderSelect(0,SELECT_BY_POS,MODE_TRADES); int type=OrderType(); double profit=MathAbs(OrderProfit()); if(profit>=100.0) if(type==OP_BUY) OrderSend(Symbol(),OP_SELL,0.2,Bid,0,0,0); else if(type==OP_SELL) OrderSend(Symbol(),OP_BUY,0.2,Ask,0,0,0); } else if(total==2) { OrderSelect(0,SELECT_BY_POS,MODE_TRADES); int ticket1=OrderTicket(); OrderSelect(1,SELECT_BY_POS,MODE_TRADES); int ticket2=OrderTicket(); OrderCloseBy(ticket1,ticket2); } return(0); }
Ну тут вроде все прозрачно. При первом запуске открываем 0.1 лота BUY. А дальше как только прибыль или убыток по позиции превышает 100 - открываем контр-позицию двойного размера (0.2 лота). Как только позиций в терминале становится 2 - выполняем взаимозакрытие. В результате получается перевернутая поза одиночного (0.1 лота) размера. Ну и дальше все должно аналогично крутиться туда-сюда.
На практике (при прогоне теста) после взаимозакрытия получаем результирующую позицию без номера и все останавливается.
P.S. Тот эксперт на котором я на это наткнулся на демо работает нормально и позиции переворачивает как и запланированно, а вот на тесте такой же затык получается.
проверим
проверили, исправили. спасибо
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Точнее проверялся вариант когда производится взаимозакрытие двух ордеров разного размера (в лотах).
После взаимозакрытия должен появиться новый ордер "остаточного" размера. Так вот, в тестере появляется новый ордер "без номера" и на этом тестирование останавливается.