Хотел посоветоваться по поводу написанного советника

 

Вот мой эксперт весь его смыл заключается в том что он должен находить небольшие перепады цены(достаточные для получения небольшой прибыли) и открывать соответствующие позиции НО мне нужно к нему добавить индекатор зигзаг который будет указывать что можно открывать а что нет (вроде дополнительного условия)

//+------------------------------------------------------------------+
//| Hands Lion. mq4 |
//| |
//| |
//+------------------------------------------------------------------+
#property copyright ""
#property link ""
extern double Lots=0.1;
extern double TakeProf=0.002;
extern double Loss=0.0015;
extern double TrailingStop=70;
int DepthZIG=7;
int ShiftZIG=0;
extern int MovingPeriod=50;
extern int Volna=7;
extern bool AutoLots=true;
int Periods=7;
int YesToOpenBol, YesToOpenBear;
double Masres[2];
double Bids[8];
int count=0;


//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
// определяем были ли перепады цены

int IsTrue()
{


if(Bids[Periods-5]<Bids[Periods-2]&&
Bids[Periods-4]<Bids[Periods-2]&&
Bids[Periods-3]<Bids[Periods-2]&&
Bids[Periods-1]>Bids[Periods-2])
{
count=1;


}
else if(Bids[Periods-5]>Bids[Periods-2]&&
Bids[Periods-4]>Bids[Periods-2]&&
Bids[Periods-3]>Bids[Periods-2]&&
Bids[Periods-1]<Bids[Periods-2])
{
count=1;
}
else
{
count=count+1;

}
if(count>=Volna)
{
return(1);
}
else
{
return(0);
}
}
// в какую сторону открывать
int IsTrueBear()
{
if(Bids[Periods-4]<Bids[Periods-1]&&
Bids[Periods-3]<Bids[Periods-1]&&
Bids[Periods-2]<Bids[Periods-1]&&
Bids[Periods]>Bids[Periods-1])
{

return(1);
}
else
{

return(0);
}
}
int IsTrueBol()
{
if(Bids[Periods-4]>Bids[Periods-1]&&
Bids[Periods-3]>Bids[Periods-1]&&
Bids[Periods-2]>Bids[Periods-1]&&
Bids[Periods]<Bids[Periods-1])
{
return(1);
}
else
{
return(0);
}
}

//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
int cnt,total,ticket;
double Bi;
double maS,maL;

maS=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,0);
maL=iMA(NULL,0,MovingPeriod,MovingShift,MODE_LWMA,PRICE_CLOSE,0);
cnt=0;
Bi=MarketInfo(Symbol(),MODE_BID);
for(cnt=0;cnt<=8;cnt++)
{
Bids[cnt]=Bids[cnt+1];
}
Bids[7]=Bi;
total=OrdersTotal();
if(Bids[7]==0)
{
return(0);
}
ZIG0=ZIG1;
ZIG1=ZIG2;
ZIG2=ZIG3;
ZIG3=ZIG4;
ZIG4=ZIG5;
ZIG5=0;
if (AccountFreeMargin()<TrailingStop)
{
Print("NO MONEY");
return(0);
}
if (AutoLots==true)
{
if(AccountFreeMargin()>Bi*1300+100)
{
Lots=1;
}
if(AccountFreeMargin()>Bi*5000+100)
{
Lots=4;
}
if(AccountFreeMargin()>Bi*10000+1000)
{
Lots=10;
}
if(AccountFreeMargin()>Bi*50000+1000)
{
Lots=40;
}
if(AccountFreeMargin()>Bi*100000+10000)
{
Lots=100;
}
}
if (total>0)
{
if(IsTrueBear()==1&&IsTrue()==1&&maL<maS)
{

for(cnt=0;cnt<=total;cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==OP_SELL&&OrderSymbol()==Symbol())
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Green);
YesToOpenBol=1;
Masres[0]=0;
Masres[1]=0;
Masres[2]=0;
return(0);
}
}
}


if(IsTrueBol()==1&&IsTrue()==1&&maL>maS)
{

for(cnt=0;cnt<=total;cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==OP_BUY&&OrderSymbol()==Symbol())
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Green);
YesToOpenBear=1;
Masres[0]=0;
Masres[1]=0;
Masres[2]=0;
return(0);
}
}
}
}

if(IsTrue()==1&&maL>maS)
{

for(cnt=0;cnt<=total;cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==OP_SELL&&OrderSymbol()==Symbol())
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid+Loss,OrderTakeProfit(),0,Violet);
}
}
}
if(IsTrue()==1&&maL<maS)
{
for(cnt=0;cnt<=total;cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==OP_BUY&&OrderSymbol()==Symbol())
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask-Loss,OrderTakeProfit(),0,Violet);
}
}
}
if(IsTrueBear()==1&&IsTrue()==1&&total<1) // вот тут то и проблема я расчитывал использовать зигзаг но ни чего не получается (не могу его прикрепить )
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+Loss,Bid-TakeProf,"My", 16384,0, Violet);
Masres[0]=MarketInfo(Symbol(),MODE_BID);
Masres[1]=1;
Masres[2]=2;
}
if(IsTrueBol()==1&&IsTrue()==1&&total<1)
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-Loss,Ask+TakeProf,"My", 16384,0,Violet);
Masres[0]=MarketInfo(Symbol(),MODE_BID);
Masres[1]=1;
Masres[2]=1;
}


//----
return(0);
}
//+------------------------------------------------------------------+
и вообще стоит ли такой эксперт внимания?

 
Стоит ли внимания внимания завсит от того, что вы от него ожидаете и как собираетесь использовать.

Для вставки кода используйте кнопку [MQL].
 
Integer:
Стоит ли внимания внимания завсит от того, что вы от него ожидаете и как собираетесь использовать.

Для вставки кода используйте кнопку [MQL].

Конечно я не ожидаю от него прибыли 1*10^6 у меня основная сложность в том что я не могу применить индикатор  зигзаг. Как из этого индикатора вытащить точки перегиба граффика? и возможно ли это? И еще 1 вопрос этот индикатор всегда так запаздывает?
 
 
Skydiver:

Конечно я не ожидаю от него прибыли 1*10^6 у меня основная сложность в том что я не могу применить индикатор зигзаг. Как из этого индикатора вытащить точки перегиба граффика? и возможно ли это? И еще 1 вопрос этот индикатор всегда так запаздывает?

Просматривать значение индикатора на барах начиная с нулевого, если есть значение не равное 0 или EMPTY_VALUE  - значит есть перегиб. Запаздывание - так он устроен