커뮤니티

75815 수식 관련 질문 드립니다

프로필 이미지
jshwang2
2022-02-14 03:04:35
1058
글번호 156223
답변완료
안녕하세요 이전에 120틱봉 차트를 사용할 때 직전 600틱봉 3개가 양봉이고, 현재봉의 현재가가 HB 상향돌파시 매수 직전 600틱봉 3개가 음봉이고, 현재봉의 현재가가 LB 하향돌파시 매도 이걸 어떻게 만들지를 문의해 만들어주신 수식이 있는데 어떻게 작동하는지를 보다 이해가 안되 질문을 드리게 되었습니다 당시 답변주신 수식은 아래와 같고 이해 안되는 부분을 노트해 두었습니다 input : nbars(5),N(3); input : HB(14620), LB(14530) ; var : e60(0); var : D1(0),idx(0),TF(0),Po(0),Ne(0),cnt(0); Array : OO[20](0),CC[20](0); e60 = Ema(C,60); if Bdate != Bdate[1] Then { D1 = sdate; idx = 0; } Else idx = idx+1; => 오늘 00시부터 지금까지의 120틱봉 개수 카운트 => idx = 봉 개수 if D1 > 0 then { TF = idx%nbars; => 봉을 5개 단위로 자름 1,2,3,4,5/1,2,3,4,5 if Bdate != Bdate[1] or (Bdate == Bdate[1] and TF < TF[1]) Then => 120틱봉 5개 묶음의 첫번째 봉인 경우 { OO[0] = O; for cnt = 1 to 19 { OO[cnt] = OO[cnt-1][1]; CC[cnt] = CC[cnt-1][1]; } } CC[0] = C; => 조건 이후 실행부 전반이 무엇을 의미하는 것인지가 전체적으로 잘 모르겠고 => 특히 OO[cnt] = OO[cnt-1][1]; 이걸 잘 모르겠습니다. cnt가 1이면 OO[1] = OO[0][1];인데 OO[0][1]이 의미하는게 뭔가요? if OO[n] > 0 Then { Po = 0; Ne = 0; For cnt = 1 to n { if CC[cnt] > OO[cnt] Then Po = po +1; if CC[cnt] < OO[cnt] Then Ne = Ne +1; } if Po == n then Buy("L",AtStop,HB,2) ; if Ne == n then Sell("S",AtStop,LB,2) ; } } if marketposition > 0 Then { if e60 < HB Then ExitLong("exitL1",AtStop,HB-5); if e60 >= HB and CrossDown(close, e60) Then ExitLong("exitL2") ; } if marketposition < 0 Then { if e60 > LB Then ExitShort("exitS1",AtStop,HB+5); if e60 <= LB and CrossUp(close, e60) Then ExitShort("exitS2"); } 답변부탁드리겠습니다 감사합니다!
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2022-02-14 15:11:53

안녕하세요 예스스탁입니다. 1 idx는 당일봉수를 카운트하는 변수로 오늘 첫봉을 0으로 해서 0,1,2,3,4,5와 같이 1씩 증가합니다. TF = idx%nbars; TF는 idx를 5로 나누면 나머지값을 취하게 됩니다. 당일봉이 0,1,3,4,5,6,7,8...과 같이 증가하는데 idx를 5로 나누어 나머지 값을 취하면 TF값은 0,1,2,3,0,1,2,3...과 같이 변경됩니다. TF값이 증가하다가 감소하면 당일 5봉기준으로 첫봉입니다. 2 OO[0][1]은 OO[0]의 1봉전에 저장된 값입니다. OO[0]까지가 배열을 지정하는 부분이고 [1]이 1봉전입니다 배열변수는 방번호를 가지므로 1봉전,2봉전을 지정할때 방번호 지정후 뒤에 붙이게 됩니다 if Bdate != Bdate[1] or (Bdate == Bdate[1] and TF < TF[1]) Then { OO[0] = O; for cnt = 1 to 19 { OO[cnt] = OO[cnt-1][1]; CC[cnt] = CC[cnt-1][1]; } } CC[0] = C; 위 내용은 당일 5개씩 묶어 시고와 종가를 저장하는 내용입니다. OO[0],CC[0]은 최근5개 묶음 OO[1],CC[1]은 직전5개 묶음 OO[2],CC[2]은 전전5개 묶음 OO[3],CC[3]은 전전전5개 묶음 ,,,,과 같이 값이 저장되게 만든 식입입니다. if Bdate != Bdate[1] or (Bdate == Bdate[1] and TF < TF[1]) Then 새로운 묶음이 시작되면 OO[0],CC[0]에 새로운 시가와 종가를 담아야 하므로 이전에 저장된 값을 다음방으로 넘기는 작업입니다. OO[1] = OO[1-1][1]; OO[2] = OO[2-1][1]; OO[3] = OO[3-1][1]; OO[4] = OO[4-1][1]; OO[5] = OO[5-1][1]; 즐거운 하루되세요 > jshwang2 님이 쓴 글입니다. > 제목 : 75815 수식 관련 질문 드립니다 > 안녕하세요 이전에 120틱봉 차트를 사용할 때 직전 600틱봉 3개가 양봉이고, 현재봉의 현재가가 HB 상향돌파시 매수 직전 600틱봉 3개가 음봉이고, 현재봉의 현재가가 LB 하향돌파시 매도 이걸 어떻게 만들지를 문의해 만들어주신 수식이 있는데 어떻게 작동하는지를 보다 이해가 안되 질문을 드리게 되었습니다 당시 답변주신 수식은 아래와 같고 이해 안되는 부분을 노트해 두었습니다 input : nbars(5),N(3); input : HB(14620), LB(14530) ; var : e60(0); var : D1(0),idx(0),TF(0),Po(0),Ne(0),cnt(0); Array : OO[20](0),CC[20](0); e60 = Ema(C,60); if Bdate != Bdate[1] Then { D1 = sdate; idx = 0; } Else idx = idx+1; => 오늘 00시부터 지금까지의 120틱봉 개수 카운트 => idx = 봉 개수 if D1 > 0 then { TF = idx%nbars; => 봉을 5개 단위로 자름 1,2,3,4,5/1,2,3,4,5 if Bdate != Bdate[1] or (Bdate == Bdate[1] and TF < TF[1]) Then => 120틱봉 5개 묶음의 첫번째 봉인 경우 { OO[0] = O; for cnt = 1 to 19 { OO[cnt] = OO[cnt-1][1]; CC[cnt] = CC[cnt-1][1]; } } CC[0] = C; => 조건 이후 실행부 전반이 무엇을 의미하는 것인지가 전체적으로 잘 모르겠고 => 특히 OO[cnt] = OO[cnt-1][1]; 이걸 잘 모르겠습니다. cnt가 1이면 OO[1] = OO[0][1];인데 OO[0][1]이 의미하는게 뭔가요? if OO[n] > 0 Then { Po = 0; Ne = 0; For cnt = 1 to n { if CC[cnt] > OO[cnt] Then Po = po +1; if CC[cnt] < OO[cnt] Then Ne = Ne +1; } if Po == n then Buy("L",AtStop,HB,2) ; if Ne == n then Sell("S",AtStop,LB,2) ; } } if marketposition > 0 Then { if e60 < HB Then ExitLong("exitL1",AtStop,HB-5); if e60 >= HB and CrossDown(close, e60) Then ExitLong("exitL2") ; } if marketposition < 0 Then { if e60 > LB Then ExitShort("exitS1",AtStop,HB+5); if e60 <= LB and CrossUp(close, e60) Then ExitShort("exitS2"); } 답변부탁드리겠습니다 감사합니다!