커뮤니티
현재가가 상한가이면 종가청산을 해제
2015-04-16 15:32:46
164
글번호 85107
현재가가 상한가이면 SetStopEndofday(144900); 를 취소하고
아니면 다시 SetStopEndofday(144900); 을 셋팅하는 구문을 알려주세요~
현재가가 상한가라는걸 불러오는 함수같은게 있는지요~
답변 1
예스스탁 예스스탁 답변
2015-04-16 17:39:48
안녕하세요
예스스탁입니다.
문의하신 내용 SetStopEndofday(144900);는 삭제하시고
아래수식으로 대체하셔야 합니다.
if문으로 조건만족여부 판단해야하며
if문은 다음봉 시가 수신되면 완성되므로
시간을 정규장 마지막봉 전봉의 시간으로 지정하셔야 합니다.
아래식은 1분봉을 염두에 두고 14시 48분에 상한가여부 판단해
다음봉(14시49분봉)시가수신시에 신호가 발생하게 작성했습니다.
만약 5분봉이시면 144000으로 지정하시면 됩니다.
상한가는 따로 함수로 제공되지 않습니다.
아래수식이 상한가를 계산하는 식입니다.
var : 상한가(0), UpLimit(0);
var : up1(0), up2(0), up3(0), up4(0), up5(0),up6(0),Up7(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;
up7 = int(UpLimit/1+0.00001)*1;
}
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;
up7 = int(UpLimit/1+0.00001)*1;
}
}
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;
up7 = int(UpLimit/1+0.00001)*1;
}
if CodeCategory() == 1 || CodeCategory() == 2 then {
if sdate < 20101004 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 If BP >= 1000 Then
상한가 = iff(up5>=5000, up5, up6);
Else
상한가 = iff(up6>=1000, up6, up6);
}
Else{
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 If BP >= 1000 Then
상한가 = iff(up5>=5000, up5, up6);
Else
상한가 = iff(up6>=1000, up6, up7);
}
}
else if CodeCategory() == 8 || CodeCategory() == 9 then { // ETF
상한가 = up6;
}
}
if stime == 144800 and C < 상한가 Then
exitlong("bx",atmarket);
즐거운 하루되세요
> HI_we***** 님이 쓴 글입니다.
> 제목 : 현재가가 상한가이면 종가청산을 해제
> 현재가가 상한가이면 SetStopEndofday(144900); 를 취소하고
아니면 다시 SetStopEndofday(144900); 을 셋팅하는 구문을 알려주세요~
현재가가 상한가라는걸 불러오는 함수같은게 있는지요~
다음글
이전글