커뮤니티

AtLimit 에 관한 질문입니다. / 상하한가시 추가진입 제어

프로필 이미지
새로운세상
2011-01-07 10:43:28
578
글번호 34758
답변완료
안녕하세요.. 주문형태 관련하여 질문드립니다. 1) sell("S",AtLimit,DayOpen*1.001); 이라는 수식에서 당일시가가 277pt 였다고 가정하면, 277*1.001=277.277 이므로 실제매매에서 277.30pt를 터치하는 순간 매도주문이 실행되는 것이 맞는지요? (실제매매이므로 주문실행은 +-5호가로 설정) 2) 상기 수식이 적용된 시스템의 시뮬레이션에서 '조건만족 즉시'와 '봉 완성시' 두가지를 적용해 본 결과 성과보고서상 결과치가 동일한데, 두개의 결과치가 동일한 것이 정상인지요? 3) AtLimit에서 시뮬레이션상 결과치는 '조건만족 즉시'의 값을 기준으로 하는지 '봉 완성시'의 값을 기준으로 하는지요? (만약 '봉 완성시'의 값을 기준으로 한다면 '조건만족 즉시'의 값을 기준으로 성과보고서를 볼 수는 없는지요... 반대로 '조건만족 즉시'를 기준으로 한다면 '봉 완성시'를 기준으로 성과보고서를 볼 수는 없는지요) ------------------------------------ 한가지 추가 질문 드립니다. if 조건 then { buy(); sell(); } 위의 수식에서 당일 장중 상한가, 하한가로 인하여 청산이 한번이라도 발생하면 (물론 상하한가 청산식이 추가되어야겠지요) 추가로 진입을 하지 못하게 하려면 어떻게 수식을 작성하여야 하는지요.. 감사합니다. 그럼 즐거운 주말되시기를 바랍니다~
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2011-01-07 14:23:19

안녕하세요 예스스탁입니다. 1. 예 맞습니다. 2.3 시스템 트레이딩 설정창의 강제청산 탭 하단의 "조건만족즉시"와 "봉완성시"는 강제청산에 해당 되는 내용입니다. 즉 수식에서 buy,sell,exitling,exitshort 주문함수는 관련이 없습니다. setstop~으로 시작되는 강제청산함수를 사용하시거나 강제청산 설정창에서 설정한 항목에만 적용되는 내용이므로 강제청산을 설정하지 않을 경우 관련이 없습니다. 4-1 현물 var : 하한가(0), DnLimit(0); var : aa(0), bb(0), cc(0), dd(0), ee(0),ff(0); var : 상한가(0), UpLimit(0); var : aaa(0), bbb(0), ccc(0), ddd(0), eee(0),fff(0); if date >= 19981207 then { //거래소 98년 12월7일 가격제한폭 15%로 확대 변경됨 if date < 20050328 && CodeCategory() == 2 then //코스닥 2005년 3월28일 이전은 가격제한폭 12% DnLimit = (BP * 0.12); Else //코스닥 2005년 3월28일 이후 및 거래소98년12월 7일이후 15% DnLimit = (BP * 0.15); if CodeCategory() == 2 then { //코스닥 호가단위 ( 2003년 7월21일에 호가 단위 변경됨) if date >= 20030721 then { aa = int(DnLimit/100)*100; // 500,000원 이상의 하한가 호가 bb = int(DnLimit/100)*100; // 100,000원 이상 ~ 500,000원 미만의 하한가 호가 cc = int(DnLimit/100)*100; // 50,000원 이상 ~ 100,000원 미만의 하한가 호가 dd = int(DnLimit/50)*50; // 10,000원 이상 ~ 50,000원 미만의 하한가 호가 ee = int(DnLimit/10)*10; // 5,000원 이상 ~ 10,000원 미만의 하한가 호가 ff = int(DnLimit/5)*5; // 5,000원 미만의 하한가 호가 } else { // 코스닥 2003년7월21일 이전 aa = int(DnLimit/1000)*1000; bb = int(DnLimit/500)*500; cc = int(DnLimit/100)*100; dd = int(DnLimit/50)*50; ee = int(DnLimit/10)*10; ff = int(DnLimit/10)*10; } } Else { //거래소 호가단위 aa = int(DnLimit/1000)*1000; bb = int(DnLimit/500)*500; cc = int(DnLimit/100)*100; dd = int(DnLimit/50)*50; ee = int(DnLimit/10)*10; ff = int(DnLimit/5)*5; } if CodeCategory() == 1 or CodeCategory() == 2 then { //kospi, kosdaq If BP >= 500000 Then 하한가 = BP-aa; Else If BP >= 100000 Then 하한가 = BP-bb; Else If BP >= 50000 Then 하한가 = BP-cc; Else If BP >= 10000 Then 하한가 = BP-dd; Else If BP >= 5000 Then 하한가 = BP-ee; Else 하한가 = BP-ff; } else if CodeCategory() == 8 or CodeCategory() == 9 then { //ETF 하한가 = BP-ff; } } 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 { aaa = int(UpLimit/100+0.00001)*100; bbb = int(UpLimit/100+0.00001)*100; ccc = int(UpLimit/100+0.00001)*100; ddd = int(UpLimit/50+0.00001)*50; eee = int(UpLimit/10+0.00001)*10; fff = int(UpLimit/5+0.00001)*5; } else { aaa = int(UpLimit/1000+0.00001)*1000; bbb = int(UpLimit/500+0.00001)*500; ccc = int(UpLimit/100+0.00001)*100; ddd = int(UpLimit/50+0.00001)*50; eee = int(UpLimit/10+0.00001)*10; fff = int(UpLimit/10+0.00001)*10; } } Else { aaa = int(UpLimit/1000+0.00001)*1000; bbb = int(UpLimit/500+0.00001)*500; ccc = int(UpLimit/100+0.00001)*100; ddd = int(UpLimit/50+0.00001)*50; eee = int(UpLimit/10+0.00001)*10; fff = int(UpLimit/5+0.00001)*5; } if CodeCategory() == 1 || CodeCategory() == 2 then { If BP >= 500000 Then 상한가 = aaa; Else If BP >= 100000 Then 상한가 = iff(bbb>=500000, aaa, bbb); Else If BP >= 50000 Then 상한가 = iff(ccc>=100000, bbb, ccc); Else If BP >= 10000 Then 상한가 = iff(ddd>=50000, ccc, ddd); Else If BP >= 5000 Then 상한가 = iff(eee>=10000, ddd, eee); Else 상한가 = iff(fff>=5000, eee, fff); } else if CodeCategory() == 8 || CodeCategory() == 9 then { // ETF 상한가 = fff; } } Condition1 = ExitDate(1) == sdate And (IsExitName("상한가청산",1) == true or IsExitName("하한가청산",1) == true); if Condition1 == false and 조건 then { buy(); sell(); } #현물 if MarketPosition == 1 Then{ exitlong("상한가청산",Atlimit,상한가); exitlong("하한가청산",AtStop,하한가); } 4-2 선물 Condition1 = ExitDate(1) == sdate And (IsExitName("선물매수상한가청산",1) == true or IsExitName("선물매수하한가청산",1) == true or IsExitName("선물매도상한가청산",1) == true or IsExitName("선물매도하한가청산",1) == true); if Condition1 == false and 조건 then { buy(); sell(); } #선물 If MarketPosition == 1 Then{ ExitLong("선물매수상한청산",atlimit,int(bp*1.1/0.05+0.00001)*0.05); ExitLong("선물매수하한청산",AtStop,BP-int(BP*0.1/0.05)*0.05); } if MarketPosition() == -1 Then{ ExitShort("선물매도하한청산",atlimit,BP-int(BP*0.1/0.05)*0.05); ExitShort("선물매도상한청산",AtStop,int(bp*1.1/0.05+0.00001)*0.05); } 즐거운 하루되세요 > 새로운세상 님이 쓴 글입니다. > 제목 : AtLimit 에 관한 질문입니다. / 상하한가시 추가진입 제어 > 안녕하세요.. 주문형태 관련하여 질문드립니다. 1) sell("S",AtLimit,DayOpen*1.001); 이라는 수식에서 당일시가가 277pt 였다고 가정하면, 277*1.001=277.277 이므로 실제매매에서 277.30pt를 터치하는 순간 매도주문이 실행되는 것이 맞는지요? (실제매매이므로 주문실행은 +-5호가로 설정) 2) 상기 수식이 적용된 시스템의 시뮬레이션에서 '조건만족 즉시'와 '봉 완성시' 두가지를 적용해 본 결과 성과보고서상 결과치가 동일한데, 두개의 결과치가 동일한 것이 정상인지요? 3) AtLimit에서 시뮬레이션상 결과치는 '조건만족 즉시'의 값을 기준으로 하는지 '봉 완성시'의 값을 기준으로 하는지요? (만약 '봉 완성시'의 값을 기준으로 한다면 '조건만족 즉시'의 값을 기준으로 성과보고서를 볼 수는 없는지요... 반대로 '조건만족 즉시'를 기준으로 한다면 '봉 완성시'를 기준으로 성과보고서를 볼 수는 없는지요) ------------------------------------ 한가지 추가 질문 드립니다. if 조건 then { buy(); sell(); } 위의 수식에서 당일 장중 상한가, 하한가로 인하여 청산이 한번이라도 발생하면 (물론 상하한가 청산식이 추가되어야겠지요) 추가로 진입을 하지 못하게 하려면 어떻게 수식을 작성하여야 하는지요.. 감사합니다. 그럼 즐거운 주말되시기를 바랍니다~