Haos писал(а):После проверки советника и устранения возможных нюансов, я могу в саму основную функцию f_ModifySL() еще добавить выставление значков при модификации СЛ на график, возможную подачу сигналов звуковых и вывод ошибок при невозможности модификации. Сейчас же главное - суть работы проверить.
Вот об этой функции идет речь:
- Код: выделить все
void f_ModifySL(int op, int tp, int sl, int dy, int mn)
{
/*
Используются сторонние ресурсы:
1. ф-я f_IfInside()
2. Массивы dblMTP[7], dblMSL[7]
Описание : Изменяет СЛ открытых позиций в зависимости от величины хода цены в профит
Параметры:
op - операция (OP_BUY или OP_SELL)
tp - ТП позиций (пнт.)
sl - СЛ позиций (пнт.)
dy - допуск (пнт).
mn - MagicNumber (-1 - любой магик)
*/
bool bol_Ins, bol_Mod; // Сработала ли ф-ия OrderModify
double dbl_OP, dbl_SL, dbl_TP;
double dbl_TPY; // уровень ТП в зависимости от массива dblMTP[]
for(int i = 0; i < OrdersTotal(); i++)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if(OrderSymbol() == Symbol())
{
if(mn < 0 || OrderMagicNumber() == mn)
{
if(OrderType() == OP_BUY)
{
dbl_OP = OrderOpenPrice();
dbl_SL = OrderStopLoss();
dbl_TP = OrderTakeProfit();
for(int j = 0; j < 7; j++)
{
dbl_TPY = NormalizeDouble(dbl_OP + tp * dblMTP[j] * _Point, _Digits);
bol_Ins = f_IfInside(OP_BUY, dbl_TPY, dy);
if(bol_Ins)
{
dbl_SL = NormalizeDouble(dbl_SL + sl * dblMSL[j] * _Point, _Digits);
bol_Mod = OrderModify(OrderTicket(), dbl_OP, dbl_SL, dbl_TP, 0, CLR_NONE);
}
}
}
else if(OrderType() == OP_SELL)
{
dbl_OP = OrderOpenPrice();
dbl_SL = OrderStopLoss();
dbl_TP = OrderTakeProfit();
for(int j = 0; j < 7; j++)
{
dbl_TPY = NormalizeDouble(dbl_OP - tp * dblMTP[j] * _Point, _Digits);
bol_Ins = f_IfInside(OP_SELL, dbl_TPY, dy);
if(bol_Ins)
{
dbl_SL = NormalizeDouble(dbl_SL - sl * dblMSL[j] * _Point, _Digits);
bol_Mod = OrderModify(OrderTicket(), dbl_OP, dbl_SL, dbl_TP, 0, CLR_NONE);
}
}
}
}
}
}
}
}
Что то идет не по плану.
2017.01.11 19:05:35.918 EA-FiboTrall-v1 USDCHF,Daily: modify #22944178 buy 0.01 USDCHF at 1.02363 sl: 0.00916 tp: 1.06698 ok
2017.01.11 19:15:17.697 '427451': modify order #22944178 buy 0.01 USDCHF at 1.02363 sl: 0.02271 tp: 1.06698 -> sl: 0.02274 tp: 1.06698
2017.01.11 19:38:37.703 EA-FiboTrall-v1 USDCHF,Daily: invalid stoploss for OrderModify function