Команды роботу советнику

satkras

Прохожий
Предлагаю в данной ветке рассмотреть определённые команды для роботов советников.

Мне на данном этапе написания советника требуется условие команды на открытие только одного ордера в определённый период условий, даже когда этот ордер закроется, вплоть до наступления других условий открытия ордера.
У меня пока не получается, открывается следующий ордер при закрытии предыдущего, а этого не требуется, пока условия не сменятся на противоположные.:)
 

Ugar

Гуру форума
Так и добавь условие смены на противоположные.
static bool ПрошлоеУсловие;
bool Условие;
//Что то поднимающее флаг Условие

if(!ПрошлоеУсловие && Условие)
{
//Открыть ордер
}
ПрошлоеУсловие = Условие;

ps А чем не понравилась ветка Ваши вопросы по языку MQL4
 

satkras

Прохожий
Даа. Тут как раз всё понятно, а где именно добавить?
Вот часть кода отвечающая за открытие ордеров:

if (OrdersTotal()==0)
{
if ( Close[1]>MA && Up == 0 && Down > 0 && Volume[0]<Ticke_svechi)
OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,Low[3],Ask+tp,NULL,MagicNumber,0,clrBlue);
else if (Close[1]>MA && Up > 0 && Down == 0 && Volume[0]<Ticke_svechi)
OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,High[3],Bid-sl,NULL,MagicNumber,0,clrRed);
}
 

Ugar

Гуру форума
Как то так
char Signal=0;//Флаг сигнала
static char LastSignal;//Прошлое состояние флага сигнала
//Есловия
if ( Close[1]>MA && Up == 0 && Down > 0 && Volume[0]<Ticke_svechi)Signal=1;
else if (Close[1]>MA && Up > 0 && Down == 0 && Volume[0]<Ticke_svechi)Signal=-1;

if (OrdersTotal()==0)
{//Проверка условий и открытие ордера
if(Signal>0 && LastSignal<=0)
OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,Low[3],Ask+tp,NULL,MagicNumber,0,clrBlue);
if(Signal<0 && LastSignal>=0)
OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,High[3],Bid-sl,NULL,MagicNumber,0,clrRed);
}
LastSignal=Signal;//Запомнить состояние флага для следующего тика

Код не проверял.
 
Верх