커뮤니티

안녕하세요

프로필 이미지
돈을잃자
2024-04-08 09:57:42
786
글번호 178365
답변완료
1. 분봉이나 틱봉에서 전일 adx의 고가, 전전일 adx의 고가 등등을 필터로 사용하려고 합니다. 예를 들면 전일 adx 고가를 hadx[1]이라고 한다면 이게 특정수치 이하인 조건 등을 시스템으로 넣으려고 합니다. 예를 들면 if hadx[1]<30 and hadx[2]<30 then ~~~~~ 그렇게 하기 위한 hadx의 시스템 조건 수식을 부탁드려요 2. 가. 보통 우리가 사용하는 adx 버전 나. 갭을 빼고 당일의 움직음 만을 고려한 adx를 사용한 버전 이렇게 가능할까요? 필요하다면 사용자 함수를 사용해서든 다양한 방법도 상관없습니다!
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2024-04-08 11:30:58

안녕하세요 예스스탁입니다. 1 input : Period(14); var : ADXv(0),cnt(0); Array : Hadx[10](0); ADXv = ADX(Period); if Bdate != Bdate[1] Then { For cnt = 9 DownTo 1 { Hadx[cnt] = Hadx[cnt-1]; } Hadx[0] = ADXV; } if ADXV > Hadx[0] Then Hadx[0] = Adxv; if hadx[1]<30 and hadx[2]<30 then 2 Inputs : Period(14); Var : idx(0),Counter(0), TRange(0), PlusDM14(0),MinusDM14(0); var : PlusDM(0), MinusDM(0),DMIv(0); var : DP(0),DM(0),hd(0),ld(0); var : cnt(0); Array : Hadx[10](0); if bdate != Bdate[1] Then { idx = 0; DP = 0; DM = 0; } else idx = idx+1; if idx == 0 Then hd = C-O; Else hd = H-H[1]; if idx == 0 Then ld = C-O; Else ld = L-L[1]; If idx >= 0 and idx <= Period+1 Then { DP = 0; DM = 0; PlusDM14 = 0; MinusDM14 = 0; TRange = 0; For Counter = 0 To idx { If hd < 0 Then PlusDM = 0; Else PlusDM = hd; If ld < 0 Then MinusDM = 0; Else MinusDM = ld; var1 = PlusDM; Var2 = MinusDM; If Var2 >= var1 Then PlusDM = 0; If var1 >= Var2 Then MinusDM = 0; TRange = TRange + TrueRange[Counter]; PlusDM14 = PlusDM14 + PlusDM; MinusDM14 = MinusDM14 + MinusDM; } If TRange <> 0 Then { DP = 100 * PlusDM14 / TRange; DM = 100 * MinusDM14 / TRange; } Else { DP = 0; DM = 0; } } If idx > Period+1 Then { If hd < 0 Then PlusDM = 0; Else PlusDM = hd; If ld < 0 Then MinusDM = 0; Else MinusDM = ld; var1 = PlusDM; Var2 = MinusDM; If Var2 >= var1 Then PlusDM = 0; If var1 >= Var2 Then MinusDM = 0; If Period > 0 Then Begin TRange = TRange[1] - (TRange[1] / Period) + TrueRange; PlusDM14 = PlusDM14[1] - (PlusDM14[1] / Period) + PlusDM; MinusDM14 = MinusDM14[1] - (MinusDM14[1] / Period) + MinusDM; End; If TRange <> 0 Then { DP = 100 * PlusDM14 / TRange; DM = 100 * MinusDM14 / TRange; } Else { DP = 0; DM = 0; } } If DP + DM == 0 Then DMIv = 0; Else DMIv = 100 * AbsValue(DP - DM) / (DP + DM); var : CummDMI(0),ADXV(0); If idx >= 1 AND Period > 0 Then { If idx < Period Then { CummDMI = 0; for Counter = 0 To idx - 1 { CummDMI = CummDMI + DMIV[Counter]; } ADXv = CummDMI / idx; } Else ADXv = (ADXv * (Period - 1) + DMIv) / Period; } if Bdate != Bdate[1] Then { For cnt = 9 DownTo 1 { Hadx[cnt] = Hadx[cnt-1]; } Hadx[0] = ADXV; } if ADXV > Hadx[0] Then Hadx[0] = Adxv; if hadx[1]<30 and hadx[2]<30 then 즐거운 하루되세요 > 돈을잃자 님이 쓴 글입니다. > 제목 : 안녕하세요 > 1. 분봉이나 틱봉에서 전일 adx의 고가, 전전일 adx의 고가 등등을 필터로 사용하려고 합니다. 예를 들면 전일 adx 고가를 hadx[1]이라고 한다면 이게 특정수치 이하인 조건 등을 시스템으로 넣으려고 합니다. 예를 들면 if hadx[1]<30 and hadx[2]<30 then ~~~~~ 그렇게 하기 위한 hadx의 시스템 조건 수식을 부탁드려요 2. 가. 보통 우리가 사용하는 adx 버전 나. 갭을 빼고 당일의 움직음 만을 고려한 adx를 사용한 버전 이렇게 가능할까요? 필요하다면 사용자 함수를 사용해서든 다양한 방법도 상관없습니다!