mbaker71:
-1, -1, -1, 0, 0, 0, 0, 0, 0, 1
This would trigger a buy flag
Why is that valid, it meets your criteria in 8 bars
-1, -1, -1, 0, -1, 1, 0, 1, 1, 1
Thee needs to be a transition from -1 to 0 to 1 for the flag to be valid.
Why invalid? There is a transition from -1 to 0 to +1 as highlighted in three bars.
Until you can state your requirements in concrete terms, it can not be coded.
I have an indicator that has values of -1, 0 and 1. I am trying to programatically capture the transition from -1 to 1 which does not happen in a sequential manner.
Here is an example of a valid trigger that I would like to capture to signal an open trade flag
Let say we are looking back over the previous 10 bars closed. The indicator provides the following values
-1, -1, -1, 0, 0, 0, 0, 0, 0, 1
This would trigger a buy flag
The example below is an invalid open trade flag
-1, -1, -1, 0, -1, 1, 0, 1, 1, 1
Thee needs to be a transition from -1 to 0 to 1 for the flag to be valid.
I was thinking of using a var to capture previous low/high values but not sure how to code it
Any assistance would be appreciated
If I have understood correctly, this is one way to do it.
double test_buffer[]= {-1, -1, -1, 0, 0, 0, 0, 0, 0, 1}; //valid //double test_buffer[]= {-1, -1, -1, 0, -1, 1, 0, 1, 1, 1}; //invalid ArraySetAsSeries(test_buffer,true); int size=ArraySize(test_buffer); bool valid=false; if(test_buffer[0]==1.0 && test_buffer[1]==0) { for(int x=2; x<size; x++) { if(test_buffer[x]==1.0) break; if(test_buffer[x]==-1.0) { valid=true; break; } } } if(valid) Print("Is valid signal"); else Print("Is NOT valid signal");
Why is that valid, it meets your criteria in 8 bars
Why invalid? There is a transition from -1 to 0 to +1 as highlighted in three bars.
Until you can state your requirements in concrete terms, it can not be coded.
Hi William,
Thanks for your reply. You will notice the first number in the sequence that is in question for the invalid series goes from 1 to 0 to 1, not -1 to 0 to 1. Thats why this will be invalid
- Got it.
- Keith's idea is the way to go.
-
bool isValid(const double& buffer[]){ int size=ArraySize(buffer); if(size < 3) return false; // -1, 0, +1 not possible. if(buffer[0]!=1.0) return false; // Not …, +1. int x=1; for(; x<size; ++x) if(buffer[x] != 0) break; // Skip all zeros. if(x==1 || x == size) return false; // No zeros, or all zeros return buffer[x]==-1.0; // Found -1, 0, … , 0, 1. }
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
You agree to website policy and terms of use
I have an indicator that has values of -1, 0 and 1. I am trying to programatically capture the transition from -1 to 1 which does not happen in a sequential manner.
Here is an example of a valid trigger that I would like to capture to signal an open trade flag
Let say we are looking back over the previous 10 bars closed. The indicator provides the following values
-1, -1, -1, 0, 0, 0, 0, 0, 0, 1
This would trigger a buy flag
The example below is an invalid open trade flag
-1, -1, -1, 0, -1, 1, 0, 1, 1, 1
Thee needs to be a transition from -1 to 0 to 1 for the flag to be valid.
I was thinking of using a var to capture previous low/high values but not sure how to code it
Any assistance would be appreciated