Скачать MetaTrader 5

Как выбрать ордер по magic?

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Paul Cooke
267
Paul Cooke  
Как выбрать ордер по magic?

ticket=OrderSend(Symbol(),OP_SELLLIMIT,0.39,pricethirteenSell+4400*Point,0,0,0,"Order",12345,0,CLR_NONE);

и удалить по magic?
techno
1226
techno  
перебираешь все ордера и выделяешь по позиции, попутно сравнивая их магики с искомым, как только находишь, на нем и останавливаешь(он уже будет выбран). Сразу и удалить сможешь, запросив тикет выбранного ордера
Alexandr Bryzgalov
46626
Alexandr Bryzgalov  
Scripter:
Как выбрать ордер по magic?


и удалить по magic?
void CloseAllOrders()
{
   for (int k=OrdersTotal()-1;k>=0;k--)
   {
      RefreshRates();
      if (OrderSelect(k,SELECT_BY_POS,MODE_TRADES)==true&&OrderMagicNumber()==MAGIK)
      {
         int cmd=OrderType();
         if(cmd>1)
         {
            OrderDelete(OrderTicket());
         }
         if (cmd==OP_BUY)
         {
            OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_BID),MarketInfo(OrderSymbol(),MODE_DIGITS)),Slippage);
         }
         if (cmd==OP_SELL)
         {
            OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_ASK),MarketInfo(OrderSymbol(),MODE_DIGITS)),Slippage);  
         }
      }
   }
}
Paul Cooke
267
Paul Cooke  
sanyooooook:



спасибо буду пробовать внедрить код.
Игорь
14
Игорь  

Здравствуйте. Есть проблемка небольшая. Пробовал прикрутить данный фрагмент кода к своему случаю, но что-то никак не хочет работать. Есть 2 противоположно направленных отложенных ордера, у каждого свои TP,  но если открылись оба, то как убрать TP с них чтоб получился лок без TP и SL ? Пробовал сделать как в коде приведенном ниже, но не работает. В старой версии компилятора я использовал готовые шаблоны с фкнуциями , которые проверяли есть ли бай, есть ли селл, есть ли отложка и присваивали переменным какие-то значения и потом использовал эти переменные дальше в коде, в новом компиляторе такой вариант не проходит , ищу новое решение такой задачи. Подводя итог , как из списка открытых и отложенных ордеров выбрать несколько, которые нужно изменить, если соблюдаются определенные условия, в данном конкретном случае условие такое что нужно выбрать 2 сработавших разнонаправленных ордера убрать у них TP.

Причем желательно чтоб проверка была не только когда tip==2 а когда tip==3 и  tip==4 тоже, так как кроме открытого лока могут присутствовать еще отложенные ордера, соответственно одновременно может быть от 1 до 4 типов ордеров из которых нужно выбрать только 2 открытых противоположно направленных

for(int k=OrdersTotal()-1;k>=0;k--)
     {
      RefreshRates();
      if(OrderSelect(k,SELECT_BY_POS,MODE_TRADES)==true)
        {
         int tip=OrderType();
         if(tip==2)
           {
            if(tip==OP_BUY)
              {
               bool check=OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),0,0,clrNONE);
              }
            if(tip==OP_SELL )
              {
               bool check=OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),0,0,clrNONE);
              }
           }
        }
     }

Alexey Viktorov
20706
Alexey Viktorov  
Игорь:

Здравствуйте. Есть проблемка небольшая. Пробовал прикрутить данный фрагмент кода к своему случаю, но что-то никак не хочет работать. Есть 2 противоположно направленных отложенных ордера, у каждого свои TP,  но если открылись оба, то как убрать TP с них чтоб получился лок без TP и SL ? Пробовал сделать как в коде приведенном ниже, но не работает. В старой версии компилятора я использовал готовые шаблоны с фкнуциями , которые проверяли есть ли бай, есть ли селл, есть ли отложка и присваивали переменным какие-то значения и потом использовал эти переменные дальше в коде, в новом компиляторе такой вариант не проходит , ищу новое решение такой задачи. Подводя итог , как из списка открытых и отложенных ордеров выбрать несколько, которые нужно изменить, если соблюдаются определенные условия, в данном конкретном случае условие такое что нужно выбрать 2 сработавших разнонаправленных ордера


и убрать у них TP

for(int k=OrdersTotal()-1;k>=0;k--)
     {
      RefreshRates();
      if(OrderSelect(k,SELECT_BY_POS,MODE_TRADES)==true)
        {
         int tip=OrderType();
         if(tip>1)
           {
            if(tip==OP_BUY)
              {
               bool check=OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),0,0,clrNONE);
              }
            if(tip==OP_SELL )
              {
               bool check=OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),0,0,clrNONE);
              }
           }
        }
     }


Если почитаешь документацию, то поймёшь что типы > 1 это отложенные ордера

OP_BUY

0

Покупка

OP_SELL

1

Продажа

OP_BUYLIMIT

2

Отложенный ордер BUY LIMIT

OP_SELLLIMIT

3

Отложенный ордер SELL LIMIT

OP_BUYSTOP

4

Отложенный ордер BUY STOP

OP_SELLSTOP

5

Отложенный ордер SELL STOP


И пользуйся кнопкой SRC при вставки кода. Расположена чуть выше окна ввода текста.

Свойства ордеров - Торговые константы - Стандартные константы, перечисления и структуры - Справочник MQL4
Свойства ордеров - Торговые константы - Стандартные константы, перечисления и структуры - Справочник MQL4
  • docs.mql4.com
Свойства ордеров - Торговые константы - Стандартные константы, перечисления и структуры - Справочник MQL4
Игорь
14
Игорь  
Alexey Viktorov:

Если почитаешь документацию, то поймёшь что типы > 1 это отложенные ордера

OP_BUY

0

Покупка

OP_SELL

1

Продажа

OP_BUYLIMIT

2

Отложенный ордер BUY LIMIT

OP_SELLLIMIT

3

Отложенный ордер SELL LIMIT

OP_BUYSTOP

4

Отложенный ордер BUY STOP

OP_SELLSTOP

5

Отложенный ордер SELL STOP


И пользуйся кнопкой SRC при вставки кода. Расположена чуть выше окна ввода текста.

Ах вот оно что ) ясно, но все-равно вопрос остается в силе, там сверху подредактировал сообщение, 3 дня пытаюсь понять как сделать такую выборку, но никак не выходит
Игорь
14
Игорь  
другми словами, как одновременно проверить есть ли и бай и селл и только если есть оба, то менять что-то?
Vitaly Muzichenko
8029
Vitaly Muzichenko  
Игорь:
Ах вот оно что ) ясно, но все-равно вопрос остается в силе, там сверху подредактировал сообщение, 3 дня пытаюсь понять как сделать такую выборку, но никак не выходит

Может поможет, здесь есть всё, ну или почти всё

Только "Полезные функции от KimIV".
Только "Полезные функции от KimIV".
  • 2011.02.18
  • www.mql5.com
Все функции взяты из этой ветки - http://forum.mql4...
Игорь
14
Игорь  
наверно нужно что-то типа условия  if(tip==0 && tip==1)  , но почему-то так тоже не работает
Игорь
14
Игорь  
Vitaly Muzichenko:

Может поможет, здесь есть всё, ну или почти всё

спасибо, буду искать, вроде,простая проверка присутствия ордеров, но никак не могу добиться чтоб заработало как надо
12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий