OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid-StopLoss*Point,0,"ichimoku iCCI sell",Magic,0,Green);
Stoploss should be higher than the entry price for a sell order
Hello, thank you for your answer.I will correct the code.Thanks again for your help.
604857:
Good evening, I finished the correction but still the same problem while I return in backtest. THANK YOU FOR YOUR ATTENTION
Good evening, I finished the correction but still the same problem while I return in backtest. THANK YOU FOR YOUR ATTENTION
//+------------------------------------------------------------------+ //| final.mq4 | //| | //| | //+------------------------------------------------------------------+ #property copyright "" #property link "" #property version "1.00" input double Lots = 0.01 ; input int StopLoss = 10, Magic =18397 ; extern int TrailingStop = 10 ; void TrailingStop(); //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { double Signal_CCI, //CCI Signal_CCI_Previous; double senkou_span_A_current, //iIchimoku senkou_span_B_current ; int total, cnt, ticket; //--- if(Bars<100) { Print("bars less than 100"); return; } //--- declaration des fonctions CCI et ICHIMOKU Kumo Signal_CCI =iCCI(NULL,0,14,PRICE_TYPICAL,0); //CCI Signal_CCI_Previous =iCCI(NULL,0,14,PRICE_TYPICAL,1); senkou_span_A_current = iIchimoku( NULL,0,9,26,52,MODE_SENKOUSPANA,0); //iIchimoku senkou_span_B_current = iIchimoku( NULL,0,9,26,52,MODE_SENKOUSPANB,0); total=OrdersTotal(); if(total<1) { //--- Aucun ordre ouvert identifié if(AccountFreeMargin()<(1000*Lots)) { Print("We have no money. Free Margin = ",AccountFreeMargin()); return; } //--- check for long position (BUY) possibility if(((senkou_span_A_current > senkou_span_B_current)&&(OrderClosePrice() > senkou_span_B_current))&& ((Signal_CCI>Signal_CCI_Previous && Signal_CCI>-100) || (Signal_CCI>Signal_CCI_Previous && Signal_CCI>100))) { ticket = OrderSend(Symbol(),OP_BUY,Lots,Ask,5,Ask-StopLoss*Point,0,"ichimoku iCCI buy",Magic,0,Green);/* int OrderSend( string symbol, int cmd, double volume, double price, int slippage, double (stoploss), double takeprofit, string comment=NULL, int magic=0, datetime expiration=0, color arrow_color=CLR_NONE)*/ if(ticket>0) // ordre executer { if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice()); } else //ordre non exécuter Print("Error opening BUY order : ",GetLastError()); return; } //--- check for court position (sell) possibility if(((senkou_span_A_current < senkou_span_B_current) && (OrderClosePrice() < senkou_span_B_current)) && ((Signal_CCI<Signal_CCI_Previous && Signal_CCI<100) || (Signal_CCI<Signal_CCI_Previous && Signal_CCI<-100))) { ticket =OrderSend(Symbol(),OP_SELL,Lots,Bid,5,Bid+StopLoss*Point,0,"ichimoku iCCI sell",Magic,0,Green);/*int OrderSend( string symbol, int cmd, double volume, double price, int slippage, double (stoploss), double takeprofit, string comment=NULL, int magic=0, datetime expiration=0, color arrow_color=CLR_NONE)*/ if(ticket>0) { if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice()); } else Print("Error opening SELL order : ",GetLastError()); } return; } //--- it is important to enter the market correctly, but it is more important to exit it correctly... for(cnt=total;cnt>=0;cnt--) { if(!OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES)) continue; if(OrderType()<=OP_SELL && // check for opened position OrderSymbol()==Symbol()) // check for symbol { //--- long position is opened if(OrderType()==OP_BUY) { //--- should it be closed? if(((senkou_span_A_current < senkou_span_B_current) && ((Signal_CCI<Signal_CCI_Previous && Signal_CCI<100) || (Signal_CCI<Signal_CCI_Previous && Signal_CCI<-100)))) { //--- close order and exit if(!OrderClose(OrderTicket(),OrderLots(),Bid,5,Violet)) Print("Order Close buy error ",GetLastError()); return; } //--- check for trailing stop if(TrailingStop>0) { if(Bid-OrderOpenPrice()>Point*TrailingStop) { if(OrderStopLoss()<Bid-Point*TrailingStop) { if(!OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,0,0,Red)) /*bool OrderModify(int ticket, double price, double stoploss, doubletakeprofit, datetime expiration, color arrow_color=CLR_NONE)*/ Print("Order Modify buy error ",GetLastError()); return; } } } } else // go to short position { //--- should it be closed? if(((senkou_span_A_current > senkou_span_B_current) && (OrderClosePrice() > senkou_span_A_current)) && ((Signal_CCI>Signal_CCI_Previous && Signal_CCI>100) || (Signal_CCI>Signal_CCI_Previous && Signal_CCI>-100))) { //--- close order and exit if(!OrderClose(OrderTicket(),OrderLots(),Ask,5,Violet)) Print("Order Close sell error ",GetLastError()); return; } //--- check for trailing stop if(TrailingStop>0) { if((OrderOpenPrice()-Ask)>(Point*TrailingStop)) { if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0)) { //--- modify order and exit if(!OrderModify(OrderTicket(),OrderOpenPrice(),Bid+Point*TrailingStop,0,0,Red)) /*bool OrderModify(int ticket, double price, double stoploss, doubletakeprofit, datetime expiration, color arrow_color=CLR_NONE)*/ Print("Order Modify sell error ",GetLastError()); return; } } } } } } //--- } //+------------------------------------------------------------------+
Hello,
At OP_BUY the SL is Bid-StopLoss*Point.
At OP_SELL the SL is Ask+StopLoss*Point.
![MQL5 - Language of trade strategies built-in the MetaTrader 5 client terminal](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Indeed, I created my own robot on metaeditor 4. After compiling it, I did not notice any error, but when I put it in backtest, I noticed that no purchase or sale order is not performed. I have tried it several times, trying to start it from the graph but still no order! Help me, please! I'm wondering if I have not omitted any data in the code or should I declare myself at mql5 for my robots to work? Or maybe this picture is the cause? If it is please tell me a little about the causes!
here is the code and the image of the result of the backtest as an attachment.
I hope to receive your help
thank you, sincerely
thank you, sincerely