Sari la conținut

Modificare indicator DeMark Trendline


Postări Recomandate

Indicatorul l-am deslusit cum functioneaza dar nu intelegeam exact ce vrei tu. Linia aceea de trend se trage dupa minimele care sunt afisate pe grafic cu niste puncte albastre insa acum este limitat ca primul minim de la dreapta la stanga sa fie doar 1. Inainte dupa ce am vazut in el, era altcumva, putea lua inconsiderare mai multe combinatii insa este o explicate in el care spune ca a fost modificat. Nu stiu cine l-a modificat ca nu stiu de unde il ai.

 

Daca ai rabdare cu mql-ul iti arat toate secventele de cod care duc la trasarea liniei de trend si iti explic fiecare ce face. Repet, eu am inteles cum face ce face dar nu stiu exact ce vrei tu sa faca =))

 

Acum studiez exemplul tau si sper sa imi dau seama exact ce imi ceri.

Editat de Cityzen
Link spre comentariu
Distribuie pe alte site-uri

Ok. Hai atunci sa mergem pas cu pas ca detectivii si sa vedem exact cum functioneaza indicatorul.

 

Asta e secventa de cod care traseaza linia dupa minime

int TrendLineLowTD(int L1,int L2,int Step,int Col)/*Draw Lower Trend Line*/
  {
   ObjectSet("LL_"+Step,OBJPROP_TIME1,Time[L2]);ObjectSet("LL_"+Step,OBJPROP_TIME2,Time[L1]);
   ObjectSet("LL_"+Step,OBJPROP_PRICE1,Low[L2]);ObjectSet("LL_"+Step,OBJPROP_PRICE2,Low[L1]);
   ObjectSet("LL_"+Step,OBJPROP_COLOR,LowerTrendLineColour);/*TEMP Original OBJPROP_COLOR,Col*/
 if (Step==1)ObjectSet("LL_"+Step,OBJPROP_WIDTH,TrendLineWidth);/*Original OBJPROP_WIDTH,2*/
   else ObjectSet("LL_"+Step,OBJPROP_WIDTH,1);
   return(0);
  }

Ce e important de retinut aici este ca procedura care traseaza linia atunci cand este "chemata" sau "activata" primeste doi parametrii importanti, cei care ne intereseaza pe noi L1 si L2. Acestia sunt "shift-urile" pentru lumanarile ale caror minime vor ajuta la trasarea liniei.

 

Ce este un shift? Cei care s-au mai jucat in mql stiu ca un shift este numarul lumanarii de la dreapta la stanga. Ultima lumanare de la dreapta la stanga va avea shif 0, penultima lumanara va avea shift 1, antepenultima 2 samd.

 

Deci daca procedura de desenare a liniei de trend dupa minime primeste ca si parametrii L1=4 si L2=9 linia va fi trasa dupa minimul lumanarii a 4-a de la dreapta la stanga cu minimul lumanarii a 9-a de la dreapta la stanga.

 

Pana aici e clar? Urmeaza sa vedem acum de unde vin L1 si L2 si cum sunt calculati.

Editat de Cityzen
Link spre comentariu
Distribuie pe alte site-uri

L1 si L2 sunt calculate asa:

L1=GetLowTD(Step);
L2=GetNextLowTD(L1);

deci ca sa intelegem exact cum, trebuie sa ne uitam la procedurile GetLowTD ce determina L1 si GetNextLowTF ce determina L2.

 

Secventa care calculeza L1 primeste ca si parametru Step. Ce este step?

 

In "radacina" secventei de cod a acestui indicator avem

 

for(int i=1;i<=ShowingSteps;i++)Comm=Comm+TDMain(i);

Aici e singurul loc unde este "chemata" proceduta TDMain in care de fapt se afla tot despre ce am vorbit pana acum. Cand e chemata prin TDMain(i) acel i este de fapt step-ul nostru...

 

si atunci valorile acelui step vor fi de la 1 la ShowingSteps. Ce este amuzant e ca ShowngSteps este 1 cu urmatorul comment al celui care a moficiat indicatorul

 

int              ShowingSteps=1;    /*Used to be extern int now just int.  Leave at 1*/

Acum ca am aflat ca step-ul primeste doar valoarea 1 hai sa vedem cum e calculat L1 in urmatoarea secventa:

 

int GetLowTD(int P)
  {
   int i=0,j=0;
   while(j<P)
     {
      i++;
      while(ExtMapBuffer2[i]==0)
      {i++;if(i>Bars-2)return(-1);}
      j++;
     }
   return(i);
  }

Este amuzant ca autorul a modicat acel showingsteps dar a lasat restul cum erau, adica multe sunt acum inutile.

 

De exemplu secventa de mai sus primeste ca si parametru P valoarea lui Step adica 1 si are un ciclu in care creste j de la j=0 pana cand acesta este egal cu P adica cu 1. Ciclul respectiv este inutil caci singura valoare de la 0 la 1 mai mica decat 1 este 0 =))

 

Deci mergem mai departe si avem i care devine 1.

 

Aici este folosit ExtMapBuffer2 care contine acele minime evidentiate cu puncte albastre pe grafic.

 

Secventa cauta primul minim de aest gen (albastru pe grafic) de la dreapta (in limita lumanarilor de pe grafic evident) si va returna pentru L1 shiftul minimului gasit. In cazul extrem in care nu este gasit, returneaza -1 pentru L1.

Editat de Cityzen
Link spre comentariu
Distribuie pe alte site-uri

Deci pana aici e simplu L1 este primul minim albastru de pe grafic de la dreapta la stanga.

 

Spune-mi te rog apolo: asta se incadreaza in felul in care vrei sa functioneze indicatorul tau? sau te intereseaza si variantele in care L1 nu este primul minim albastru de la dreapta la stanga?

 

Uite pe usdchf minimele albastre care le deseneaza indicatorul, numerotate de mine de la dreapta la stanga. Asa cum ziceam, in varianta indicatorului, al doilea minim pentru linia de trend de la stanga la dreapta adica primul de la dreapta la stanga pentru linia de trend, este chiar primul minim de tip albastru de la dreapta la stanga pe grafic, desenat de indicator.

post-2415-070530300 1285571743_thumb.gif

Editat de Cityzen
Link spre comentariu
Distribuie pe alte site-uri

Am recitit indicatiile tale mai atent si cred ca am inceput sa inteleg =))

 

Deci ce ziceam eu este exact primul lucru pe care tu l-ai mentionat ca il vrei diferit.

 

mie acum imi trage pe ultimele doua varfuri, adica daca ultimul e level 1 il alege pe ala ca cel mai recent si urmatorul daca e level 3 sau 5 il alege pe ala.

 

asta era concluzia care am tras-o si eu din analizarea codului dar abia acum am vazut ca la asta faceai si tu referire

Editat de Cityzen
Link spre comentariu
Distribuie pe alte site-uri

Am studiat mai atent ce mi-ai cerut. Am modificat in asa fel sa nu mai ia in considerare deloc minimele de level 1.

 

DeMarkcloseLevel2.mq4

 

Vrei sa modific si linia de rezistenta pe maxime sa ia doar maxime de la level 2 in sus sau te interesa doar trendline-ul pe minime?

Editat de Cityzen
Link spre comentariu
Distribuie pe alte site-uri

Bravo omule. esti tare :P . MErge de minune acum . Abia astept sa-l pun la treaba . Goood Job ! =))

 

Multumesc eu in numele tuturor ca sigur vor mai fi si altii care-l vor lua :P

 

Daca vrem sa-l facem de level 3 si level 4 si tot asa, unde modifica parametrii ? Da-ne secventa respectiva si zi-ne ce valoare o modificam. Asa il vom face dupa bunul nostru plac. Grazzieee !

 

Uite si un exemplu :

 

http://www.picz.ro/thumbnails/b5ab0addf991a91ee5460fcaf62e0635.gif

 

si la 15 m unde deja targetul e aproape atins :

 

http://www.picz.ro/thumbnails/3bebeb445f83234fce30209e0483b805.gif

Editat de apolo
Link spre comentariu
Distribuie pe alte site-uri

Alătură-te conversației

Poți posta acum și să te înregistrezi mai târziu. Dacă ai un cont, autentifică-te acum pentru a posta cu contul tău.

Vizitator
Răspunde la acest subiect...

×   Alipit ca text avansat.   Alipește ca text simplu

  Doar 75 emoji sunt permise.

×   Linkul tău a fost încorporat automat.   Afișează ca link în schimb

×   Conținutul tău precedent a fost resetat.   Curăță editor

×   Nu poți lipi imagini direct. Încarcă sau inserează imagini din URL.

  • Navigare recentă   0 membri

    • Nici un utilizator înregistrat nu vede această pagină.
×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.