Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 871

 

делаю функцию переключения тф при превышении набора ордеров. что я делаю не так? на м5 переключает нормально а дальше нет

extern string helper111="Настройки Helper";//Helper
extern bool helperTRUE=TRUE;        //Вкл/Выкл Helper
extern bool timeM1=TRUE;            //Переключения на М старт когда ордера все закрыты
extern int helper_period=PERIOD_M5; //Периуд М старт в минутах
extern int helper_period0=PERIOD_H1;//Базовый таймфрейм работы советника
extern int order_period1=6;         //Колво ордеров для переключения на Time 1
extern int helper_period1=PERIOD_D1;//Time 1 в минутах
extern int order_period2=8;         //Колво ордеров для переключения на Time 2
extern int helper_period2=PERIOD_W1;//Time 2 в минутах


int helperrr()
{
   if(helperTRUE==TRUE) {  
   if(timeM1==TRUE && NumberOfPositions()==0) ChartSetSymbolPeriod(0, NULL, helper_period);
   else {
   if(((NumberOfPositions1()>=0 && NumberOfPositions1()<order_period1)
   || (NumberOfPositions1()>=0 && NumberOfPositions2()<order_period1)
   || (NumberOfPositions1()>=0 && NumberOfPositions3()<order_period1)) && _Period != helper_period0)
   ChartSetSymbolPeriod(0, NULL, helper_period0);
   if((NumberOfPositions1()>=order_period1 && NumberOfPositions1()<order_period2 && OrderMagicNumber()==MagicNumber_1)
   || (NumberOfPositions2()>=order_period1 && NumberOfPositions2()<order_period2 && OrderMagicNumber()==MagicNumber_2)
   || (NumberOfPositions3()>=order_period1 && NumberOfPositions3()<order_period2 && OrderMagicNumber()==MagicNumber_3))
   ChartSetSymbolPeriod(0, NULL, helper_period1);
   if((NumberOfPositions1()>=order_period2 && OrderMagicNumber()==MagicNumber_1)
   || (NumberOfPositions2()>=order_period2 && OrderMagicNumber()==MagicNumber_2)
   || (NumberOfPositions3()>=order_period2 && OrderMagicNumber()==MagicNumber_3))
   ChartSetSymbolPeriod(0, NULL, helper_period2);
   }
   }
   return(0);
}
 
fxsaber:

не нашел у себя торговых инструментов типа индекс доллара и т.п (индикативы?)

на них торговля запрещена, а как Ваш код будет себя вести?

 
Igor Makanu:

не нашел у себя торговых инструментов типа индекс доллара и т.п (индикативы?)

на них торговля запрещена, а как Ваш код будет себя вести?

Фейковые OrderSend из советника не всегда позволяют определить его настройки.


Код, что предоставил, показывает настройки любого советника, вне зависимости от свойств символа и прочих. Например, запустите советник какой-нибудь, а затем этот скрипт на том же чарте

// Скрипт показывает, в каком режиме Long/Short запущен советник на данном чарте.
void OnStart()
{
  Alert(LongShortToString());
}
 
fxsaber:

Фейковые OrderSend из советника не всегда позволяют определить его настройки.


Код, что предоставил, показывает настройки любого советника, вне зависимости от свойств символа и прочих. Например, запустите советник какой-нибудь, а затем этот скрипт на том же чарте

проверил, работает, но

1. в обсуждении https://www.mql5.com/ru/forum/214590/page6#comment_11947599

в коде нужно заменить    на  return(INIT_SUCCEEDED);   - запустил потестить, сразу и не понял где советник пропал ))

2. не пойму почему если выбираю свойства советника и ставлю другую "галку", то алерт повторно не появляется, при переключении ТФ все норм

Библиотеки: Expert
Библиотеки: Expert
  • 2019.04.23
  • www.mql5.com
Expert: Автор: fxsaber...
 
fxsaber:

Фейковые OrderSend из советника не всегда позволяют определить его настройки.


Код, что предоставил, показывает настройки любого советника, вне зависимости от свойств символа и прочих. Например, запустите советник какой-нибудь, а затем этот скрипт на том же чарте

а можно ли ваш код добавить  в советник?

int testTicket=OrderSend(Symbol(),OP_SELL,0.01,0,3,0,0,"Sell Try",1,0,CLR_NONE);
if (GetLastError() == 4111) testLONG_SHORT="Long Only Mode"; 
testTicket=OrderSend(Symbol(),OP_BUY,0.01,0,3,0,0,"Buy Try",1,0,CLR_NONE); 
if (GetLastError() == 4110) testLONG_SHORT="Short Only Mode";

с этим кодом он бесконечно открывает ордера в лонг и шорт на xauusd

 
Lomonosov1991:

а можно ли ваш код добавить  в советник?

Да.


Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам

Lomonosov1991, 2019.06.04 19:01

int testTicket=OrderSend(Symbol(),OP_SELL,0.01,0,3,0,0,"Sell Try",1,0,CLR_NONE);
if (GetLastError() == 4111) testLONG_SHORT="Long Only Mode"; 
testTicket=OrderSend(Symbol(),OP_BUY,0.01,0,3,0,0,"Buy Try",1,0,CLR_NONE); 
if (GetLastError() == 4110) testLONG_SHORT="Short Only Mode";

с этим кодом он бесконечно открывает ордера в лонг и шорт на xauusd

Здесь идея в том, что нужны именно нулевые объемы.
 
fxsaber:

Да.


Здесь идея в том, что нужны именно нулевые объемы.
он и без обьема 0,01 лота открывает
int testTicket=OrderSend(Symbol(),OP_SELL,0,0,3,0,0,"Sell Try",1,0,CLR_NONE);
if (GetLastError() == 4111) testLONG_SHORT="Long Only Mode"; 
testTicket=OrderSend(Symbol(),OP_BUY,0,0,3,0,0,"Buy Try",1,0,CLR_NONE); 
if (GetLastError() == 4110) testLONG_SHORT="Short Only Mode";

а так вообще не работает

int testTicket=OrderSend(Symbol(),OP_SELL,0,0,0,0,0,"Sell Try",1,0,CLR_NONE);
if (GetLastError() == 4111) testLONG_SHORT="Long Only Mode"; 
testTicket=OrderSend(Symbol(),OP_BUY,0,0,0,0,0,"Buy Try",1,0,CLR_NONE); 
if (GetLastError() == 4110) testLONG_SHORT="Short Only Mode";





 
Igor Makanu:

проверил, работает, но

1. в обсуждении https://www.mql5.com/ru/forum/214590/page6#comment_11947599

в коде нужно заменить    на  return(INIT_SUCCEEDED);   - запустил потестить, сразу и не понял где советник пропал ))

Специально в примере FAILED, чтобы потом руками не снимать.

2. не пойму почему если выбираю свойства советника и ставлю другую "галку", то алерт повторно не появляется, при переключении ТФ все норм

При смене Long/Short не происходит вызова OnDeinit/OnInit.

 
я не понимаю как его запустить((
Файлы:
 
fxsaber:

При смене Long/Short не происходит вызова OnDeinit/OnInit.

странное поведение, обычно после вызова окошка настроек выполняется OnIniT(), ну так да так


Lomonosov1991:
я не понимаю как его запустить((

приатачил пример , разархивируйте и по папкам разбросайте

Файлы:
MQL4.zip  5 kb
Причина обращения: