커뮤니티
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();
}
위의 수식에서 당일 장중 상한가, 하한가로 인하여 청산이 한번이라도 발생하면
(물론 상하한가 청산식이 추가되어야겠지요)
추가로 진입을 하지 못하게 하려면 어떻게 수식을 작성하여야 하는지요..
감사합니다.
그럼 즐거운 주말되시기를 바랍니다~