커뮤니티

수식문의 드립니다^^;

프로필 이미지
하얀모래
2012-07-12 10:29:35
421
글번호 52828
답변완료
안녕하세요~ 틱봉에서 1분봉의 ADX값을 참조하는 수식 문의 드립니다. 배우면서 시스템을 만들어 가는데. 아직은 서툴러서 문의가 많습니다.^^;
시스템
답변 2
프로필 이미지

예스스탁 예스스탁 답변

2012-07-12 19:03:26

안녕하세요 예스스탁입니다. 틱봉에서 분봉의 지표를 구현하는 것은 가능하지 않습니다. 봉하나에서 시간을 기준으로 데이터를 분리가 가능하지 않으므로 시간을 구분짓는 시세가 틱봉의 중간에 끼면 구분을 하지 못하게 됩니다. 위내용 감안하시면 아래식이용하시면 됩니다. 1분봉과 같이 완전히 같게 작성될수는 없습니다. input : TT(240),Length(14); var : TL(0),TH(0),cnt(0),Dcnt(0),preTRange(0),prePlusDM14(0),DMinus(0),MinusDM14(0),TRange1(0),preMinusDM14(0); Variables: Counter(0), TRange(0), MyRange(Length), PlusDM14(0), PlusDM(0), MinusDM(0),Dplus(0),preADX(0),ADXv(0); Array : HH[61](0),LL[61](0),CC[61](0),TR[61](0),DMIv[61](0); var1 = TimeToMinutes(stime)%TT; if dayindex == 0 or (var1 < var1[1] and stime > stime[1]) Then{ Dcnt = Dcnt+1; HH[0] = H; LL[0] = L; CC[0] = C; preTRange = TRange[1]; prePlusDM14 = PlusDM14[1]; preMinusDM14 = MinusDM14[1]; preADX = ADXv[1]; for cnt = 1 to 60{ HH[cnt] = HH[cnt-1][1]; LL[cnt] = LL[cnt-1][1]; CC[cnt] = CC[cnt-1][1]; TR[cnt] = TR[cnt-1][1]; DMIv[cnt] = DMIv[cnt-1][1]; } } if H > HH[0] Then HH[0] = H; if L < LL[0] Then LL[0] = L; CC[0] = C; if CC[1] > 0 Then{ If CC[1] > HH[0] then TH = CC[1]; else TH = HH[0]; If CC[1] < LL[0] then TL = CC[1]; else TL = LL[0]; TR[0] = TH-TL; } If Dcnt == Length+1 Then { MyRange = Length; DPlus = 0; PlusDM14 = 0; TRange = 0; DMinus = 0; MinusDM14 = 0; TRange1 = 0; For Counter = 0 To MyRange - 1 { If HH[Counter] - HH[Counter+1] < 0 Then PlusDM = 0 ; Else PlusDM = HH[Counter] - HH[Counter+1]; If LL[Counter+1] - LL[Counter] < 0 Then MinusDM = 0; Else MinusDM = LL[Counter+1] - LL[Counter]; If MinusDM >= PlusDM Then PlusDM = 0; If PlusDM >= MinusDM Then MinusDM = 0; TRange = TRange + TR[Counter]; PlusDM14 = PlusDM14 + PlusDM; MinusDM14 = MinusDM14 + MinusDM; } If TRange <> 0 Then DPlus = 100 * PlusDM14 / TRange; Else DPlus = 0 ; If TRange <> 0 Then DMinus = 100 * MinusDM14 / TRange; Else DMinus = 0; } Else If Dcnt > Length+1 Then { If HH[0] - HH[1] < 0 Then PlusDM = 0; Else PlusDM = HH[0] - HH[1]; If LL[1] - LL[0] < 0 Then MinusDM = 0; Else MinusDM = LL[1] - LL[0]; If MinusDM >= PlusDM Then PlusDM = 0; If PlusDM >= MinusDM Then MinusDM = 0 ; If MyRange > 0 Then { TRange = preTRange - (preTRange / MyRange) + TR[0]; PlusDM14 = prePlusDM14 - (prePlusDM14 / MyRange) + PlusDM; MinusDM14 = preMinusDM14 - (preMinusDM14 / MyRange) + MinusDM; } If TRange <> 0 Then DPlus = 100 * PlusDM14 / TRange; Else DPlus = 0 ; If TRange <> 0 Then DMinus = 100 * MinusDM14 / TRange; Else DMinus = 0; } If DPlus + DMinus == 0 Then DMIv[0] = 0; Else DMIv[0] = 100 * Abs(DPlus - DMinus) / (DPlus + DMinus); Variables: CummDMI(0), Return(0); Return = 0; If dcnt >= Length AND Length > 0 Then Begin If CurrentBar < Length+1 Then begin CummDMI = 0; for Counter = 0 To CurrentBar - 1 Begin CummDMI = CummDMI + DMIV[Counter]; End; Return = CummDMI / CurrentBar; End Else Return = (preADX[1] * (Length - 1) + DMIv[0]) / Length; End; ADXv = Return; plot1(ADXv); plot2(Dplus); plot3(Dminus); 도움을 드리지 못해 죄송합니다. > 하얀모래 님이 쓴 글입니다. > 제목 : 수식문의 드립니다^^; > 안녕하세요~ 틱봉에서 1분봉의 ADX값을 참조하는 수식 문의 드립니다. 배우면서 시스템을 만들어 가는데. 아직은 서툴러서 문의가 많습니다.^^;
프로필 이미지

하얀모래

2012-07-12 19:20:41

^^;