커뮤니티

알려주신 수식대로 했는데 잘 안됩니다 ^^;; 번거롭게 해드려서 대단히 죄소합니다

프로필 이미지
엠씨용가
2020-06-09 14:26:53
2138
글번호 139676
답변완료
1분봉으로 바꿀경우 매수신호는 나오는데요, 2000년도부터 현재까지 데이터를 보려고 하니 1분봉으로 바꿀경우 데이터가 너무 커서 예스트레이더가 자꾸 멈춥니다 ^^;; 그래서 5분봉 상태에서 수식을 넣고 백테스팅을 해보고 싶은데 잘 안되네요 ^^;; 알려주신 수식 그대로 적용을 해봤는데요, 가장 최근 6월 3일 매수가 안잡힙니다 필요하시다면 ,,,메일을 알려주시면 제 수식을 전부 드리도록 하겠습니다/! atr = DAYHIGH(1) - DAYLOW(1); LTR = MAX(1,NOISE * ATR); STR = MAX(1,(1-NOISE) * ATR); VL = cap / (dayclose(1) * MUL * rt); LUNIT = INT((CAP * RISK) / (LTR * MUL)); SUNIT = INT((CAP * RISK) / (STR * MUL)); IF LUNIT >= VL Then LUNIT1 = VL; ELSE LUNIT1 = LUNIT; IF LUNIT * 3 <= VL THEN LUNIT2 = LUNIT1; ELSE LUNIT2 = (VL - LUNIT)/2; IF SUNIT >= VL THEN SUNIT1 = VL; ELSE SUNIT1 = SUNIT; IF SUNIT * 3 <= VL THEN SUNIT2 = SUNIT1 ; ELSE SUNIT2 = (VL - SUNIT)/2; # ENTRY L1 = DAYOPEN + LTR ; L2 = L1 + (LTR * 0.5); L3 = L1 + LTR; S1 = DAYOPEN - STR; S2 = S1 - (STR * 0.5); S3 = S1 - STR; NL1 = LatestExitPrice(1)+LTR; NL2 = NL1 + LTR * 0.5; NL3 = NL1 + LTR; NS1 = LatestExitPrice(1)-STR; NS2 = NS1 - STR * 0.5; NS3 = NS1 - Str; IF MarketPosition == 0 AND NextBarSdate != sdate Then { BUY("L11",ATSTOP,NextBarOpen+LTR,LUNIT1); SELL("S11",ATSTOP,NExtBarOpen-STR,SUNIT1); } IF MarketPosition == 0 AND BDATE != EXITDATE(1) Then { IF H <= L1 AND NEXTBARSDATE == SDATE Then BUY("L1",ATSTOP,L1,LUNIT1); IF L >= S1 AND NextBarSdate == SDATE THEN SELL("S1",ATSTOP,S1,SUNIT1); } # 매수 피라미딩 IF MarketPosition == 1 AND STIME <153000 and (IsEntryName("L1")==True or IsEntryName("L11") == True) THEN { if highest(h,BarsSinceEntry) <= L2 Then buy("L2",ATSTOP,L2,LUNIT2); if highest(h,BarsSinceEntry) <= L1 + LTR Then buy("L3",ATSTOP, L3,LUNIT2); } # 매수청산 IF MarketPosition == 1 then { if NextBarSdate == SDATE Then ExitLong("LS",AtStop,LatestEntryPrice - LTR); IF NextBarSdate != SDATE Then ExitLong("EL",ATMARKET); } # 매도 피라미딩 IF MarketPosition == -1 AND STIME < 153000 AND (IsEntryName("S1") == True or IsEntryName("S11") == True) THEN { IF Lowest(L,BarsSinceEntry) >= S2 Then SELL("S2",AtStop,S2,SUNIT2); IF Lowest(L,BarsSinceEntry) >= S1 - STR Then SELL("S3",AtStop,S3,SUNIT2); } # 매도청산 IF MarketPosition == -1 then { IF NextBarSdate == SDATE Then EXITSHORT("SS",AtStop,LatestEntryPrice + STR); SetStopEndofday(); } ELSE SetStopEndofday(0); #해제 # 재진입 IF MarketPosition == 0 AND BDATE == EXITDATE(1) Then { IF MarketPosition(1) == 1 AND H <= NL1 AND NextBarSdate == sDate AND IsExitName("LS",1) == TRUE THEN BUY("NL1",ATSTOP,NL1,LUNIT1); IF MarketPosition(1) == -1 AND L >= NS1 AND NextBarSdate == SDATE THEN SELL("NS1",ATSTOP,NS1,SUNIT1); } IF BDATE == EXITDATE(1) AND MarketPosition == 1 AND IsEntryName("NL1") == TRUE THEN { IF LatestEntryName == "NL1" AND Highest(H,BarsSinceEntry) <= NL2 THEN BUY("NL2",ATSTOP,NL2,LUNIT2); IF LatestEntryName == "NL2" AND HIGHEST(H,BarsSinceEntry) <= NL3 THEN BUY("NL3",ATSTOP,NL3,LUNIT2); } IF BDATE == ExitDate(1) AND MarketPosition == -1 AND IsEntryName("NS1") == TRUE Then { IF LatestEntryName == "NS1" AND Lowest(L,BarsSinceEntry) >= NS2 THEN SELL("NS2",ATSTOP,NS2,SUNIT2); IF LatestEntryName == "NS2" AND Lowest(L,BarsSinceEntry) >= NS3 THEN SELL("NS3",ATSTOP,NS2,SUNIT2); }
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2020-06-10 11:52:24

> 엠씨용가 님이 쓴 글입니다. > 제목 : 알려주신 수식대로 했는데 잘 안됩니다 ^^;; 번거롭게 해드려서 대단히 죄소합니다 > 1분봉으로 바꿀경우 매수신호는 나오는데요, 2000년도부터 현재까지 데이터를 보려고 하니 1분봉으로 바꿀경우 데이터가 너무 커서 예스트레이더가 자꾸 멈춥니다 ^^;; 그래서 5분봉 상태에서 수식을 넣고 백테스팅을 해보고 싶은데 잘 안되네요 ^^;; 알려주신 수식 그대로 적용을 해봤는데요, 가장 최근 6월 3일 매수가 안잡힙니다 필요하시다면 ,,,메일을 알려주시면 제 수식을 전부 드리도록 하겠습니다/! atr = DAYHIGH(1) - DAYLOW(1); LTR = MAX(1,NOISE * ATR); STR = MAX(1,(1-NOISE) * ATR); VL = cap / (dayclose(1) * MUL * rt); LUNIT = INT((CAP * RISK) / (LTR * MUL)); SUNIT = INT((CAP * RISK) / (STR * MUL)); IF LUNIT >= VL Then LUNIT1 = VL; ELSE LUNIT1 = LUNIT; IF LUNIT * 3 <= VL THEN LUNIT2 = LUNIT1; ELSE LUNIT2 = (VL - LUNIT)/2; IF SUNIT >= VL THEN SUNIT1 = VL; ELSE SUNIT1 = SUNIT; IF SUNIT * 3 <= VL THEN SUNIT2 = SUNIT1 ; ELSE SUNIT2 = (VL - SUNIT)/2; # ENTRY L1 = DAYOPEN + LTR ; L2 = L1 + (LTR * 0.5); L3 = L1 + LTR; S1 = DAYOPEN - STR; S2 = S1 - (STR * 0.5); S3 = S1 - STR; NL1 = LatestExitPrice(1)+LTR; NL2 = NL1 + LTR * 0.5; NL3 = NL1 + LTR; NS1 = LatestExitPrice(1)-STR; NS2 = NS1 - STR * 0.5; NS3 = NS1 - Str; IF MarketPosition == 0 AND NextBarSdate != sdate Then { BUY("L11",ATSTOP,NextBarOpen+LTR,LUNIT1); SELL("S11",ATSTOP,NExtBarOpen-STR,SUNIT1); } IF MarketPosition == 0 AND BDATE != EXITDATE(1) Then { IF H <= L1 AND NEXTBARSDATE == SDATE Then BUY("L1",ATSTOP,L1,LUNIT1); IF L >= S1 AND NextBarSdate == SDATE THEN SELL("S1",ATSTOP,S1,SUNIT1); } # 매수 피라미딩 IF MarketPosition == 1 AND STIME <153000 and (IsEntryName("L1")==True or IsEntryName("L11") == True) THEN { if highest(h,BarsSinceEntry) <= L2 Then buy("L2",ATSTOP,L2,LUNIT2); if highest(h,BarsSinceEntry) <= L1 + LTR Then buy("L3",ATSTOP, L3,LUNIT2); } # 매수청산 IF MarketPosition == 1 then { if NextBarSdate == SDATE Then ExitLong("LS",AtStop,LatestEntryPrice - LTR); IF NextBarSdate != SDATE Then ExitLong("EL",ATMARKET); } # 매도 피라미딩 IF MarketPosition == -1 AND STIME < 153000 AND (IsEntryName("S1") == True or IsEntryName("S11") == True) THEN { IF Lowest(L,BarsSinceEntry) >= S2 Then SELL("S2",AtStop,S2,SUNIT2); IF Lowest(L,BarsSinceEntry) >= S1 - STR Then SELL("S3",AtStop,S3,SUNIT2); } # 매도청산 IF MarketPosition == -1 then { IF NextBarSdate == SDATE Then EXITSHORT("SS",AtStop,LatestEntryPrice + STR); SetStopEndofday(); } ELSE SetStopEndofday(0); #해제 # 재진입 IF MarketPosition == 0 AND BDATE == EXITDATE(1) Then { IF MarketPosition(1) == 1 AND H <= NL1 AND NextBarSdate == sDate AND IsExitName("LS",1) == TRUE THEN BUY("NL1",ATSTOP,NL1,LUNIT1); IF MarketPosition(1) == -1 AND L >= NS1 AND NextBarSdate == SDATE THEN SELL("NS1",ATSTOP,NS1,SUNIT1); } IF BDATE == EXITDATE(1) AND MarketPosition == 1 AND IsEntryName("NL1") == TRUE THEN { IF LatestEntryName == "NL1" AND Highest(H,BarsSinceEntry) <= NL2 THEN BUY("NL2",ATSTOP,NL2,LUNIT2); IF LatestEntryName == "NL2" AND HIGHEST(H,BarsSinceEntry) <= NL3 THEN BUY("NL3",ATSTOP,NL3,LUNIT2); } IF BDATE == ExitDate(1) AND MarketPosition == -1 AND IsEntryName("NS1") == TRUE Then { IF LatestEntryName == "NS1" AND Lowest(L,BarsSinceEntry) >= NS2 THEN SELL("NS2",ATSTOP,NS2,SUNIT2); IF LatestEntryName == "NS2" AND Lowest(L,BarsSinceEntry) >= NS3 THEN SELL("NS3",ATSTOP,NS2,SUNIT2); }