Заработай до
50000$
на приглашении друзей
получить StartUp Bonus
от ИнстаФорекс
Вложений не требуется!
Начни торговлю
без вложений и риска
С новым STARTUP бонусом 1000$
Получи бонус
55%
от ИнстаФорекс
на каждое пополнение
Ответить в теме

Показаны сообщения: с 1 по 5 из 5

Тема: Открытие и закрытие ордеров по условию

 Перейти в классический вид темы
  1. линк#1
    В начале пути
    FXman1988 стараюсь положительно себя зарекомендовать Аватар для FXman1988
    Регистрация:
    27.04.2018
    Пол:
    Мужчина
    Сообщений:
    21
    Накопленные выплаты (Подробнее):
    0 RUB
    Поставил(а) лайков:
    0
    Получено лайков:   0
    в 0 сообщениях
    0%
    ПодписатьсяПодписаться
    Подписано: 0
    Друзья помогите дополнить код, я не знаком с функциями OrderSend и CloseOrder. Пробовал сам решить проблему но выходит ерунда.
    MQL код:

    //----- ОТКРЫТИЕ ОРДЕРОВ
    if(Buf1<0 && Buf2==0)
    {
    Открытие ордера BUY по первому символу

    Открытие ордера SELL по второму символу
    }
    else if(Buf1>0 && Buf2==0)
    {
    Открытие ордера SELL по первому символу

    Открытие ордера BUY по второму символу
    }
    else;

    //----- ЗАКРЫТИЕ ОРДЕРОВ
    if(Buf1==0 && Buf2!=0)
    {
    Закрытие ранее открытых двух ордеров с одинаковым магиком
    }
    else;



  2. post_thanks Получено лайков: 2

    Незарегистрированный (2 пользователя)

    <a href="https://www.mt5.com/ru/forex_analysis">Форекс портал</a>
  3. линк#2
    Специалист
    ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация Аватар для ir0407
    Регистрация:
    02.12.2010
    Сообщений:
    7,183
    Накопленные выплаты (Подробнее):
    164763 RUB
    Поставил(а) лайков:
    922
    Получено лайков:   7,267
    в 3,494 сообщениях
    101%
    ПодписатьсяПодписаться
    Подписано: 0
    Цитата Сообщение от FXman1988 Посмотреть сообщение
    я не знаком с функциями OrderSend и CloseOrder.
    Так может стоит познакомиться с ними? В справке все довольно доходчиво описано. И примеры тоже есть. Если вы думаете, что тут кто-то вам выложит что-то отличное от того, что есть в справке, то вы ошибаетесь.


  4. post_thanks Получено лайков: 2

    Незарегистрированный (2 пользователя)

  5. линк#3
    В начале пути
    FXman1988 стараюсь положительно себя зарекомендовать Аватар для FXman1988
    Регистрация:
    27.04.2018
    Пол:
    Мужчина
    Сообщений:
    21
    Накопленные выплаты (Подробнее):
    0 RUB
    Поставил(а) лайков:
    0
    Получено лайков:   0
    в 0 сообщениях
    0%
    ПодписатьсяПодписаться
    Подписано: 0
    Цитата Сообщение от ir0407 Посмотреть сообщение
    Так может стоит познакомиться с ними? В справке все довольно доходчиво описано. И примеры тоже есть. Если вы думаете, что тут кто-то вам выложит что-то отличное от того, что есть в справке, то вы ошибаетесь.
    MQL код:

    //----- УСЛОВИЕ ЧТОБЫ ОРДЕРА НЕ ДУБЛИРОВАЛИСЬ
    int sellcht = 0;
    int buycht = 0;
    int ordcht = 0;
    for (int i=0; i {
    if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
    {
    if(OrderSymbol() == Symbol1 && OrderMagicNumber() == Magic && OrderType() == OP_SELL)
    {
    sellcht++;
    ordcht++;
    }
    if(OrderSymbol() == Symbol2 && OrderMagicNumber() == Magic && OrderType() == OP_BUY)
    {
    buycht++;
    ordcht++;
    }
    if(OrderSymbol() == Symbol1 && OrderMagicNumber() == Magic && OrderType() == OP_BUY)
    {
    buycht++;
    ordcht++;
    }
    if(OrderSymbol() == Symbol2 && OrderMagicNumber() == Magic && OrderType() == OP_SELL)
    {
    sellcht++;
    ordcht++;
    }
    }
    }

    //----- ОТКРЫТИЕ ОРДЕРОВ
    if(Buf1 == -1.0) //----- 1-SELL, 2-BUY
    {
    if(sellcht==0 && ordcht<2)
    {
    int ticket1=OrderSend(Symbol1,OP_SELL,Lots,Bid,3,0,0," OP_SELL",Magic,0,clrRed);
    if(ticket1<0) Print("OrderSend завершилась с ошибкой #",GetLastError());
    else Print("Функция OrderSend успешно выполнена");
    }
    //-----
    if(buycht==0 && ordcht<2)
    {
    int ticket2=OrderSend(Symbol2,OP_BUY,Lots,Ask,3,0,0,"O P_BUY",Magic,0,clrBlue);
    if(ticket2<0) Print("OrderSend завершилась с ошибкой #",GetLastError());
    else Print("Функция OrderSend успешно выполнена");
    }
    }
    //-----
    if(Buf1 == 1.0) //----- 1-BUY, 2-SELL
    {
    if(buycht==0 && ordcht<2)
    {
    int ticket1=OrderSend(Symbol1,OP_BUY,Lots,Ask,3,0,0,"O P_BUY",Magic,0,clrBlue);
    if(ticket1<0) Print("OrderSend завершилась с ошибкой #",GetLastError());
    else Print("Функция OrderSend успешно выполнена");
    }
    //-----
    if(sellcht==0 && ordcht<2)
    {
    int ticket2=OrderSend(Symbol2,OP_SELL,Lots,Bid,3,0,0," OP_SELL",Magic,0,clrRed);
    if(ticket2<0) Print("OrderSend завершилась с ошибкой #",GetLastError());
    else Print("Функция OrderSend успешно выполнена");
    }
    }

    //----- ЗАКРЫТИЕ ОРДЕРОВ
    if(Buf1 == 0.0)
    {
    for (int i=0; i {
    if (OrderSelect(i,MODE_TRADES)==true)
    {
    if (OrderSymbol() == Symbol1 && OrderMagicNumber() == Magic && OrderType() == OP_SELL) int close = OrderClose(OrderTicket(),OrderLots(),Ask,0,Gray);
    if (OrderSymbol() == Symbol1 && OrderMagicNumber() == Magic && OrderType() == OP_BUY) int close = OrderClose(OrderTicket(),OrderLots(),Bid,0,Gray);
    if (OrderSymbol() == Symbol2 && OrderMagicNumber() == Magic && OrderType() == OP_BUY) int close = OrderClose(OrderTicket(),OrderLots(),Bid,0,Gray);
    if (OrderSymbol() == Symbol2 && OrderMagicNumber() == Magic && OrderType() == OP_SELL) int close = OrderClose(OrderTicket(),OrderLots(),Ask,0,Gray);
    }
    //-----
    if (OrderSelect(i,MODE_TRADES)==true)
    {
    if (OrderSymbol() == Symbol1 && OrderMagicNumber() == Magic && OrderType() == OP_SELL) int close = OrderClose(OrderTicket(),OrderLots(),Ask,0,Gray);
    if (OrderSymbol() == Symbol1 && OrderMagicNumber() == Magic && OrderType() == OP_BUY) int close = OrderClose(OrderTicket(),OrderLots(),Bid,0,Gray);
    if (OrderSymbol() == Symbol2 && OrderMagicNumber() == Magic && OrderType() == OP_BUY) int close = OrderClose(OrderTicket(),OrderLots(),Bid,0,Gray);
    if (OrderSymbol() == Symbol2 && OrderMagicNumber() == Magic && OrderType() == OP_SELL) int close = OrderClose(OrderTicket(),OrderLots(),Ask,0,Gray);
    }
    }
    }


    Вот что получилось у меня, ордера бывает не открываются по второму инструменту и с закрытием те же проблемы...


  6. post_thanks Получено лайков: 2

    Незарегистрированный (2 пользователя)

  7. линк#4
    Кандидат форумных наук
    MonyaMaker хорошая репутация MonyaMaker хорошая репутация MonyaMaker хорошая репутация MonyaMaker хорошая репутация MonyaMaker хорошая репутация MonyaMaker хорошая репутация Аватар для MonyaMaker
    Регистрация:
    03.04.2017
    Пол:
    Мужчина
    Сообщений:
    1,704
    Накопленные выплаты (Подробнее):
    59661 RUB
    Поставил(а) лайков:
    277
    Получено лайков:   653
    в 589 сообщениях
    38%
    ПодписатьсяПодписаться
    Подписано: 0
    Цитата Сообщение от FXman1988 Посмотреть сообщение

    Если это мультик, то в какой функции OnTick() или OnTimer(), весь этот код располагаем?
    Видимо в журнале можно прочитать, что что-то не так, либо при открытии, либо при закрытии.
    Лог читай.
    Если это моно советник, то зачем лезть на другие инструменты?

    Последний раз редактировалось MonyaMaker; 25.09.2019 в 17:54.

  8. Dragon R
  9. линк#5
    Специалист
    ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация Аватар для ir0407
    Регистрация:
    02.12.2010
    Сообщений:
    7,183
    Накопленные выплаты (Подробнее):
    164763 RUB
    Поставил(а) лайков:
    922
    Получено лайков:   7,267
    в 3,494 сообщениях
    101%
    ПодписатьсяПодписаться
    Подписано: 0
    Цитата Сообщение от FXman1988 Посмотреть сообщение
    ордера бывает не открываются по второму инструменту и с закрытием те же проблемы...
    Ну естественно... Вы используете разные инструменты, а цены Bid и Ask почему-то берете только с того графика, на котором висит советник. Просто напишите свои функции-оболочки вокруг нужных торговых функций, в которых организуйте правильное получение актуальных цен для инструмента переданного в функцию в качестве параметра. Базовый вариант такой функции может выглядеть примерно так.
    Код:
    //------------------------------------------------------------------------
    //Пользовательская функция SendMarketOrder()
    //Параметры:
    //  S - символ, по которому ставим ордер
    //  T - тип ордера
    //  V - объем ордера
    //  M - мейджик для ордера(необязательный параметр)
    //  C - комментарий к ордеру(необязательный параметр)
    //------------------------------------------------------------------------
    int SendMarketOrder(string S, int T, double V, int M = 0, string C = "")
    {
      double Price = 0.0; int Slippage = 3; color Color = clrNONE;
      
      switch(T)
      {
        case OP_BUY:  Price = SymbolInfoDouble(S, SYMBOL_ASK); Color = clrBlue; break;
        case OP_SELL: Price = SymbolInfoDouble(S, SYMBOL_BID); Color = clrRed;  break;
      }
      
      return(OrderSend(S, T, V, Price, Slippage, 0.0, 0.0, C, M, 0, Color));
    }
    
    //Варианты использования в коде
    Ticket1 = SendMarketOrder(Symbol1, OP_BUY, Lots);                     //Без мейджика и комментария к ордеру
    Ticket2 = SendMarketOrder(Symbol2, OP_SELL, Lots, Magic, "OP_SELL");  //С мейджиком и комментарием к ордеру



Подписанные на тему (1)

Открыть

Похожие темы

  1. 61863630/3eaSY4RW- открытие и закрытие орденов на любой вкус по методу самого себя
    от Денча в разделе Конкурс трейдеров "Курортный скальпинг" [Архив]
    Replies: 2
    Последнее сообщение: 23.06.2015, 20:20
  2. On-line сигналы на открытие и закрытие Buy/Sell позиций.
    от Felix в разделе Торговые сигналы, прогнозы, рекомендации
    Replies: 40
    Последнее сообщение: 13.02.2015, 07:12
  3. Replies: 1
    Последнее сообщение: 09.09.2013, 17:29
  4. Мультивалютное открытие ордеров
    от TradeOn в разделе MQL-программирование, АТС
    Replies: 6
    Последнее сообщение: 22.09.2012, 22:43
  5. Открытие и закрытие позиции по времени
    от Niika в разделе Автоматизированные торговые системы
    Replies: 15
    Последнее сообщение: 21.04.2012, 16:49