답변완료
상한가 검색 예제코드가 동작하지 않아요
https://www.yesstock.com/Board/View.asp?db=board100036&Ext=0&startpage=1&pageno=1&num=164938
해당 예제를 그대로 가져와 검색실행하면
캡쳐사진과 같이 0%에서 변화가 없어요
32, 64비트 모두 동일하게 안되요
몇달전에는 분명 잘되던 코드였거든요
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 if date >= 20050328 and date < 20150615 Then
UpLimit = (BP[0] * 1.15);
Else
UpLimit = (BP[0] * 1.30);
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 CountIf(H >= 상한가,5) >= 1 Then
Find(1);
2023-06-26
1518
글번호 170108
종목검색
답변완료
시가를 기준으로 일정한 범위를 몇번 터치하는지 수를 세는 수식을 알고 싶습니다.
언제나 자세한 코딩으로 알려주셔서 감사드립니다.
시가를 기준으로 일정한 범위를 몇번 터치하는지 수를 세는
수식을 작성하고 싶은데요.
크루드오일을 예시로 설명드리겠습니다.
1. 당일시가를 변수에 할당(var1)
2. 시가를 기준으로 위와 아래로 20틱 구간을 각각 할당함
3. 위쪽 20틱은 var2, 아래쪽 20틱은 var3.
3. 시가 이후로 20틱 범위를 먼저 닿는 곳부터 횟수세기 시작.
4. 위쪽이 먼저 닿았다면 var2 = 1, var3 = 0.
5. 위쪽을 닿은 후에 아래쪽에 닿으면 아래쪽도 횟수추가. var2 = 1, var3 = 1.
6. 위쪽을 닿은 후에 하락했는데 아래쪽 터치하지 않고 다시 올라가면 횟수 추가 하지 않음.var2 = 1, var3 = 0.
7. 위쪽을 닿은 후에 아래쪽 닿은 후 다시 상승해 위쪽 닿으면 각각 횟수 추가. var2 = 2, var3 = 1.
8. 위쪽을 닿은 후에 아래쪽 닿은 후 다시 상승 했지만 위쪽 터치하지 않고 다시 하락하면 횟수 추가 하지 않음. var2 = 1, var3 = 1.
9. var2 가 5가 되면 매수진입. 또는 var3 이 5가 되면 매도 진입.
10. var2로 진입시 손절은 30틱, var3로 진입시 손절은 30틱.
11. plot1(var2), plot2(var3) 으로 라인표시.
위와 같이 수식을 만들고 싶습니다.
부탁드려요. 감사합니다.
(이미지도 참고 부탁드립니다.)
2023-06-26
899
글번호 170107
시스템
답변완료
시스템 매수 관련 문의 드립니다.
항상 많은 도움 감사드립니다. 매수 조건 2개를 동시에 실행할때 우선 순위를 두는것이 어럽네요..관련 질문 드립니다.
if sTime >= 93000 and sTime < 151000 Then
{
if #매수1조건식 Then Sell("매수1");
if #매수1청산 조건식 Then ExitShort("매수1청산");
if #매수2조건식 Then Sell("매수2");
if #매수2청산 조건식 Then ExitShort("매수2청산");
}
SetStopEndofday(151000);
매수1
매수1청산
매수2
매수2청산
두가지 매수 조건과 청산 조건이 있을때 첫번째 조건 매수1,매수1청산을 우선순위로 하고 싶은데요.
무포지션일때 매수1의 조건이 발생,"매수1"로 진입 "매수1청산"으로 청산
무포지션일때 매수2의 조건이 발생,"매수2"로 진입 "매수2청산"으로 청산
무포지션일때 매수1과 매수2의 조건이 같은봉에서 동시 발생 시 "매수1"진입, "매수1청산"으로 청산
유포지션일때 매수1의 조건이 발생, 추가 진입하지 말고 현재의 포지션을 "매수1청산"으로 청산
유포지션일때 매수2의 조건이 발생, 추가 진입하지 말고 현재의 포지션을 유지
제가 설명을 잘못드린 부분도 있을것 같은데 중요한 것은 두가지 매수 조건을 실행할때 1번 조건을 우선 시 하고 싶은것 입니다.
도움 부탁드립니다.
2023-06-26
1360
글번호 170103
시스템