커뮤니티

77886 수식어 수정 바랍니다

프로필 이미지
푸른
2022-06-30 17:15:46
1539
글번호 160333
답변완료

첨부 이미지

input : n(1),손절틱수(200); var : DD(0),Year(0),V1(0),V2(0),V3(0),V4(0),summer(False); var : ST(0),ET(0),entry(0),Tcond(False); var : cnt(0),hh(0),ll(0); if NextBarSdate != sDate Then { DD = DayOfWeek(NextBarSdate); Year = Floor(NextBarSdate/10000); V1 = (10000 * Year) + (100 * 3) + 1; V2 = 15 - dayofweek(v1); v3 = (10000 * Year) + (100 * 11) + 1; v4 = 8 - dayofweek(v3); Summer = NextBarSdate > (10000 * Year) + (100 * 3) + v2 And NextBarSdate < (10000 * Year) + (100 * 11) + v4; if summer == true Then { ST = 70000; ET = 55000; } Else { ST = 80000; ET = 65000; } } if Year > 0 Then { hh = 0; ll = 0; For cnt = 0 to n-1 { if hh == 0 or (hh > 0 and DayHigh(cnt) > hh) Then hh = DayHigh(cnt); if ll == 0 or (ll > 0 and DayLow(cnt) < ll) Then ll = DayLow(cnt); } IF ET > ST Then SetStopEndofday(ET); Else { if sDate != sDate[1] Then SetStopEndofday(ET); } if ((sDate != sDate[1] and Stime >= ET) or (sDate == sDate[1] and Stime >= ET and sTime < ET)) Then Tcond = False; if Bdate != Bdate[1] Then { Tcond = true; entry = 0; if ST <= ET Then SetStopEndofday(0); } if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or (MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades[1]) Then entry = entry+1; if Tcond == true Then { if entry < 1 Then Buy("b",AtLimit,hh-(hh-ll)*0.764); ExitLong("sx",AtLimit,hh-(hh-ll)*0.240); } SetStopLoss(PriceScale*손절틱수,PointStop); } --------------------------------- 전일폭의 기준을 한국시간 24시~ 익일23시59분으로 되어 있고 그걸 기준으로 다음 수열 수식어로 신호가 나오는것 같습니다. 전일을 미국 매매시간인 07시부터 익일 05시 30분까지로 수정해 주시고 이걸 기준으로 다음신호가 나오도록 부탁 드립니다.
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2022-07-01 09:53:15

안녕하세요 예스스탁입니다. 1 수식에서 사용되는 dayhigh,daylow 함수는 영업일변경시간이 기준입니다. 밤 0시를 기준으로 일간 시고저종을 계산해서 리턴하는 함수가 아닙니다. 해당 부분은 별도로 수정해 드릴 부분이 없습니다. 2 현재 수식이 n기간 최고가와 최저가를 기준으로 계산을 합니다. 1로 지정하면 당일 최고가와 최저가가 기준입니다. 전일기준으로 n일이 계산되게 변경해 드립니다. 3 input : n(1),손절틱수(200); var : DD(0),Year(0),V1(0),V2(0),V3(0),V4(0),summer(False); var : ST(0),ET(0),entry(0),Tcond(False); var : cnt(0),hh(0),ll(0); if NextBarSdate != sDate Then { DD = DayOfWeek(NextBarSdate); Year = Floor(NextBarSdate/10000); V1 = (10000 * Year) + (100 * 3) + 1; V2 = 15 - dayofweek(v1); v3 = (10000 * Year) + (100 * 11) + 1; v4 = 8 - dayofweek(v3); Summer = NextBarSdate > (10000 * Year) + (100 * 3) + v2 And NextBarSdate < (10000 * Year) + (100 * 11) + v4; if summer == true Then { ST = 70000; ET = 55000; } Else { ST = 80000; ET = 65000; } } if Year > 0 Then { hh = 0; ll = 0; For cnt = 1 to n { if hh == 0 or (hh > 0 and DayHigh(cnt) > hh) Then hh = DayHigh(cnt); if ll == 0 or (ll > 0 and DayLow(cnt) < ll) Then ll = DayLow(cnt); } IF ET > ST Then SetStopEndofday(ET); Else { if sDate != sDate[1] Then SetStopEndofday(ET); } if ((sDate != sDate[1] and Stime >= ET) or (sDate == sDate[1] and Stime >= ET and sTime < ET)) Then Tcond = False; if Bdate != Bdate[1] Then { Tcond = true; entry = 0; if ST <= ET Then SetStopEndofday(0); } if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or (MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades[1]) Then entry = entry+1; if Tcond == true Then { if entry < 1 Then Buy("b",AtLimit,hh-(hh-ll)*0.764); ExitLong("sx",AtLimit,hh-(hh-ll)*0.240); } SetStopLoss(PriceScale*손절틱수,PointStop); } 즐거운 하루되세요 > 푸른 님이 쓴 글입니다. > 제목 : 77886 수식어 수정 바랍니다 > input : n(1),손절틱수(200); var : DD(0),Year(0),V1(0),V2(0),V3(0),V4(0),summer(False); var : ST(0),ET(0),entry(0),Tcond(False); var : cnt(0),hh(0),ll(0); if NextBarSdate != sDate Then { DD = DayOfWeek(NextBarSdate); Year = Floor(NextBarSdate/10000); V1 = (10000 * Year) + (100 * 3) + 1; V2 = 15 - dayofweek(v1); v3 = (10000 * Year) + (100 * 11) + 1; v4 = 8 - dayofweek(v3); Summer = NextBarSdate > (10000 * Year) + (100 * 3) + v2 And NextBarSdate < (10000 * Year) + (100 * 11) + v4; if summer == true Then { ST = 70000; ET = 55000; } Else { ST = 80000; ET = 65000; } } if Year > 0 Then { hh = 0; ll = 0; For cnt = 0 to n-1 { if hh == 0 or (hh > 0 and DayHigh(cnt) > hh) Then hh = DayHigh(cnt); if ll == 0 or (ll > 0 and DayLow(cnt) < ll) Then ll = DayLow(cnt); } IF ET > ST Then SetStopEndofday(ET); Else { if sDate != sDate[1] Then SetStopEndofday(ET); } if ((sDate != sDate[1] and Stime >= ET) or (sDate == sDate[1] and Stime >= ET and sTime < ET)) Then Tcond = False; if Bdate != Bdate[1] Then { Tcond = true; entry = 0; if ST <= ET Then SetStopEndofday(0); } if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or (MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades[1]) Then entry = entry+1; if Tcond == true Then { if entry < 1 Then Buy("b",AtLimit,hh-(hh-ll)*0.764); ExitLong("sx",AtLimit,hh-(hh-ll)*0.240); } SetStopLoss(PriceScale*손절틱수,PointStop); } --------------------------------- 전일폭의 기준을 한국시간 24시~ 익일23시59분으로 되어 있고 그걸 기준으로 다음 수열 수식어로 신호가 나오는것 같습니다. 전일을 미국 매매시간인 07시부터 익일 05시 30분까지로 수정해 주시고 이걸 기준으로 다음신호가 나오도록 부탁 드립니다.