커뮤니티

수식문의드립니다

프로필 이미지
jshwang2
2022-02-22 12:13:36
1244
글번호 156586
답변완료

첨부 이미지

안녕하세요~ netprofit 관련해 다시 문의드립니다 첨부한 파일에 보시면 신호가격 13663.00, 13659.50, 13656.25에 각각 2계약씩 매도 진입해(평균 13659.58에 6계약) 신호가격 13669.75에 청산되었습니다 평단가 13658.58 기준으로 -10.167 포인트 계약수 6계약을 곱한다면 -61 포인트 틱으론 -40.66틱 (계약수 반영시 -244틱) 손익 금액으론 총 -122 usd 입니다 (마이크로 나스닥이라 0.5$) 하지만 netprofit은 -310.40으로 이 수치들과 전혀 상관없는 숫자입니다 시스템 시작하는 시간부터 거래가 되도록 수식을 짜 netprofit은 0에서 시작했습니다 값도 일치하지 않고 수수료, 슬리피지를 고려해도 netprofit이 소폭 더 작아야 하는데 가능한 모든 값들보다 오히려 몇배가 큰 상황이고 여러번 체크해봐도 동일한 현상이 반복됩니다 관련해 확인 부탁드리겠습니다 혹시 몰라 사용중인 수식 아래에 첨부합니다 감사합니다! ---------- input : TT(95600), TD(20220222), MDD(200000) ; var : HB(13738.5), LB(13663), Hx(20000), Lx(1); var : e60(0), Hcount(0), Lcount(0),B(0),S(0),cnt(0),T1(0), Hstate(true), Lstate(true), N(0), unitP(0), exitC(0), rHB(0), rLB(0); N = Highest(ATr(14), 100); unitP = floor(MDD/(N*5*4*600)); exitC = (2-(MaxEntries-1)/2)*N; e60 = Ema(C,60); if Condition1 == False and sDate >= TD and sTime >= TT Then { Condition1 = true; Hcount = 0; Lcount = 0; T1 = TotalTrades; } if Condition1 == true Then { B = 0; S = 0; if TotalTrades-T1 > 0 Then { For cnt = 1 to TotalTrades-T1 { if MarketPosition(cnt) == 1 Then B = B+1; if MarketPosition(cnt) == -1 Then S = S+1; } } Hcount = B + IFf(MarketPosition == 1,1,0); Lcount = S + IFf(MarketPosition == -1,1,0); if B>0 && B == Hcount then HB = rHB; if S>0 && S == Lcount then LB = rLB; if MarketPosition <= 0 and Hstate == true then { Buy("b1",AtStop,HB,unitP); Buy("b2",AtStop,HB+0.5*N,unitP); Buy("b3",AtStop,HB+N,unitP); Buy("b4",AtStop,HB+1.5*N,unitP); } if MarketPosition >= 0 and Lstate == true then { Sell("s1",AtStop,LB,unitP); Sell("s2",AtStop,LB-0.5*N,unitP); Sell("s3",AtStop,LB-N,unitP); Sell("s4",AtStop,LB-1.5*N,unitP); } if marketposition ==1 Then { rHB = Highest(H, BarsSinceEntry+1) ; if rHB < HB+0.5*N Then Buy("b2.",AtStop,HB+0.5*N,unitP); if rHB < HB+N Then Buy("b3.",AtStop,HB+N,unitP); if rHB < HB+1.5*N Then Buy("b4.",AtStop,HB+1.5*N,unitP); if e60 < HB+2*N Then Exitlong("exitB1", atstop, HB-exitC); if e60 >= HB+2*N and CrossDown(close, e60) Then { ExitLong("exitB2") ; Hstate = false ; } Exitlong("exitB3", AtLimit, Hx); } if marketposition == -1 Then { rLB = Lowest(L, BarsSinceEntry+1); if rLB > LB-0.5*N Then Sell("s2.",AtStop,LB-0.5*N,unitP); if rLB > LB-N Then Sell("s3.",AtStop,LB-N,unitP); if rLB > LB-1.5*N Then Sell("s4.",AtStop,LB-1.5*N,unitP); if e60 > LB-2*N Then ExitShort("exitS1", atstop, LB+exitC); if e60 <= LB-2*N and CrossUp(close, e60) Then { ExitShort("exitS2"); Lstate = false ; } exitshort("exitS3", AtLimit, Lx); } if Hcount >= 3 Then Hstate = False; if Lcount >= 3 Then Lstate = False; if H >= Hx then Hstate = false; if L <= Lx then Lstate = false; }
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2022-02-22 12:47:35

안녕하세요 예스스탁입니다. 첨부된 그림과 같이 정확히 계산되고 있습니다. 설정창의 비용/수량탭에서 지정한 수수료 및 슬리피지 설정을 확인하시기 바랍니다. 이전 문의에 답변을 드린 부분입니다. 설정창 비용/수량탭의 수수료와 슬리피지는 실제거래에서 어느정도 수수료와 슬리피지가 발생할지 알 수 없으므로 직접 일정값을 지정해 각 거래에 발생 가능한 비용을 차감해서 리포트의 손익을 계산하기 위함입니다. 모두 0으로 하시고 값확인하시기 바랍니다. 즐거운 하루 되세요 > jshwang2 님이 쓴 글입니다. > 제목 : 수식문의드립니다 > 안녕하세요~ netprofit 관련해 다시 문의드립니다 첨부한 파일에 보시면 신호가격 13663.00, 13659.50, 13656.25에 각각 2계약씩 매도 진입해(평균 13659.58에 6계약) 신호가격 13669.75에 청산되었습니다 평단가 13658.58 기준으로 -10.167 포인트 계약수 6계약을 곱한다면 -61 포인트 틱으론 -40.66틱 (계약수 반영시 -244틱) 손익 금액으론 총 -122 usd 입니다 (마이크로 나스닥이라 0.5$) 하지만 netprofit은 -310.40으로 이 수치들과 전혀 상관없는 숫자입니다 시스템 시작하는 시간부터 거래가 되도록 수식을 짜 netprofit은 0에서 시작했습니다 값도 일치하지 않고 수수료, 슬리피지를 고려해도 netprofit이 소폭 더 작아야 하는데 가능한 모든 값들보다 오히려 몇배가 큰 상황이고 여러번 체크해봐도 동일한 현상이 반복됩니다 관련해 확인 부탁드리겠습니다 혹시 몰라 사용중인 수식 아래에 첨부합니다 감사합니다! ---------- input : TT(95600), TD(20220222), MDD(200000) ; var : HB(13738.5), LB(13663), Hx(20000), Lx(1); var : e60(0), Hcount(0), Lcount(0),B(0),S(0),cnt(0),T1(0), Hstate(true), Lstate(true), N(0), unitP(0), exitC(0), rHB(0), rLB(0); N = Highest(ATr(14), 100); unitP = floor(MDD/(N*5*4*600)); exitC = (2-(MaxEntries-1)/2)*N; e60 = Ema(C,60); if Condition1 == False and sDate >= TD and sTime >= TT Then { Condition1 = true; Hcount = 0; Lcount = 0; T1 = TotalTrades; } if Condition1 == true Then { B = 0; S = 0; if TotalTrades-T1 > 0 Then { For cnt = 1 to TotalTrades-T1 { if MarketPosition(cnt) == 1 Then B = B+1; if MarketPosition(cnt) == -1 Then S = S+1; } } Hcount = B + IFf(MarketPosition == 1,1,0); Lcount = S + IFf(MarketPosition == -1,1,0); if B>0 && B == Hcount then HB = rHB; if S>0 && S == Lcount then LB = rLB; if MarketPosition <= 0 and Hstate == true then { Buy("b1",AtStop,HB,unitP); Buy("b2",AtStop,HB+0.5*N,unitP); Buy("b3",AtStop,HB+N,unitP); Buy("b4",AtStop,HB+1.5*N,unitP); } if MarketPosition >= 0 and Lstate == true then { Sell("s1",AtStop,LB,unitP); Sell("s2",AtStop,LB-0.5*N,unitP); Sell("s3",AtStop,LB-N,unitP); Sell("s4",AtStop,LB-1.5*N,unitP); } if marketposition ==1 Then { rHB = Highest(H, BarsSinceEntry+1) ; if rHB < HB+0.5*N Then Buy("b2.",AtStop,HB+0.5*N,unitP); if rHB < HB+N Then Buy("b3.",AtStop,HB+N,unitP); if rHB < HB+1.5*N Then Buy("b4.",AtStop,HB+1.5*N,unitP); if e60 < HB+2*N Then Exitlong("exitB1", atstop, HB-exitC); if e60 >= HB+2*N and CrossDown(close, e60) Then { ExitLong("exitB2") ; Hstate = false ; } Exitlong("exitB3", AtLimit, Hx); } if marketposition == -1 Then { rLB = Lowest(L, BarsSinceEntry+1); if rLB > LB-0.5*N Then Sell("s2.",AtStop,LB-0.5*N,unitP); if rLB > LB-N Then Sell("s3.",AtStop,LB-N,unitP); if rLB > LB-1.5*N Then Sell("s4.",AtStop,LB-1.5*N,unitP); if e60 > LB-2*N Then ExitShort("exitS1", atstop, LB+exitC); if e60 <= LB-2*N and CrossUp(close, e60) Then { ExitShort("exitS2"); Lstate = false ; } exitshort("exitS3", AtLimit, Lx); } if Hcount >= 3 Then Hstate = False; if Lcount >= 3 Then Lstate = False; if H >= Hx then Hstate = false; if L <= Lx then Lstate = false; }