예스스탁
예스스탁 답변
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);
}