-2

This has genuinely got to be one of the must ludicrous, most ridiculous situation I have even been in with this coding language.

Is there any reason as to why my trades are closing, regardless as to the button pressed on the prompted Messagebox- despite the fact my EA is only supposed to close trade when the IDYES button is selected?

I click the IDYES button, my trade liquidates, I click the IDNO button, my trade liquidates.

Why is me EA doing things I have not told it to do? The word "fuming" cannot express enough how I'm feeling.

Here is the snippet below:

//+------------------------------------------------------------------+
//|                                          initialization_test.mq4 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+

datetime LastActiontime;
bool totalOrders = OrdersTotal();
double currencyConversion;
double tradeSpread;
int ordersTotal;

int OnInit()
  {
//---

  LastActiontime=Time[0];
  
  if (totalOrders == 0){
      totalOrders = true;
  }
   

//---
   return(INIT_SUCCEEDED);
  }

void OnTick()
  {
//---
   int LotSize = 1;
   int RewardFactor = 3;
   int stopLossPoints = 200;
   double entryPriceBid = MarketInfo(Symbol(),MODE_BID);
   double spread = MarketInfo(Symbol(), MODE_SPREAD);
   double tickvalue = MarketInfo(Symbol(), MODE_TICKVALUE);
   color sellcolor = clrGreen;
   bool Newbar = true;
   currencyConversion = 100000/(tickvalue * 100000);
   tradeSpread = (spread * tickvalue)*LotSize;
   
   if(LastActiontime!=Time[0])
   if(OrdersTotal() == 0)
   if(totalOrders == true){
   
      bool OpenShort = OrderSend(Symbol(),OP_BUY,LotSize,MarketInfo(Symbol(),MODE_BID),100,((entryPriceBid/Point)-(stopLossPoints))*Point,((entryPriceBid/Point)+(stopLossPoints*RewardFactor))*Point,"Spread Charge £"+DoubleToStr((spread * tickvalue)*LotSize,2),Period(),0,sellcolor);
      LastActiontime=Time[0];    
      if (OpenShort == true){
         bool msgBox = MessageBox("Please confirm the risk on this trade with the margin at the bottom of the terminal. Would you liketo close this trade?"+
         "\n"+
         "\n£"+DoubleToStr(((tickvalue * LotSize)*stopLossPoints)+ tradeSpread,2),"Information", MB_YESNO|MB_ICONQUESTION|MB_TOPMOST);
         
         if (msgBox = IDYES){
         
            ordersTotal = OrdersTotal();   
            for(int b=ordersTotal-1;b>=0;b--){
            
               if(OrderSelect(b,SELECT_BY_POS,MODE_TRADES)==true){
               
                  bool closeOrder = OrderClose(OrderTicket(),LotSize,MarketInfo(Symbol(),MODE_BID),300,clrAqua);
                  
               }
            
            }
         
         }
         
         if (msgBox = IDNO){
         
            return; 
          
         }
         
         
         
         
         Print("The tick value used for this EA is £ "+DoubleToStr(tickvalue , 5)+" and the conversion is "+DoubleToStr(currencyConversion,5));
         SendMail("You have opened a position","You have opened a position");
      }
        
   }
  }
//+------------------------------------------------------------------+

1 Answers1

1

You have defined the return value from your MessageBox as Boolean, however it should be of type int.

int MessageBox(string  text, string  caption=NULL, int flags=0);

Change your code to

int msgBox = MessageBox("Please confirm the risk on this trade with the margin at the bottom of the terminal. Would you liketo close this trade?"+
     "\n"+
     "\n£"+DoubleToStr(((tickvalue * LotSize)*stopLossPoints)+ tradeSpread,2),"Information", MB_YESNO|MB_ICONQUESTION|MB_TOPMOST);
PaulB
  • 1,262
  • 1
  • 6
  • 17