Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Думаю уместнее будет привести пример кода открытия и закрытия сделок. Из этого куска не понять почему он циклится.
Кстати, а зачем такие жесткие условия на выход? Не проще ли просто использовать break или тот же continue?
постоянно пытается закрыть ордер Buy с тикетом 0
Проблема известная "А был ли мальчк?"
Определяете еще одну переменную OrderExist :
bool
Ans = false, // Ответ сервера после закрытия
OrderExist = false; // Ордер существует?
В конструкции из трех операторов добавляем парочку
Ticket=OrderTicket(); // Номер выбранн. орд.
Tip =OrderType(); // Тип выбранного орд.
Lot =OrderLots(); // Количество лотов
OrderExist = true; // Ордер существует!
}
}
if (!OrderExist ) return;
1. Думаю не лишним будет ввести MagicNumber для того, чтобы лучше отслеживать позиции.
2. Если ваш советник открывает и "тянет" только 1 позицию, то после того, как он нашел позицию с заданным меджиком и символом необходимо делать выход из цикла.
3. "Working==true && Tip==0 && Bid<=OrchSMMA_0" - после открытия позиции Working сразу установится в true, и если позиций больше нет, то в false так и не сбросится.
4. А что если нет позиций и ордеров? Ваш цикл пройдет, а значения переменных Tip & Ticket не изменит. Условия из пункта 3 будут соблюдены (Working = true, Tip вообще не инициализирован, а цена может и упасть ниже орхидеи), все - советник будет закрывать! А закрывать то нечего!
Следите за тем, что присваиваете Tip & Ticket (в начале старта их можно сделать -1), если Ticket <= 0 -- не выполняйте закрытие, вот и все.