Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Пиши программы на заказ. Зарабатывай с помощью сервиса Фриланс!
Mike Kharkov
846
Mike Kharkov 2014.08.14 19:35 
Здравствуйте:
Есть такой код:

//функция формирующая торговый запрос на открытие позиции  -------------------+
//и проверки результата открытия
bool SendOrder(double price, double volume)
{
   double pos_prof = PositionGetDouble(POSITION_PROFIT);
   
   if(volume >= 99){
   Print("ОШИБКА! Обьем Ордера привысил размер 99 лотов и сейчас ровняется", volume,"-м");
   return(false);
   };
   
   counter++;
   MqlTradeRequest request = {0};
   MqlTradeResult  result  = {0};
   //---заполняем поля торгового запроса
   request.action       = TRADE_ACTION_DEAL;       // Тип выполняемого действия
   request.symbol       = _Symbol;                 // Имя торгового инструмента
   request.magic        = magic_number;
   request.volume       = volume;                  // Запрашиваемый объем сделки в лотах
   request.price        = price;                   // Цена  
   request.type         = ORDER_TYPE_BUY;          // Тип ордера
   
   if(pos_prof >= 0.10 * _Point)
      {
            request.tp           = price + 20*_Point;       // Цена, по которой сработает Take Profit ордер при движении цены в благоприятном направлении
            Print("Прибыль меньше 100$ и сейчас равна: ", pos_prof);
      }
      
   else
      {
            request.tp           = price + 40*_Point;                  // Цена, по которой сработает Take Profit ордер при движении цены в благоприятном направлении
            Print("Прибыль больше 99$ и сейчас равна: ", pos_prof);
      };
   
   request.sl           = price - 270*_Point;      // Цена, по которой сработает Stop Loss ордер при движении цены в неблагоприятном направлении
   request.deviation    = 0;                    // Максимально приемлемое отклонение от запрашиваемой цены, задаваемое в пунктах
   request.type_filling = ORDER_FILLING_IOC;       // Тип ордера по исполнению
   request.type_time    = ORDER_TIME_GTC;


   return(false);
}//-------------------------------------------------------------------------------------------------+
В данном коде, в случае прибыли(по ходу сделки) > 0.10 я ставлю тейк профит по цене +20 к цене аска.
Но. Я не имею права(т.к. счет не ECN) выставлять профит по текущей цене аска.

Вопрос:
Каким образом(что надо прописать?) можно забрать прибыль именно маркетом(а не тейк профитом) или как угодно - но, что бы в случае прибыли больше 0.10 я сразу закрывал позицию(т.к. это можно сделать руками, кликнув по крестику справа, возле каждой позиции в окне терминала) и не ждал, пока ещё 20 пунктов цена пойдет в мою сторону?

И ещё такой момент:
Ставил демо ECN и там работает все так как надо при данном коде - но не на всех инструментах.
То есть на одних прибыль забирается , а на других вообще отказывается работать тейк профит.
Почему так получается?
/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий