Why not use chart events?
- www.mql5.com
- www.metatrader5.com
Just for this condition...
bool CondBUY1= iOpen(Symbol(),Period(),7)-iClose(Symbol(),Period(),7)>0 && (((iClose(Symbol(),Period(),6)-iOpen(Symbol(),Period(),6)>0 && iOpen(Symbol(),Period(),7)>iOpen(Symbol(),Period(),5) && iOpen(Symbol(),Period(),7)>iOpen(Symbol(),Period(),4)) && (iClose(Symbol(),Period(),6)-iOpen(Symbol(),Period(),6)>0 && iOpen(Symbol(),Period(),7)>iClose(Symbol(),Period(),5) && iOpen(Symbol(),Period(),7)>iClose(Symbol(),Period(),4))) && ((iClose(Symbol(),Period(),6)-iOpen(Symbol(),Period(),6)>0 && iClose(Symbol(),Period(),7)<iOpen(Symbol(),Period(),5) && iClose(Symbol(),Period(),7)<iOpen(Symbol(),Period(),4)) && (iClose(Symbol(),Period(),6)-iOpen(Symbol(),Period(),6)>0 && iClose(Symbol(),Period(),7)<iClose(Symbol(),Period(),5) && iClose(Symbol(),Period(),7)<iClose(Symbol(),Period(),4)))) && iOpen(Symbol(),Period(),7)<iClose(Symbol(),Period(),3); && iOpen(Symbol(),Period(),6)<iClose(Symbol(),Period(),3);
-Everything is combined with "and" (&&), so if one fails, CondBUY1 is false. You don't need to use parenthesis for that.
-There are a few parenthesis not properly closed and an extra ";".
-"close>open" is the same as saying "close-open>0", so there are a few repeated conditions
-You can make all that into a function, and invert the conditions to evaluate IF one fails (instead of mixing everything to get the result)
The result based on what you had (if I haven't missed anything):
bool CondBuy1(void) { double open7 = iOpen(Symbol(),Period(),7); double open6 = iOpen(Symbol(),Period(),6); double open5 = iOpen(Symbol(),Period(),5); double open4 = iOpen(Symbol(),Period(),4); double close7 = iClose(Symbol(),Period(),7); double close6 = iClose(Symbol(),Period(),6); double close5 = iClose(Symbol(),Period(),5); double close4 = iClose(Symbol(),Period(),4); double close3 = iClose(Symbol(),Period(),3); if (open7<close7) return false; if (close6<open6) return false; if (open7<open5) return false; if (open7<open4) return false; //close6<open6 //Repeated condition //open7<close5 //Repeated condition //open7<close4 //Repeated condition //close6<open6 //Repeated condition if (close7>open5) return false; if (close7>open4) return false; //close6<open6 //Repeated condition if (close7>close5) return false; if (close7>close4) return false; if (open7>close3) return false; if (open6>close3) return false; return true; //If it gets to the end, every inversed condition is false, so CondBuy is true }
And for the rest of the code... you'll need to do similar things, at least just to start to see what it even does
Please help me to solve my code, it is too large, I want to use 'i iteration' but I do not know how can I use it in my code
This is my code:
bool SellCandle1= iOpen(Symbol(),Period(),1)-iClose(Symbol(),Period(),1)>0;
Instead of doing this:
bool Candle(int index){ return (iOpen(Symbol(),Period(),index)-iClose(Symbol(),Period(),index)>0); }
you could also do that:
bool _candle[]; // boolean array declaration int number = 7; // number of candles to look at ArrayResize(candle,number); // In an EA this goes into OnInit for(int i = 0; i < number; i++) // I think that is also what my pre poster implicitly suggested... { _candle[i] = Candle(i); // at each "i" the respective return of the Candle function is stored into its array field with index "i"; } // on global scope (outside OnTick): bool Candle(int index) {return(Open(i) - Close(i) < 0));} // here is the Candle() function, nice and tidy double Open(int index) {return(iOpen(Symbol(), Period(), index));} // replacing the hard to read functions double Close(int index) {return(iClose(Symbol(), Period(), index));} // index is just a place holder where the "i" is put in.
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
You agree to website policy and terms of use
Please help me to solve my code, it is too large, I want to use 'i iteration' but I do not know how can I use it in my code
This is my code: