ORDER_TYPE_BUY. Открывает, а стопы не ставит! Почему? Билд 574

 

Торгует, стопы и профиты получает, ордера открывает, но без стопов и профитов.

Входные параметры такие:

Trade.Send(Symbol(), ORDER_TYPE_SELL, 0.2, SymbolInfoDouble(Symbol(),SYMBOL_BID), SymbolInfoDouble(Symbol(),SYMBOL_BID) + 20*k*_Point, SymbolInfoDouble(Symbol(),SYMBOL_BID) - 20*k*_Point, 20111111, "SMAS-Expert", TRADE_ACTION_DEAL);

 

Trades::Send(string vPair, ENUM_ORDER_TYPE type, double volume, double price, double stoploss, double takeprofit, ulong magic, string comment, ENUM_TRADE_REQUEST_ACTIONS action)
{
   volume = SymbolInfoDouble(vPair, SYMBOL_VOLUME_MIN) > volume ? SymbolInfoDouble(vPair, SYMBOL_VOLUME_MIN):volume;
   request.action       = action;
   request.symbol       = vPair;
   request.magic        = magic;
   request.volume       = volume;
   request.type         = type;
   request.price        = NormalizeDouble(price, _Digits);
   request.sl           = NormalizeDouble(stoploss, _Digits);
   request.tp           = NormalizeDouble(takeprofit, _Digits);
   request.deviation    = 3;
   request.type_filling = ORDER_FILLING_AON;
   request.comment      = comment;
   Print(" ---- ",request.tp);
   bool success = OrderSend(request,result);
 
trump:

Торгует, стопы и профиты получает, ордера открывает, но без стопов и профитов.

Входные параметры такие:

а выходные какие?
 
Уточните какое исполнение у вашего дц (instant, market)
 
Зависит от брокера. Некоторые требуют открытия ордера в два этапа. Сначала нужно открыть ордер без тейк профита и стоп лосса. После этого нужно программно выставить тейк профит и стоп лосс.
 
TRADE_ACTION_DEAL
Тестирую на Alpari
 
220Volt:
Уточните какое исполнение у вашего дц (instant, market)
Как вычислить программно. Вроде все три типа 
 
trump:
Тестирую на Alpari

У Альпари исполнение по рынку "market execution" что означает что стоп уровни выставляются уже на существующую позицию.

Так что придётся вам досылать приказы на установку стопов, уже после контроля открытия позиции, отдельным приказом.

Для этого есть специальный тип

TRADE_ACTION_SLTP
trump:
Как вычислить программно. Вроде все три типа 

програмно не скажу, а убедится можно открыв окно установки ордера, там нет полей установки стопов, и на кнопках приказов написано

Sell by market и Buy by market

у MQ просто Sell и Buy

 
trump:
Как вычислить программно. Вроде все три типа 
SymbolInfoInteger()  - SYMBOL_TRADE_EXEMODE
 
Встроеный эксперт имеет похожую структуру кода (MovingAverage). Поправил его со стопами

sergeev:
а выходные какие? 


Ошибки в смысле? Ошибок нет!
 
Urain:

У Альпари исполнение по рынку "market execution" что означает что стоп уровни выставляются уже на существующую позицию.

Так что придётся вам досылать приказы на установку стопов, уже после контроля открытия позиции, отдельным приказом.

Для этого есть специальный тип


Это я понял неудобно. А можно программно понять есть необходимость досылать или нет (конечно не просмотром открытых позиций сделок или ордеров по истории). Сам параметр исполнения можно вытащить программно?
 
220Volt:
SymbolInfoInteger()  - SYMBOL_TRADE_EXEMODE
Спасибо!
Причина обращения: