Доработка советника

Anna89

Новичок форума
Здравствуйте. Помогите, пожалуйста, доработать советник. Не могу никак прописать условие для такого индикатора:
Bezimyanni_7499731_27287660.jpg


Код советника:

void start()
{
total=OrdersTotal();

if(total<1)
{
// нет ни одного открытого ордера
if(AccountFreeMargin()<(1*Lot))
{
Print("Нет средств. Свободная маржа счета = ",AccountFreeMargin());
}
}

//ищем тикеты открытых ордеров
for(int i=0; i<=OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) continue;
if(OrderType()==OP_BUY && OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
if(OrderType()==OP_SELL && OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)

return;
}

if (tma_buy()==1)
{
double ask=NormalizeDouble(Ask,Digits);
double bid=NormalizeDouble(Bid,Digits);
SL=NormalizeDouble(Bid-StopLoss*Point,Digits);

ticket=OrderSend(Symbol(),OP_BUY,Lot,ask,Slippage,SL,0,"",Magic,0,clrGreen);
if(ticket==-1)
{
NumberError=GetLastError();
Print("Ошибка(",NumberError,") открытия Buy ",Error(NumberError));
}
}
if (tma_sell()==-1)
{
double ask=NormalizeDouble(Ask,Digits);
double bid=NormalizeDouble(Bid,Digits);
SL=NormalizeDouble(Ask+StopLoss*Point,Digits);

ticket=OrderSend(Symbol(),OP_SELL,Lot,bid,Slippage,SL,0,"",Magic,0,clrRed);
if(ticket==-1)
{
NumberError=GetLastError();
Print("Ошибка(",NumberError,") открытия Buy ",Error(NumberError));
}
}
//+------------------------------------------------------------------+
//Закрытие ордеров
if (AutoClose)
{
Al_1=iCustom(NULL,0,"3 in 1 Alert",HalfLength,PRICE_MODE,ATR_PERIOD,K,0,0);
Al_2=iCustom(NULL,0,"3 in 1 Alert",HalfLength,PRICE_MODE,ATR_PERIOD,K,1,0);
Al_3=iCustom(NULL,0,"3 in 1 Alert",HalfLength,PRICE_MODE,ATR_PERIOD,K,2,0);
Al_4=iCustom(NULL,0,"3 in 1 Alert",HalfLength,PRICE_MODE,ATR_PERIOD,K,3,0);
Al_5=iCustom(NULL,0,"3 in 1 Alert",HalfLength,PRICE_MODE,ATR_PERIOD,K,4,0);

// for (int i=0; v<OrdersTotal(); i++) {
for(int i=OrdersTotal()-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES));
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{
if(OrderType()==OP_BUY)
{
if(tma_sell()==-1)
{
OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Yellow);
//return(0);
}
}
if(OrderType()==OP_SELL)
{
if(tma_buy()==1)
{
OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Yellow);
//return(0);
}
}
} // Symbol()
} // select
} //total
} //Close_
//+------------------------------------------------------------------+
if(trail==true)
{
Trailling();
}

return;
}
//+------------------------------------------------------------------+
bool tma_buy()
{
Al_1=iCustom(NULL,0,"3 in 1 Alert",HalfLength,PRICE_MODE,ATR_PERIOD,K,0,0);
Al_2=iCustom(NULL,0,"3 in 1 Alert",HalfLength,PRICE_MODE,ATR_PERIOD,K,1,0);
Al_3=iCustom(NULL,0,"3 in 1 Alert",HalfLength,PRICE_MODE,ATR_PERIOD,K,2,0);
Al_4=iCustom(NULL,0,"3 in 1 Alert",HalfLength,PRICE_MODE,ATR_PERIOD,K,3,0);
Al_5=iCustom(NULL,0,"3 in 1 Alert",HalfLength,PRICE_MODE,ATR_PERIOD,K,4,0);

Al_1=NormalizeDouble(Al_1,Digits);
Al_2=NormalizeDouble(Al_2,Digits);
Al_3=NormalizeDouble(Al_3,Digits);
Al_4=NormalizeDouble(Al_4,Digits);
Al_5=NormalizeDouble(Al_5,Digits);

if(Close[1]>Al_1)
return(true); else return(false);
}
bool tma_sell()
{
Al_1=iCustom(NULL,0,"3 in 1 Alert",HalfLength,PRICE_MODE,ATR_PERIOD,K,0,0);
Al_2=iCustom(NULL,0,"3 in 1 Alert",HalfLength,PRICE_MODE,ATR_PERIOD,K,1,0);
Al_3=iCustom(NULL,0,"3 in 1 Alert",HalfLength,PRICE_MODE,ATR_PERIOD,K,2,0);
Al_4=iCustom(NULL,0,"3 in 1 Alert",HalfLength,PRICE_MODE,ATR_PERIOD,K,3,0);
Al_5=iCustom(NULL,0,"3 in 1 Alert",HalfLength,PRICE_MODE,ATR_PERIOD,K,4,0);

Al_1=NormalizeDouble(Al_1,Digits);
Al_2=NormalizeDouble(Al_2,Digits);
Al_3=NormalizeDouble(Al_3,Digits);
Al_4=NormalizeDouble(Al_4,Digits);
Al_5=NormalizeDouble(Al_5,Digits);

if(Close[1]<Al_3)
return(true); else return(false);
}
Условие должно быть таким:
- цена ниже нижней границы канала

- после пробития канала УЖЕ был должный сигнал

- цена достигла минимального Low после выхода из канала, отмеченного ранее сигналом

- границы канала (и центральная) не меняли направление
 
Последнее редактирование модератором:

AlexeyVik

Программист mql4 mql5
Это код mql4, а просите помощи в ветке mql5. Где ошибка?
 

alex7474

Новичок форума
Здравствуйте,а добавьте пожалуйста в советник ограничение открытия сделок при привышении маржи(в процентах).То есть если маржа к примеру привысила заданный уровень,то советник не должен больше открывать сделок.Заранее спасибо.
 

Вложения

  • multik.mq5
    26,9 КБ · Просмотры: 21
Верх