بازگرداندن یک مقدار از نشانگر Zig Zag

ساخت وبلاگ

من فرض می کنم که در این شاخص برای بافر یا بازگشت ارزش ها چیزی وجود ندارد ، اما نمی توانم آنچه را که هست یا چگونه انجام دهم را بررسی کنم - من در انجمن جستجو کرده ام اما به نظر می رسد با سایر نسخه ها مشکلات مشابهی دارد. آیا کسی می تواند به من بگوید که من چه اشتباهی انجام داده ام یا برای بازگشت ارزش ها چه چیزی باید از جمله باشد؟

#property indicator_chart_window #property indicator_buffers 1 #property indicator_color1 Red //---- indicator parameters input int InpDepth=12; // Depth input int InpDeviation=5; // Deviation input int InpBackstep=3; // Backstep //---- indicator buffers double ExtZigzagBuffer[]; double ExtHighBuffer[]; double ExtLowBuffer[]; //--- globals int ExtLevel=3; // recounting's depth of extremums //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() if(InpBackstep>=InpDepth) Print("Backstep caot be greater or equal to Depth"); retu(INIT_FAILED);> //--- 2 additional buffers IndicatorBuffers(3); //---- drawing settings SetIndexStyle(0,DRAW_SECTION); //---- indicator buffers SetIndexBuffer(0,ExtZigzagBuffer); SetIndexBuffer(1,ExtHighBuffer); SetIndexBuffer(2,ExtLowBuffer); SetIndexEmptyValue(0,0.0); //---- indicator short name IndicatorShortName("ZigZag("+string(InpDepth)+","+string(InpDeviation)+","+string(InpBackstep)+")"); //---- initialization done retu(INIT_SUCCEEDED);> //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long& tick_volume[], const long& volume[], const int& spread[]) int i,limit,counterZ,whatlookfor=0; int back,pos,lasthighpos=0,lastlowpos=0; double extremum; double curlow=0.0,curhigh=0.0,lasthigh=0.0,lastlow=0.0; //--- check for history and inputs if(rates_total=InpDepth) retu(0); //--- first calculations if(prev_calculated==0) limit=InitializeAll(); else //--- find first extremum in the depth ExtLevel or 100 last bars i=counterZ=0; while(counterZ if(ExtZigzagBuffer[i]!=0.0) counterZ++; i++;> //--- no extremum found - recounting all from begin if(counterZ==0) limit=InitializeAll(); else //--- set start position to found extremum position limit=i-1; //--- what kind of extremum? if(ExtLowBuffer[i]!=0.0) //--- low extremum curlow=ExtLowBuffer[i]; //--- will look for the next high extremum whatlookfor=1;> else //--- high extremum curhigh=ExtHighBuffer[i]; //--- will look for the next low extremum whatlookfor=-1;> //--- clear the rest data for(i=limit-1; i>=0; i--) ExtZigzagBuffer[i]=0.0; ExtLowBuffer[i]=0.0; ExtHighBuffer[i]=0.0;>>> //--- main loop for(i=limit; i>= 0 ؛i--) //-کمترین کمترین عمق میله های افراطی را پیدا کنید = پایین [ilowest (null ، 0 ، mode_low ، inpdepth ، i)] ؛// --- این کمترین میزان قبلاً یافت شده است اگر (Extremum == LastLow) Extremum = 0. 0 ؛دیگرInpDeviation*Point) extremum=0.0; else //--- clear previous extremums in backstep bars for(back=1; back pos=i+back; if(ExtLowBuffer[pos]!=0 && ExtLowBuffer[pos]>extremum) ExtLowBuffer[pos]=0.0;>>> //--- found extremum is current low if(low[i]==extremum) ExtLowBuffer[i]=extremum; else ExtLowBuffer[i]=0.0; //--- find highest high in depth of bars extremum=high[iHighest(NULL,0,MODE_HIGH,InpDepth,i)]; //--- this highest has been found previously if(extremum==lasthigh) extremum=0.0; else //--- new last high lasthigh=extremum; //--- discard extremum if current high is too low if(extremum-high[i]>inpdeviation*نقطه) افراطی = 0. 0 ؛other // --- افراط و تفریط قبلی را در میله های پشتی پاک کنید (Back = 1 ؛ Back POS = I+Back ؛ if (exthighbuffer [pos]! = 0 && exthighbuffer [pos]>> //--- found extremum is current high if(high[i]==extremum) ExtHighBuffer[i]=extremum; else ExtHighBuffer[i]=0.0;> //--- final cutting if(whatlookfor==0) lastlow=0.0; lasthigh=0.0;> else lastlow=curlow; lasthigh=curhigh;> for(i=limit; i>=0; i--) switch(whatlookfor) case 0: // look for peak or lawn if(lastlow==0.0 && lasthigh==0.0) if(ExtHighBuffer[i]!=0.0) lasthigh=High[i]; lasthighpos=i; whatlookfor=-1; ExtZigzagBuffer[i]=lasthigh;> if(ExtLowBuffer[i]!=0.0) lastlow=Low[i]; lastlowpos=i; whatlookfor=1; ExtZigzagBuffer[i]=lastlow;>> break; case 1: // look for peak if(ExtLowBuffer[i]!=0.0 && ExtLowBuffer[i] ExtZigzagBuffer[lastlowpos]=0.0; lastlowpos=i; lastlow=ExtLowBuffer[i]; ExtZigzagBuffer[i]=lastlow;> if(ExtHighBuffer[i]!=0.0 && ExtLowBuffer[i]==0.0) lasthigh=ExtHighBuffer[i]; lasthighpos=i; ExtZigzagBuffer[i]=lasthigh; whatlookfor=-1;> break; case -1: // look for lawn if(ExtHighBuffer[i]!=0.0 && ExtHighBuffer[i]>lasthigh && ExtLowBuffer[i]==0.0) ExtZigzagBuffer[lasthighpos]=0.0; lasthighpos=i; lasthigh=ExtHighBuffer[i]; ExtZigzagBuffer[i]=lasthigh;> if(ExtLowBuffer[i]!=0.0 && ExtHighBuffer[i]==0.0) lastlow=ExtLowBuffer[i]; lastlowpos=i; ExtZigzagBuffer[i]=lastlow; whatlookfor=1;> break;>>

  • پرسیدن!
  • شاخص های زیگزاگ
  • ویژگی های مفید از Kimiv
استراتژی های مؤثر فارکس...
ما را در سایت استراتژی های مؤثر فارکس دنبال می کنید

برچسب : نویسنده : توران میرهادی بازدید : <-PostHit-> تاريخ : سه شنبه 17 مرداد 1402 ساعت: 22:43