Скачать MetaTrader 5

ВОПРОС К ЗНАТОКАМ - страница 3

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Используй MQL5 Cloud Network. Тестируй роботов с гиперскоростью!
TarasBY
1739
TarasBY 2013.12.15 07:42  
Rita:

Приветствую всех! Вопрос теоретический.

Сущ. известная функция Игоря Кима isCloseLastPosByTake() - https://www.mql5.com/ru/forum/131859/page4#434230 Эта функция возвращает флаг закрытия последней позиции по тейку. Флаг поднят - True - сработал TakeProfit. Флаг опущен - False - позиция была закрыта по другой причине. Более точный отбор учитываемых позиций задаётся внешними параметрами.

У меня советник открывает несколько позиций по циклу (одну - после закрытия другой). Указанная функция здесь задействована. Причем, самая первая позиция цикла открывается так:

Я никак не соображу, как мне задать первое условие так, чтобы при начальном включении - советник не обращал на него (на первое условие) внимания?

Подскажите пож.?

Добавьте в общие условия глобальный флаг первого запуска и после первого запуска флаг "закройте".
Рита
438
Рита 2013.12.15 08:02  

?Благодарю. Нашла в поиске пример. Вот так правильно будет?

bool GlobalFlag;
int init()
{
   GlobalFlag = true;
   return(0);
}
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
{
   if ( GlobalFlag &&   NumberOfPositions(NULL,-1, Magic)=>1 )

          // если советник открыл позицию - меняем флаг     
      {
         GlobalFlag = false;
         
      }  
 

Т.е. GlobalFlag = true; - означает ли это, что имеет место начальное включение?

А при GlobalFlag = false - советник уже проделал какую-то операцию?

Иначе говоря, я могу далее в своем коде заменить первое условие открытия первой позиции цикла

на вот такое: if ( (GlobalFlag == false && isCloseLastPosByTake(NULL,-1,-1)== True ) || GlobalFlag == true )

?

TarasBY
1739
TarasBY 2013.12.15 08:44  
Rita:

?Благодарю. Нашла в поиске пример. Вот так правильно будет?

Т.е. GlobalFlag = true; - означает ли это, что имеет место начальное включение?

А при GlobalFlag = false - советник уже проделал какую-то операцию?

Иначе говоря, я могу далее в своем коде заменить первое условие открытия первой позиции цикла

на вот такое: if ( (GlobalFlag = false && isCloseLastPosByTake(NULL,-1,-1)== True ) || GlobalFlag = true )

?

Если я правильно Вас понял, то "Да".
123
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий