It is a bad idea to name functions the same as other variables as it leads to errors such as this.
if(calcLong3 == true) { Alert("Long"); }
You do not assign any value to calcLong3
It is a bad idea to name functions the same as other variables as it leads to errors such as this.
You do not assign any value to calcLong3
Hi Keith, thanks for the fast reply, i am extremely new to coding and learning as i go, i wanted calcLong3 to return true does it need a numerical value instead then, like 1 = true and 0 = false ?
No, never use an int when it should be a bool, that is another bad practice.
It is a bad idea to name functions the same as other variables as it leads to errors such as this.
You do not assign any value to calcLong3
bool calcLong3;
This ^ is a variable
bool calcLong3() { double RSI = iRSI(_Symbol,_Period,14,PRICE_CLOSE,0); if (RSI<70) return true; else return false; }
This ^ is a function
if(calcLong3 == true) { Alert("Long"); }
You have not assigned any value to calcLong3
You have not used the function at all.
if(calcLong3() == true) { Alert("Long"); }
will call the function and use the value.
Your code if (RSI<70) return true; else return false;
simplified return RSI<70;
-
if(calcLong3() == true)
You should be able to read your code out loud and have it make sense. You would never write if( (2+2 == 4) == true) would you? if(2+2 == 4) is sufficient. So don't write if(bool == true), just use if(bool) or if(!bool). Code becomes self documenting when you use meaningful variable names, like bool isLongEnabled where as Long_Entry sounds like a trigger price or a ticket number and “if long entry” is an incomplete sentence.
I will delete your new topic and move it here.
How to make multiple conditions trigger a buy
bool calcLong1; bool calcLong2; bool calcLong3; bool calcLong4; bool calcLong5; bool calcLong6; bool calcLong3() { double RSI = iRSI(_Symbol,_Period,14,PRICE_CLOSE,0); return RSI<70; } void OnTick() { if((calcLong1()||calcLong2() == true) && (calcLong3()==true) && (calcLong4()==true) && (calcLong5() == true)) { if(CountPositions()<1) { Print ("LONG"); } } } int CountPositions() { int NumberOfPositions=0; for(int i=OrdersTotal()-1; i>= 0; i--) { OrderSelect(i,SELECT_BY_POS,MODE_TRADES); string CurrencyPair=OrderSymbol(); if(_Symbol==CurrencyPair) if(OrderType()==OP_BUY||OP_SELL) { NumberOfPositions=NumberOfPositions+1; } } return NumberOfPositions; };say there was multiple functions that returned true and false values for calclong1 and calclong2 and calclong3 ... etc, how would i code it so that the print long would only trigger if either calclong1 was true or calclong2 was true and the rest have to also all be true up to calclong5, and if coint positions is less than 1, im very new to coding so im sure ive made lots of mistakes but thanks for any help.
Copied above
I have already told you that it is a bad idea to name variables the same as functions as it can often lead to mistakes.
Yet you are still doing it.
Why do you even need these variables?
bool calcLong1; bool calcLong2; bool calcLong3; bool calcLong4; bool calcLong5; bool calcLong6;
You don't seem to use them in the code.
if(OrderType()==OP_BUY||OP_SELL)
You cannot do this.
The correct way is
if(OrderType()==OP_BUY || OrderType()==OP_SELL)
....how would i code it...... if either calclong1 was true or calclong2 was true and the rest have to also all be true up to calclong5.....
You would code it exactly as you would say it
if calclong1==true Or calclong2==true And calclong3 ==true And calclong4 ==true And calclong5 ==true
if ( calclong1==true || calclong2==true && calclong3 ==true && calclong4 ==true && calclong5 ==true)
now that is a bit ambiguous as it often can be when mixing || and &&
so we put in some extra brackets to make it clear
if ( (calclong1==true || calclong2==true) && calclong3 ==true && calclong4 ==true && calclong5 ==true)
As William has pointed out with bools or boolean results the ==true is not really necessary
if ( (calclong1 || calclong2) && calclong3 && calclong4 && calclong5)
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
You agree to website policy and terms of use
no matter what the RSI is it always returns false, where have i gone wrong ??