커뮤니티

스토캐스틱 수식 수정 부탁드립니다.

프로필 이미지
승부사1
2018-10-14 19:23:44
245
글번호 122645
답변완료

첨부 이미지

아래의 수식으로 항생장에 적용해 보았습니다. 첨부드리는 사진대로 강제청산 설정을 걸었더니 시그널은 정상적으로 작동합니다. 그런데 수식상에 설정된 당일누적손실틱수를 넘었는데도 매매를 멈추지 않고 계속 매매가 진행되네요?? 아마 틱봉챠트에 적용을 하다보니 시뮬레이션 상에서는 먹히는거 같아 보이지만 당일 실전매매에서는 안 먹히는게 확인 됩니다. 1. 하여 수식상에 1회매매 수익청산, 손실청산을 삽입하여 각각의 매매도 제어하고 당일누적틱수도 제한하고 싶습니다. 2. 수식상에 설정된 매 일마다의 종료시간에 청산되지 않고 종료시간 이후에도 매매가 진행되고 있습니다. 종료시간을 각각의 일마다 적용되게 부탁드립니다. 부탁드립니다. - 아 래 - Input : 당일누적수익틱수(100),당일누적손실틱수(30),P(120); input : startdate(20180102),starttime(100000),enddate(20180928),endtime(173000); input : sto1(20),sto2(12),sto3(12); VARS: Tcond(false),N1(0),dayPl(0),당일누적수익(0),당일누적손실(0),Xcond(false),stok(0),stod(0); if (sdate == enddate and sdate != sdate[1] and stime >= endtime) or (sdate == enddate and sdate == sdate[1] and stime >= endtime and stime[1] < endtime) then { Tcond = false; if MarketPosition == 1 Then ExitLong("매수청산"); if MarketPosition == -1 Then ExitShort("매도청산"); } if (sdate >= startdate and sdate != sdate[1] and stime >= starttime) or (sdate >= startdate and 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("매수수익",1) == true or IsExitName("매수손실",1) == true or IsExitName("매도수익",1) == true or IsExitName("매도손실",1) == true) then Xcond = true; stok = StochasticsK(sto1,sto2); stod = StochasticsD(sto1,sto2,sto3); if Tcond == true and Xcond == false then { if crossup(stok,stod) Then buy("매수"); if CrossDown(stok,stod) Then sell("매도"); } if MarketPosition == 1 then{ ExitLong("매수수익",atlimit,EntryPrice+((당일누적수익-daypl)/CurrentContracts)); ExitLong("매수손실",AtStop,EntryPrice-((당일누적손실+daypl)/CurrentContracts)); } if MarketPosition == -1 then{ ExitShort("매도수익",atlimit,EntryPrice-((당일누적수익-daypl)/CurrentContracts)); ExitShort("매도손실",AtStop,EntryPrice+((당일누적손실+daypl)/CurrentContracts)); }
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2018-10-15 11:11:36

안녕하세요 예스스탁입니다. 1 수식상 매수수익, 매수손실, 매도수익, 매도손실이라는 이름의 청산이 발생해야 진입을 막게 됩니다. 모든 청산후 손익으로 파악하게 수정했습니다. 2 당일청산은 지정한 시간이후 밤 0시 까지 진입을 막습니다. 새벽에 청산하므로 수식안에서 처리해야 합니다. 3. 수정한 식입니다. Input : 당일누적수익틱수(100),당일누적손실틱수(30),P(120); input : startdate(20180102),starttime(100000),enddate(20180928),endtime(173000); input : sto1(20),sto2(12),sto3(12); VARS: Tcond(false),N1(0),dayPl(0),당일누적수익(0),당일누적손실(0),Xcond(false),stok(0),stod(0); if (sdate == enddate and sdate != sdate[1] and stime >= endtime) or (sdate == enddate and sdate == sdate[1] and stime >= endtime and stime[1] < endtime) then { Tcond = false; if MarketPosition == 1 Then ExitLong("매수청산"); if MarketPosition == -1 Then ExitShort("매도청산"); } if (sdate >= startdate and sdate != sdate[1] and stime >= starttime) or (sdate >= startdate and 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 (daypl >= 당일누적수익 or daypl <= -당일누적손실) then Xcond = true; stok = StochasticsK(sto1,sto2); stod = StochasticsD(sto1,sto2,sto3); if Tcond == true and Xcond == false then { if crossup(stok,stod) Then buy("매수"); if CrossDown(stok,stod) Then sell("매도"); } if MarketPosition == 1 then{ ExitLong("매수수익",atlimit,EntryPrice+((당일누적수익-daypl)/CurrentContracts)); ExitLong("매수손실",AtStop,EntryPrice-((당일누적손실+daypl)/CurrentContracts)); } if MarketPosition == -1 then{ ExitShort("매도수익",atlimit,EntryPrice-((당일누적수익-daypl)/CurrentContracts)); ExitShort("매도손실",AtStop,EntryPrice+((당일누적손실+daypl)/CurrentContracts)); } if sdate != sdate[1] Then SetStopEndofday(51000); if bdate != bdate[1] Then SetStopEndofday(0); 즐거운 하루되세요 > 승부사1 님이 쓴 글입니다. > 제목 : 스토캐스틱 수식 수정 부탁드립니다. > 아래의 수식으로 항생장에 적용해 보았습니다. 첨부드리는 사진대로 강제청산 설정을 걸었더니 시그널은 정상적으로 작동합니다. 그런데 수식상에 설정된 당일누적손실틱수를 넘었는데도 매매를 멈추지 않고 계속 매매가 진행되네요?? 아마 틱봉챠트에 적용을 하다보니 시뮬레이션 상에서는 먹히는거 같아 보이지만 당일 실전매매에서는 안 먹히는게 확인 됩니다. 1. 하여 수식상에 1회매매 수익청산, 손실청산을 삽입하여 각각의 매매도 제어하고 당일누적틱수도 제한하고 싶습니다. 2. 수식상에 설정된 매 일마다의 종료시간에 청산되지 않고 종료시간 이후에도 매매가 진행되고 있습니다. 종료시간을 각각의 일마다 적용되게 부탁드립니다. 부탁드립니다. - 아 래 - Input : 당일누적수익틱수(100),당일누적손실틱수(30),P(120); input : startdate(20180102),starttime(100000),enddate(20180928),endtime(173000); input : sto1(20),sto2(12),sto3(12); VARS: Tcond(false),N1(0),dayPl(0),당일누적수익(0),당일누적손실(0),Xcond(false),stok(0),stod(0); if (sdate == enddate and sdate != sdate[1] and stime >= endtime) or (sdate == enddate and sdate == sdate[1] and stime >= endtime and stime[1] < endtime) then { Tcond = false; if MarketPosition == 1 Then ExitLong("매수청산"); if MarketPosition == -1 Then ExitShort("매도청산"); } if (sdate >= startdate and sdate != sdate[1] and stime >= starttime) or (sdate >= startdate and 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("매수수익",1) == true or IsExitName("매수손실",1) == true or IsExitName("매도수익",1) == true or IsExitName("매도손실",1) == true) then Xcond = true; stok = StochasticsK(sto1,sto2); stod = StochasticsD(sto1,sto2,sto3); if Tcond == true and Xcond == false then { if crossup(stok,stod) Then buy("매수"); if CrossDown(stok,stod) Then sell("매도"); } if MarketPosition == 1 then{ ExitLong("매수수익",atlimit,EntryPrice+((당일누적수익-daypl)/CurrentContracts)); ExitLong("매수손실",AtStop,EntryPrice-((당일누적손실+daypl)/CurrentContracts)); } if MarketPosition == -1 then{ ExitShort("매도수익",atlimit,EntryPrice-((당일누적수익-daypl)/CurrentContracts)); ExitShort("매도손실",AtStop,EntryPrice+((당일누적손실+daypl)/CurrentContracts)); }