- ตุลาคม 18, 2013
- โพสโดย: ทีมงาน Forex Wiki
- หมวดหมู่: FX อินเดีย
ไม่มีความคิดเห็น
1608
1479
ชื่อ: |
|
||
ผู้เขียน: | นักเขียน (2008.02.11 10:02) | ||
ดาวน์โหลดแล้ว: | 1206 | ||
ดาวน์โหลด: |
|
||
ผู้เขียน: Albert, (idea and code into MQL2 - podval)
HVR indicator. |
|||
1 ความคิดเห็น หากต้องการโพสต์ความคิดเห็นใหม่, โปรด เข้าสู่ระบบ หรือ ลงทะเบียน
The following code displays both 6 & 10 HVR with 100 (all periods as params). Also for more periods on chart. //+------------------------------------------------------------------+ //| HVR.mq4 | //| ลิขสิทธิ์ © 2005, Albert,(idea and code into MQL2 - podval) | //| Refactored © 2010, Brewmanz (เพิ่ม 2 HVR lines) | //| | //+------------------------------------------------------------------+ #property indicator_separate_window //---- //#property indicator_minimum 0 //#property indicator_maximum 3 #property indicator_buffers 3 //---- #property indicator_color1 Blue #property indicator_color2 Purple extern int PeriodLong=100; extern int PeriodShort=10; extern int PeriodVeryShort=6; double xVeryShort[], xShort[], xLong[]; #define kVolfactor 7.211102550927978586238442534941 //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ //---- buffers double HVRSBuffer[]; double HVRVSBuffer[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { ArrayResize(xVeryShort, PeriodVeryShort); ArrayResize(xShort, PeriodShort); ArrayResize(xLong, PeriodLong); SetLevelValue(0, 0.0); SetLevelValue(1, 0.5); SetLevelValue(2, 1.0); SetLevelValue(3, 2.0); //---- 2 additional buffers are used for counting. IndicatorBuffers(2); SetIndexBuffer(0,HVRSBuffer); SetIndexBuffer(1,HVRVSBuffer); //---- indicator line SetIndexStyle(0,DRAW_LINE); SetIndexStyle(1,DRAW_LINE); //---- name for DataWindow and indicator subwindow label IndicatorShortName("HVR( " + PeriodVeryShort +" & " + PeriodShort + " /" + PeriodLong + ")"); SetIndexLabel(0,"HVR(" + PeriodShort + "/" + PeriodLong + ")"); SetIndexLabel(1,"HVR(" + PeriodVeryShort + "/" + PeriodLong + ")"); //---- //---- return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int start() { double hvVeryShort, hvShort, hvLong, meanVeryShort, meanShort, meanLong; int counted_bars=IndicatorCounted(); //---- last counted bar will be recounted if(counted_bars>0) counted_bars--; int ixLimit=Bars-counted_bars-1; สำหรับ(int ix=ixLimit; ix>=0; ix--) { ถ้า(ix+PeriodLong >= Bars) continue; meanVeryShort=0; meanShort=0; meanLong=0; สำหรับ(int i = 0; ฉัน<PeriodLong; ฉัน ++) { double myLog=MathLog(ปิด[ix+i]/ปิด[ix+i+1]); xLong[ฉัน]=myLog; meanLong+=myLog; ถ้า(ฉัน<PeriodShort) { xShort[ฉัน]=myLog; meanShort+=myLog; } ถ้า(ฉัน<PeriodVeryShort) { xVeryShort[ฉัน]=myLog; meanVeryShort+=myLog; } } meanVeryShort/=PeriodVeryShort; meanShort/=PeriodShort; meanLong/=PeriodLong; hvVeryShort=0; สำหรับ(i=0; ฉัน<PeriodVeryShort; ฉัน ++) hvVeryShort+=(xVeryShort[ฉัน] - meanVeryShort)*(xVeryShort[ฉัน] - meanVeryShort); hvVeryShort=MathSqrt(hvVeryShort/(PeriodVeryShort-1)) * kVolfactor; hvShort=0; สำหรับ(i=0; ฉัน<PeriodShort; ฉัน ++) hvShort+=(xShort[ฉัน] - meanShort)*(xShort[ฉัน] - meanShort); hvShort=MathSqrt(hvShort/(PeriodShort-1)) * kVolfactor; hvLong=0; สำหรับ(i=0; ฉัน<PeriodLong; ฉัน ++) hvLong+=(xLong[ฉัน] - meanLong)*(xLong[ฉัน] - meanLong); hvLong=MathSqrt(hvLong/(PeriodLong-1)) * kVolfactor; HVRVSBuffer[ix]= hvVeryShort/hvLong; HVRSBuffer[ix]= hvShort/hvLong; } } //+------------------------------------------------------------------+ |