подскажите что здесь...

 

подскажите пожалуйста в чем тут ошибка (учусь писать самое легкое, но сам уже неразберусь)

extern double TakeProfit = 10;
extern double Lots = 0.1;
extern double Stoploss = 10;

//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
double stochHistCurrent, stochHistPrevious, stochSignalCurrent, stochSignalPrevious;
int cnt, ticket, total;

int start()
{
if(Bars<100)
{
Print("bars less than 100");
return(0);
}
if(TakeProfit<10)
{
Print("TakeProfit less than 10");
return(0); // проверяем TakeProfit
}

double stochHistCurrent =iStochastic(NULL,0,14,3,3,MODE_SMA,0,MODE_MAIN,0);
double stochHistPrevious =iStochastic(NULL,0,14,3,3,MODE_SMA,0,MODE_MAIN,1);
double stochSignalCurrent =iStochastic(NULL,0,14,3,3,MODE_SMA,0,MODE_SIGNAL,0);
double stochSignalPrevious=iStochastic(NULL,0,14,3,3,MODE_SMA,0,MODE_SIGNAL,1);
// buy
if(Stoch < 10,20,OP_BUY)

{
Opn_B=true;
Cls_S=true;
}
// sell
if(Stoch > 90,80,OP_SELL)

{
Opn_S=true;
Cls_B=true;
}


total=OrdersTotal();
if(total<1)

//----
//----
if(AccountFreeMargin()<(1000*Lots))
{
Print("We have no money. Free Margin = ", AccountFreeMargin());

return(0);
}
while(true)
{
if (Tip==0 && Cls_B==true)
{
Alert("The test of lock the Buy",Ticket,"Expectation on answer");
RefreshRates();
Ans=OrderClose(Ticket,Lot,Bid,2,White);
if (Ans==true)
{
Alert ("Close buy",Ticket);
break;
}
if (Fun_Error(GetLastError())==1)
continue;
return;
}

if (Tip==1 && Cls_S==true)
{
Alert("The test of lock the sell",Ticket,"Expectation on answer");
RefreshRates();
Ans=OrderClose(Ticket,Lot,Ask,2,White);
if (Ans==true)
{
Alert ("closed Sell",Ticket);
break;
}
if (Fun_Error(GetLastError())==1)
continue;
return;
}
break;
}
RefreshRates();
Min_Lot=MarketInfo(Symb,MODE_MINLOT);
Free =AccountFreeMargin();
One_Lot=MarketInfo(Symb,MODE_MARGINREQUIRED);
Step =MarketInfo(Symb,MODE_LOTSTEP);

if (Lots > 0)
Lts =Lots;
else
Lts=MathFloor(Free*Prots/One_Lot/Step)*Step;

if(Lts < Min_Lot) Lts=Min_Lot;
else if(Lts>max_lot) Lts=max_lot;
if (Lts*One_Lot > Free)
{
Alert("no money", Lts," lot");
return;
}
//-----------------------------------------------------------------
// Open orders
while(true)
{
if (Total==0 && Opn_B==true)
{
RefreshRates();
SL=Bid - New_Stop(StopLoss)*Point;
TP=Bid + New_Stop(TakeProfit)*Point;
Alert("The test open Buy. Expectation on answer");
Ticket=OrderSend(Symb,OP_BUY,Lts,Ask,2,SL,TP,"buy",0,0,Green);
if (Ticket > 0)
{
Alert ("open buy",Ticket);
return;
}
if (Fun_Error(GetLastError())==1)
continue;
return;
}
if (Total==0 && Opn_S==true)
{
RefreshRates();
SL=Ask + New_Stop(StopLoss)*Point;
TP=Ask - New_Stop(TakeProfit)*Point;
Alert("The test open Sell. Expectation on answer");
Ticket=OrderSend(Symb,OP_SELL,Lts,Bid,2,SL,TP,"sell",0,0,Red);

if (Ticket > 0)
{
Alert ("Open Sell ",Ticket);
return;
}
if (Fun_Error(GetLastError())==1)
continue;
return;
}
break;
}
return;
}
// errors

int Fun_Error(int Error)
{
switch(Error)
{
case 4: Alert("error 4");
Sleep(3000);
return(1);
case 135:Alert("error 135");
RefreshRates();
return(1);
case 136:Alert("error 136");
while(RefreshRates()==false)
Sleep(1);
return(1);
case 137:Alert("error 137");
Sleep(3000);
return(1);
case 146:Alert("error 146");
Sleep(500);
return(1);
// Bledy krytyczne
case 2: Alert("error 2");
return(0);
case 5: Alert("error 5");
Work=false;
return(0);
case 64: Alert("error 64");
Work=false;
return(0);
case 133:Alert("error 133");
return(0);
case 134:Alert("error 134");
return(0);
default: Alert("error",Error);
return(0);
}
}
int New_Stop(int Parametr)
{
int Min_Dist=MarketInfo(Symb,MODE_STOPLEVEL);
if (Parametr<Min_Dist)
{
Parametr=Min_Dist;
Alert("> distance stop limit");
}
return(Parametr);
}

 

тут много чего... но главное - вот такие строчки

if(Stoch > 90,80,OP_SELL)

что они значат? и что за Stoch, че-то я не увидел где он вычисляется... что Вы хотели сделать-то?

 
AHTOH писал (а) >>

подскажите пожалуйста в чем тут ошибка (учусь писать самое легкое, но сам уже неразберусь)

extern double TakeProfit = 10;
extern double Lots = 0.1;
extern double Stoploss = 10;

//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
double stochHistCurrent, stochHistPrevious, stochSignalCurrent, stochSignalPrevious;
int cnt, ticket, total;

int start()
{
if(Bars<100)
{
Print("bars less than 100");
return(0);
}
if(TakeProfit<10)
{
Print("TakeProfit less than 10");
return(0); // проверяем TakeProfit
}

double stochHistCurrent =iStochastic(NULL,0,14,3,3,MODE_SMA,0,MODE_MAIN,0);
double stochHistPrevious =iStochastic(NULL,0,14,3,3,MODE_SMA,0,MODE_MAIN,1);
double stochSignalCurrent =iStochastic(NULL,0,14,3,3,MODE_SMA,0,MODE_SIGNAL,0);
double stochSignalPrevious=iStochastic(NULL,0,14,3,3,MODE_SMA,0,MODE_SIGNAL,1);
// buy
if(Stoch < 10,20,OP_BUY)

{
Opn_B=true;
Cls_S=true;
}
// sell
if(Stoch > 90,80,OP_SELL)

{
Opn_S=true;
Cls_B=true;
}


total=OrdersTotal();
if(total<1)

//----
//----
if(AccountFreeMargin()<(1000*Lots))
{
Print("We have no money. Free Margin = ", AccountFreeMargin());

return(0);
}
while(true)
{
if (Tip==0 && Cls_B==true)
{
Alert("The test of lock the Buy",Ticket,"Expectation on answer");
RefreshRates();
Ans=OrderClose(Ticket,Lot,Bid,2,White);
if (Ans==true)
{
Alert ("Close buy",Ticket);
break;
}
if (Fun_Error(GetLastError())==1)
continue;
return;
}

if (Tip==1 && Cls_S==true)
{
Alert("The test of lock the sell",Ticket,"Expectation on answer");
RefreshRates();
Ans=OrderClose(Ticket,Lot,Ask,2,White);
if (Ans==true)
{
Alert ("closed Sell",Ticket);
break;
}
if (Fun_Error(GetLastError())==1)
continue;
return;
}
break;
}
RefreshRates();
Min_Lot=MarketInfo(Symb,MODE_MINLOT);
Free =AccountFreeMargin();
One_Lot=MarketInfo(Symb,MODE_MARGINREQUIRED);
Step =MarketInfo(Symb,MODE_LOTSTEP);

if (Lots > 0)
Lts =Lots;
else
Lts=MathFloor(Free*Prots/One_Lot/Step)*Step;

if(Lts < Min_Lot) Lts=Min_Lot;
else if(Lts>max_lot) Lts=max_lot;
if (Lts*One_Lot > Free)
{
Alert("no money", Lts," lot");
return;
}
//-----------------------------------------------------------------
// Open orders
while(true)
{
if (Total==0 && Opn_B==true)
{
RefreshRates();
SL=Bid - New_Stop(StopLoss)*Point;
TP=Bid + New_Stop(TakeProfit)*Point;
Alert("The test open Buy. Expectation on answer");
Ticket=OrderSend(Symb,OP_BUY,Lts,Ask,2,SL,TP,"buy",0,0,Green);
if (Ticket > 0)
{
Alert ("open buy",Ticket);
return;
}
if (Fun_Error(GetLastError())==1)
continue;
return;
}
if (Total==0 && Opn_S==true)
{
RefreshRates();
SL=Ask + New_Stop(StopLoss)*Point;
TP=Ask - New_Stop(TakeProfit)*Point;
Alert("The test open Sell. Expectation on answer");
Ticket=OrderSend(Symb,OP_SELL,Lts,Bid,2,SL,TP,"sell",0,0,Red);

if (Ticket > 0)
{
Alert ("Open Sell ",Ticket);
return;
}
if (Fun_Error(GetLastError())==1)
continue;
return;
}
break;
}
return;
}
// errors

int Fun_Error(int Error)
{
switch(Error)
{
case 4: Alert("error 4");
Sleep(3000);
return(1);
case 135:Alert("error 135");
RefreshRates();
return(1);
case 136:Alert("error 136");
while(RefreshRates()==false)
Sleep(1);
return(1);
case 137:Alert("error 137");
Sleep(3000);
return(1);
case 146:Alert("error 146");
Sleep(500);
return(1);
// Bledy krytyczne
case 2: Alert("error 2");
return(0);
case 5: Alert("error 5");
Work=false;
return(0);
case 64: Alert("error 64");
Work=false;
return(0);
case 133:Alert("error 133");
return(0);
case 134:Alert("error 134");
return(0);
default: Alert("error",Error);
return(0);
}
}
int New_Stop(int Parametr)
{
int Min_Dist=MarketInfo(Symb,MODE_STOPLEVEL);
if (Parametr<Min_Dist)
{
Parametr=Min_Dist;
Alert("> distance stop limit");
}
return(Parametr);
}

это не самое лёгкое, возьмите учебник и почитайте

 
StatBars писал (а) >>

это не самое лёгкое, возьмите учебник и почитайте

а какую книгу вы можете посоветовать??

 
AHTOH писал (а) >>

а какую книгу вы можете посоветовать??

Вот эту

 
Боже мой... Этим кодом надо пугать террористов....
Причина обращения: