Давайте так... Чтобы никто не застрелился и вас не заказали... :))
Начнём по порядку. Сначала найдём последнюю закрытую позицию и проверим чтобы она была закрыта по тейку:
int j=-1;
datetime t;
// Поищем в цикле последнюю закрытую позицию, которая закрылась по TakeProfitfor (int i=0; i<OrdersHistoryTotal(); i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
if (OrderSymbol()!=Symbol()) continue;
if (OrderType()>1) continue;
if (OrderMagicNumber()==1000 || OrderMagicNumber()==2000) {
if (t<OrderCloseTime()) {
t=OrderCloseTime();
j=i;
}
}
}
}
if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) {
if (NormalizeDouble(OrderClosePrice()-OrderTakeProfit(), Digits)<0.5*Point) {
Alert("Позиция с тикетом #",OrderTicket()," закрыта по TakeProfit, закрываем остальные прозиции и удаляем отложенные ордера");
// Здесь код для закрытия всех открытых позиций (тоже в цикле)// Здесь код для удаления всех отложенных ордеров (также в цикле)
}
}
Вот это:
// Здесь код для закрытия всех открытых позиций (тоже в цикле)// Здесь код для удаления всех отложенных ордеров (также в цикле)
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
А имено, строка Alert ("OrderTicket( )",OrderTicket( )); Что может гаварить, что паследний цикл таки ни совершаеца!!
Вот журнал
Ранее, яж коды часто переписываю, я часто всречал ошибки по-моему4108 и 4050, теперь-же и ошибок нет!! Ну да,по-любому не выполняецца!
Ну да, стало, тут собака порылась
if( OrderMagicNumber( )==2000 &&OrderSymbol()==Symbol()
|| OrderMagicNumber( )==1000 &&OrderSymbol()==Symbol()) {
Так верно же се.. Чеж я в строке намудрил?
Ну да, стало, тут собака порылась
if( OrderMagicNumber( )==2000 &&OrderSymbol()==Symbol()
|| OrderMagicNumber( )==1000 &&OrderSymbol()==Symbol()) {
Так верно же се.. Чеж я в строке намудрил?
только к этому моменту это может быть удаленный отложенный ордер и результат будет необычен ;)
Не понял, я ж тут не удаленые отбираю, не моде хистори. Ладно, ненадо, это патом.
-ААА!! Так я щас обе стороны в скобки возьму!! СПАСИБО!!!!!
Фух!!
Так, я пока в душ пашол.Жарень..
Не понял, я ж тут не удаленые отбираю, не моде хистори. Ладно, ненадо, это патом.
Представим, что у нас есть 1 отложенный ордер, который надо удалить и мы дошли до строки (для удобства чтения разбил по операторам)
итак, мы этот ордер:
1) удаляем, при этом:
а) нам повезло и он удалился
б) он может не удалиться, потому что цена слишком близко/сервер перегружен/просто упал инет/ и т. д. Но мы все равно продолжаем
2) если что напишем, что все плохо
3) закрываем ордер (отложенный!! который мы в первом пункте удалили!!!)
результат... я предсказывать на 100% не берусь, но видимо еще одна ошибка
4) выводим об этом сообщение
Ну да, стало, тут собака порылась
if( OrderMagicNumber( )==2000 &&OrderSymbol()==Symbol()
|| OrderMagicNumber( )==1000 &&OrderSymbol()==Symbol()) {
Так верно же се.. Чеж я в строке намудрил?
Давайте так... Чтобы никто не застрелился и вас не заказали... :))
Начнём по порядку. Сначала найдём последнюю закрытую позицию и проверим чтобы она была закрыта по тейку:
Вот это:
будет вашим домашним заданием... :)