Ваши вопросы по языку MQL4

Ugar

Гуру форума
Можно ли перечислить часы для запрета через запятую или как-то иначе, чтоб для каждого часа не писать это.
Не будет торговать в 6, 12, 16 часов.
if(Hour()!=6 && Hour()!=12 && Hour()!=16)
{
//Торговля здесь
}
или
if(Hour()==6 || Hour()==12 || Hour()==16)return;
//Торговля здесь
 

koldun555

Новичок форума
подскажите плиз какой магик поставить чтобы ручные сделки подхватывал? времени нет искать.
 

1Игорь1

Интересующийся
помогите, пожалуйста, настроить МА.
Есть три МА с разными периодами, сейчас одинаково выдают сигналы на открытие, если цена выше то buy, ниже sell:
if(MAperiod1!=0)//сигнал по МА1
{NN++;
ma=iMA(SYMBOL,TF1,MAperiod1,0,MethodMA1,PriceMA1,1);
if(iOpen(SYMBOL,TF1,0)>ma){S4=2;NN2++;}
if(iOpen(SYMBOL,TF1,0)<ma){S4=1;NN2++;}
}
else S4=3;

if(MAperiod2!=0)//сигнал по МА2
{NN++;
ma=iMA(SYMBOL,TF1,MAperiod2,0,MethodMA2,PriceMA2,1);
if(iOpen(SYMBOL,TF1,0)>ma){S5=2;NN2++;}
if(iOpen(SYMBOL,TF1,0)<ma){S5=1;NN2++;}
}
else S5=3;

if(MAperiod3!=0)//сигнал по МА3
{NN++;
ma=iMA(SYMBOL,TF1,MAperiod3,0,MethodMA3,PriceMA3,1);
if(iOpen(SYMBOL,TF1,0)>ma){S6=2;NN2++;}
if(iOpen(SYMBOL,TF1,0)<ma){S6=1;NN2++;}
}
else S6=3;
Как сделать, чтобы сигнал выдавало при buy не только когда цена выше каждой в отдельности, но и чтобы МА1 была выше МА2 и МА3 и также МА2 была выше МА3
 

alexshell

Элитный участник
помогите, пожалуйста, настроить МА.
Есть три МА с разными периодами, сейчас одинаково выдают сигналы на открытие, если цена выше то buy, ниже sell:
if(MAperiod1!=0)//сигнал по МА1
{NN++;
ma=iMA(SYMBOL,TF1,MAperiod1,0,MethodMA1,PriceMA1,1);
if(iOpen(SYMBOL,TF1,0)>ma){S4=2;NN2++;}
if(iOpen(SYMBOL,TF1,0)<ma){S4=1;NN2++;}
}
else S4=3;

if(MAperiod2!=0)//сигнал по МА2
{NN++;
ma=iMA(SYMBOL,TF1,MAperiod2,0,MethodMA2,PriceMA2,1);
if(iOpen(SYMBOL,TF1,0)>ma){S5=2;NN2++;}
if(iOpen(SYMBOL,TF1,0)<ma){S5=1;NN2++;}
}
else S5=3;

if(MAperiod3!=0)//сигнал по МА3
{NN++;
ma=iMA(SYMBOL,TF1,MAperiod3,0,MethodMA3,PriceMA3,1);
if(iOpen(SYMBOL,TF1,0)>ma){S6=2;NN2++;}
if(iOpen(SYMBOL,TF1,0)<ma){S6=1;NN2++;}
}
else S6=3;
Как сделать, чтобы сигнал выдавало при buy не только когда цена выше каждой в отдельности, но и чтобы МА1 была выше МА2 и МА3 и также МА2 была выше МА3
обзови машки mа1 , mа2, mа3 и сравнивай их между собой.
 

1Игорь1

Интересующийся
обзови машки mа1 , mа2, mа3 и сравнивай их между собой.
А как можно прописать это сравнение внутри if

ma=iMA(SYMBOL,TF1,MAperiod2,0,MethodMA2,PriceMA2,1);
if(iOpen(SYMBOL,TF1,0)>ma){S5=2;NN2++;}
if(iOpen(SYMBOL,TF1,0)<ma){S5=1;NN2++;}
тк на выходе if - s5, которое затем используется для окончательного подтверждения сигнала
 

alexshell

Элитный участник
А как можно прописать это сравнение внутри if

ma=iMA(SYMBOL,TF1,MAperiod2,0,MethodMA2,PriceMA2,1);
if(iOpen(SYMBOL,TF1,0)>ma){S5=2;NN2++;}
if(iOpen(SYMBOL,TF1,0)<ma){S5=1;NN2++;}
тк на выходе if - s5, которое затем используется для окончательного подтверждения сигнала

ma1=iMA(SYMBOL,TF1,MAperiod1,0,MethodMA1,PriceMA1,1 );
ma2=iMA(SYMBOL,TF1,MAperiod2,0,MethodMA2,PriceMA2,1 );
ma3=iMA(SYMBOL,TF1,MAperiod3,0,MethodMA3,PriceMA3,1 );
if(ma2>ma3&&ma1>ma2&&ma1>ma3&&iOpen(SYMBOL,TF1,0)>ma1){s= }
типа этого.
 
Последнее редактирование:

ivansss

Новичок форума
Уважаемые форумчане подскажите пожалуйста ,мне в советнике нужно прописать условие проверки условий открытия сделки только при открытии бара ,или 1 тика как я понимаю . if(Volume[0]<1) { условия открытия) не работают,может кто подскажет буду признателен) Заранее извиняюсь ,если не совсем грамотно рассписал:please:
 

alexshell

Элитный участник
Уважаемые форумчане подскажите пожалуйста ,мне в советнике нужно прописать условие проверки условий открытия сделки только при открытии бара ,или 1 тика как я понимаю . if(Volume[0]<1) { условия открытия) не работают,может кто подскажет буду признателен) Заранее извиняюсь ,если не совсем грамотно рассписал:please:

в глобальных переменных:
datetime times;
void OnTick()
{
//---
здесь работа по тикам

if(times == iTime(NULL,NULL,0))return;
times=iTime(NULL,NULL,0);
сюда будет заходить 1 раз на открытие бара
условия проверки и какие нибудь торговые ф-ии
которые выполняются 1 раз на открытии бара
}
или можно так:
void OnTick()
{
здесь работа по тикам

if((iTime(NULL,NULL,0)>times
{
times=iTime(NULL,NULL,0);
// сюда будет заходить 1 раз на открытие бара
// здесь условие проверки
}
здесь работа по тикам

}
 

ansol

Местный знаток
Уважаемые форумчане подскажите пожалуйста ,мне в советнике нужно прописать условие проверки условий открытия сделки только при открытии бара ,или 1 тика как я понимаю . if(Volume[0]<1) { условия открытия) не работают,может кто подскажет буду признателен) Заранее извиняюсь ,если не совсем грамотно рассписал:please:

Тогда уж Volume[0] < 2 , т.е. только когда Volume[0] == 1
А если сразу пачка тиков приходит в реале? На ECN так оно и бывает частенько
 

innovision

Новичок форума
Ребята, подскажите, как програмно читать логи МТ4..?

Может кто встречал уже написанный код с внешней библиотекой..
Или может еще какой способ есть?
 

alexshell

Элитный участник
А всегда ли первый тик приходит в первую секунду открытия бара?
конечно не всегда.Но советник, работающий по тикам, узнает об новом баре на первом тике.насколько это принципиально?
К тому же, для текущего графика проще написать Time[0], а не iTime
Ну да . просто взято из советника,который работает разных таимфреймах. когда лень ,иногда не проще)))
 
Последнее редактирование:
Верх