Компилиться,но не работает. - страница 3

 

Здравствуйте всем. Просьба помочь новичку(мне). Пытаюсь начать с простейшего советника. В смысле сам в программировании полный 0, это был другой советник, я просто убрал лишнее ( а может и не лишнее). Не открыл ни одной сделки. Что-то не так в коде или неправильное тестирование? Заранее благодарен

.//+------------------------------------------------------------------+

//| Stoch.mq4 |
//| For Eur/Usd 1H
//| Copyright © 2005, Jacob Yego |
//| http://PointForex.com |
//+------------------------------------------------------------------+

extern double TakeProfit = 1000;
extern double Lots = 0.1;
extern double TrailingStop = 400;


//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int start()
{


double Stoch;
double Stochsig;
int cnt,ticket,tt=0, total;
// check TakeProfit on a chart of less than 200 bars
if(Bars<200)
{
Print("bars less than 200");
return(0);
}
if(TakeProfit<10)
{
Print("TakeProfit less than 10");
return(0); // check TakeProfit
}
if(AccountFreeMargin()<(1000*Lots))
{
Print("We have no money. Free Margin = ", AccountFreeMargin());
return(0);
}

// data in internal variables for access speed




Stoch=iStochastic(NULL,0,14,3,3,MODE_SMA,0,MODE_MAIN,0);
Stochsig=iStochastic(NULL,0,14,3,3,MODE_SMA,0,MODE_SIGNAL,0);

// to ensure that only one trade per pair is entered to avoid multiplicity
tt=0;
total=OrdersTotal();
for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol()==Symbol()) tt++;
}

if(tt==0)
{ // no opened orders identified

// long position (BUY) possibility
if(Stoch>Stochsig)
{

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask+TakeProfit*Point,"Stochy",16384,0,Green);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice());
} else Print("Error opening BUY order : ",GetLastError());
return(0);
}

// Short position (SELL) possibility
if(Stoch<Stochsig)
{

ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid-TakeProfit*Point,"Stochy",16385,0,Red);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice());
} else Print("Error opening SELL order : ",GetLastError());
return(0);
}
return(0);
} //if tt == 0

//Exit Strategy
for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL && OrderSymbol()==Symbol()) // check for opened position and for symbol
{
if(OrderType()==OP_BUY) // long position is opened
{
// should it be closed?
if (Stoch<Stochsig )
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // close position
return(0); // exit
}
// Trailing stop Check
if(TrailingStop>0)
{
if(Bid-OrderOpenPrice()>Point*TrailingStop)
{
if(OrderStopLoss()<Bid-Point*TrailingStop)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);
return(0);
}
}
}
}
}
else // Move to short position
{
// should it be closed?
if (Stoch>Stochsig)
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // close position
return(0); // exit
}
// trailing stop check
if(TrailingStop>0)
{
if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
{
if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);
return(0);
}
}
}
}
}
return(0);
}
// the end.
 
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask+TakeProfit*Point,"Stochy",16384,0,Green);
стоплосс пропущен &etc
 
Korey писал (а) >>
стоплосс пропущен &etc

Стоп-лосса не было изначально. Сделки вообще не совершаются. Почему?

 
Не сотвори себе кумира. Посмотри по F1.
Как бы там не выкладывали, а стоплосс в сенде должон быть)))
 
Спасибо, Korey, Вы мне очень, очень, очень, очень, очень, очень помогли блин.