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");
}
}
}
//+------------------------------------------------------------------+