커뮤니티

수식 예제

프로필 이미지
좌오비우오비
2017-06-28 10:59:02
135
글번호 110777
답변완료
하나 더 문의합니다. 현재 수식은 시작시간을 input하여 조절합니다. 그런데 10시로 적용하면 10시부터 계산하여 진입하는 게 아니라 09시로 적용한 차트 즉, 1시간 전에 진입한 포지션이 있으면 10시에 포지션을 따라 잡습니다. 10시부터 zero base에서 시작하는 수식 예만 알려주세요. ************************************* > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 수식 적용 > 안녕하세요 예스스탁입니다. if문에 포함되는 실행문이 2개 이상이면 {}로 묶어 주셔야 합니다. 수정하신 내용에는 중괄호가 없습니다. 1 매수 if TotalTrades > TotalTrades[1] Then{ E1 = 0; HH = H; } 1 매도 if TotalTrades > TotalTrades[1] Then{ E1 = 0; LL = L; } 즐거운 하루되세요 > 좌오비우오비 님이 쓴 글입니다. > 제목 : 수식 적용 > 알려주신대로 sell수식,buy수식 모두 변경해보았습니다. 각 수식의 30번대줄에 있는 수식 1곳이 해당되는 내용으로 보고 변경하였는데 기존 수식에서 input 거래횟수까지 거래되던 게 max 2회까지만 거래하고 더 이상 거래를 안합니다. 한 번 살펴주셨으면 합니다. 아래는 제가 변경한 2가지 수식입니다. 1. sell 수식 input : b1(9),b2(9),X1(9),X2(9),진입눌림(3),진입돌파(1),청산눌림(3),청산돌파(1),거래횟수(20),시작시간(090000); var : T1(0),entry(0),HH(0),LL(0),EH(0),EL(0),E1(0),H1(0),i1(0),S1(0),L1(0); if Bdate != Bdate[1] Then{ T1 = TotalTrades; E1 = 0; } if MarketPosition == 0 Then entry = TotalTrades-T1; Else entry = (TotalTrades-T1)+1; if MarketPosition == 0 and entry == 0 and stime >= 시작시간 Then{ if E1 == 0 and C <= DayHigh-PriceScale*B1 and C[1] < DayHigh-PriceScale*B1 Then{ E1 = 1; L1 = L; i1 = index; } if E1 == 1 and index > i1 then{ if L < L1 Then L1 = L; if H >= L1+PriceScale*진입눌림 Then{ E1 = 2; i1 = index; S1 = L1; } } if E1 == 2 and index > i1 and C <= S1-PriceScale*진입돌파 Then{ sell("s1"); } } if TotalTrades > TotalTrades[1] Then E1 = 0; HH = H; if H > HH Then HH = H; if MarketPosition == 0 and entry >= 1 and entry < 거래횟수 Then{ if E1 == 0 and C <= HH-PriceScale*B2 and C[1] < HH-PriceScale*B2 Then{ E1 = 1; L1 = L; i1 = index; } if E1 == 1 and index > i1 then{ if L < L1 Then L1 = L; if H >= L1+PriceScale*진입눌림 Then{ E1 = 2; i1 = index; S1 = L1; } } if E1 == 2 and index > i1 and C <= S1-PriceScale*진입돌파 Then{ sell("s2"); E1 = 0; } } if MarketPosition == -1 Then{ if entry >= 1 then{ if CurrentContracts > CurrentContracts[1] Then{ EL = L; E1 = 0; } if L < EL Then{ EL = L; E1 = 0; } if E1 == 0 and C >= EL+PriceScale*X1 Then{ E1 = 1; H1 = H; i1 = index; } if E1 == 1 and index > i1 Then{ if H > H1 Then H1 = H; if L <= H1-PriceScale*청산눌림 Then{ E1 = 2; I1 = index; S1 = H1; } } if E1 == 2 and index > i1 and C >= S1+PriceScale*청산돌파 Then{ ExitShort("sx1"); E1 = 0; } } } 2. buy 수식 input : b1(9),b2(9),X1(9),X2(9),진입눌림(3),진입돌파(1),청산눌림(3),청산돌파(1),거래횟수(20),시작시간(090000) ; var : T1(0),entry(0),LL(0),EH(0),E1(0),H1(0),i1(0),S1(0),L1(0); if Bdate != Bdate[1] Then{ T1 = TotalTrades; E1 = 0; } if MarketPosition == 0 Then entry = TotalTrades-T1; Else entry = (TotalTrades-T1)+1; if MarketPosition == 0 and entry == 0 and stime >= 시작시간 Then{ if E1 == 0 and C >= daylow+PriceScale*B1 and C[1] < daylow+PriceScale*B1 Then{ E1 = 1; H1 = H; i1 = index; } if E1 == 1 and index > i1 then{ if H > H1 Then H1 = H; if L <= H1-PriceScale*진입눌림 Then{ E1 = 2; i1 = index; S1 = H1; } } if E1 == 2 and index > i1 and C >= S1+PriceScale*진입돌파 Then{ buy("b1"); } } if TotalTrades > TotalTrades[1] Then E1 = 0; LL = L; if L < LL Then LL = L; if MarketPosition == 0 and entry >= 1 and entry < 거래횟수 Then{ if E1 == 0 and C >= LL+PriceScale*B2 and C[1] < LL+PriceScale*B2 Then{ E1 = 1; H1 = H; i1 = index; } if E1 == 1 and index > i1 then{ if H > H1 Then H1 = H; if L <= H1-PriceScale*진입눌림 Then{ E1 = 2; i1 = index; S1 = H1; } } if E1 == 2 and index > i1 and C >= S1+PriceScale*진입돌파 Then{ buy("b2"); } } if MarketPosition == 1 Then{ if entry >= 1 then{ if CurrentContracts > CurrentContracts[1] Then{ EH = H; E1 = 0; } if H > EH Then{ EH = H; E1 = 0; } if E1 == 0 and C <= EH-PriceScale*X1 Then{ E1 = 1; L1 = L; i1 = index; } if E1 == 1 and index > i1 Then{ if L < L1 Then L1 = L; if H >= L1+PriceScale*청산눌림 Then{ E1 = 2; I1 = index; S1 = L1; } } if E1 == 2 and index > i1 and C <= S1-PriceScale*청산돌파 Then{ exitlong("bx1"); E1 = 0; } } }
시스템
답변 3
프로필 이미지

예스스탁 예스스탁 답변

2017-06-28 14:17:18

안녕하세요 예스스탁입니다. 사용하시는 수식에서 지정한 시간 이전의 값을 사용하는 부분은 당일초고가(dayhigh), 당일최저가(daylow)만 존재합니다, 나머지 부부은 모두 지정한 시간 이후에 값갱신이 됩니다. if Bdate != Bdate[1] Then{ T1 = TotalTrades; E1 = 0; } 그러므로 위 내용을 아래와 같이 지정한 시간에 초기화하고 지정한 시간이후에 당일 최고가와 최저가를 게산하게 만드신후에 수식내 dayhigh나 daylow은 DH 와 DL로 변경해 주시면 됩니다. var : DH(0),DL(0); if (Bdate != Bdate[1] and stime >= 시작시간) or (Bdate == Bdate[1] and stime > 시작시간 and stime[1] < 시작시간) Then{ T1 = TotalTrades; E1 = 0; DH = H; DL = L; } if stime >= 시작시간 Then{ if H > DH Then DH = H; if L < DL Then DL = L; } 아래는 수정식입니다. 1 input : b1(9),b2(9),X1(9),X2(9),진입눌림(3),진입돌파(1),청산눌림(3),청산돌파(1),거래횟수(20),시작시간(090000); var : T1(0),entry(0),HH(0),LL(0),EH(0),EL(0),E1(0),H1(0),i1(0),S1(0),L1(0); var : DH(0),DL(0); if (Bdate != Bdate[1] and stime >= 시작시간) or (Bdate == Bdate[1] and stime > 시작시간 and stime[1] < 시작시간) Then{ T1 = TotalTrades; E1 = 0; DH = H; DL = L; } if stime >= 시작시간 Then{ if H > DH Then DH = H; if L < DL Then DL = L; } if MarketPosition == 0 Then entry = TotalTrades-T1; Else entry = (TotalTrades-T1)+1; if MarketPosition == 0 and entry == 0 and stime >= 시작시간 Then{ if E1 == 0 and C <= DH-PriceScale*B1 and C[1] < DH-PriceScale*B1 Then{ E1 = 1; L1 = L; i1 = index; } if E1 == 1 and index > i1 then{ if L < L1 Then L1 = L; if H >= L1+PriceScale*진입눌림 Then{ E1 = 2; i1 = index; S1 = L1; } } if E1 == 2 and index > i1 and C <= S1-PriceScale*진입돌파 Then{ sell("s1"); } } if TotalTrades > TotalTrades[1] Then{ E1 = 0; HH = H; } if H > HH Then HH = H; if MarketPosition == 0 and entry >= 1 and entry < 거래횟수 Then{ if E1 == 0 and C <= HH-PriceScale*B2 and C[1] < HH-PriceScale*B2 Then{ E1 = 1; L1 = L; i1 = index; } if E1 == 1 and index > i1 then{ if L < L1 Then L1 = L; if H >= L1+PriceScale*진입눌림 Then{ E1 = 2; i1 = index; S1 = L1; } } if E1 == 2 and index > i1 and C <= S1-PriceScale*진입돌파 Then{ sell("s2"); E1 = 0; } } if MarketPosition == -1 Then{ if entry >= 1 then{ if CurrentContracts > CurrentContracts[1] Then{ EL = L; E1 = 0; } if L < EL Then{ EL = L; E1 = 0; } if E1 == 0 and C >= EL+PriceScale*X1 Then{ E1 = 1; H1 = H; i1 = index; } if E1 == 1 and index > i1 Then{ if H > H1 Then H1 = H; if L <= H1-PriceScale*청산눌림 Then{ E1 = 2; I1 = index; S1 = H1; } } if E1 == 2 and index > i1 and C >= S1+PriceScale*청산돌파 Then{ ExitShort("sx1"); E1 = 0; } } } 2 input : b1(9),b2(9),X1(9),X2(9),진입눌림(3),진입돌파(1),청산눌림(3),청산돌파(1),거래횟수(20),시작시간(090000) ; var : T1(0),entry(0),LL(0),EH(0),E1(0),H1(0),i1(0),S1(0),L1(0); var : DH(0),DL(0); if (Bdate != Bdate[1] and stime >= 시작시간) or (Bdate == Bdate[1] and stime > 시작시간 and stime[1] < 시작시간) Then{ T1 = TotalTrades; E1 = 0; DH = H; DL = L; } if stime >= 시작시간 Then{ if H > DH Then DH = H; if L < DL Then DL = L; } if MarketPosition == 0 Then entry = TotalTrades-T1; Else entry = (TotalTrades-T1)+1; if MarketPosition == 0 and entry == 0 and stime >= 시작시간 Then{ if E1 == 0 and C >= DL+PriceScale*B1 and C[1] < DL+PriceScale*B1 Then{ E1 = 1; H1 = H; i1 = index; } if E1 == 1 and index > i1 then{ if H > H1 Then H1 = H; if L <= H1-PriceScale*진입눌림 Then{ E1 = 2; i1 = index; S1 = H1; } } if E1 == 2 and index > i1 and C >= S1+PriceScale*진입돌파 Then{ buy("b1"); } } if TotalTrades > TotalTrades[1] Then{ E1 = 0; LL = L; } if L < LL Then LL = L; if MarketPosition == 0 and entry >= 1 and entry < 거래횟수 Then{ if E1 == 0 and C >= LL+PriceScale*B2 and C[1] < LL+PriceScale*B2 Then{ E1 = 1; H1 = H; i1 = index; } if E1 == 1 and index > i1 then{ if H > H1 Then H1 = H; if L <= H1-PriceScale*진입눌림 Then{ E1 = 2; i1 = index; S1 = H1; } } if E1 == 2 and index > i1 and C >= S1+PriceScale*진입돌파 Then{ buy("b2"); } } if MarketPosition == 1 Then{ if entry >= 1 then{ if CurrentContracts > CurrentContracts[1] Then{ EH = H; E1 = 0; } if H > EH Then{ EH = H; E1 = 0; } if E1 == 0 and C <= EH-PriceScale*X1 Then{ E1 = 1; L1 = L; i1 = index; } if E1 == 1 and index > i1 Then{ if L < L1 Then L1 = L; if H >= L1+PriceScale*청산눌림 Then{ E1 = 2; I1 = index; S1 = L1; } } if E1 == 2 and index > i1 and C <= S1-PriceScale*청산돌파 Then{ exitlong("bx1"); E1 = 0; } } } 즐거운 하루되세요 > 좌오비우오비 님이 쓴 글입니다. > 제목 : 수식 예제 > 하나 더 문의합니다. 현재 수식은 시작시간을 input하여 조절합니다. 그런데 10시로 적용하면 10시부터 계산하여 진입하는 게 아니라 09시로 적용한 차트 즉, 1시간 전에 진입한 포지션이 있으면 10시에 포지션을 따라 잡습니다. 10시부터 zero base에서 시작하는 수식 예만 알려주세요. ************************************* > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 수식 적용 > 안녕하세요 예스스탁입니다. if문에 포함되는 실행문이 2개 이상이면 {}로 묶어 주셔야 합니다. 수정하신 내용에는 중괄호가 없습니다. 1 매수 if TotalTrades > TotalTrades[1] Then{ E1 = 0; HH = H; } 1 매도 if TotalTrades > TotalTrades[1] Then{ E1 = 0; LL = L; } 즐거운 하루되세요 > 좌오비우오비 님이 쓴 글입니다. > 제목 : 수식 적용 > 알려주신대로 sell수식,buy수식 모두 변경해보았습니다. 각 수식의 30번대줄에 있는 수식 1곳이 해당되는 내용으로 보고 변경하였는데 기존 수식에서 input 거래횟수까지 거래되던 게 max 2회까지만 거래하고 더 이상 거래를 안합니다. 한 번 살펴주셨으면 합니다. 아래는 제가 변경한 2가지 수식입니다. 1. sell 수식 input : b1(9),b2(9),X1(9),X2(9),진입눌림(3),진입돌파(1),청산눌림(3),청산돌파(1),거래횟수(20),시작시간(090000); var : T1(0),entry(0),HH(0),LL(0),EH(0),EL(0),E1(0),H1(0),i1(0),S1(0),L1(0); if Bdate != Bdate[1] Then{ T1 = TotalTrades; E1 = 0; } if MarketPosition == 0 Then entry = TotalTrades-T1; Else entry = (TotalTrades-T1)+1; if MarketPosition == 0 and entry == 0 and stime >= 시작시간 Then{ if E1 == 0 and C <= DayHigh-PriceScale*B1 and C[1] < DayHigh-PriceScale*B1 Then{ E1 = 1; L1 = L; i1 = index; } if E1 == 1 and index > i1 then{ if L < L1 Then L1 = L; if H >= L1+PriceScale*진입눌림 Then{ E1 = 2; i1 = index; S1 = L1; } } if E1 == 2 and index > i1 and C <= S1-PriceScale*진입돌파 Then{ sell("s1"); } } if TotalTrades > TotalTrades[1] Then E1 = 0; HH = H; if H > HH Then HH = H; if MarketPosition == 0 and entry >= 1 and entry < 거래횟수 Then{ if E1 == 0 and C <= HH-PriceScale*B2 and C[1] < HH-PriceScale*B2 Then{ E1 = 1; L1 = L; i1 = index; } if E1 == 1 and index > i1 then{ if L < L1 Then L1 = L; if H >= L1+PriceScale*진입눌림 Then{ E1 = 2; i1 = index; S1 = L1; } } if E1 == 2 and index > i1 and C <= S1-PriceScale*진입돌파 Then{ sell("s2"); E1 = 0; } } if MarketPosition == -1 Then{ if entry >= 1 then{ if CurrentContracts > CurrentContracts[1] Then{ EL = L; E1 = 0; } if L < EL Then{ EL = L; E1 = 0; } if E1 == 0 and C >= EL+PriceScale*X1 Then{ E1 = 1; H1 = H; i1 = index; } if E1 == 1 and index > i1 Then{ if H > H1 Then H1 = H; if L <= H1-PriceScale*청산눌림 Then{ E1 = 2; I1 = index; S1 = H1; } } if E1 == 2 and index > i1 and C >= S1+PriceScale*청산돌파 Then{ ExitShort("sx1"); E1 = 0; } } } 2. buy 수식 input : b1(9),b2(9),X1(9),X2(9),진입눌림(3),진입돌파(1),청산눌림(3),청산돌파(1),거래횟수(20),시작시간(090000) ; var : T1(0),entry(0),LL(0),EH(0),E1(0),H1(0),i1(0),S1(0),L1(0); if Bdate != Bdate[1] Then{ T1 = TotalTrades; E1 = 0; } if MarketPosition == 0 Then entry = TotalTrades-T1; Else entry = (TotalTrades-T1)+1; if MarketPosition == 0 and entry == 0 and stime >= 시작시간 Then{ if E1 == 0 and C >= daylow+PriceScale*B1 and C[1] < daylow+PriceScale*B1 Then{ E1 = 1; H1 = H; i1 = index; } if E1 == 1 and index > i1 then{ if H > H1 Then H1 = H; if L <= H1-PriceScale*진입눌림 Then{ E1 = 2; i1 = index; S1 = H1; } } if E1 == 2 and index > i1 and C >= S1+PriceScale*진입돌파 Then{ buy("b1"); } } if TotalTrades > TotalTrades[1] Then E1 = 0; LL = L; if L < LL Then LL = L; if MarketPosition == 0 and entry >= 1 and entry < 거래횟수 Then{ if E1 == 0 and C >= LL+PriceScale*B2 and C[1] < LL+PriceScale*B2 Then{ E1 = 1; H1 = H; i1 = index; } if E1 == 1 and index > i1 then{ if H > H1 Then H1 = H; if L <= H1-PriceScale*진입눌림 Then{ E1 = 2; i1 = index; S1 = H1; } } if E1 == 2 and index > i1 and C >= S1+PriceScale*진입돌파 Then{ buy("b2"); } } if MarketPosition == 1 Then{ if entry >= 1 then{ if CurrentContracts > CurrentContracts[1] Then{ EH = H; E1 = 0; } if H > EH Then{ EH = H; E1 = 0; } if E1 == 0 and C <= EH-PriceScale*X1 Then{ E1 = 1; L1 = L; i1 = index; } if E1 == 1 and index > i1 Then{ if L < L1 Then L1 = L; if H >= L1+PriceScale*청산눌림 Then{ E1 = 2; I1 = index; S1 = L1; } } if E1 == 2 and index > i1 and C <= S1-PriceScale*청산돌파 Then{ exitlong("bx1"); E1 = 0; } } }
프로필 이미지

좌오비우오비

2017-06-28 16:26:41

수정해 주신 수식을 아래 처럼 해보고 돌렸는데 결과 안나옵니다. sell,buy 2가지 모두. 10시 1분봉 2016.08.01부터 현재까지 변수 10 10 10 10 4 1 4 1 거래횟수 20 시간 100000 위와 같이 세팅하고 돌리면 090000 으로 시뮬레이션 한 것의 50% 정도는 나와야 하는데 결과가 거의 안나옵니다. 살펴주세요. > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 수식 예제 > 안녕하세요 예스스탁입니다. 사용하시는 수식에서 지정한 시간 이전의 값을 사용하는 부분은 당일초고가(dayhigh), 당일최저가(daylow)만 존재합니다, 나머지 부부은 모두 지정한 시간 이후에 값갱신이 됩니다. if Bdate != Bdate[1] Then{ T1 = TotalTrades; E1 = 0; } 그러므로 위 내용을 아래와 같이 지정한 시간에 초기화하고 지정한 시간이후에 당일 최고가와 최저가를 게산하게 만드신후에 수식내 dayhigh나 daylow은 DH 와 DL로 변경해 주시면 됩니다. var : DH(0),DL(0); if (Bdate != Bdate[1] and stime >= 시작시간) or (Bdate == Bdate[1] and stime > 시작시간 and stime[1] < 시작시간) Then{ T1 = TotalTrades; E1 = 0; DH = H; DL = L; } if stime >= 시작시간 Then{ if H > DH Then DH = H; if L < DL Then DL = L; } 아래는 수정식입니다. 1 input : b1(9),b2(9),X1(9),X2(9),진입눌림(3),진입돌파(1),청산눌림(3),청산돌파(1),거래횟수(20),시작시간(090000); var : T1(0),entry(0),HH(0),LL(0),EH(0),EL(0),E1(0),H1(0),i1(0),S1(0),L1(0); var : DH(0),DL(0); if (Bdate != Bdate[1] and stime >= 시작시간) or (Bdate == Bdate[1] and stime > 시작시간 and stime[1] < 시작시간) Then{ T1 = TotalTrades; E1 = 0; DH = H; DL = L; } if stime >= 시작시간 Then{ if H > DH Then DH = H; if L < DL Then DL = L; } if MarketPosition == 0 Then entry = TotalTrades-T1; Else entry = (TotalTrades-T1)+1; if MarketPosition == 0 and entry == 0 and stime >= 시작시간 Then{ if E1 == 0 and C <= DH-PriceScale*B1 and C[1] < DH-PriceScale*B1 Then{ E1 = 1; L1 = L; i1 = index; } if E1 == 1 and index > i1 then{ if L < L1 Then L1 = L; if H >= L1+PriceScale*진입눌림 Then{ E1 = 2; i1 = index; S1 = L1; } } if E1 == 2 and index > i1 and C <= S1-PriceScale*진입돌파 Then{ sell("s1"); } } if TotalTrades > TotalTrades[1] Then{ E1 = 0; HH = H; } if H > HH Then HH = H; if MarketPosition == 0 and entry >= 1 and entry < 거래횟수 Then{ if E1 == 0 and C <= HH-PriceScale*B2 and C[1] < HH-PriceScale*B2 Then{ E1 = 1; L1 = L; i1 = index; } if E1 == 1 and index > i1 then{ if L < L1 Then L1 = L; if H >= L1+PriceScale*진입눌림 Then{ E1 = 2; i1 = index; S1 = L1; } } if E1 == 2 and index > i1 and C <= S1-PriceScale*진입돌파 Then{ sell("s2"); E1 = 0; } } if MarketPosition == -1 Then{ if entry >= 1 then{ if CurrentContracts > CurrentContracts[1] Then{ EL = L; E1 = 0; } if L < EL Then{ EL = L; E1 = 0; } if E1 == 0 and C >= EL+PriceScale*X1 Then{ E1 = 1; H1 = H; i1 = index; } if E1 == 1 and index > i1 Then{ if H > H1 Then H1 = H; if L <= H1-PriceScale*청산눌림 Then{ E1 = 2; I1 = index; S1 = H1; } } if E1 == 2 and index > i1 and C >= S1+PriceScale*청산돌파 Then{ ExitShort("sx1"); E1 = 0; } } } 2 input : b1(9),b2(9),X1(9),X2(9),진입눌림(3),진입돌파(1),청산눌림(3),청산돌파(1),거래횟수(20),시작시간(090000) ; var : T1(0),entry(0),LL(0),EH(0),E1(0),H1(0),i1(0),S1(0),L1(0); var : DH(0),DL(0); if (Bdate != Bdate[1] and stime >= 시작시간) or (Bdate == Bdate[1] and stime > 시작시간 and stime[1] < 시작시간) Then{ T1 = TotalTrades; E1 = 0; DH = H; DL = L; } if stime >= 시작시간 Then{ if H > DH Then DH = H; if L < DL Then DL = L; } if MarketPosition == 0 Then entry = TotalTrades-T1; Else entry = (TotalTrades-T1)+1; if MarketPosition == 0 and entry == 0 and stime >= 시작시간 Then{ if E1 == 0 and C >= DL+PriceScale*B1 and C[1] < DL+PriceScale*B1 Then{ E1 = 1; H1 = H; i1 = index; } if E1 == 1 and index > i1 then{ if H > H1 Then H1 = H; if L <= H1-PriceScale*진입눌림 Then{ E1 = 2; i1 = index; S1 = H1; } } if E1 == 2 and index > i1 and C >= S1+PriceScale*진입돌파 Then{ buy("b1"); } } if TotalTrades > TotalTrades[1] Then{ E1 = 0; LL = L; } if L < LL Then LL = L; if MarketPosition == 0 and entry >= 1 and entry < 거래횟수 Then{ if E1 == 0 and C >= LL+PriceScale*B2 and C[1] < LL+PriceScale*B2 Then{ E1 = 1; H1 = H; i1 = index; } if E1 == 1 and index > i1 then{ if H > H1 Then H1 = H; if L <= H1-PriceScale*진입눌림 Then{ E1 = 2; i1 = index; S1 = H1; } } if E1 == 2 and index > i1 and C >= S1+PriceScale*진입돌파 Then{ buy("b2"); } } if MarketPosition == 1 Then{ if entry >= 1 then{ if CurrentContracts > CurrentContracts[1] Then{ EH = H; E1 = 0; } if H > EH Then{ EH = H; E1 = 0; } if E1 == 0 and C <= EH-PriceScale*X1 Then{ E1 = 1; L1 = L; i1 = index; } if E1 == 1 and index > i1 Then{ if L < L1 Then L1 = L; if H >= L1+PriceScale*청산눌림 Then{ E1 = 2; I1 = index; S1 = L1; } } if E1 == 2 and index > i1 and C <= S1-PriceScale*청산돌파 Then{ exitlong("bx1"); E1 = 0; } } } 즐거운 하루되세요 > 좌오비우오비 님이 쓴 글입니다. > 제목 : 수식 예제 > 하나 더 문의합니다. 현재 수식은 시작시간을 input하여 조절합니다. 그런데 10시로 적용하면 10시부터 계산하여 진입하는 게 아니라 09시로 적용한 차트 즉, 1시간 전에 진입한 포지션이 있으면 10시에 포지션을 따라 잡습니다. 10시부터 zero base에서 시작하는 수식 예만 알려주세요. ************************************* > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 수식 적용 > 안녕하세요 예스스탁입니다. if문에 포함되는 실행문이 2개 이상이면 {}로 묶어 주셔야 합니다. 수정하신 내용에는 중괄호가 없습니다. 1 매수 if TotalTrades > TotalTrades[1] Then{ E1 = 0; HH = H; } 1 매도 if TotalTrades > TotalTrades[1] Then{ E1 = 0; LL = L; } 즐거운 하루되세요 > 좌오비우오비 님이 쓴 글입니다. > 제목 : 수식 적용 > 알려주신대로 sell수식,buy수식 모두 변경해보았습니다. 각 수식의 30번대줄에 있는 수식 1곳이 해당되는 내용으로 보고 변경하였는데 기존 수식에서 input 거래횟수까지 거래되던 게 max 2회까지만 거래하고 더 이상 거래를 안합니다. 한 번 살펴주셨으면 합니다. 아래는 제가 변경한 2가지 수식입니다. 1. sell 수식 input : b1(9),b2(9),X1(9),X2(9),진입눌림(3),진입돌파(1),청산눌림(3),청산돌파(1),거래횟수(20),시작시간(090000); var : T1(0),entry(0),HH(0),LL(0),EH(0),EL(0),E1(0),H1(0),i1(0),S1(0),L1(0); if Bdate != Bdate[1] Then{ T1 = TotalTrades; E1 = 0; } if MarketPosition == 0 Then entry = TotalTrades-T1; Else entry = (TotalTrades-T1)+1; if MarketPosition == 0 and entry == 0 and stime >= 시작시간 Then{ if E1 == 0 and C <= DayHigh-PriceScale*B1 and C[1] < DayHigh-PriceScale*B1 Then{ E1 = 1; L1 = L; i1 = index; } if E1 == 1 and index > i1 then{ if L < L1 Then L1 = L; if H >= L1+PriceScale*진입눌림 Then{ E1 = 2; i1 = index; S1 = L1; } } if E1 == 2 and index > i1 and C <= S1-PriceScale*진입돌파 Then{ sell("s1"); } } if TotalTrades > TotalTrades[1] Then E1 = 0; HH = H; if H > HH Then HH = H; if MarketPosition == 0 and entry >= 1 and entry < 거래횟수 Then{ if E1 == 0 and C <= HH-PriceScale*B2 and C[1] < HH-PriceScale*B2 Then{ E1 = 1; L1 = L; i1 = index; } if E1 == 1 and index > i1 then{ if L < L1 Then L1 = L; if H >= L1+PriceScale*진입눌림 Then{ E1 = 2; i1 = index; S1 = L1; } } if E1 == 2 and index > i1 and C <= S1-PriceScale*진입돌파 Then{ sell("s2"); E1 = 0; } } if MarketPosition == -1 Then{ if entry >= 1 then{ if CurrentContracts > CurrentContracts[1] Then{ EL = L; E1 = 0; } if L < EL Then{ EL = L; E1 = 0; } if E1 == 0 and C >= EL+PriceScale*X1 Then{ E1 = 1; H1 = H; i1 = index; } if E1 == 1 and index > i1 Then{ if H > H1 Then H1 = H; if L <= H1-PriceScale*청산눌림 Then{ E1 = 2; I1 = index; S1 = H1; } } if E1 == 2 and index > i1 and C >= S1+PriceScale*청산돌파 Then{ ExitShort("sx1"); E1 = 0; } } } 2. buy 수식 input : b1(9),b2(9),X1(9),X2(9),진입눌림(3),진입돌파(1),청산눌림(3),청산돌파(1),거래횟수(20),시작시간(090000) ; var : T1(0),entry(0),LL(0),EH(0),E1(0),H1(0),i1(0),S1(0),L1(0); if Bdate != Bdate[1] Then{ T1 = TotalTrades; E1 = 0; } if MarketPosition == 0 Then entry = TotalTrades-T1; Else entry = (TotalTrades-T1)+1; if MarketPosition == 0 and entry == 0 and stime >= 시작시간 Then{ if E1 == 0 and C >= daylow+PriceScale*B1 and C[1] < daylow+PriceScale*B1 Then{ E1 = 1; H1 = H; i1 = index; } if E1 == 1 and index > i1 then{ if H > H1 Then H1 = H; if L <= H1-PriceScale*진입눌림 Then{ E1 = 2; i1 = index; S1 = H1; } } if E1 == 2 and index > i1 and C >= S1+PriceScale*진입돌파 Then{ buy("b1"); } } if TotalTrades > TotalTrades[1] Then E1 = 0; LL = L; if L < LL Then LL = L; if MarketPosition == 0 and entry >= 1 and entry < 거래횟수 Then{ if E1 == 0 and C >= LL+PriceScale*B2 and C[1] < LL+PriceScale*B2 Then{ E1 = 1; H1 = H; i1 = index; } if E1 == 1 and index > i1 then{ if H > H1 Then H1 = H; if L <= H1-PriceScale*진입눌림 Then{ E1 = 2; i1 = index; S1 = H1; } } if E1 == 2 and index > i1 and C >= S1+PriceScale*진입돌파 Then{ buy("b2"); } } if MarketPosition == 1 Then{ if entry >= 1 then{ if CurrentContracts > CurrentContracts[1] Then{ EH = H; E1 = 0; } if H > EH Then{ EH = H; E1 = 0; } if E1 == 0 and C <= EH-PriceScale*X1 Then{ E1 = 1; L1 = L; i1 = index; } if E1 == 1 and index > i1 Then{ if L < L1 Then L1 = L; if H >= L1+PriceScale*청산눌림 Then{ E1 = 2; I1 = index; S1 = L1; } } if E1 == 2 and index > i1 and C <= S1-PriceScale*청산돌파 Then{ exitlong("bx1"); E1 = 0; } } }
프로필 이미지

예스스탁 예스스탁 답변

2017-06-28 16:57:04

안녕하세요 예스스탁입니다. 직전에 답변드린바와 같이 지정한 시간을 기준으로 초기화해서 다시 시작하는 내용으로 변경해 드린 내용입니다. 수식을 어느부분은 추가로 수정해 드려야 할지 모르겠습니다 즉 기존식은 당일최고가와 최저가를 사용하지만 변경된 식은 10시로 지정하면 10시이후의 최고가와 최저가를 계산하고 움직임에 따라 진입하므로 당일 첫거래가 조건이 충족하지 않아 진입하지 않고 이후의 두번째 거래도 없으므로 전체 거래가 현격히 줄어들수도 있습니다. 문의하신 내용은 지정한 시간이후의 시세만을 사용한다는 의미가 아니시면 내용을 다시 올려주시기 바랍니다. 즐거운 하루되세요 > 좌오비우오비 님이 쓴 글입니다. > 제목 : Re : Re : 수식 예제 > 수정해 주신 수식을 아래 처럼 해보고 돌렸는데 결과 안나옵니다. sell,buy 2가지 모두. 10시 1분봉 2016.08.01부터 현재까지 변수 10 10 10 10 4 1 4 1 거래횟수 20 시간 100000 위와 같이 세팅하고 돌리면 090000 으로 시뮬레이션 한 것의 50% 정도는 나와야 하는데 결과가 거의 안나옵니다. 살펴주세요. > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 수식 예제 > 안녕하세요 예스스탁입니다. 사용하시는 수식에서 지정한 시간 이전의 값을 사용하는 부분은 당일초고가(dayhigh), 당일최저가(daylow)만 존재합니다, 나머지 부부은 모두 지정한 시간 이후에 값갱신이 됩니다. if Bdate != Bdate[1] Then{ T1 = TotalTrades; E1 = 0; } 그러므로 위 내용을 아래와 같이 지정한 시간에 초기화하고 지정한 시간이후에 당일 최고가와 최저가를 게산하게 만드신후에 수식내 dayhigh나 daylow은 DH 와 DL로 변경해 주시면 됩니다. var : DH(0),DL(0); if (Bdate != Bdate[1] and stime >= 시작시간) or (Bdate == Bdate[1] and stime > 시작시간 and stime[1] < 시작시간) Then{ T1 = TotalTrades; E1 = 0; DH = H; DL = L; } if stime >= 시작시간 Then{ if H > DH Then DH = H; if L < DL Then DL = L; } 아래는 수정식입니다. 1 input : b1(9),b2(9),X1(9),X2(9),진입눌림(3),진입돌파(1),청산눌림(3),청산돌파(1),거래횟수(20),시작시간(090000); var : T1(0),entry(0),HH(0),LL(0),EH(0),EL(0),E1(0),H1(0),i1(0),S1(0),L1(0); var : DH(0),DL(0); if (Bdate != Bdate[1] and stime >= 시작시간) or (Bdate == Bdate[1] and stime > 시작시간 and stime[1] < 시작시간) Then{ T1 = TotalTrades; E1 = 0; DH = H; DL = L; } if stime >= 시작시간 Then{ if H > DH Then DH = H; if L < DL Then DL = L; } if MarketPosition == 0 Then entry = TotalTrades-T1; Else entry = (TotalTrades-T1)+1; if MarketPosition == 0 and entry == 0 and stime >= 시작시간 Then{ if E1 == 0 and C <= DH-PriceScale*B1 and C[1] < DH-PriceScale*B1 Then{ E1 = 1; L1 = L; i1 = index; } if E1 == 1 and index > i1 then{ if L < L1 Then L1 = L; if H >= L1+PriceScale*진입눌림 Then{ E1 = 2; i1 = index; S1 = L1; } } if E1 == 2 and index > i1 and C <= S1-PriceScale*진입돌파 Then{ sell("s1"); } } if TotalTrades > TotalTrades[1] Then{ E1 = 0; HH = H; } if H > HH Then HH = H; if MarketPosition == 0 and entry >= 1 and entry < 거래횟수 Then{ if E1 == 0 and C <= HH-PriceScale*B2 and C[1] < HH-PriceScale*B2 Then{ E1 = 1; L1 = L; i1 = index; } if E1 == 1 and index > i1 then{ if L < L1 Then L1 = L; if H >= L1+PriceScale*진입눌림 Then{ E1 = 2; i1 = index; S1 = L1; } } if E1 == 2 and index > i1 and C <= S1-PriceScale*진입돌파 Then{ sell("s2"); E1 = 0; } } if MarketPosition == -1 Then{ if entry >= 1 then{ if CurrentContracts > CurrentContracts[1] Then{ EL = L; E1 = 0; } if L < EL Then{ EL = L; E1 = 0; } if E1 == 0 and C >= EL+PriceScale*X1 Then{ E1 = 1; H1 = H; i1 = index; } if E1 == 1 and index > i1 Then{ if H > H1 Then H1 = H; if L <= H1-PriceScale*청산눌림 Then{ E1 = 2; I1 = index; S1 = H1; } } if E1 == 2 and index > i1 and C >= S1+PriceScale*청산돌파 Then{ ExitShort("sx1"); E1 = 0; } } } 2 input : b1(9),b2(9),X1(9),X2(9),진입눌림(3),진입돌파(1),청산눌림(3),청산돌파(1),거래횟수(20),시작시간(090000) ; var : T1(0),entry(0),LL(0),EH(0),E1(0),H1(0),i1(0),S1(0),L1(0); var : DH(0),DL(0); if (Bdate != Bdate[1] and stime >= 시작시간) or (Bdate == Bdate[1] and stime > 시작시간 and stime[1] < 시작시간) Then{ T1 = TotalTrades; E1 = 0; DH = H; DL = L; } if stime >= 시작시간 Then{ if H > DH Then DH = H; if L < DL Then DL = L; } if MarketPosition == 0 Then entry = TotalTrades-T1; Else entry = (TotalTrades-T1)+1; if MarketPosition == 0 and entry == 0 and stime >= 시작시간 Then{ if E1 == 0 and C >= DL+PriceScale*B1 and C[1] < DL+PriceScale*B1 Then{ E1 = 1; H1 = H; i1 = index; } if E1 == 1 and index > i1 then{ if H > H1 Then H1 = H; if L <= H1-PriceScale*진입눌림 Then{ E1 = 2; i1 = index; S1 = H1; } } if E1 == 2 and index > i1 and C >= S1+PriceScale*진입돌파 Then{ buy("b1"); } } if TotalTrades > TotalTrades[1] Then{ E1 = 0; LL = L; } if L < LL Then LL = L; if MarketPosition == 0 and entry >= 1 and entry < 거래횟수 Then{ if E1 == 0 and C >= LL+PriceScale*B2 and C[1] < LL+PriceScale*B2 Then{ E1 = 1; H1 = H; i1 = index; } if E1 == 1 and index > i1 then{ if H > H1 Then H1 = H; if L <= H1-PriceScale*진입눌림 Then{ E1 = 2; i1 = index; S1 = H1; } } if E1 == 2 and index > i1 and C >= S1+PriceScale*진입돌파 Then{ buy("b2"); } } if MarketPosition == 1 Then{ if entry >= 1 then{ if CurrentContracts > CurrentContracts[1] Then{ EH = H; E1 = 0; } if H > EH Then{ EH = H; E1 = 0; } if E1 == 0 and C <= EH-PriceScale*X1 Then{ E1 = 1; L1 = L; i1 = index; } if E1 == 1 and index > i1 Then{ if L < L1 Then L1 = L; if H >= L1+PriceScale*청산눌림 Then{ E1 = 2; I1 = index; S1 = L1; } } if E1 == 2 and index > i1 and C <= S1-PriceScale*청산돌파 Then{ exitlong("bx1"); E1 = 0; } } } 즐거운 하루되세요 > 좌오비우오비 님이 쓴 글입니다. > 제목 : 수식 예제 > 하나 더 문의합니다. 현재 수식은 시작시간을 input하여 조절합니다. 그런데 10시로 적용하면 10시부터 계산하여 진입하는 게 아니라 09시로 적용한 차트 즉, 1시간 전에 진입한 포지션이 있으면 10시에 포지션을 따라 잡습니다. 10시부터 zero base에서 시작하는 수식 예만 알려주세요. ************************************* > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 수식 적용 > 안녕하세요 예스스탁입니다. if문에 포함되는 실행문이 2개 이상이면 {}로 묶어 주셔야 합니다. 수정하신 내용에는 중괄호가 없습니다. 1 매수 if TotalTrades > TotalTrades[1] Then{ E1 = 0; HH = H; } 1 매도 if TotalTrades > TotalTrades[1] Then{ E1 = 0; LL = L; } 즐거운 하루되세요 > 좌오비우오비 님이 쓴 글입니다. > 제목 : 수식 적용 > 알려주신대로 sell수식,buy수식 모두 변경해보았습니다. 각 수식의 30번대줄에 있는 수식 1곳이 해당되는 내용으로 보고 변경하였는데 기존 수식에서 input 거래횟수까지 거래되던 게 max 2회까지만 거래하고 더 이상 거래를 안합니다. 한 번 살펴주셨으면 합니다. 아래는 제가 변경한 2가지 수식입니다. 1. sell 수식 input : b1(9),b2(9),X1(9),X2(9),진입눌림(3),진입돌파(1),청산눌림(3),청산돌파(1),거래횟수(20),시작시간(090000); var : T1(0),entry(0),HH(0),LL(0),EH(0),EL(0),E1(0),H1(0),i1(0),S1(0),L1(0); if Bdate != Bdate[1] Then{ T1 = TotalTrades; E1 = 0; } if MarketPosition == 0 Then entry = TotalTrades-T1; Else entry = (TotalTrades-T1)+1; if MarketPosition == 0 and entry == 0 and stime >= 시작시간 Then{ if E1 == 0 and C <= DayHigh-PriceScale*B1 and C[1] < DayHigh-PriceScale*B1 Then{ E1 = 1; L1 = L; i1 = index; } if E1 == 1 and index > i1 then{ if L < L1 Then L1 = L; if H >= L1+PriceScale*진입눌림 Then{ E1 = 2; i1 = index; S1 = L1; } } if E1 == 2 and index > i1 and C <= S1-PriceScale*진입돌파 Then{ sell("s1"); } } if TotalTrades > TotalTrades[1] Then E1 = 0; HH = H; if H > HH Then HH = H; if MarketPosition == 0 and entry >= 1 and entry < 거래횟수 Then{ if E1 == 0 and C <= HH-PriceScale*B2 and C[1] < HH-PriceScale*B2 Then{ E1 = 1; L1 = L; i1 = index; } if E1 == 1 and index > i1 then{ if L < L1 Then L1 = L; if H >= L1+PriceScale*진입눌림 Then{ E1 = 2; i1 = index; S1 = L1; } } if E1 == 2 and index > i1 and C <= S1-PriceScale*진입돌파 Then{ sell("s2"); E1 = 0; } } if MarketPosition == -1 Then{ if entry >= 1 then{ if CurrentContracts > CurrentContracts[1] Then{ EL = L; E1 = 0; } if L < EL Then{ EL = L; E1 = 0; } if E1 == 0 and C >= EL+PriceScale*X1 Then{ E1 = 1; H1 = H; i1 = index; } if E1 == 1 and index > i1 Then{ if H > H1 Then H1 = H; if L <= H1-PriceScale*청산눌림 Then{ E1 = 2; I1 = index; S1 = H1; } } if E1 == 2 and index > i1 and C >= S1+PriceScale*청산돌파 Then{ ExitShort("sx1"); E1 = 0; } } } 2. buy 수식 input : b1(9),b2(9),X1(9),X2(9),진입눌림(3),진입돌파(1),청산눌림(3),청산돌파(1),거래횟수(20),시작시간(090000) ; var : T1(0),entry(0),LL(0),EH(0),E1(0),H1(0),i1(0),S1(0),L1(0); if Bdate != Bdate[1] Then{ T1 = TotalTrades; E1 = 0; } if MarketPosition == 0 Then entry = TotalTrades-T1; Else entry = (TotalTrades-T1)+1; if MarketPosition == 0 and entry == 0 and stime >= 시작시간 Then{ if E1 == 0 and C >= daylow+PriceScale*B1 and C[1] < daylow+PriceScale*B1 Then{ E1 = 1; H1 = H; i1 = index; } if E1 == 1 and index > i1 then{ if H > H1 Then H1 = H; if L <= H1-PriceScale*진입눌림 Then{ E1 = 2; i1 = index; S1 = H1; } } if E1 == 2 and index > i1 and C >= S1+PriceScale*진입돌파 Then{ buy("b1"); } } if TotalTrades > TotalTrades[1] Then E1 = 0; LL = L; if L < LL Then LL = L; if MarketPosition == 0 and entry >= 1 and entry < 거래횟수 Then{ if E1 == 0 and C >= LL+PriceScale*B2 and C[1] < LL+PriceScale*B2 Then{ E1 = 1; H1 = H; i1 = index; } if E1 == 1 and index > i1 then{ if H > H1 Then H1 = H; if L <= H1-PriceScale*진입눌림 Then{ E1 = 2; i1 = index; S1 = H1; } } if E1 == 2 and index > i1 and C >= S1+PriceScale*진입돌파 Then{ buy("b2"); } } if MarketPosition == 1 Then{ if entry >= 1 then{ if CurrentContracts > CurrentContracts[1] Then{ EH = H; E1 = 0; } if H > EH Then{ EH = H; E1 = 0; } if E1 == 0 and C <= EH-PriceScale*X1 Then{ E1 = 1; L1 = L; i1 = index; } if E1 == 1 and index > i1 Then{ if L < L1 Then L1 = L; if H >= L1+PriceScale*청산눌림 Then{ E1 = 2; I1 = index; S1 = L1; } } if E1 == 2 and index > i1 and C <= S1-PriceScale*청산돌파 Then{ exitlong("bx1"); E1 = 0; } } }