Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
#property link "https://www.mql5.com"
#property version "1.00"
//
double pos_sl;
long pos_id;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
if(PositionSelect(Symbol()))
{
pos_sl = PositionGetDouble(POSITION_SL);
pos_id = long(PositionGetInteger(POSITION_IDENTIFIER));
}
}
//+------------------------------------------------------------------+
// Expert Trade Transaction function |
//+------------------------------------------------------------------+
void OnTradeTransaction(const MqlTradeTransaction &trans,
const MqlTradeRequest &request,
const MqlTradeResult &result)
{
switch(trans.type)
{
case TRADE_TRANSACTION_DEAL_ADD:
if(!PositionSelect(Symbol())) //Позиции НЕТ закрыта
{
if(HistorySelectByPosition(pos_id))
{
//Смотрим всю необходимую инфу
}
}
break;
}
}
#property link "https://www.mql5.com"
#property version "1.00"
//
double pos_sl;
long pos_id;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
intOnInit()
{
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
voidOnTick()
{
if(PositionSelect(Symbol()))
{
pos_sl = PositionGetDouble(POSITION_SL);
pos_id = long(PositionGetInteger(POSITION_IDENTIFIER));
}
}
//+------------------------------------------------------------------+
// Expert Trade Transaction function |
//+------------------------------------------------------------------+
voidOnTradeTransaction(constMqlTradeTransaction &trans,
const MqlTradeRequest &request,
constMqlTradeResult &result)
{
switch(trans.type)
{
caseTRADE_TRANSACTION_DEAL_ADD:
if(!PositionSelect(Symbol())) //Позиции НЕТ закрыта
{
if(HistorySelectByPosition(pos_id))
{
//Смотрим всю необходимую инфу
}
}
break;
}
}
Спасибо, рабочий вариант. У меня массив контролируемых ордеров, и SL переносятся выше цены открытия - переход в БУ. Вместо if(!PositionSelect(Symbol())), делаю перебор ы цикле. Всё Ок.
#property link "https://www.mql5.com"
#property version "1.00"
//
double pos_sl;
long pos_id;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
intOnInit()
{
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
voidOnTick()
{
if(PositionSelect(Symbol()))
{
pos_sl = PositionGetDouble(POSITION_SL);
pos_id = long(PositionGetInteger(POSITION_IDENTIFIER));
}
}
//+------------------------------------------------------------------+
// Expert Trade Transaction function |
//+------------------------------------------------------------------+
voidOnTradeTransaction(constMqlTradeTransaction &trans,
const MqlTradeRequest &request,
constMqlTradeResult &result)
{
switch(trans.type)
{
caseTRADE_TRANSACTION_DEAL_ADD:
if(!PositionSelect(Symbol())) //Позиции НЕТ закрыта
{
if(HistorySelectByPosition(pos_id))
{
//Смотрим всю необходимую инфу
}
}
break;
}
}
В Margin Mode: ACCOUNT_MARGIN_MODE_RETAIL_HEDGING !PositionSelect(Symbol()) работать не будет, так как в этом режиме позиция может быть не одна, поэтому, закрытие одной из позиций не приведет к !PositionSelect(Symbol()) == true, так как другие позиции продолжат оставаться в рынке.