Globalscope
input string PricesInput="1.2500:1.2600:1.2700"; double Prices[]; int AS;
int OnInit() { string PricesStringArray[]; StringSplit(PricesInput,':',PricesStringArray); AS=ArraySize(PricesStringArray); ArrayResize(Prices,AS); for(int x=0;x<AS;x++) Prices[x]=NormalizeDouble(StrToDouble(PricesStringArray[x]),Digits); for(int x=0;x<AS;x++) Print(Prices[x]); //--- return(INIT_SUCCEEDED); }
void OnTick() { for(int x=0;x<AS;x++) { if(Open[1]<Prices[x] && Close[1]>Prices[x]) { //Do Something } }
Something like this should work. Input the numbers as a string of numbers separated by :
You'd probably want to add code so that it is only executed when a new bar opens
GumRai, thanks for the quick answer. So, correct me if i'm wrong (im quite new to mql4), what we are doing here is that we set an array, which in this case is an array of strings.
Then we convert the strings to doubles and make a loop to use each index in the calculation.
What will happen if we dont have the specific numbers (1.2500, 1.2600, 1.2700) set as inputs and instead we have doubles a,b,c,d,e to which we assigned values from previous calculations?
For example: a is a third of the previous week's range, b is a quarter, c is half etc. and these values change for example every week ?
Can we make an array with these variables, instead of predefined constants?
GumRai, thanks for the quick answer. So, correct me if i'm wrong (im quite new to mql4), what we are doing here is that we set an array, which in this case is an array of strings.
Then we convert the strings to doubles and make a loop to use each index in the calculation.
What will happen if we dont have the specific numbers (1.2500, 1.2600, 1.2700) set as inputs and instead we have doubles a,b,c,d,e to which we assigned values from previous calculations?
For example: a is a third of the previous week's range, b is a quarter, c is half etc. and these values change for example every week ?
Can we make an array with these variables, instead of predefined constants?
You probably wouldn't want to use an array as you would be using different calculations for each variable.
Maybe calculate each variable and then use a function to carry out the repetitive checks with the variable.
You probably wouldn't want to use an array as you would be using different calculations for each variable.
Maybe calculate each variable and then use a function to carry out the repetitive checks with the variable.
void OnTick() { //Code to calculate variable A CheckCondition(A); //Code to calculate variable B CheckCondition(B); //etc etc //--- } //+------------------------------------------------------------------+ //| Function | //+------------------------------------------------------------------+ bool CheckCondition(double variable_to_be_checked) { if(Open[1]<variable_to_be_checked && Close[1]>variable_to_be_checked) { //Open a Buy order? //Do anything else that is required return(true); } else if(Open[1]>variable_to_be_checked && Close[1]<variable_to_be_checked) { //Open a Sell order? //Do anything else that is required return(true); } return(false); }
By making the function a bool, you can code it to stop the checks as soon as one of the condition checks is true
void OnTick() { while(true) { //Code to calculate variable A if(CheckCondition(A)) break; //If the function returns true, the remainder of the while loop is not executed //Code to calculate variable B if(CheckCondition(B)) break; // etc etc break; //break ensures that while loop is only executed once in case no condition returns true } //--- }
.
![MQL5 - Language of trade strategies built-in the MetaTrader 5 client terminal](https://c.mql5.com/i/registerlandings/logo-2.png)
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
You agree to website policy and terms of use
Hello guys!
I was wondering if there is a way to check the same condition with a different variable.
For example:
I want to buy when Open[1] is lower than a certain price and Close[1] is higher than the same price. Lets say the price is 1.2500
I know how to write this condition, but what if i want the same condition to work for multiple variations of the price? For example 1.2500 or 1.2600 or 1.2700 etc.
Do i have to write the same contition for each price or there is a cleaner solution ?