커뮤니티

지표 수식 부탁드립니다.

프로필 이미지
천년대로
2023-01-03 21:39:21
873
글번호 165069
답변완료
안녕하세요? 매번 수고에 감사드립니다. 아래의 지표수식을 시스템 수식으로 전환부탁드립니다. 감사합니다. input : 분(10),Length(14); var:TL(0),TH(0),cnt(0),Dcnt(0),preTRange(0),prePlusDM14(0),MinusDM14(0),TRange1(0), preMinusDM14(0); Var : TRange(0), MyRange(Length), PlusDM14(0), PlusDM(0), MinusDM(0),preADX(0); var : S1(0),D1(0),TM(0),TF(0),CB(0); Array : HH[61](0),LL[61](0),CC[61](0),TR[61](0),DMIv[61](0); Array : DPlus[61](0),DMinus[61](0); if bdate != Bdate[1] Then { S1 = TimeToMinutes(stime); D1 = sdate; } if D1 > 0 then { if sdate == D1 Then TM = TimeToMinutes(stime)-S1; Else TM = TimeToMinutes(stime)+1440-S1; TF = TM%분; if Bdate != Bdate[1] or (Bdate == Bdate[1] and 분 > 1 and TF < TF[1]) or (Bdate == Bdate[1] and 분 > 1 and TM >= TM[1]+분) or (Bdate == Bdate[1] and 분 == 1 and TM > TM[1]) Then { Dcnt = Dcnt+1; if Dcnt >= Length+2 Then CB = CB+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]; Dplus[cnt] = Dplus[cnt-1][1]; Dminus[cnt] = Dminus[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 CB == 1 Then { MyRange = Length; DPlus[0] = 0; PlusDM14 = 0; TRange = 0; DMinus[0] = 0; MinusDM14 = 0; TRange1 = 0; For cnt = 0 To MyRange - 1 { If HH[cnt] - HH[cnt+1] < 0 Then PlusDM = 0 ; Else PlusDM = HH[cnt] - HH[cnt+1]; If LL[cnt+1] - LL[cnt] < 0 Then MinusDM = 0; Else MinusDM = LL[cnt+1] - LL[cnt]; var1 = PlusDM; var2 = MinusDM; If var1 >= var2 Then MinusDM = 0; If var2 >= var1 Then PlusDM = 0; TRange = TRange + TR[cnt]; PlusDM14 = PlusDM14 + PlusDM; MinusDM14 = MinusDM14 + MinusDM; } If TRange <> 0 Then DPlus[0] = 100 * PlusDM14 / TRange; Else DPlus[0] = 0 ; If TRange <> 0 Then DMinus[0] = 100 * MinusDM14 / TRange; Else DMinus[0] = 0; If Dplus[0] + Dminus[0] == 0 Then DMIv[0] = 0; Else DMIv[0] = 100 * AbsValue(Dplus[0] - Dminus[0]) / (Dplus[0] + Dminus[0]); } Else If CB > 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]; var1 = PlusDM; var2 = MinusDM; If var1 >= var2 Then MinusDM = 0; If var2 >= var1 Then PlusDM = 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[0] = 100 * PlusDM14 / TRange; Else DPlus[0] = 0 ; If TRange <> 0 Then DMinus[0] = 100 * MinusDM14 / TRange; Else DMinus[0] = 0; If Dplus[0] + Dminus[0] == 0 Then DMIv[0] = 0; Else DMIv[0] = 100 * AbsValue(Dplus[0] - Dminus[0]) / (Dplus[0] + Dminus[0]); } plot1(DMIV[0]); plot2(DPlus[0]); plot3(DMinus[0] ); }
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2023-01-04 11:45:22

안녕하세요. 예스스탁입니다. 아래 Plot 지표를 지우고 매매전략 수식을 넣으시면 됩니다. 예시로 작성드립니다. input : 분(10),Length(14); var:TL(0),TH(0),cnt(0),Dcnt(0),preTRange(0),prePlusDM14(0),MinusDM14(0),TRange1(0), preMinusDM14(0); Var : TRange(0), MyRange(Length), PlusDM14(0), PlusDM(0), MinusDM(0),preADX(0); var : S1(0),D1(0),TM(0),TF(0),CB(0); Array : HH[61](0),LL[61](0),CC[61](0),TR[61](0),DMIv[61](0); Array : DPlus[61](0),DMinus[61](0); if bdate != Bdate[1] Then { S1 = TimeToMinutes(stime); D1 = sdate; } if D1 > 0 then { if sdate == D1 Then TM = TimeToMinutes(stime)-S1; Else TM = TimeToMinutes(stime)+1440-S1; TF = TM%분; if Bdate != Bdate[1] or (Bdate == Bdate[1] and 분 > 1 and TF < TF[1]) or (Bdate == Bdate[1] and 분 > 1 and TM >= TM[1]+분) or (Bdate == Bdate[1] and 분 == 1 and TM > TM[1]) Then { Dcnt = Dcnt+1; if Dcnt >= Length+2 Then CB = CB+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]; Dplus[cnt] = Dplus[cnt-1][1]; Dminus[cnt] = Dminus[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 CB == 1 Then { MyRange = Length; DPlus[0] = 0; PlusDM14 = 0; TRange = 0; DMinus[0] = 0; MinusDM14 = 0; TRange1 = 0; For cnt = 0 To MyRange - 1 { If HH[cnt] - HH[cnt+1] < 0 Then PlusDM = 0 ; Else PlusDM = HH[cnt] - HH[cnt+1]; If LL[cnt+1] - LL[cnt] < 0 Then MinusDM = 0; Else MinusDM = LL[cnt+1] - LL[cnt]; var1 = PlusDM; var2 = MinusDM; If var1 >= var2 Then MinusDM = 0; If var2 >= var1 Then PlusDM = 0; TRange = TRange + TR[cnt]; PlusDM14 = PlusDM14 + PlusDM; MinusDM14 = MinusDM14 + MinusDM; } If TRange <> 0 Then DPlus[0] = 100 * PlusDM14 / TRange; Else DPlus[0] = 0 ; If TRange <> 0 Then DMinus[0] = 100 * MinusDM14 / TRange; Else DMinus[0] = 0; If Dplus[0] + Dminus[0] == 0 Then DMIv[0] = 0; Else DMIv[0] = 100 * AbsValue(Dplus[0] - Dminus[0]) / (Dplus[0] + Dminus[0]); } Else If CB > 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]; var1 = PlusDM; var2 = MinusDM; If var1 >= var2 Then MinusDM = 0; If var2 >= var1 Then PlusDM = 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[0] = 100 * PlusDM14 / TRange; Else DPlus[0] = 0 ; If TRange <> 0 Then DMinus[0] = 100 * MinusDM14 / TRange; Else DMinus[0] = 0; If Dplus[0] + Dminus[0] == 0 Then DMIv[0] = 0; Else DMIv[0] = 100 * AbsValue(Dplus[0] - Dminus[0]) / (Dplus[0] + Dminus[0]); } if DPlus[0] > DMinus[0] and DPlus[1] < DMinus[1] Then Buy(); if DPlus[0] < DMinus[0] and DPlus[1] > DMinus[1] Then Sell(); } > 천년대로 님이 쓴 글입니다. > 제목 : 지표 수식 부탁드립니다. > 안녕하세요? 매번 수고에 감사드립니다. 아래의 지표수식을 시스템 수식으로 전환부탁드립니다. 감사합니다. input : 분(10),Length(14); var:TL(0),TH(0),cnt(0),Dcnt(0),preTRange(0),prePlusDM14(0),MinusDM14(0),TRange1(0), preMinusDM14(0); Var : TRange(0), MyRange(Length), PlusDM14(0), PlusDM(0), MinusDM(0),preADX(0); var : S1(0),D1(0),TM(0),TF(0),CB(0); Array : HH[61](0),LL[61](0),CC[61](0),TR[61](0),DMIv[61](0); Array : DPlus[61](0),DMinus[61](0); if bdate != Bdate[1] Then { S1 = TimeToMinutes(stime); D1 = sdate; } if D1 > 0 then { if sdate == D1 Then TM = TimeToMinutes(stime)-S1; Else TM = TimeToMinutes(stime)+1440-S1; TF = TM%분; if Bdate != Bdate[1] or (Bdate == Bdate[1] and 분 > 1 and TF < TF[1]) or (Bdate == Bdate[1] and 분 > 1 and TM >= TM[1]+분) or (Bdate == Bdate[1] and 분 == 1 and TM > TM[1]) Then { Dcnt = Dcnt+1; if Dcnt >= Length+2 Then CB = CB+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]; Dplus[cnt] = Dplus[cnt-1][1]; Dminus[cnt] = Dminus[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 CB == 1 Then { MyRange = Length; DPlus[0] = 0; PlusDM14 = 0; TRange = 0; DMinus[0] = 0; MinusDM14 = 0; TRange1 = 0; For cnt = 0 To MyRange - 1 { If HH[cnt] - HH[cnt+1] < 0 Then PlusDM = 0 ; Else PlusDM = HH[cnt] - HH[cnt+1]; If LL[cnt+1] - LL[cnt] < 0 Then MinusDM = 0; Else MinusDM = LL[cnt+1] - LL[cnt]; var1 = PlusDM; var2 = MinusDM; If var1 >= var2 Then MinusDM = 0; If var2 >= var1 Then PlusDM = 0; TRange = TRange + TR[cnt]; PlusDM14 = PlusDM14 + PlusDM; MinusDM14 = MinusDM14 + MinusDM; } If TRange <> 0 Then DPlus[0] = 100 * PlusDM14 / TRange; Else DPlus[0] = 0 ; If TRange <> 0 Then DMinus[0] = 100 * MinusDM14 / TRange; Else DMinus[0] = 0; If Dplus[0] + Dminus[0] == 0 Then DMIv[0] = 0; Else DMIv[0] = 100 * AbsValue(Dplus[0] - Dminus[0]) / (Dplus[0] + Dminus[0]); } Else If CB > 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]; var1 = PlusDM; var2 = MinusDM; If var1 >= var2 Then MinusDM = 0; If var2 >= var1 Then PlusDM = 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[0] = 100 * PlusDM14 / TRange; Else DPlus[0] = 0 ; If TRange <> 0 Then DMinus[0] = 100 * MinusDM14 / TRange; Else DMinus[0] = 0; If Dplus[0] + Dminus[0] == 0 Then DMIv[0] = 0; Else DMIv[0] = 100 * AbsValue(Dplus[0] - Dminus[0]) / (Dplus[0] + Dminus[0]); } plot1(DMIV[0]); plot2(DPlus[0]); plot3(DMinus[0] ); }