Hey guys,
I have this code that I wrote and in my mind it works perfectly however my mind seems to be wrong and it doesn't know why.
So I tracked the issue to a specific part but I still have no idea what is causing it to fail.
There are no errors of any significance either.
Here is the part where it seems to fail at:
Here is the full code:
If you guys could give me your wisdom that'd be much appreciated.
Thanks!
I have this code that I wrote and in my mind it works perfectly however my mind seems to be wrong and it doesn't know why.
So I tracked the issue to a specific part but I still have no idea what is causing it to fail.
There are no errors of any significance either.
Here is the part where it seems to fail at:
Inserted Code
if(Trades[7,RowNumber2] == 1) { if(Ask <= Trades[2,RowNumber2] && Trades[6,RowNumber] == 0) { int Ticket = OrderSend(Symbol(), OP_SELL, Lots, Ask, Slippage, Trades[4,RowNumber2], 0, NULL, Trades[1,RowNumber], 0, Blue); Trades[6,RowNumber] = 1; //Print("---MagicNumber = ", MagicNumber, "---"); ArrayCounter2 = 0; RowNumber2 = 0; } } else { ArrayCounter2 = ArrayCounter2 + 1; RowNumber2 = RowNumber2 + 1; }
Here is the full code:
Inserted Code
//+------------------------------------------------------------------+ //| FTB.mq4 | //| AntiVi | //| https://www.mql4.com | //+------------------------------------------------------------------+ #property copyright "AntiVi" #property strict extern int MagicNumber = 10001; extern double Lots = 0.1; extern double TrailingStop = 0; extern int Slippage = 3; extern double EntryGap = 0.00500; extern int BrokerDigits = 5; extern int AllowableDrawdown = 25; extern int MaxDrawdown = 610; extern bool MoneyManagement = false; double Entry; double StopLoss; double TakeProfit; double HalfCandleSize; double Middle; double OpenCheck; double CloseCheck; double Trades [8][20]; //ArrayNumber | MagicNumber | Entry | Stoploss | WaitCounter | ExpirationTime | Entered | Populated int SignalTime; int BarsOnChart = Bars; int IsNewCandle; int OrderError = 0; int RowNumber = 0; int RowNumber2 = 0; int ArrayCounter = 0; int ArrayCounter2 = 0; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { Trades[0,0] = 1; Trades[0,1] = 2; Trades[0,2] = 3; Trades[0,3] = 4; Trades[0,4] = 5; Trades[0,5] = 6; Trades[0,6] = 7; Trades[0,7] = 8; Trades[0,8] = 9; Trades[0,9] = 10; Trades[0,10] = 11; Trades[0,11] = 12; Trades[0,12] = 13; Trades[0,13] = 14; Trades[0,14] = 15; Trades[0,15] = 16; Trades[0,16] = 17; Trades[0,17] = 18; Trades[0,18] = 19; Trades[0,19] = 20; Print("-----------"); Print("ArrayNumber = ", Trades[0,RowNumber]); Print("MagicNumber = ", Trades[1,RowNumber]); Print("Entry = ", Trades[2,RowNumber]); Print("Stoploss = ", Trades[3,RowNumber]); Print("WaitCounter = ", Trades[4,RowNumber]); Print("ExpirationTime = ", Trades[5,RowNumber]); Print("Entered = ", Trades[6,RowNumber]); Print("Populated = ", Trades[7,RowNumber]); Print("-----------"); return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { if(BarsOnChart != Bars) //Checking for new closed candles { BarsOnChart = Bars; IsNewCandle = 1; } else { IsNewCandle = 0; } if(IsNewCandle == 1) //Checking if a new candle has closed { SignalTime = Hour() - 1; if((SignalTime > 8) && (SignalTime < 14) && (High[1] > High[2])) //Check to see if signal candle has a higher high than the candle before and is within the timeframe { HalfCandleSize = (High[1] - Low[1]) / 2; //Calculates half of the candle size Middle = Low[1] + HalfCandleSize; //Calculates the middle of the candle OpenCheck = Middle - Open[1]; //Calculates distance between open and middle CloseCheck = Middle - Close[1]; //Calculates distance between close and middle if(OpenCheck > 0 && CloseCheck > 0) //checks to see if candle closes in lower half { Entry = NormalizeDouble(Low[1] - 0.0001, 5); //Reason for OrderSend Error 130 is that the Entry Entry is too close to Current Market Entry StopLoss = NormalizeDouble(High[1] + 0.0005, 5); while(ArrayCounter < 20) { if(Trades[7,RowNumber] == 0) { Trades[1,RowNumber] = MagicNumber; Trades[2,RowNumber] = Entry; Trades[3,RowNumber] = StopLoss; Trades[4,RowNumber] = 0; Trades[5,RowNumber] = 0; Trades[6,RowNumber] = 0; Trades[7,RowNumber] = 1; MagicNumber = MagicNumber + 1; Print("-----------"); Print("ArrayNumber = ", Trades[0,RowNumber]); Print("MagicNumber = ", Trades[1,RowNumber]); Print("Entry = ", Trades[2,RowNumber]); Print("Stoploss = ", Trades[3,RowNumber]); Print("WaitCounter = ", Trades[4,RowNumber]); Print("ExpirationTime = ", Trades[5,RowNumber]); Print("Entered = ", Trades[6,RowNumber]); Print("Populated = ", Trades[7,RowNumber]); Print("-----------"); break; } else { ArrayCounter = ArrayCounter + 1; RowNumber = RowNumber + 1; } } ArrayCounter = 0; RowNumber = 0; } } } while(ArrayCounter2 < 20) { if(Trades[7,RowNumber2] == 1) { if(Ask <= Trades[2,RowNumber2] && Trades[6,RowNumber] == 0) { int Ticket = OrderSend(Symbol(), OP_SELL, Lots, Ask, Slippage, Trades[4,RowNumber2], 0, NULL, Trades[1,RowNumber], 0, Blue); Trades[6,RowNumber] = 1; //Print("---MagicNumber = ", MagicNumber, "---"); ArrayCounter2 = 0; RowNumber2 = 0; } } else { ArrayCounter2 = ArrayCounter2 + 1; RowNumber2 = RowNumber2 + 1; } } if(ArrayCounter2 == 20) { ArrayCounter2 = 0; RowNumber2 = 0; } }
If you guys could give me your wisdom that'd be much appreciated.
Thanks!