커뮤니티

기준선 매매 수식 수정부탁드립니다.

프로필 이미지
승부사1
2018-09-26 18:47:09
201
글번호 122244
답변완료
아래의 수식을 적용해 보았습니다. 1일 1회 또는 2회만 매매되고 이후에는 시그널이 발생되지 않네요. 일목균형표 기준선의 변수값을 120으로 변경한 선을 상승돌파하면 매수진입 하향이탈하면 매수청산하고 매도진입 다시 상승돌파하면 매도청산하고 매수진입 이렇게 반복하다가 당일 누적수익 50틱을 달성하면 매매종료 수익달성을 못하면 종가청산 이렇게 수식을 짜고 싶은데요. 도와주시면 감사드리겠습니다. ^^ - 아 래 - Input : 당일누적수익틱수(20),당일누적손실틱수(20),P(120); input : starttime(090000),endtime(153000); VARS: Tcond(false),N1(0),dayPl(0),당일누적수익(0),당일누적손실(0),Xcond(false); if (sdate != sdate[1] and stime >= endtime) or (sdate == sdate[1] and stime >= endtime and stime[1] < endtime) then { Tcond = false; if MarketPosition == 1 Then ExitLong("bx"); if MarketPosition == -1 Then ExitShort("sx"); } if (sdate != sdate[1] and stime >= starttime) or (sdate == sdate[1] and stime >= starttime and stime[1] < starttime) then { Xcond = false; N1 = NetProfit; Tcond = true; } 당일누적수익 = PriceScale*당일누적수익틱수; 당일누적손실 = PriceScale*당일누적손실틱수; daypl = NetProfit-N1; if TotalTrades > TotalTrades[1] and (IsExitName("dbp",1) == true or IsExitName("dbl",1) == true or IsExitName("dsp",1) == true or IsExitName("dsl",1) == true) then Xcond = true; var1 = (highest(H,P)+lowest(L,P))/2; if Tcond == true and Xcond == false then { if crossup(c,var1) Then buy(); if CrossDown(c,var1) Then sell(); } if MarketPosition == 1 then{ ExitLong("dbp",atlimit,EntryPrice+((당일누적수익-daypl)/CurrentContracts)); ExitLong("dbl",AtStop,EntryPrice-((당일누적손실+daypl)/CurrentContracts)); } if MarketPosition == -1 then{ ExitShort("dsp",atlimit,EntryPrice-((당일누적수익-daypl)/CurrentContracts)); ExitShort("dsl",AtStop,EntryPrice+((당일누적손실+daypl)/CurrentContracts)); }
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2018-09-27 16:04:08

안녕하세요 예스스탁입니다 해당수식에 진입횟수에 대한 제한은 없습니다. 수정할 부분이 없습니다. 언급하신 내용으로 작성된 수식입니다. 즐거운 하루되세요 > 승부사1 님이 쓴 글입니다. > 제목 : 기준선 매매 수식 수정부탁드립니다. > 아래의 수식을 적용해 보았습니다. 1일 1회 또는 2회만 매매되고 이후에는 시그널이 발생되지 않네요. 일목균형표 기준선의 변수값을 120으로 변경한 선을 상승돌파하면 매수진입 하향이탈하면 매수청산하고 매도진입 다시 상승돌파하면 매도청산하고 매수진입 이렇게 반복하다가 당일 누적수익 50틱을 달성하면 매매종료 수익달성을 못하면 종가청산 이렇게 수식을 짜고 싶은데요. 도와주시면 감사드리겠습니다. ^^ - 아 래 - Input : 당일누적수익틱수(20),당일누적손실틱수(20),P(120); input : starttime(090000),endtime(153000); VARS: Tcond(false),N1(0),dayPl(0),당일누적수익(0),당일누적손실(0),Xcond(false); if (sdate != sdate[1] and stime >= endtime) or (sdate == sdate[1] and stime >= endtime and stime[1] < endtime) then { Tcond = false; if MarketPosition == 1 Then ExitLong("bx"); if MarketPosition == -1 Then ExitShort("sx"); } if (sdate != sdate[1] and stime >= starttime) or (sdate == sdate[1] and stime >= starttime and stime[1] < starttime) then { Xcond = false; N1 = NetProfit; Tcond = true; } 당일누적수익 = PriceScale*당일누적수익틱수; 당일누적손실 = PriceScale*당일누적손실틱수; daypl = NetProfit-N1; if TotalTrades > TotalTrades[1] and (IsExitName("dbp",1) == true or IsExitName("dbl",1) == true or IsExitName("dsp",1) == true or IsExitName("dsl",1) == true) then Xcond = true; var1 = (highest(H,P)+lowest(L,P))/2; if Tcond == true and Xcond == false then { if crossup(c,var1) Then buy(); if CrossDown(c,var1) Then sell(); } if MarketPosition == 1 then{ ExitLong("dbp",atlimit,EntryPrice+((당일누적수익-daypl)/CurrentContracts)); ExitLong("dbl",AtStop,EntryPrice-((당일누적손실+daypl)/CurrentContracts)); } if MarketPosition == -1 then{ ExitShort("dsp",atlimit,EntryPrice-((당일누적수익-daypl)/CurrentContracts)); ExitShort("dsl",AtStop,EntryPrice+((당일누적손실+daypl)/CurrentContracts)); }