커뮤니티

함수요청

프로필 이미지
흰둥이아빠
2018-06-18 15:34:47
85
글번호 119834
답변완료
함수요청드립니다. 아래 함수를 항셍지수로 거래를 하고자 합니다. 다만 60분봉으로 거래시 진입기준 주문의 생성을 T장시간 중 12시(정오)까지만 하고 포지션이 오버되지 않게 청산은 T+1장 시가에는 강제청산하고자 합니다. 여기서 주문의 생성은 그렇지만 주문생성을 위한 데이터는 T장과 T+1장을 모두 적용하고자합니다. 즉 모든 시세데이터를 신호에 적용하되 실제 주문생성은 T장에서만 거래를 하고 싶습니다. 그런데 아래 수식에서 시간을 지정하여 거래시작과 거래종료로 진입이 발생하는 시간대를 지정해 오버나이트를 하지 않게 당일청산의 시간을 외부변수로 지정하고 싶은데 얼마로 해야 하는지요? Vars : SP(0,data1), TickSize(0,data1); Vars : fstHH(0,data1), fstLL(0,data1), sndHH(0,data2), sndLL(0,data2); var : v1(0,data2),v2(0,data2); SP = MarketPosition; TickSize = PriceScale; v1 = data2(H); v2 = data2(L); IF v1[10] > 0 Then Begin fstHH = data1(Highest(H, 5)); fstLL = data1(Lowest(L, 5)); sndHH = Max(v1, v1[1], v1[2], v1[3], v1[4], v1[5], v1[6], v1[7], v1[8], v1[9], v1[10]); sndLL = Min(v2, v2[1], v2[2], v2[3], v2[4], v2[5], v2[6], v2[7], v2[8], v2[9], v2[10]); End; IF MarketPosition == 0 and data2(C) > sndHH[1] Then Buy("B", AtStop, fstHH - TickSize); IF MarketPosition == 0 and data2(C) < sndLL[1] Then Sell("S", AtStop, fstLL - TickSize);
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2018-06-18 16:29:55

안녕하세요 예스스탁입니다. 1 60분봉으로 신호가 stime으로 11시봉에는 나오게 해야하므로 아래와 같이 시간제한을 11시 이전으로 하셔야 합니다. Vars : SP(0,data1), TickSize(0,data1),Tcond(false,data1); Vars : fstHH(0,data1), fstLL(0,data1), sndHH(0,data2), sndLL(0,data2); var : v1(0,data2),v2(0,data2); SP = MarketPosition; TickSize = PriceScale; v1 = data2(H); v2 = data2(L); IF v1[10] > 0 Then Begin fstHH = data1(Highest(H, 5)); fstLL = data1(Lowest(L, 5)); sndHH = Max(v1, v1[1], v1[2], v1[3], v1[4], v1[5], v1[6], v1[7], v1[8], v1[9], v1[10]); sndLL = Min(v2, v2[1], v2[2], v2[3], v2[4], v2[5], v2[6], v2[7], v2[8], v2[9], v2[10]); End; if (sdate != sdate[1] and stime >= 101500) or (sdate == sdate[1] and stime >= 101500 and stime[1] < 101500) Then Tcond = true; if (sdate != sdate[1] and stime >= 110000) or (sdate == sdate[1] and stime >= 110000 and stime[1] < 110000) Then Tcond = false; if Tcond == true then { IF MarketPosition == 0 and data2(C) > sndHH[1] Then Buy("B", AtStop, fstHH - TickSize); IF MarketPosition == 0 and data2(C) < sndLL[1] Then Sell("S", AtStop, fstLL - TickSize); } 2 input : 거래시작(101500),거래종료(110000); Vars : SP(0,data1), TickSize(0,data1),Tcond(false,data1); Vars : fstHH(0,data1), fstLL(0,data1), sndHH(0,data2), sndLL(0,data2); var : v1(0,data2),v2(0,data2); SP = MarketPosition; TickSize = PriceScale; v1 = data2(H); v2 = data2(L); IF v1[10] > 0 Then Begin fstHH = data1(Highest(H, 5)); fstLL = data1(Lowest(L, 5)); sndHH = Max(v1, v1[1], v1[2], v1[3], v1[4], v1[5], v1[6], v1[7], v1[8], v1[9], v1[10]); sndLL = Min(v2, v2[1], v2[2], v2[3], v2[4], v2[5], v2[6], v2[7], v2[8], v2[9], v2[10]); End; if (sdate != sdate[1] and stime >= 거래시작) or (sdate == sdate[1] and stime >= 거래시작 and stime[1] < 거래시작) Then Tcond = true; if (sdate != sdate[1] and stime >= 거래종료) or (sdate == sdate[1] and stime >= 거래종료 and stime[1] < 거래종료) Then { Tcond = false; if MarketPosition == 1 Then ExitLong(); if MarketPosition == -1 Then ExitShort(); } if Tcond == true then { IF MarketPosition == 0 and data2(C) > sndHH[1] Then Buy("B", AtStop, fstHH - TickSize); IF MarketPosition == 0 and data2(C) < sndLL[1] Then Sell("S", AtStop, fstLL - TickSize); } 즐거운 하루되세요 > 흰둥이아빠 님이 쓴 글입니다. > 제목 : 함수요청 > 함수요청드립니다. 아래 함수를 항셍지수로 거래를 하고자 합니다. 다만 60분봉으로 거래시 진입기준 주문의 생성을 T장시간 중 12시(정오)까지만 하고 포지션이 오버되지 않게 청산은 T+1장 시가에는 강제청산하고자 합니다. 여기서 주문의 생성은 그렇지만 주문생성을 위한 데이터는 T장과 T+1장을 모두 적용하고자합니다. 즉 모든 시세데이터를 신호에 적용하되 실제 주문생성은 T장에서만 거래를 하고 싶습니다. 그런데 아래 수식에서 시간을 지정하여 거래시작과 거래종료로 진입이 발생하는 시간대를 지정해 오버나이트를 하지 않게 당일청산의 시간을 외부변수로 지정하고 싶은데 얼마로 해야 하는지요? Vars : SP(0,data1), TickSize(0,data1); Vars : fstHH(0,data1), fstLL(0,data1), sndHH(0,data2), sndLL(0,data2); var : v1(0,data2),v2(0,data2); SP = MarketPosition; TickSize = PriceScale; v1 = data2(H); v2 = data2(L); IF v1[10] > 0 Then Begin fstHH = data1(Highest(H, 5)); fstLL = data1(Lowest(L, 5)); sndHH = Max(v1, v1[1], v1[2], v1[3], v1[4], v1[5], v1[6], v1[7], v1[8], v1[9], v1[10]); sndLL = Min(v2, v2[1], v2[2], v2[3], v2[4], v2[5], v2[6], v2[7], v2[8], v2[9], v2[10]); End; IF MarketPosition == 0 and data2(C) > sndHH[1] Then Buy("B", AtStop, fstHH - TickSize); IF MarketPosition == 0 and data2(C) < sndLL[1] Then Sell("S", AtStop, fstLL - TickSize);