dolemi: What are differences among OnCalculate(), start() and OnStart()? How to get prev_calculated value in start() function?
| Read the documentation
|
dolemi: What are differences among OnCalculate(), start() and OnStart()? How to get prev_calculated value in start() function? | Read the documentation
|
Thanks
int start() { OnEveryTick1(); return(0); } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void OnEveryTick1() { int i; int counted_bars = IndicatorCounted(); if(counted_bars < 0) return(-1); if(counted_bars > 0) counted_bars--; i = Bars - counted_bars; // main calculation loop while(i >= 0) { current = i; ChartText2(); i--; } }
Is it wise to do this instead of using OnCalculate() ?
You should stop using the old event handlers and IndicatorCounted() and start using new event handlers.
Event Handling Functions - MQL4 Reference
How to do your lookbacks correctly - MQL4 programming forum #9-14 & #19 (2016)
You should stop using the old event handlers and IndicatorCounted() and start using new event handlers.
Event Handling Functions - MQL4 Reference
How to do your lookbacks correctly - MQL4 programming forum #9-14 & #19 (2016)
Thank you for the response.
with all brilliant post from you, and some youtubers i managed to built this:
{ int total = 0; switch(prev_calculated == 0) { case true: total = rates_total-1; if(total>500) total = 11; break; case false: total=rates_total-prev_calculated+1; if(total>500) total = 11; break; } for(int i = 1; i < total ; i++) { Print("This candle is ",i," high is ", High [i+1]," broker time is ", TimeToString(Time[i],TIME_MINUTES)); } return(rates_total); }
Tested that and it does exactly what i've intended to.
{ //int j = (i == 10) ? 1 : 0; // If i is equal to 10 j is assigned the value 1, otherwise it is assigned 0. int look = 0, forCount = (rates_total-1>500 && prev_calculated == 0) ? AroonPeriod : rates_total-prev_calculated+look; for(int i=forCount; i>=0+look; i--) //for(int i=0+look; i < forCount; i++) { prh[i] = getPrice(PriceHigh,Open,Close,High,Low,i,0); prl[i] = getPrice(PriceLow,Open,Close,High,Low,i,1); Print("candle sekarang ialah ",i," high ialah ", High [i]," masa open candle ialah ", TimeToString(Time[i],TIME_MINUTES)); double max=0; double maxv=prh[i]; double min=0; double minv=prl[i]; for(int k=1; k<=AroonPeriod && (i+k)<Bars; k++) { if(prh[i+k]>maxv) { max=k; maxv = prh[i+k]; } if(prl[i+k]<minv) { min=k; minv = prl[i+k]; } } valueup[i] = 100*(AroonPeriod-max)/AroonPeriod; valuedn[i] = 100*(AroonPeriod-min)/AroonPeriod; //lebih ni } return(rates_total); }
I have one question. This doesn't work when i changed to
for(int i=0+look; i < forCount; i++)
So, how to solve this? I'm intended for this running only once per bar
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
You agree to website policy and terms of use
Does any one can tell:
What are differences among OnCalculate(), start() and OnStart()?
How to get prev_calculated value in start() function?
Cheers