Ответить
21.08.2017, 22:22
Аватар для Anna89
Anna89 Anna89 вне форума Интересующийся
Регистрация: 02.10.2015 / Сообщений: 5
Поблагодарили 0 раз(а) / Репутация: 1

По умолчанию Доработка советника

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


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

Скрытый текст

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 после выхода из канала, отмеченного ранее сигналом

- границы канала (и центральная) не меняли направление

Последний раз редактировалось NSerega; 25.08.2017 в 02:47.
24.08.2017, 10:42
Аватар для AlexeyVik
AlexeyVik AlexeyVik на форуме Программист mql4 mql5
Регистрация: 19.11.2009 / Сообщений: 2,608
Поблагодарили 3,744 раз(а) / Репутация: 3737
Это код mql4, а просите помощи в ветке mql5. Где ошибка?
Ответить


Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Выкл.
Pingbacks are Выкл.
Refbacks are Выкл.



Текущее время: 09:25. Часовой пояс GMT.


Перевод: zCarot
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
SEO by vBSEO