커뮤니티

연달아 부탁드려 죄송합니다~ 수정 부탁드립니다^^;;

프로필 이미지
머어얼
2020-03-17 00:40:26
210
글번호 136939
답변완료
밑에 붙여넣은 내용은 기존 질문했던 내용과 관리자님이 도움주신 내용 복사해서 붙여넣었습니다. 전략을 적용해보니 손절 익절을 0.5p 씩 했음에도 불구하고 최대수익이 2.89p 최대손실이 -2.17 이렇게 나오는대요. 아마도 0시가 넘은경우에 저렇게 되는듯 싶기도하고 익일로 오버되는 경우도 있어서 저런 수익 및 손실이 나오는거같기도 합니다. 수정 부탁드리는 부분은.. 특정진입시간대를 2개 box로 나누고 싶은대 변수로도 조정가능하게끔 하고싶습니다. 가령 12시~18시(1box:변수에서 조정가능토록)에 1번, 22시~익일04시에(2box:변수에서 조정가능토록) 1번 진입하도록 하고싶습니다. 진입횟수 변수를 1로 조정하면 1box에서만 나오는것이 맞는것이지요? 그리고 1번째 진입이던 2번째 진입이던 포지션 집입중이면 반대신호 조건이 충족되더라 도 신호가 나오지않고 손절청산 및 익절청산으로 포지션 정리를 하고싶습니다. (1box시간대에 매수신호가 나와 매수포지션이면 1box시간대에 반대신호 조건이 충족되어도 신호가 무시되어 익절 및 손절 가격 도달할때까지 포지션 유지. 포지션 유지상태로 2box 시간대에 까지 간다하면 2box 시간대에도 조건충족으로 나오는 신호는 나오지않게하고 기 존 포지션 유지. 만약 익절 및 손절폭까지 안온다면 05시40분 당일청산) 감사합니다~ 건강하시고 편한밤 되세요~!! ------------------------------------------------------------------------------- 안녕하세요 예스스탁입니다. input : StartTime(120000),EndTime(180000); input : P1(5),P2(20); input : 진입횟수(2),익절(0.5),손절(0.5); var : Tcond(false),entry(0); if (sdate != sdate[1] and stime >= StartTime) or (sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then { Tcond = true; entry = 0; } if (sdate != sdate[1] and stime >= EndTime) or (sdate == sdate[1] and stime >= EndTime and stime[1] < EndTime) Then Tcond = False; var1 = ma(C,P1); var2 = ma(C,P2); if Tcond == true then { if MarketPosition == 0 and MarketPosition != MarketPosition[1] Then entry = entry+1; if entry < 진입횟수 then { if MarketPosition == 0 and crossup(var1,var2) Then buy("b"); if MarketPosition == 0 and CrossDown(var1,var2) Then sell("s"); } SetStopProfittarget(익절,PointStop); SetStopLoss(손절,PointStop); } Else { SetStopProfittarget(0);#해제 SetStopLoss(0);#해제 } 즐거운 하루되세요 > 머어얼 님이 쓴 글입니다. > 제목 : 수고 많으십니다 매번 번거롭게 해드려 죄송합니다~ 수식 부탁좀 드립니다~ > 해외선물에 적용할 전략이고, 주가이동평균5일선이 주가이동평균20일선을 상향 돌파하면 매수 / 하향 돌파하면 매도하는 수식인대요~ 손절 0.5p / 익절 0.5p 단, 변수로 조정 가능하게끔 하려고 하는것은 1일 1회 혹은 2회 진입 / 특정시간대에만 진입하게끔 조정하고 싶습니다 (예: 오후12시부터 오후 6시사이에 주가이동평균선이 상향 및 하향 돌파하면 매수 및 매도 1회 진입, 오후 11시부터 익일 오전3시사이에 주가이동평 균선이 상향 돌파하면 매수 및 하향돌파하면 매도 1회진입. 단, 진입신호에 따라 매수던 매도던 포지션 진입상황에서는 반대조건이 충족하더라도 신호가 나오는게 아니라 그 포지션을 유지하고 한번 진입하면 0.5p손절이던 0.5p익절로 마무리하려고 합니다. 매번 도움주셔서 감사합니다~ 수식 부탁 드립니다~ 건강하시고 수고하세요~!!
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2020-03-17 15:35:04

안녕하세요 예스스탁입니다. 지정한 시간범위 안에 진입후에 손절이나 익절이 안나오면 익일에 발생하게 되므로 지정한 익절과 손절보다 클수 있습니다. input : StartTime1(120000),EndTime1(180000),진입횟수1(1); input : StartTime2(220000),EndTime2(040000),진입횟수2(1); input : xTime(054000); input : P1(5),P2(20); input : 익절(0.5),손절(0.5); var : Tcond1(false),entry1(0),Tcond2(false),entry2(0); if sdate != sdate[1] Then SetStopEndofday(xtime); if bdate != bdate[1] Then SetStopEndofday(0); if (sdate != sdate[1] and stime >= StartTime1) or (sdate == sdate[1] and stime >= StartTime1 and stime[1] < StartTime1) Then { Tcond1 = true; entry1 = 0; } if (sdate != sdate[1] and stime >= EndTime1) or (sdate == sdate[1] and stime >= EndTime1 and stime[1] < EndTime1) Then Tcond1 = False; if (sdate != sdate[1] and stime >= StartTime2) or (sdate == sdate[1] and stime >= StartTime2 and stime[1] < StartTime2) Then { Tcond2 = true; entry2 = 0; } if (sdate != sdate[1] and stime >= EndTime2) or (sdate == sdate[1] and stime >= EndTime2 and stime[1] < EndTime2) Then Tcond2 = False; var1 = ma(C,P1); var2 = ma(C,P2); if Tcond1 == true then { if MarketPosition == 0 and MarketPosition != MarketPosition[1] Then entry1 = entry1+1; if entry1 < 진입횟수1 then { if MarketPosition == 0 and crossup(var1,var2) Then buy("b1"); if MarketPosition == 0 and CrossDown(var1,var2) Then sell("s1"); } SetStopProfittarget(익절,PointStop); SetStopLoss(손절,PointStop); } else if Tcond2 == true then { if MarketPosition == 0 and MarketPosition != MarketPosition[1] Then entry2 = entry2+1; if entry2 < 진입횟수2 then { if MarketPosition == 0 and crossup(var1,var2) Then buy("b2"); if MarketPosition == 0 and CrossDown(var1,var2) Then sell("s2"); } SetStopProfittarget(익절,PointStop); SetStopLoss(손절,PointStop); } Else { SetStopProfittarget(0);#해제 SetStopLoss(0);#해제 } 즐거운 하루되세요 > 머어얼 님이 쓴 글입니다. > 제목 : 연달아 부탁드려 죄송합니다~ 수정 부탁드립니다^^;; > 밑에 붙여넣은 내용은 기존 질문했던 내용과 관리자님이 도움주신 내용 복사해서 붙여넣었습니다. 전략을 적용해보니 손절 익절을 0.5p 씩 했음에도 불구하고 최대수익이 2.89p 최대손실이 -2.17 이렇게 나오는대요. 아마도 0시가 넘은경우에 저렇게 되는듯 싶기도하고 익일로 오버되는 경우도 있어서 저런 수익 및 손실이 나오는거같기도 합니다. 수정 부탁드리는 부분은.. 특정진입시간대를 2개 box로 나누고 싶은대 변수로도 조정가능하게끔 하고싶습니다. 가령 12시~18시(1box:변수에서 조정가능토록)에 1번, 22시~익일04시에(2box:변수에서 조정가능토록) 1번 진입하도록 하고싶습니다. 진입횟수 변수를 1로 조정하면 1box에서만 나오는것이 맞는것이지요? 그리고 1번째 진입이던 2번째 진입이던 포지션 집입중이면 반대신호 조건이 충족되더라 도 신호가 나오지않고 손절청산 및 익절청산으로 포지션 정리를 하고싶습니다. (1box시간대에 매수신호가 나와 매수포지션이면 1box시간대에 반대신호 조건이 충족되어도 신호가 무시되어 익절 및 손절 가격 도달할때까지 포지션 유지. 포지션 유지상태로 2box 시간대에 까지 간다하면 2box 시간대에도 조건충족으로 나오는 신호는 나오지않게하고 기 존 포지션 유지. 만약 익절 및 손절폭까지 안온다면 05시40분 당일청산) 감사합니다~ 건강하시고 편한밤 되세요~!! ------------------------------------------------------------------------------- 안녕하세요 예스스탁입니다. input : StartTime(120000),EndTime(180000); input : P1(5),P2(20); input : 진입횟수(2),익절(0.5),손절(0.5); var : Tcond(false),entry(0); if (sdate != sdate[1] and stime >= StartTime) or (sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then { Tcond = true; entry = 0; } if (sdate != sdate[1] and stime >= EndTime) or (sdate == sdate[1] and stime >= EndTime and stime[1] < EndTime) Then Tcond = False; var1 = ma(C,P1); var2 = ma(C,P2); if Tcond == true then { if MarketPosition == 0 and MarketPosition != MarketPosition[1] Then entry = entry+1; if entry < 진입횟수 then { if MarketPosition == 0 and crossup(var1,var2) Then buy("b"); if MarketPosition == 0 and CrossDown(var1,var2) Then sell("s"); } SetStopProfittarget(익절,PointStop); SetStopLoss(손절,PointStop); } Else { SetStopProfittarget(0);#해제 SetStopLoss(0);#해제 } 즐거운 하루되세요 > 머어얼 님이 쓴 글입니다. > 제목 : 수고 많으십니다 매번 번거롭게 해드려 죄송합니다~ 수식 부탁좀 드립니다~ > 해외선물에 적용할 전략이고, 주가이동평균5일선이 주가이동평균20일선을 상향 돌파하면 매수 / 하향 돌파하면 매도하는 수식인대요~ 손절 0.5p / 익절 0.5p 단, 변수로 조정 가능하게끔 하려고 하는것은 1일 1회 혹은 2회 진입 / 특정시간대에만 진입하게끔 조정하고 싶습니다 (예: 오후12시부터 오후 6시사이에 주가이동평균선이 상향 및 하향 돌파하면 매수 및 매도 1회 진입, 오후 11시부터 익일 오전3시사이에 주가이동평 균선이 상향 돌파하면 매수 및 하향돌파하면 매도 1회진입. 단, 진입신호에 따라 매수던 매도던 포지션 진입상황에서는 반대조건이 충족하더라도 신호가 나오는게 아니라 그 포지션을 유지하고 한번 진입하면 0.5p손절이던 0.5p익절로 마무리하려고 합니다. 매번 도움주셔서 감사합니다~ 수식 부탁 드립니다~ 건강하시고 수고하세요~!!