Logo

Вход

Войти с помощью соц. сетей
X
 
  • Фильтр
  • Время
  • Показать
Очистить всё
новые сообщения
ТОП СООБЩЕНИЙ
06.01.2016, 22:31
Лучший ответ
Накопленные выплаты: 15893 RUB
Сообщение от traderEvgen Посмотреть сообщение
Как узнать что первая закрылась по Take Profit ????
В истории ордеров посмотреть по тикету.
06.01.2016, 23:52
Лучший ответ
Накопленные выплаты: 21883 RUB
(если имеется в виду MQ4) если ордер закрыт по ТейкПрофит - то время закрытия не равно 0, цена закрытия = ТейкПрофит+-Проскальзывание, и в коммент дописано (tp).
07.01.2016, 12:49
Лучший ответ
Накопленные выплаты: 15893 RUB
Сообщение от nektomk Посмотреть сообщение
(если имеется в виду MQ4)
И зачем всё это нужно - дописывание в комент, его может изменить ДЦ, и время закрытия не равно 0. В терминале есть база
данных открытых и закрытых ордеров. Если ордер находится в базе закрытых ордеров - то он закрылся и можно посмотреть,
с каким профитом он закрылся.
07.01.2016, 13:00
Лучший ответ
Накопленные выплаты: 420 RUB
Сообщение от cgon Посмотреть сообщение
И зачем всё это нужно - дописывание в комент, его может изменить ДЦ, и время закрытия не равно 0. В терминале есть база
данных открытых и закрытых ордеров. Если ордер находится в базе закрытых ордеров - то он закрылся и можно посмотреть,
с каким профитом он закрылся.
Можете помочь с кодом ? Очень прошу
07.01.2016, 13:48
Лучший ответ
Накопленные выплаты: 15893 RUB
Сообщение от traderEvgen Посмотреть сообщение
Можете помочь с кодом ? Очень прошу


MQL код:

if( tiket1 > 0 && OrderSelect(tiket1,SELECT_BY_TICKET ,MODE_HISTORY)==true )
{
Profit = OrderProfit(); iB1++; Lots=OrderLots();
if( Profit > 0)................................................ ...............................
if( Profit < 0)................................................ ...............................
tiket1=-1;
}
if( tiket2 > 0 && OrderSelect(tiket2,SELECT_BY_TICKET ,MODE_HISTORY)==true )
{
Profit = OrderProfit(); iB1++; Lots=OrderLots();
if( Profit > 0)................................................ ...............................
if( Profit < 0)................................................ ...............................
tiket2=-1;
}



Один из вариантов.
07.01.2016, 13:56
Лучший ответ
Накопленные выплаты: 21883 RUB
Сообщение от cgon Посмотреть сообщение
И зачем всё это нужно - дописывание в комент, его может изменить ДЦ, и время закрытия не равно 0. В терминале есть база
данных открытых и закрытых ордеров. Если ордер находится в базе закрытых ордеров - то он закрылся и можно посмотреть,
с каким профитом он закрылся.
ТС интересует не просто факт закрытия ордера, а причина по которой он закрылся. И тут уж волей-неволей приходится копаться даже в комментах к ордеру - что-то нет такой стандартной функции в MT4, а ДЦ подписывают причину.
  • #1 Свернуть

    Как закрылся последний ордер ?

    у меня в советнике открывается две позиции.
    MQL код:
    ticket1 = OrderSend(Symbol(), OP_BUY, 0.1, Ask, 3, GetMaxStopLoss(),  GetTakeProfit(20), "Buy", 100500, 0, Red);   
    ticket2 = OrderSend(Symbol(), OP_BUY, 0.1, Ask, 3, GetMaxStopLoss(), GetTakeProfit(70), "Buy", 100500, 0, Green);

    нужно передвинуть Stop Loss второй позиции когда первая позиция закрывается по Take Profit.
    Как узнать что первая закрылась по Take Profit ????
  • <a href="https://www.instaforex.org/ru/?x=ruforum">InstaForex</a>
  • #2 Свернуть

    Сообщение от traderEvgen Посмотреть сообщение
    Как узнать что первая закрылась по Take Profit ????
    В истории ордеров посмотреть по тикету.

    Комментарий

    • #3 Свернуть

      (если имеется в виду MQ4) если ордер закрыт по ТейкПрофит - то время закрытия не равно 0, цена закрытия = ТейкПрофит+-Проскальзывание, и в коммент дописано (tp).

      Комментарий

      • #4 Свернуть

        Сообщение от nektomk Посмотреть сообщение
        (если имеется в виду MQ4)
        И зачем всё это нужно - дописывание в комент, его может изменить ДЦ, и время закрытия не равно 0. В терминале есть база
        данных открытых и закрытых ордеров. Если ордер находится в базе закрытых ордеров - то он закрылся и можно посмотреть,
        с каким профитом он закрылся.

        Комментарий

        • #5 Свернуть

          Сообщение от cgon Посмотреть сообщение
          И зачем всё это нужно - дописывание в комент, его может изменить ДЦ, и время закрытия не равно 0. В терминале есть база
          данных открытых и закрытых ордеров. Если ордер находится в базе закрытых ордеров - то он закрылся и можно посмотреть,
          с каким профитом он закрылся.
          Можете помочь с кодом ? Очень прошу

          Комментарий

          • #6 Свернуть

            Сообщение от traderEvgen Посмотреть сообщение
            Можете помочь с кодом ? Очень прошу


            MQL код:

            if( tiket1 > 0 && OrderSelect(tiket1,SELECT_BY_TICKET ,MODE_HISTORY)==true )
            {
            Profit = OrderProfit(); iB1++; Lots=OrderLots();
            if( Profit > 0)................................................ ...............................
            if( Profit < 0)................................................ ...............................
            tiket1=-1;
            }
            if( tiket2 > 0 && OrderSelect(tiket2,SELECT_BY_TICKET ,MODE_HISTORY)==true )
            {
            Profit = OrderProfit(); iB1++; Lots=OrderLots();
            if( Profit > 0)................................................ ...............................
            if( Profit < 0)................................................ ...............................
            tiket2=-1;
            }



            Один из вариантов.

            Комментарий

            • #7 Свернуть

              Сообщение от cgon Посмотреть сообщение
              И зачем всё это нужно - дописывание в комент, его может изменить ДЦ, и время закрытия не равно 0. В терминале есть база
              данных открытых и закрытых ордеров. Если ордер находится в базе закрытых ордеров - то он закрылся и можно посмотреть,
              с каким профитом он закрылся.
              ТС интересует не просто факт закрытия ордера, а причина по которой он закрылся. И тут уж волей-неволей приходится копаться даже в комментах к ордеру - что-то нет такой стандартной функции в MT4, а ДЦ подписывают причину.

              Комментарий

              • #8 Свернуть

                Сообщение от cgon Посмотреть сообщение


                MQL код:

                if( tiket1 > 0 && OrderSelect(tiket1,SELECT_BY_TICKET ,MODE_HISTORY)==true )
                {
                Profit = OrderProfit(); iB1++; Lots=OrderLots();
                if( Profit > 0)................................................ ...............................
                if( Profit < 0)................................................ ...............................
                tiket1=-1;
                }
                if( tiket2 > 0 && OrderSelect(tiket2,SELECT_BY_TICKET ,MODE_HISTORY)==true )
                {
                Profit = OrderProfit(); iB1++; Lots=OrderLots();
                if( Profit > 0)................................................ ...............................
                if( Profit < 0)................................................ ...............................
                tiket2=-1;
                }



                Один из вариантов.
                Спасибо большое;
                Но у меня еще один вопрос

                MQL код:
                if(  tiket1 > 0   &&      OrderSelect(tiket1,SELECT_BY_TICKET ,MODE_HISTORY)==true )

                этот if срабатывает на каждом тике после открытие ордера, но я так понял, что после условия
                MQL код:
                 OrderSelect(tiket1,SELECT_BY_TICKET ,MODE_HISTORY)==true
                if должен срабатывать только после закрытия ордера.
                Так вот, как должно быть ?

                Комментарий

                • #9 Свернуть

                  Сообщение от traderEvgen Посмотреть сообщение
                  if должен срабатывать только после закрытия ордера.
                  Так вот, как должно быть ?
                  Советник на каждом тике должен посмотреть, а не закрылся ли ордер с заданным тикетом на данном тике, а если не проверять,
                  то как узнаешь? Можно проверять не на каждом тике, а по таймеру или по закрытию бара, если не боитесь проспать нужный момент.

                  Комментарий

                  • #10 Свернуть

                    Сообщение от cgon Посмотреть сообщение


                    MQL код:

                    if( tiket1 > 0 && OrderSelect(tiket1,SELECT_BY_TICKET ,MODE_HISTORY)==true )
                    {
                    Profit = OrderProfit(); iB1++; Lots=OrderLots();
                    if( Profit > 0)................................................ ...............................
                    if( Profit < 0)................................................ ...............................
                    tiket1=-1;
                    }
                    if( tiket2 > 0 && OrderSelect(tiket2,SELECT_BY_TICKET ,MODE_HISTORY)==true )
                    {
                    Profit = OrderProfit(); iB1++; Lots=OrderLots();
                    if( Profit > 0)................................................ ...............................
                    if( Profit < 0)................................................ ...............................
                    tiket2=-1;
                    }



                    Один из вариантов.
                    Огромнейшее спасибо, пол дня лазил по поисковикам, пока случайно не наткнулся на ваш пост. Перепробовал кучу вариантов не один не работал, а у вас все просто и главное работает, мой код в конечном варианте выглядит вот так:
                    MQL код:

                    if( ticket > 0 && OrderSelect(ticket,SELECT_BY_TICKET ,MODE_HISTORY)==true );
                    {
                    Profit = OrderProfit(); iB1++; Lots=OrderLots();

                    if( Profit > 0);

                    if( Profit < 0);

                    ticket = -1;


                    Теперь мне для пущего счастья, не хватает только понять как сделать так, что бы в некую переменную не важно пусть это будет переменная "Orders" Записывалась например единичка если это закрылся по профиту OP_BUY, а если сработал OP_SELL то пусть в переменной будет нолик.
                    Задумка выглядит так закрылся по профиту ордер на покупку, значит следующий тоже надо сделать что бы был на покупку, ну и соответственно наоборот.

                    Комментарий

                    • #11 Свернуть

                      Сообщение от Rotshilid Посмотреть сообщение
                      Теперь мне для пущего счастья, не хватает только понять как сделать так, что бы в некую переменную не важно пусть это будет переменная "Orders" Записывалась например единичка если это закрылся по профиту OP_BUY, а если сработал OP_SELL то пусть в переменной будет нолик.
                      Задумка выглядит так закрылся по профиту ордер на покупку, значит следующий тоже надо сделать что бы был на покупку, ну и соответственно наоборот.
                      Я не программист, у самого проблемы с этим, но осмелюсь предложить вариант дописать код в цитируемое вами сообщение:
                      MQL код:
                      int buyPlus = 0; // новая переменная buyPlus равна 0
                      int sellPlus = 0; // аналогично
                      if( Profit > 0) && (OrderClosePrice() > OrderOpenPrice()) // если предущий ордер закрылся с плюсом и цена закрытия больше цены отрытия, то:
                      buyPlus = 1; // переменной buyPlus = 1 присваиваем 1
                      if( Profit > 0) && (OrderClosePrice() > OrderOpenPrice())
                      sellPlus = 1;
                      else
                      buyPlus = 0; // если условие не выполнилось то buyPlus равна 0
                      sellPlus = 0;

                      Комментарий

                      • <a href="https://www.instaforex.org/ru/?x=ruforum">InstaForex</a>
                      • #12 Свернуть

                        Сообщение от Igor2009 Посмотреть сообщение
                        Я не программист, у самого проблемы с этим, но осмелюсь предложить вариант дописать код в цитируемое вами сообщение:
                        MQL код:
                        int buyPlus = 0; // новая переменная buyPlus равна 0
                        int sellPlus = 0; // аналогично
                        if( Profit > 0) && (OrderClosePrice() > OrderOpenPrice()) // если предущий ордер закрылся с плюсом и цена закрытия больше цены отрытия, то:
                        buyPlus = 1; // переменной buyPlus = 1 присваиваем 1
                        if( Profit > 0) && (OrderClosePrice() > OrderOpenPrice())
                        sellPlus = 1;
                        else
                        buyPlus = 0; // если условие не выполнилось то buyPlus равна 0
                        sellPlus = 0;
                        Спасибо за помощь, раз вы тоже начинающий программист, то поделюсь с вами вот этим ютуб каналом, сейчас смотрю его видео, там очень много интересного, есть и развернутый ответ и на мой вопрос, причем не просто ответ, а с разъяснениями и там он учит как вообще находить нужные ордера, по прибыли, по времени, по типу, тикету или порядковому номеру. Рассказывает про функции, как создавать циклы, в общем много интересного. Правда смотрю его на скорости Х2, очень медленно рассказывает. Но зато полезные вещи.

                        Комментарий

                        X