extern int MagicNumber=10001; extern double Lots =0.1; extern double StopLoss=120; extern double TakeProfit=120; extern int TrailingStop=50; extern int Slippage=3; //+------------------------------------------------------------------+ // expert start function //+------------------------------------------------------------------+ int start() { double MyPoint=Point; if(Digits==3 || Digits==5) MyPoint=Point*10; double TheStopLoss=0; double TheTakeProfit=0; if( TotalOrdersCount()==0 ) { int result=0; if((Close[0]>iMA(NULL,PERIOD_H4,50,0,MODE_SMA,PRICE_MEDIAN,0))&&(iRSI(NULL,PERIOD_H4,50,PRICE_MEDIAN,0)>50)&&(iFractals(NULL,PERIOD_H4,MODE_LOWER,0)>iMA(NULL,PERIOD_H4,50,0,MODE_SMA,PRICE_MEDIAN,0))&&(iDeMarker(NULL,PERIOD_H4,50,0)>0.50)) { result=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0,MagicNumber,0,Blue); if(result>0) { TheStopLoss=0; TheTakeProfit=0; if(TakeProfit>0) TheTakeProfit=Ask+TakeProfit*MyPoint; if(StopLoss>0) TheStopLoss=Ask-StopLoss*MyPoint; OrderSelect(result,SELECT_BY_TICKET); OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(TheStopLoss,Digits),NormalizeDouble(TheTakeProfit,Digits),0,Green); } return(0); } if((Close[0]<iMA(NULL,PERIOD_H4,50,0,MODE_SMA,PRICE_MEDIAN,0))&&(iRSI(NULL,PERIOD_H4,50,PRICE_MEDIAN,0)<50)&&(iFractals(NULL,PERIOD_H4,MODE_UPPER,4)<iMA(NULL,PERIOD_H4,50,0,MODE_SMA,PRICE_MEDIAN,0))&&(iDeMarker(NULL,PERIOD_H4,50,0)<0.50)) { result=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0,0,MagicNumber,0,Red); if(result>0) { TheStopLoss=0; TheTakeProfit=0; if(TakeProfit>0) TheTakeProfit=Bid-TakeProfit*MyPoint; if(StopLoss>0) TheStopLoss=Bid+StopLoss*MyPoint; OrderSelect(result,SELECT_BY_TICKET); OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(TheStopLoss,Digits),NormalizeDouble(TheTakeProfit,Digits),0,Green); } return(0); } } for(int cnt=0;cnt<OrdersTotal();cnt++) { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); if(OrderType()<=OP_SELL && OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber ) { if(OrderType()==OP_BUY) { if(TrailingStop>0) { if(Bid-OrderOpenPrice()>MyPoint*TrailingStop) { if(OrderStopLoss()<Bid-MyPoint*TrailingStop) { OrderModify(OrderTicket(),OrderOpenPrice(),Bid-TrailingStop*MyPoint,OrderTakeProfit(),0,Green); return(0); } } } } else { if(TrailingStop>0) { if((OrderOpenPrice()-Ask)>(MyPoint*TrailingStop)) { if((OrderStopLoss()>(Ask+MyPoint*TrailingStop)) || (OrderStopLoss()==0)) { OrderModify(OrderTicket(),OrderOpenPrice(),Ask+MyPoint*TrailingStop,OrderTakeProfit(),0,Red); return(0); } } } } } } return(0); } int TotalOrdersCount() { int result=0; for(int i=0;i<OrdersTotal();i++) { OrderSelect(i,SELECT_BY_POS ,MODE_TRADES); if (OrderMagicNumber()==MagicNumber) result++; } return (result); }Close[0] does not exist.
Marco vd Heijden:
Close[0] does not exist.
Of course Close[0] exists, it's equal to current price (Bid).
Close[0] does not exist.
it will never close is what i want to say.
maybe you can point our student to the problem ?
The problem comes from this condition :
iFractals(NULL,PERIOD_H4,MODE_LOWER,0)>iMA(NULL,PERIOD_H4,50,0,MODE_SMA,PRICE_MEDIAN,0)
It's ALWAYS false, you can't have a Fractal at current bar.
While the SELL condition is almost always true :
iFractals(NULL,PERIOD_H4,MODE_UPPER,4)<iMA(NULL,PERIOD_H4,50,0,MODE_SMA,PRICE_MEDIAN,0)
When there is no fractals, iFractals() returns 0, so the condition is true.
You are missing trading opportunities:
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
Registration
Log in
You agree to website policy and terms of use
If you do not have an account, please register
What's wrong with this code?
It only open sell orders but not buy orders.