커뮤니티

수식부탁드립니다

프로필 이미지
bestkim
2016-11-15 12:16:24
81
글번호 103998
답변완료
안녕하세요 아래수식은 medianprice와 adx를 이용한 매수매도식입니다 이식의 30틱차트의 매수매도신호를 120틱차트에서 발생되도록 수식을 변형부탁드립니다 감사합니다 input :P1(2); var1 = MedianPrice; var2 = ADX(p1); if var1 > var1[1] and var2 > var2[1] then buy("MPa매수"); if var1 < var1[1] and var2 > var2[1] then sell("MPa매도");
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2016-11-15 14:44:12

안녕하세요 예스스탁입니다. ADX는 사용하시는 주기에서 다른주기의 값을 계산하기 어려운 지표입니다. input : P1(14); var : V1(0,data1),V2(0,data2); v1 = data2(MedianPrice); v2 = data2(ADX(p1)); if v1 > v1[1] and v2 > v2[1] then buy("MPa매수"); if v1 < v1[1] and v2 > v2[1] then sell("MPa매도"); 해당 내용은 타종목 참조를 이용해 위와 같이 작성하셔야 합니다. 아래 내용은 참고용으로 올려드립니다. 도출되는 갑은 근사값입니다. 정확히 계산이 되지는 않습니다. Input : N(4),ADXP(14); var : TL(0),TH(0),cnt(0),Dcnt(0),preTRange(0),prePlusDM14(0),DMinus(0),MinusDM14(0),TRange1(0),preMinusDM14(0); Var : Counter(0), TRange(0), MyRange(0), PlusDM14(0), PlusDM(0), MinusDM(0),Dplus(0),preADX(0); Var : CummDMI(0), Return(0),count(0),TF(0),idx(0); Array : HH[61](0),LL[61](0),CC[61](0),TR[61](0),DMIv[61](0),ADXv[61](0); if Bdate != Bdate[1] Then idx = 0; if Bdate == Bdate[1] Then idx = idx+1; TF = idx%N; if bdate != bdate[1] or (bdate == bdate[1] and TF < TF[1]) Then{ Dcnt = Dcnt+1; HH[0] = H; LL[0] = L; CC[0] = C; preTRange = TRange[1]; prePlusDM14 = PlusDM14[1]; preMinusDM14 = MinusDM14[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]; ADXv[cnt] = ADXv[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 == ADXP+1 Then { MyRange = ADXP; 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; If Dplus + Dminus == 0 Then DMIv[0] = 0; Else DMIv[0] = 100 * AbsValue(Dplus - Dminus) / (Dplus + Dminus); } Else If Dcnt > ADXP+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 * AbsValue(Dplus - Dminus) / (Dplus + Dminus); } If DMIV[ADXP] == 0 Then{ CummDMI = 0; for Counter = 0 To ADXP-1 { if DMiV[counter] > 0 Then CummDMI = CummDMI + DMIV[Counter]; } ADXv[0] = CummDMI / CurrentBar; } Else ADXv[0] = (ADXv[1] * (ADXP - 1) + DMIv[0]) / ADXP; if (HH[0]+LL[0])/2 > (HH[1]+LL[1])/2 and ADXv[0] > Adxv[1] Then buy(); if (HH[0]+LL[0])/2 < (HH[1]+LL[1])/2 and ADXv[0] > Adxv[1] Then sell(); 즐거운 하루되세요 > bestkim 님이 쓴 글입니다. > 제목 : 수식부탁드립니다 > 안녕하세요 아래수식은 medianprice와 adx를 이용한 매수매도식입니다 이식의 30틱차트의 매수매도신호를 120틱차트에서 발생되도록 수식을 변형부탁드립니다 감사합니다 input :P1(2); var1 = MedianPrice; var2 = ADX(p1); if var1 > var1[1] and var2 > var2[1] then buy("MPa매수"); if var1 < var1[1] and var2 > var2[1] then sell("MPa매도");