커뮤니티

지난 번 답변에 감사드립니다. 시스템 (한번 더) 여쭤봅니다.

프로필 이미지
나스닥에센피
2021-04-04 00:06:23
992
글번호 147646
답변완료
지난 3.29일 문의에 성실히 답해 주신 점 지금도 너무 고밥게 생각합니다. 그날 이후 당장 자동매매시스템으로 만들어서 자동매매를 하고 있어 감사드립니다. 자동매매하면서 생긴 의문점을 추가로 해결하고자 아래 두가지에 대해 한번 더 여쭙고자 합니다. 1. 추세매매 속성 상 되돌려주는 부분이 많아 '시스템 트레이딩 설정'창의 '강제청산' 항목의 목표수익 익절 포인트(잠정 20p정도)에 체크하고 매매해보니 한번 익절 포인트에 도달하면 그날의 매매가 끝나는 것을 알게 됐습니다. 제가 원하는 것은 당해 신호로 익절을 했더라도 다시 새로운 신호 출현 시 연속매매를 하고 싶은데 이것도 시스템에 반영이 가능할까요? 2. 아래 시스템에 의하면 시작시간(ntime)은 외부변수로 나와 있어서 시작시간을 변경하기가 수월한데, 끝나는 시간(여기 설정은 05시30분)과 진입제한시간(제 생각으론 04시30분 정도, 진입제한시간 이후 신호엔 신규진입을 하지 않고 청산만)도 외부변수로 뺄 수가 있을까요? 답변에 미리 감사드립니다. 아래는 3.29일 당시 만들어 주신 시스템 input : ntime(90000); var : entry(0),T(0),S(0); if sdate !=sDate[1] Then SetStopEndofday(053000); if Bdate != Bdate[1] Then { SetStopEndofday(0); entry = 0; S = 0; T = 0; } if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or (MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades[1]) Then entry = entry+1; if T == 0 Then { if H >= DayLow+10 Then S = 1; if L <= DayHigh-10 Then S = -1; } if (sDate != sDate[1] and sTime >= ntime) or (sDate == sDate[1] and sTime >= ntime and sTime[1] < ntime) Then T = 1; if T == 1 and entry == 0 and MarketPosition == 0 Then { if S == 1 Then Buy("b1"); if S == -1 Then Sell("S1"); if S == 0 Then { if H < DayLow+10 Then Buy("b2",AtStop,DayLow+10); if L > DayHigh-10 Then Sell("s2",AtStop,DayHigh-10); } } if MarketPosition == 1 Then { if Highest(h,BarsSinceEntry) >= EntryPrice+10 Then Sell("bs1",AtStop,Highest(H,BarsSinceEntry)-15); Else Sell("bs2",AtStop,Highest(H,BarsSinceEntry)-10); } if MarketPosition == -1 Then { if Lowest(l,BarsSinceEntry) <= EntryPrice-10 Then Buy("sb1",AtStop,Lowest(L,BarsSinceEntry)+15); Else Buy("sb2",AtStop,Lowest(L,BarsSinceEntry)+10); }
시스템
답변 2
프로필 이미지

예스스탁 예스스탁 답변

2021-04-05 14:47:37

안녕하세요 예스스탁입니다. 현재 진입수식에 진입횟수 1회로 지정(entry == 0 )이 되어 있습니다. 진입횟수 제한내용을 삭제해 드립니다. 시간조건은 모두 외부변수로 처리해 드립니다. input : StartTime(90000),EndTime(053000),xTime(053000); var : entry(0),T(0),S(0); if sdate !=sDate[1] Then SetStopEndofday(xTime); if Bdate != Bdate[1] Then { SetStopEndofday(0); entry = 0; S = 0; T = 0; } if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or (MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades[1]) Then entry = entry+1; if T == 0 Then { if H >= DayLow+10 Then S = 1; if L <= DayHigh-10 Then S = -1; } if (sDate != sDate[1] and sTime >= StartTime) or (sDate == sDate[1] and sTime >= StartTime and sTime[1] < StartTime) Then T = 1; if (sDate != sDate[1] and sTime >= EndTime) or (sDate == sDate[1] and sTime >= EndTime and sTime[1] < EndTime) Then T = 0; if T == 1 and MarketPosition == 0 Then { if S == 1 Then Buy("b1"); if S == -1 Then Sell("S1"); if S == 0 Then { if H < DayLow+10 Then Buy("b2",AtStop,DayLow+10); if L > DayHigh-10 Then Sell("s2",AtStop,DayHigh-10); } } if MarketPosition == 1 Then { if Highest(h,BarsSinceEntry) >= EntryPrice+10 Then Sell("bs1",AtStop,Highest(H,BarsSinceEntry)-15); Else Sell("bs2",AtStop,Highest(H,BarsSinceEntry)-10); } if MarketPosition == -1 Then { if Lowest(l,BarsSinceEntry) <= EntryPrice-10 Then Buy("sb1",AtStop,Lowest(L,BarsSinceEntry)+15); Else Buy("sb2",AtStop,Lowest(L,BarsSinceEntry)+10); } 즐거운 하루되세요 > 나스닥에센피 님이 쓴 글입니다. > 제목 : 지난 번 답변에 감사드립니다. 시스템 (한번 더) 여쭤봅니다. > 지난 3.29일 문의에 성실히 답해 주신 점 지금도 너무 고밥게 생각합니다. 그날 이후 당장 자동매매시스템으로 만들어서 자동매매를 하고 있어 감사드립니다. 자동매매하면서 생긴 의문점을 추가로 해결하고자 아래 두가지에 대해 한번 더 여쭙고자 합니다. 1. 추세매매 속성 상 되돌려주는 부분이 많아 '시스템 트레이딩 설정'창의 '강제청산' 항목의 목표수익 익절 포인트(잠정 20p정도)에 체크하고 매매해보니 한번 익절 포인트에 도달하면 그날의 매매가 끝나는 것을 알게 됐습니다. 제가 원하는 것은 당해 신호로 익절을 했더라도 다시 새로운 신호 출현 시 연속매매를 하고 싶은데 이것도 시스템에 반영이 가능할까요? 2. 아래 시스템에 의하면 시작시간(ntime)은 외부변수로 나와 있어서 시작시간을 변경하기가 수월한데, 끝나는 시간(여기 설정은 05시30분)과 진입제한시간(제 생각으론 04시30분 정도, 진입제한시간 이후 신호엔 신규진입을 하지 않고 청산만)도 외부변수로 뺄 수가 있을까요? 답변에 미리 감사드립니다. 아래는 3.29일 당시 만들어 주신 시스템 input : ntime(90000); var : entry(0),T(0),S(0); if sdate !=sDate[1] Then SetStopEndofday(053000); if Bdate != Bdate[1] Then { SetStopEndofday(0); entry = 0; S = 0; T = 0; } if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or (MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades[1]) Then entry = entry+1; if T == 0 Then { if H >= DayLow+10 Then S = 1; if L <= DayHigh-10 Then S = -1; } if (sDate != sDate[1] and sTime >= ntime) or (sDate == sDate[1] and sTime >= ntime and sTime[1] < ntime) Then T = 1; if T == 1 and entry == 0 and MarketPosition == 0 Then { if S == 1 Then Buy("b1"); if S == -1 Then Sell("S1"); if S == 0 Then { if H < DayLow+10 Then Buy("b2",AtStop,DayLow+10); if L > DayHigh-10 Then Sell("s2",AtStop,DayHigh-10); } } if MarketPosition == 1 Then { if Highest(h,BarsSinceEntry) >= EntryPrice+10 Then Sell("bs1",AtStop,Highest(H,BarsSinceEntry)-15); Else Sell("bs2",AtStop,Highest(H,BarsSinceEntry)-10); } if MarketPosition == -1 Then { if Lowest(l,BarsSinceEntry) <= EntryPrice-10 Then Buy("sb1",AtStop,Lowest(L,BarsSinceEntry)+15); Else Buy("sb2",AtStop,Lowest(L,BarsSinceEntry)+10); }
프로필 이미지

나스닥에센피

2021-04-05 15:23:28

빠른 답변에 감사드립니다. 다시 시스템에 적용해 보고 혹시 의문이 생기면 다시 여쭙겠습니다. 감사합니다. 이번 주도 힘차고 행복한 주간 되세요. > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 지난 번 답변에 감사드립니다. 시스템 (한번 더) 여쭤봅니다. > 안녕하세요 예스스탁입니다. 현재 진입수식에 진입횟수 1회로 지정(entry == 0 )이 되어 있습니다. 진입횟수 제한내용을 삭제해 드립니다. 시간조건은 모두 외부변수로 처리해 드립니다. input : StartTime(90000),EndTime(053000),xTime(053000); var : entry(0),T(0),S(0); if sdate !=sDate[1] Then SetStopEndofday(xTime); if Bdate != Bdate[1] Then { SetStopEndofday(0); entry = 0; S = 0; T = 0; } if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or (MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades[1]) Then entry = entry+1; if T == 0 Then { if H >= DayLow+10 Then S = 1; if L <= DayHigh-10 Then S = -1; } if (sDate != sDate[1] and sTime >= StartTime) or (sDate == sDate[1] and sTime >= StartTime and sTime[1] < StartTime) Then T = 1; if (sDate != sDate[1] and sTime >= EndTime) or (sDate == sDate[1] and sTime >= EndTime and sTime[1] < EndTime) Then T = 0; if T == 1 and MarketPosition == 0 Then { if S == 1 Then Buy("b1"); if S == -1 Then Sell("S1"); if S == 0 Then { if H < DayLow+10 Then Buy("b2",AtStop,DayLow+10); if L > DayHigh-10 Then Sell("s2",AtStop,DayHigh-10); } } if MarketPosition == 1 Then { if Highest(h,BarsSinceEntry) >= EntryPrice+10 Then Sell("bs1",AtStop,Highest(H,BarsSinceEntry)-15); Else Sell("bs2",AtStop,Highest(H,BarsSinceEntry)-10); } if MarketPosition == -1 Then { if Lowest(l,BarsSinceEntry) <= EntryPrice-10 Then Buy("sb1",AtStop,Lowest(L,BarsSinceEntry)+15); Else Buy("sb2",AtStop,Lowest(L,BarsSinceEntry)+10); } 즐거운 하루되세요 > 나스닥에센피 님이 쓴 글입니다. > 제목 : 지난 번 답변에 감사드립니다. 시스템 (한번 더) 여쭤봅니다. > 지난 3.29일 문의에 성실히 답해 주신 점 지금도 너무 고밥게 생각합니다. 그날 이후 당장 자동매매시스템으로 만들어서 자동매매를 하고 있어 감사드립니다. 자동매매하면서 생긴 의문점을 추가로 해결하고자 아래 두가지에 대해 한번 더 여쭙고자 합니다. 1. 추세매매 속성 상 되돌려주는 부분이 많아 '시스템 트레이딩 설정'창의 '강제청산' 항목의 목표수익 익절 포인트(잠정 20p정도)에 체크하고 매매해보니 한번 익절 포인트에 도달하면 그날의 매매가 끝나는 것을 알게 됐습니다. 제가 원하는 것은 당해 신호로 익절을 했더라도 다시 새로운 신호 출현 시 연속매매를 하고 싶은데 이것도 시스템에 반영이 가능할까요? 2. 아래 시스템에 의하면 시작시간(ntime)은 외부변수로 나와 있어서 시작시간을 변경하기가 수월한데, 끝나는 시간(여기 설정은 05시30분)과 진입제한시간(제 생각으론 04시30분 정도, 진입제한시간 이후 신호엔 신규진입을 하지 않고 청산만)도 외부변수로 뺄 수가 있을까요? 답변에 미리 감사드립니다. 아래는 3.29일 당시 만들어 주신 시스템 input : ntime(90000); var : entry(0),T(0),S(0); if sdate !=sDate[1] Then SetStopEndofday(053000); if Bdate != Bdate[1] Then { SetStopEndofday(0); entry = 0; S = 0; T = 0; } if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or (MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades[1]) Then entry = entry+1; if T == 0 Then { if H >= DayLow+10 Then S = 1; if L <= DayHigh-10 Then S = -1; } if (sDate != sDate[1] and sTime >= ntime) or (sDate == sDate[1] and sTime >= ntime and sTime[1] < ntime) Then T = 1; if T == 1 and entry == 0 and MarketPosition == 0 Then { if S == 1 Then Buy("b1"); if S == -1 Then Sell("S1"); if S == 0 Then { if H < DayLow+10 Then Buy("b2",AtStop,DayLow+10); if L > DayHigh-10 Then Sell("s2",AtStop,DayHigh-10); } } if MarketPosition == 1 Then { if Highest(h,BarsSinceEntry) >= EntryPrice+10 Then Sell("bs1",AtStop,Highest(H,BarsSinceEntry)-15); Else Sell("bs2",AtStop,Highest(H,BarsSinceEntry)-10); } if MarketPosition == -1 Then { if Lowest(l,BarsSinceEntry) <= EntryPrice-10 Then Buy("sb1",AtStop,Lowest(L,BarsSinceEntry)+15); Else Buy("sb2",AtStop,Lowest(L,BarsSinceEntry)+10); }