В стандартой поставке есть скрипт Close, наверно то что вам нужно .
Я новичок. Подскажите как им воспользоваться в программе.
А лучше Выложите код программы в сообщении.
То есть это вот так должно выглядеть?
void ClosePositions(string sy="", int op=-1, int mn=-1) { int i, k=OrdersTotal(); ZZ=OrderClose(value1,value2,Bid,10); if(ZZ==TRUE) { (какие то действия) } if(ZZ==FALSE) { if (sy=="0") sy=Symbol(); for (i=k-1; i>=0; i--) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if ((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) { if (OrderType()==OP_BUY || OrderType()==OP_SELL) { if (mn<0 || OrderMagicNumber()==mn) ClosePosBySelect(); } } } } } }
Нет.
Когда вы хотите :
закрыть все открытые сделки какие только есть!!!!!
Пишите :
ClosePositions();
И у вас закрываются все открытые позиции.
PS Не забудьте остальные, недостающие функции оттуда же подтянуть.
И у вас закрываются все открытые позиции.
PS Не забудьте остальные, недостающие функции оттуда же подтянуть.
Функция ClosePositions() нестандартная?
Её же надо описать?
То есть это так должно быть?
// это должно быть вначале программы? void ClosePositions(string sy="", int op=-1, int mn=-1) { int i, k=OrdersTotal(); if (sy=="0") sy=Symbol(); for (i=k-1; i>=0; i--) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if ((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) { if (OrderType()==OP_BUY || OrderType()==OP_SELL) { if (mn<0 || OrderMagicNumber()==mn) ClosePosBySelect(); } } } } } //а это уже сама программа ZZ=OrderClose(value1,value2,Bid,10); if(ZZ==TRUE) { (какие то действия) } if(ZZ==FALSE) { ClosePositions() }
if(OrderSelect(Ticket,SELECT_BY_TICKET)){ if(OrderCloseTime()==0){ OrderClose(Ticket,...) } }
Что-то типа такого надо, а еще лучше найти ошибку, почему выполняется закрытия несуществующего ордера.
Функция ClosePositions() нестандартная?
Её же надо описать?
То есть это так должно быть?
Где то, так.
А вообще лучше действительно разобраться почему не закрывается выбранная позиция.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Излагаю суть проблемы.
Меня сильно достала ошибка
unknown ticket 300 for OrderClose function (вместо 300 может быть любое число)
Она появляется внезапно. Программа советник может работать и день и два. А в тестеровщике и месяц и три . А потом БАЦ! И ошибка.
Я считаю её багом.
1) может кто сталкивался и может это как то прокомментировать. Или что нить посоветовать.
2) Подскажите фрагмент кода, который можно засунуть
чтобы 100% закрыть все открытые сделки какие только есть!!!!! (таким образом я решил избавиться от тупой ошибки)
P.S. соответственно этот фрагмент кода должен суметь обойтись без тикета.
P.P.S. Мне главное надежность! Чтоб ну полюбас все сделки после этого топором отрубило!)