2 Bijlage(n) Ik zou dit interieur willen aanpassen om geen objecten te gebruiken, maar ik kan er niet helemaal achter komen hoe.
Alle suggesties worden zeer op prijs gesteld!
Ingevoegde code/ --------------------------------------------- --------------------- /| verleden regressie afgeweken.mq4 |/| Copyright � 2006, tageiger, ook bekend als [email protected] |/| http://www.metaquotes.net |/ ------------------------------------------------------------ ------------------- #property copyright Copyright � 2006, tageiger, aka [email protected] #property link http://www.metaquotes.net #property indior_chart_window #property indior_buffers 7 #property indior_color1 Bruin #property indior_color2 Limoen #property indior_color3 Limoen #property indior_color4 Bruin #property indior_color5 Bruin #property indior_color6 Bruin #property indior_color7 Bruin/---- invoerparameters int periode=0;*default 0 betekent dat het kanaal de open tijd vanaf x bars terug zal gebruiken op welke tijdsperiode de indior ook is gekoppeld. men kan veranderen in 1,5,15,30,60...etc om de starttijd te vergrendelen op een specifieke periode, en dan de vergrendelde kanalen bekijken op een andere tijdsperiode...*/extern int LR.length=56 ;/bars terugregressie begint extern dubbel std.channel.1=0.618;/1e kanaal extern dubbel std.channel.2=1.618;/2e kanaal extern dubbel std.channel.3=0;/3e kanaal/---- interne buffers dubbel gemiddelde.Buffer#91;#93;; dubbel hoog.1.Buffer#91;#93;; dubbel laag.1.Buffer#91;#93;; dubbel hoog.2.Buffer#91;#93;; dubbel laag.2.Buffer#91;#93;; dubbel hoog.3.Buffer#91;#93;; dubbel laag.3.Buffer#91;#93;; int init() {*---- lijnverschuivingen bij tekenen SetIndexShift(0,JawsShift); SetIndexShift(1,TeethShift); SetIndexShift(2,LipsShift);/---- eerste posities overgeslagen bij tekenen*/SetIndexDrawBegin(0,LR.length); SetIndexDrawBegin(1,LR.lengte); SetIndexDrawBegin(2,LR.lengte); SetIndexDrawBegin(3,LR.lengte); SetIndexDrawBegin(4,LR.lengte); SetIndexDrawBegin(5,LR.lengte); SetIndexDrawBegin(6,LR.lengte);/---- 3 indior buffers mapping SetIndexBuffer(0,mean.Buffer); SetIndexBuffer(1,hoge.1.Buffer); SetIndexBuffer(2,laag.1.Buffer); SetIndexBuffer(3,hoge.2.Buffer); SetIndexBuffer(4,laag.2.Buffer); SetIndexBuffer(5,high.3.Buffer); SetIndexBuffer(6,laag.3.Buffer);/---- tekeninstellingen SetIndexStyle(0,DRAW_LINE,0); SetIndexPijl(0,158); SetIndexStyle(1,DRAW_LINE,0); SetIndexPijl(1.158); SetIndexStyle(2,DRAW_LINE,0); SetIndexPijl(2.158); SetIndexStyle(3,DRAW_LINE,0); SetIndexPijl(3.158); SetIndexStyle(4,DRAW_LINE,0); SetIndexPijl(4.158); SetIndexStyle(5,DRAW_LINE,0); SetIndexPijl(5.158); SetIndexStyle(6,DRAW_LINE,0); SetIndexPijl(6.158);/---- indexlabels SetIndexLabel(0,gemiddelde); SetIndexLabel(1,1st Std omhoog); SetIndexLabel(2,1st Std naar beneden); SetIndexLabel(3,2e Std omhoog); SetIndexLabel(4,2e standaard naar beneden); SetIndexLabel(5,3e Std omhoog); SetIndexLabel(6,3e standaard naar beneden);/---- initialisatie voltooid return(0);} intdeinit() {ObjectDelete(periode m LR.length TL);} int start() { ObjectDelete(periode m LR.length TL); int limiet; int counted_bars=IndiorCounted(); als(counted_barslt;0) return(-1); if(counted_barsgt;0) counted_bars--; limit=Bars-counted_bars;/---- main loop for(int i=0; ilt;limit; i ) {/lineaire regressieberekening int start.bar=i LR.length, end.bar=i; int n=start.bar-end.bar 1;/---- prijswaarden berekenen.. Lineaire regressieberekening double value=Close#91;end.bar#93;; dubbel a,b,c; dubbel sumy=waarde; dubbele somx=0,0; dubbele sumxy=0.0; dubbele somx2=0,0; for(int ii=1; iilt;n; ii ) { value=Close#91;end.bar ii#93;; som =waarde; sumxy =waarde*ii; sumx =ii; somx2 =ii*ii; } c=somx2*n-somx*somx; als(c==0.0) terugkeer; b=(somxy*n-somx*somy)/c; a=(somy-somx*b)/n; dubbel LR.price.2=a; dubbel LR.price.1=a b*n; mean.Buffer#91;i#93;=NormalizeDouble(LR.price.2,Di gits);*---- maximale afwijkingsberekening (3e afwijkingslijn) dubbel max.dev=0; dubbele afwijking=0; dubbele dwaarde=a; for(int i.1=0; i.1lt;n; i.1 ) { value=Close#91;end.bar i.1#93;; dwaarde =b; deviatie=MathAbs(waarde-dwaarde); if(max.devlt;=afwijking) max.dev=afwijking; } *///Lineaire regressie trendlijn ObjectDelete(periode m LR.length TL); ObjectCreate(periode m LR.lengte TL,OBJ_TREND,0,Time#91;start.bar#93;,LR.price.1,Ti me#91;end.bar#93;,LR.price.2); ObjectSet(periode m LR.lengte TL,OBJPROP_COLOR,Oranje); ObjectSet(periode m LR.lengte TL,OBJPROP_WIDTH,2); ObjectSet(periode m LR.lengte TL,OBJPROP_RAY,false);/...standaarddeviatie... dubbel x=0,x.sum=0,x.avg=0,x.sum.squared=0,std.dev=0; for(int iii=i; iiilt;start.bar; iii ) { x=MathAbs(Close#91;iii#93;-ObjectGetValueByShift(periode m LR.length TL,iii)); x.som.kwadraat =(x*x); } std.dev=MathSqrt(x.som.kwadraat/((start.bar-end.bar)-1));/Afdrukken(LR.price.1, LR.price.1, LR.Price.2, LR.price.2, standaard.dev, standaard.dev);/...standaarddeviatie kanalen... high.1.Buffer#91;i#93;=mean.Buffer#91;i#93; (std.channel.1*std.dev); low.1.Buffer#91;i#93;=gemiddelde.Buffer#91;i#93;-(std.channel.1*std.dev); hoge.2.Buffer#91;i#93;=gemiddelde.Buffer#91;i#93; (std.kanaal.2*std.dev); low.2.Buffer#91;i#93;=gemiddelde.Buffer#91;i#93;-(std.channel.2*std.dev); hoge.3.Buffer#91;i#93;=gemiddelde.Buffer#91;i#93; (std.channel.3*std.dev);//max.dev; low.3.Buffer#91;i#93;=mean.Buffer#91;i#93;-(std.channel.3*std.dev);//max.dev; } ObjectVerwijderen(punt m LR.lengte TL); return(0);}/ ----------------------------------------- -------------------------
In het bijzonder zou ik graag willen weten hoe ik moet omgaan met ingevoegde code x=MathAbs(Close#91;iii#93;-ObjectGetValueByShift(period m LR.length TL,iii)); (Ook heb ik de 3 verschillende STD-kanalen ook niet nodig - ik heb er maar 1 nodig).
https://www.aforexa.com/attachments/...1770557129.mq4
https://www.aforexa.com/attachments/...5844417906.ex4