커뮤니티

수식작성 부탁드립니다

프로필 이미지
무명
2012-05-02 16:27:09
459
글번호 50715
답변완료
1. 20일 이내에 상한가가 1번 이상 있었다면 매수진입하도록 수식 부탁드립니다. 2. 분기청산..즉 포지션이 있다면 3,6,9,12월 달의 첫거래일에 청산되도록 수식 부탁드립니다. 3. 아래 수식에서 BasePrice를 close로 바꾸어도 같은 결과인가요? input : 투자총액(10000000) ; Var : 매수량1(0),매수량2(0),매수량3(0); if CodeCategory == 1 Then{ #코스피 if BasePrice < 50000 Then{ 매수량1 = int(int((투자총액*0.5)/C)/10)*10; 매수량2 = int(int((투자총액*0.3)/C)/10)*10; 매수량3 = int(int((투자총액*0.2)/C)/10)*10; } Else{ 매수량1 = int((투자총액*0.5)/C); 매수량2 = int((투자총액*0.3)/C); 매수량3 = int((투자총액*0.2)/C); } } if CodeCategory == 2 Then{ 매수량1 = int((투자총액*0.5)/C); 매수량2 = int((투자총액*0.3)/C); 매수량3 = int((투자총액*0.2)/C); } 4. 주식시스템으로 10분봉을 사용하는데 전략차트가 3개월정도만 지원되어 주식포지션이 3개월이 지나도록 청산되지 않고 보유중이면 3개월이 지나면서 이전 신호는 사라지고 전략차트에 새로운 신호가 발생하는 문제가 있습니다. 1년이상 차트에 시뮬레이션 할때와 차이가 발생하는 거죠... 해결 방법이 없을 까요? 이런 문제를 해결하려면 전략차트 지원 봉개수를 10000봉정도 지원해주면 될듯 한데요... 아니면 봉갯수가 아니고 과거 어느 일정기간 부터 지원해준 다던가요!
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2012-05-02 17:03:34

안녕하세요 예스스탁입니다. 1. 분봉이시면 아래식 사용하시면 됩니다. 당일 제외 과거 20일동안 상한가가 한번이라도 발생했으면 매수하는 식입니다. 다만 차트에 20일치의 데이터가 있어야 합니다. input : P(20); var : 상한가(0), UpLimit(0); var : up1(0), up2(0), up3(0), up4(0), up5(0),up6(0),cnt(0),count(0),sum(0); Array : cond[50](false); if date >= 19981207 then { if date < 20050328 && CodeCategory() == 2 then UpLimit = (BP[0] * 1.12); Else UpLimit = (BP[0] * 1.15); if CodeCategory() == 2 then { if date >= 20030721 then { up1 = int(UpLimit/100+0.00001)*100; up2 = int(UpLimit/100+0.00001)*100; up3 = int(UpLimit/100+0.00001)*100; up4 = int(UpLimit/50+0.00001)*50; up5 = int(UpLimit/10+0.00001)*10; up6 = int(UpLimit/5+0.00001)*5; } else { up1 = int(UpLimit/1000+0.00001)*1000; up2 = int(UpLimit/500+0.00001)*500; up3 = int(UpLimit/100+0.00001)*100; up4 = int(UpLimit/50+0.00001)*50; up5 = int(UpLimit/10+0.00001)*10; up6 = int(UpLimit/10+0.00001)*10; } } Else { up1 = int(UpLimit/1000+0.00001)*1000; up2 = int(UpLimit/500+0.00001)*500; up3 = int(UpLimit/100+0.00001)*100; up4 = int(UpLimit/50+0.00001)*50; up5 = int(UpLimit/10+0.00001)*10; up6 = int(UpLimit/5+0.00001)*5; } if CodeCategory() == 1 || CodeCategory() == 2 then { If BP >= 500000 Then 상한가 = up1; Else If BP >= 100000 Then 상한가 = iff(up2>=500000, up1, up2); Else If BP >= 50000 Then 상한가 = iff(up3>=100000, up2, up3); Else If BP >= 10000 Then 상한가 = iff(up4>=50000, up3, up4); Else If BP >= 5000 Then 상한가 = iff(up5>=10000, up4, up5); Else 상한가 = iff(up6>=5000, up5, up6); } else if CodeCategory() == 8 || CodeCategory() == 9 then { // ETF 상한가 = up6; } } if date != date[1] Then{ cond[0] = false; for cnt = 1 to 50{ Cond[cnt] = cond[cnt-1][1]; } } if H >= 상한가 Then cond[0] = true; sum = 0; for count = 1 to P{ if cond[count] == true Then sum = sum+1; } if sum >= 1 Then buy(); 차트가 일봉이시면 아래식 이용하시면 됩니다. input : P(20); var : 상한가(0), UpLimit(0); var : up1(0), up2(0), up3(0), up4(0), up5(0),up6(0); if date >= 19981207 then { if date < 20050328 && CodeCategory() == 2 then UpLimit = (BP[0] * 1.12); Else UpLimit = (BP[0] * 1.15); if CodeCategory() == 2 then { if date >= 20030721 then { up1 = int(UpLimit/100+0.00001)*100; up2 = int(UpLimit/100+0.00001)*100; up3 = int(UpLimit/100+0.00001)*100; up4 = int(UpLimit/50+0.00001)*50; up5 = int(UpLimit/10+0.00001)*10; up6 = int(UpLimit/5+0.00001)*5; } else { up1 = int(UpLimit/1000+0.00001)*1000; up2 = int(UpLimit/500+0.00001)*500; up3 = int(UpLimit/100+0.00001)*100; up4 = int(UpLimit/50+0.00001)*50; up5 = int(UpLimit/10+0.00001)*10; up6 = int(UpLimit/10+0.00001)*10; } } Else { up1 = int(UpLimit/1000+0.00001)*1000; up2 = int(UpLimit/500+0.00001)*500; up3 = int(UpLimit/100+0.00001)*100; up4 = int(UpLimit/50+0.00001)*50; up5 = int(UpLimit/10+0.00001)*10; up6 = int(UpLimit/5+0.00001)*5; } if CodeCategory() == 1 || CodeCategory() == 2 then { If BP >= 500000 Then 상한가 = up1; Else If BP >= 100000 Then 상한가 = iff(up2>=500000, up1, up2); Else If BP >= 50000 Then 상한가 = iff(up3>=100000, up2, up3); Else If BP >= 10000 Then 상한가 = iff(up4>=50000, up3, up4); Else If BP >= 5000 Then 상한가 = iff(up5>=10000, up4, up5); Else 상한가 = iff(up6>=5000, up5, up6); } else if CodeCategory() == 8 || CodeCategory() == 9 then { // ETF 상한가 = up6; } } var1 = countif(H>=상한가,P); if var1[1] >= 1 Then buy(); 2. var1 = round(int(FracPortion(sdate/10000)*100),0); if date > date[1]+30 and(var1 == 3 or var1 == 6 or var1 == 9 or var1 == 12) Then{ ExitLong(); ExitShort(); } 3. 코스피에서 1주 단위가 기준가로 구분되므로 baseprice를 이용하셔야 합니다. 4, 해당 부분은 건의해 보도록 하겠습니다. 즐거운 하루되세요 > 무명 님이 쓴 글입니다. > 제목 : 수식작성 부탁드립니다 > 1. 20일 이내에 상한가가 1번 이상 있었다면 매수진입하도록 수식 부탁드립니다. 2. 분기청산..즉 포지션이 있다면 3,6,9,12월 달의 첫거래일에 청산되도록 수식 부탁드립니다. 3. 아래 수식에서 BasePrice를 close로 바꾸어도 같은 결과인가요? input : 투자총액(10000000) ; Var : 매수량1(0),매수량2(0),매수량3(0); if CodeCategory == 1 Then{ #코스피 if BasePrice < 50000 Then{ 매수량1 = int(int((투자총액*0.5)/C)/10)*10; 매수량2 = int(int((투자총액*0.3)/C)/10)*10; 매수량3 = int(int((투자총액*0.2)/C)/10)*10; } Else{ 매수량1 = int((투자총액*0.5)/C); 매수량2 = int((투자총액*0.3)/C); 매수량3 = int((투자총액*0.2)/C); } } if CodeCategory == 2 Then{ 매수량1 = int((투자총액*0.5)/C); 매수량2 = int((투자총액*0.3)/C); 매수량3 = int((투자총액*0.2)/C); } 4. 주식시스템으로 10분봉을 사용하는데 전략차트가 3개월정도만 지원되어 주식포지션이 3개월이 지나도록 청산되지 않고 보유중이면 3개월이 지나면서 이전 신호는 사라지고 전략차트에 새로운 신호가 발생하는 문제가 있습니다. 1년이상 차트에 시뮬레이션 할때와 차이가 발생하는 거죠... 해결 방법이 없을 까요? 이런 문제를 해결하려면 전략차트 지원 봉개수를 10000봉정도 지원해주면 될듯 한데요... 아니면 봉갯수가 아니고 과거 어느 일정기간 부터 지원해준 다던가요!