//+------------------------------------------------------------------+ //| i-RoundPrice-T01m.mq4 | //| 25.07.2006 Translated on MT4 by Êèì Èãîðü Â. aka KimIV | //| http://www.kimiv.ru | //+------------------------------------------------------------------+ /*[[ Name := RoundPrice Author := Copyright © 2006, HomeSoft Tartan Corp. Link := spiky@transkeino.ru Separate Window := No First Color := Lime First Draw Type := Line First Symbol := 217 Use Second Data := Yes Second Color := Red Second Draw Type := Line Second Symbol := 218 ]]*/ #property copyright "Copyright © 2006, HomeSoft Tartan Corp." #property link "spiky@transkeino.ru" #property indicator_chart_window #property indicator_buffers 2 #property indicator_color1 Aqua #property indicator_color2 Red //------- Âíåøíèå ïàðàìåòðû èíäèêàòîðà ------------------------------- extern int t3_period=21; extern double b=0.7; extern int Price4ma = 0; extern int Len = 39; extern double Cycle = 4; extern int Phase = 2; extern double Level = 0.3; extern double Coeff = 7; extern int mBar=300; //------- Ãëîáàëüíûå ïåðåìåííûå èíäèêàòîðà --------------------------- double dBuf0[], dBuf1[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ void init() { SetIndexBuffer (0, dBuf0); SetIndexEmptyValue(0, EMPTY_VALUE); SetIndexStyle (0, DRAW_LINE,EMPTY,2); SetIndexBuffer (1, dBuf1); SetIndexEmptyValue(1, EMPTY_VALUE); SetIndexStyle (1, DRAW_LINE,EMPTY,2); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ void start() { bool ft=True; double e1, e2, e3, e4, e5, e6, c1, c2, c3, c4, n, w1, w2, b2, b3; double t3[]; double MAB[]; int LoopBegin, shift; int i,limit, num; double alfa, beta, t, AvgRange,Weight, step,step1,g; double pi = 3.1415926535; limit=mBar; LoopBegin=mBar; ArrayResize(t3,mBar); ArrayResize(MAB,mBar); step = 2.0*Cycle/(Len-1); num = MathRound((Len-1)/(2.0*Cycle))+Phase; for(shift=limit;shift>=0;shift--) { Weight=0;AvgRange=0; for (i=0;i<=Len-1;i++) { if ( i <= num ) step = 1.0/num; else step = (2.0*Cycle-1)/(Len-1-num); t = i*step; g = 1.0/(Coeff*t+1); if (g > Level ) g = 1; beta = MathSin(pi*(t + 0.5)); alfa = g * beta; AvgRange = AvgRange + alfa*iMA(NULL,0,1,0,MODE_SMA,Price4ma,shift+i); Weight =Weight + alfa; } if (Weight > 0) MAB[shift]=AvgRange/Weight; } if (ft) { b2=b*b; b3=b2*b; c1=-b3; c2=(3*(b2+b3)); c3=-3*(2*b2+b+b3); c4=(1+3*b+b3+3*b2); n=t3_period; if (n<1) n=1; n=1+0.5*(n-1); w1=2/(n+1); w2=1-w1; ft=False; } for (shift=LoopBegin; shift>=0; shift--) { e1=w1*MAB[shift]+w2*e1; e2=w1*e1+w2*e2; e3=w1*e2+w2*e3; e4=w1*e3+w2*e4; e5=w1*e4+w2*e5; e6=w1*e5+w2*e6; t3[shift]=c1*e6+c2*e5+c3*e4+c4*e3; Comment ("MAB=",MAB[shift]," t3=",t3[shift]); if (t3[shift+1]<=t3[shift]) dBuf0[shift]=t3[shift]; else dBuf0[shift]=0; if (t3[shift+1]>t3[shift]) dBuf1[shift]=t3[shift]; else dBuf1[shift]=0; } } //+------------------------------------------------------------------+
Sample
Analysis
Market Information Used:
Indicator Curves created:
Indicators Used:
Moving average indicator
Custom Indicators Used:
Order Management characteristics:
Other Features: