Forex programozás › Fórum › Kérdések az MQL4 programozási nyelvvel kapcsolatban › Miért nem látszik az indikátor vonala?
Címkézve: adx, nullával osztás
-
SzerzőBejegyzés
-
Szia Attila!
A problémám a következő:
Készíteni akartam egy indikátort de valami probléma van mert az indikátor vonal nem jelenik meg.
Átnéztem már a kódot de nem értem miért nem működik ez a tök egyszerű dolog. A probléma az osztással van.
Konkrétan:
– ADX indikátor értékét berakom egy változóba
– majd 100-at osztani akarom ezzel a változóval, aminek persze egy double számnak kellene kijönnie ami ábrázolható, de mégsem jelenik meg.
Köszönettel: MátyásA kód:
//+------------------------------------------------------------------+ //| indikátor | //| | //| | //+------------------------------------------------------------------+ #property indicator_separate_window #property indicator_buffers 1 #property indicator_color1 Blue extern int adxPeriod = 7; //---- buffers double Buffer_a[]; //---- int init() { SetIndexStyle (0,DRAW_LINE,STYLE_SOLID,2); SetIndexBuffer(0, Buffer_a); //---- name for DataWindow and indicator subwindow label IndicatorShortName("indikátor"); return(0); } int start() { int i,counted_bars=IndicatorCounted(); double signalVal, adxVal; if(Bars<=100) return(0);//ha nincs annyi bar i=Bars-counted_bars-1; //legrégebbi bár meghatározása amire számolni kell //---- while(i>=0) { adxVal = iADX(NULL,0,adxPeriod,PRICE_TYPICAL,MODE_MAIN,i); signalVal = (100/adxVal); Buffer_a[i]=signalVal; i--; } return(0); }
A nullával való osztás lehetőségére mindig figyelni kell, és meg kell akadályozni!
if (adxVal != 0) { signalVal = (100/adxVal); } else { signalVal = 0; }
Ha erre kicseréled a signalVal = (100/adxVal); sort, akkor működik az indikátorod.
-
SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.