커뮤니티

수식 문의 드립니다.

프로필 이미지
마녀58
2024-04-01 16:49:06
791
글번호 178144
답변완료
INPUT:capital(21000000),st(150000); VARS:ratio(0),risk(0),inn(0),CH(0),CL(0),count(0),DC(0),bet(0),bet2(0),account(0),HH(0),LL(0),nor(0),jj(0),jh(0),hhl(0),llh(0),hhhl(0),lllh(0); bet = int(min((Capital/C),ratio*(capital*inn)/risk)); ratio = data3(C)/C; risk = jh-hhl; inn =0.01; if Bdate != Bdate[1] Then count = 0; if CurrentContracts > CurrentContracts[1] Then count = count +1; Nor=(data3(Highd(1))+data3(lowd(1))+data3(Closed(1)))/3; jh=2*Nor-data3(lowd(1)); if CrossUp(data3(C),JH) Then Begin HHL =data3(L); End; IF Data3(opend(0))<JH and crossup(data3(C),JH) and count==0 and stime < st THEN BUY("B1", AtMarket,def,bet); if EntryName=="B1" and MarketPosition==1 and data3(C)<hhl Then ExitLong("BX1",AtMarket); 적용종목은 KODEX레버리지이고 data3는 kospi200 선물입니다. 핵심 수식을 보호하기 위해 조금 수정하였습니다. 시스템 자체의 신호는 제대로 나오고 있으나 비율 베팅을 위해 적은 구문이 제대로 적용이 되지 않는 것 같아서 문의드립니다. #bet=매수숫자 bet = int(min((Capital/C),ratio*(capital*inn)/risk)); ratio = data3(C)/C; risk = jh-hhl; inn =0.01; 위 수식의 의도는 총자본금(capital)을 사용하여 몇주(bet)를 살것인지를 정하는 것입니다. 최대치는 자본을 종가로 나눈 것이고 최소치는 ratio*(capital*inn)/risk 입니다. 위의 수식을 만들게 된 배경은 진입 자리 JH와 손절 자리 HHL의 차이를 risk를 1%로 맞추고 risk를 ETF가격으로 비율전환하여 몇주를 베팅할 것인지를 정하기 위함입니다. 식으로 정리 하자면 risk*(C/data3(C))*bet < (capital*0.01) bet< (data3(C)/C)*(capital*0.01)/risk 이와 같은 개념으로 bet = int(min((Capital/C),ratio*(capital*inn)/risk)); 와 같은 수식을 작성하게 되었습니다. 즉 jh와 hhl의 폭이 적으면 베팅을 크게 폭이 크면 베팅을 적게하도록 작성한 것입니다. 그런데 시스템에 적용했을 때와 시뮬레이션을 돌렸을 때 베팅숫자가 다르게 나타납니다. 확인 및 조언 부탁드립니다. 감사합니다.
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2024-04-02 13:31:41

안녕하세요 예스스탁입니다. 1 수식은 위에서 아래로 읽어 들어가게 됩니다. 어떤 계산식에서 변수를 사용하면 해당 변수는 그보다 위에서 계산이 되어야 합니다. 현재 작성하신 식에서 bet이 최상단에 있는데 bet계산에 사용되는 값들은 모두 그보다 아래에 있습니다. 이런 경우 해당 계산식에서 사용되는 값은 현재봉 값이 아닌 전봉의 값이 됩니다. 이런 변수들이 여러개 있습니다. 2 hhl은 data3종가가 JH를 돌파만 하면 변경이 되는데 진입시점의 조건과 조금 다른부분이 있고 진입이후 돌파가 발생하면 hhl값은 변경이 되고 청산시점도 변경이 됩니다. 진입식조건이 만족할때 계산되게 하시면 됩니다. INPUT:capital(21000000),st(150000); VARS:ratio(0),risk(0),inn(0),CH(0),CL(0),count(0),DC(0),bet(0),bet2(0),account(0),HH(0),LL(0),nor(0),jj(0),jh(0),hhl(0),llh(0),hhhl(0),lllh(0); if Bdate != Bdate[1] Then count = 0; if CurrentContracts > CurrentContracts[1] Then count = count +1; Nor=(data3(Highd(1))+data3(lowd(1))+data3(Closed(1)))/3; jh=2*Nor-data3(lowd(1)); IF MarketPosition == 0 and Data3(opend(0))<JH and crossup(data3(C),JH) and count==0 and stime < st THEN { HHL =data3(L); ratio = data3(C)/C; risk = jh-hhl; inn =0.01; bet = int(min((Capital/C),ratio*(capital*inn)/risk)); BUY("B1", AtMarket,def,bet); } if EntryName=="B1" and MarketPosition==1 and data3(C)<hhl Then ExitLong("BX1",AtMarket); 3 올려주신 bet계산식이 risk가 -값인 경우 수량이 음수가 나오게 됩니다. risk계산에 절대값을 사용하시거나 하셔서 양수만 나오게 하셔야 합니다. 해당 부분은 직접 내용을 살펴보셔야 합니다. 즐거운 하루되세요 > 마녀58 님이 쓴 글입니다. > 제목 : 수식 문의 드립니다. > INPUT:capital(21000000),st(150000); VARS:ratio(0),risk(0),inn(0),CH(0),CL(0),count(0),DC(0),bet(0),bet2(0),account(0),HH(0),LL(0),nor(0),jj(0),jh(0),hhl(0),llh(0),hhhl(0),lllh(0); bet = int(min((Capital/C),ratio*(capital*inn)/risk)); ratio = data3(C)/C; risk = jh-hhl; inn =0.01; if Bdate != Bdate[1] Then count = 0; if CurrentContracts > CurrentContracts[1] Then count = count +1; Nor=(data3(Highd(1))+data3(lowd(1))+data3(Closed(1)))/3; jh=2*Nor-data3(lowd(1)); if CrossUp(data3(C),JH) Then Begin HHL =data3(L); End; IF Data3(opend(0))<JH and crossup(data3(C),JH) and count==0 and stime < st THEN BUY("B1", AtMarket,def,bet); if EntryName=="B1" and MarketPosition==1 and data3(C)<hhl Then ExitLong("BX1",AtMarket); 적용종목은 KODEX레버리지이고 data3는 kospi200 선물입니다. 핵심 수식을 보호하기 위해 조금 수정하였습니다. 시스템 자체의 신호는 제대로 나오고 있으나 비율 베팅을 위해 적은 구문이 제대로 적용이 되지 않는 것 같아서 문의드립니다. #bet=매수숫자 bet = int(min((Capital/C),ratio*(capital*inn)/risk)); ratio = data3(C)/C; risk = jh-hhl; inn =0.01; 위 수식의 의도는 총자본금(capital)을 사용하여 몇주(bet)를 살것인지를 정하는 것입니다. 최대치는 자본을 종가로 나눈 것이고 최소치는 ratio*(capital*inn)/risk 입니다. 위의 수식을 만들게 된 배경은 진입 자리 JH와 손절 자리 HHL의 차이를 risk를 1%로 맞추고 risk를 ETF가격으로 비율전환하여 몇주를 베팅할 것인지를 정하기 위함입니다. 식으로 정리 하자면 risk*(C/data3(C))*bet < (capital*0.01) bet< (data3(C)/C)*(capital*0.01)/risk 이와 같은 개념으로 bet = int(min((Capital/C),ratio*(capital*inn)/risk)); 와 같은 수식을 작성하게 되었습니다. 즉 jh와 hhl의 폭이 적으면 베팅을 크게 폭이 크면 베팅을 적게하도록 작성한 것입니다. 그런데 시스템에 적용했을 때와 시뮬레이션을 돌렸을 때 베팅숫자가 다르게 나타납니다. 확인 및 조언 부탁드립니다. 감사합니다.