ПОМОГИТЕ С РЕШЕНИЕМ

 

Мне надо в советнике добавить функцию проверки ... закрылся ордер по стопу тогда ... или по профиту тогда.... как это можно реализовать....

помогите начинающему....

 

мой кусок кода, может подойдет, хотя сам ламер полный :) :

for (int j=0; j<OrdersHistoryTotal(); j++)
{
if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY))
{
if ((OrderProfit()<0))
{

// то, что вам нужно

}
}
if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY))
{

if ((OrderProfit()>0))
{
//то, что вам нужно
}
}
}

 
ask >>:

мой кусок кода, может подойдет, хотя сам ламер полный :) :

for (int j=0; j<OrdersHistoryTotal(); j++)
{
if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY))
{
if ((OrderProfit()<0))
{

// то, что вам нужно

}
}
if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY))
{

if ((OrderProfit()>0))
{
//то, что вам нужно
}
}
}

Все равно не работает... даже если поставить флаги ... к примеру на profit<0 то не торговать если профит то торговать ... тогда перестает торговать даже когда срабатывает профит

 
snif_ram >>:

Мне надо в советнике добавить функцию проверки ... закрылся ордер по стопу тогда ... или по профиту тогда.... как это можно реализовать....

помогите начинающему....

Вот здесь сегодня уже был подобный вопрос https://www.mql5.com/ru/forum/111497/page285

//------------------------------------------------------------------

Функция isCloseLastPosByStop().
Эта функция возвращает флаг закрытия последней позиции по стопу. Флаг поднят - True - сработал StopLoss. Флаг опущен - False - позиция была закрыта по другой причине. 

Функция isCloseLastPosByTake().
Эта функция возвращает флаг закрытия последней позиции по тейку. Флаг поднят - True - сработал TakeProfit. Флаг опущен - False - позиция была закрыта по другой причине.

https://www.mql5.com/ru/forum/107476/page21


 
ask >>:

мой кусок кода, может подойдет, хотя сам ламер полный :) :

for (int j=0; j<OrdersHistoryTotal(); j++)
{
if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY))
{
if ((OrderProfit()<0))
{

// то, что вам нужно

}
}
if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY))
{

if ((OrderProfit()>0))
{
//то, что вам нужно
}
}
}

Все РАБОТАЕТ ПРОБЛЕМУ НАШЕЛ.... Надо было в клиенте в папке тестера убить все ... дальше считает как положено..... посиб тебе ASK....

 
snif_ram писал(а) >>

Мне надо в советнике добавить функцию проверки ... закрылся ордер по стопу тогда ... или по профиту тогда.... как это можно реализовать....

помогите начинающему....

Функция Кима:

Функция isLossLastPos().

Эта функция возвращает флаг убыточности последней закрытой позиции. Флаг поднят - True - последняя позиция была закрыта с убытком. Флаг опущен - False - последняя позиция была закрыта либо в ноль, либо с прибылью. Функция не учитывает свопы и комиссию. Отбор позиций задаётся внешними параметрами:

  • sy - Наименование рыночного инструмента. Если задать этот параметр, то функция учтёт позиции только заданного инструмента. Значение по умолчанию - "" означает любой рыночный инструмент. NULL означает текущий инструмент.
  • op - Торговая операция, тип позиции. Допустимые значения: OP_BUY, OP_SELL или -1. Значение по умолчанию -1 означает любую позицию.
  • mn - Идентификатор позиции, MagicNumber. Значение по умолчанию -1 означает любой идентификатор.
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает флаг убыточности последней позиции.                 |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
bool isLossLastPos(string sy="", int op=-1, int mn=-1) {
  datetime t;
  int      i, j=-1, k=OrdersHistoryTotal();

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
      if (OrderSymbol()==sy || sy=="") {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              if (t<OrderCloseTime()) {
                t=OrderCloseTime();
                j=i;
              }
            }
          }
        }
      }
    }
  }
  if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) {
    if (OrderProfit()<0) return(True);
  }
  return(False);
}
Причина обращения: