커뮤니티

수식문의

프로필 이미지
회원
2015-01-13 13:59:52
144
글번호 82198
답변완료
안녕하세요 나름 만들어봤는데 잘 안맞네요. 수정 부탁드립니다. var1 = EnvelopeDown(120,10); var2 = EnvelopeDown(240,10); if L < Daylow(1)*0.98 And L < min(daylow(1),daylow(2),daylow(3)) And ma2160 > ma4320 And L <= ma90*0.95 Then if L >= var1 Then buy("매수1",atlimit,var1); if L >= var2 Then buy("매수2",atlimit,var2); 이렇게 하면 안되나요? ma2160 > ma4320 이 조건이 안먹히네요. 감사합니다. 그리고 과거 하한가가 있는 종목을 검색하려 하는데 이건 어떻게 해야하나요?
시스템
답변 3
프로필 이미지

예스스탁 예스스탁 답변

2015-01-13 14:10:55

안녕하세요 예스스탁입니다. 1. 변수명만 지정하시면 안됩니다. 해단 변수에 값을 저장하고 사용하셔야 합니다. var : ma2160(0),ma4320(0),ma90(0); var1 = EnvelopeDown(120,10); var2 = EnvelopeDown(240,10); ma2160 = ma(C,2160); ma4320 = ma(C,4320); ma90 = ma(c,90); if L < Daylow(1)*0.98 And L < min(daylow(1),daylow(2),daylow(3)) And ma2160 > ma4320 And L <= ma90*0.95 Then{ if L >= var1 Then buy("매수1",atlimit,var1); if L >= var2 Then buy("매수2",atlimit,var2); } 2. 최근 N일간 한번이상 하한가 발생한 종목을 찾는 식입니다. 참고하시기 바랍니다. input : N(10); var : 하한가(0), DnLimit(0); var : dn1(0), dn2(0), dn3(0), dn4(0), dn5(0),dn6(0),dn7(0); if date >= 19981207 then { if date < 20050328 && CodeCategory() == 2 then DnLimit = (BP * 0.12); Else DnLimit = (BP * 0.15); if CodeCategory() == 2 then { if date >= 20030721 then { dn1 = int(DnLimit/100)*100; dn2 = int(DnLimit/100)*100; dn3 = int(DnLimit/100)*100; dn4 = int(DnLimit/50)*50; dn5 = int(DnLimit/10)*10; dn6 = int(DnLimit/5)*5; dn7 = int(DnLimit/1)*1; } else { dn1 = int(DnLimit/1000)*1000; dn2 = int(DnLimit/500)*500; dn3 = int(DnLimit/100)*100; dn4 = int(DnLimit/50)*50; dn5 = int(DnLimit/10)*10; dn6 = int(DnLimit/10)*10; dn7 = int(DnLimit/1)*1; } } Else { dn1 = int(DnLimit/1000)*1000; dn2 = int(DnLimit/500)*500; dn3 = int(DnLimit/100)*100; dn4 = int(DnLimit/50)*50; dn5 = int(DnLimit/10)*10; dn6 = int(DnLimit/5)*5; dn7 = int(DnLimit/1)*1; } if CodeCategory() == 1 or CodeCategory() == 2 then { if sdate < 20101004 Then{ If BP >= 500000 Then 하한가 = BP-dn1; Else If BP >= 100000 Then 하한가 = BP-dn2; Else If BP >= 50000 Then 하한가 = BP-dn3; Else If BP >= 10000 Then 하한가 = BP-dn4; Else If BP >= 5000 Then 하한가 = BP-dn5; Else If BP >= 1000 Then 하한가 = BP-dn6; Else 하한가 = BP-dn6; } else{ If BP >= 500000 Then 하한가 = BP-dn1; Else If BP >= 100000 Then 하한가 = BP-dn2; Else If BP >= 50000 Then 하한가 = BP-dn3; Else If BP >= 10000 Then 하한가 = BP-dn4; Else If BP >= 5000 Then 하한가 = BP-dn5; Else If BP >= 1000 Then 하한가 = BP-dn6; Else 하한가 = BP-dn7; } } else if CodeCategory() == 8 or CodeCategory() == 9 then { 하한가 = BP-dn6; } } if countif(L <= 하한가,N) >= 1 Then find(1); 즐거운 하루되세요 > HI_ki**** 님이 쓴 글입니다. > 제목 : 수식문의 > 안녕하세요 나름 만들어봤는데 잘 안맞네요. 수정 부탁드립니다. var1 = EnvelopeDown(120,10); var2 = EnvelopeDown(240,10); if L < Daylow(1)*0.98 And L < min(daylow(1),daylow(2),daylow(3)) And ma2160 > ma4320 And L <= ma90*0.95 Then if L >= var1 Then buy("매수1",atlimit,var1); if L >= var2 Then buy("매수2",atlimit,var2); 이렇게 하면 안되나요? ma2160 > ma4320 이 조건이 안먹히네요. 감사합니다. 그리고 과거 하한가가 있는 종목을 검색하려 하는데 이건 어떻게 해야하나요?
프로필 이미지

회원

2015-01-13 14:38:55

그럼 최근 5000일간 하한가가 있는 종목수식이 이렇게 되나요? input : N(5000); var : 하한가(0), DnLimit(0); var : dn1(0), dn2(0), dn3(0), dn4(0), dn5(0),dn6(0),dn7(0); if date >= 19981207 then { if date < 20050328 && CodeCategory() == 2 then DnLimit = (BP * 0.12); Else DnLimit = (BP * 0.15); if CodeCategory() == 2 then { if date >= 20030721 then { dn1 = int(DnLimit/100)*100; dn2 = int(DnLimit/100)*100; dn3 = int(DnLimit/100)*100; dn4 = int(DnLimit/50)*50; dn5 = int(DnLimit/10)*10; dn6 = int(DnLimit/5)*5; dn7 = int(DnLimit/1)*1; } else { dn1 = int(DnLimit/1000)*1000; dn2 = int(DnLimit/500)*500; dn3 = int(DnLimit/100)*100; dn4 = int(DnLimit/50)*50; dn5 = int(DnLimit/10)*10; dn6 = int(DnLimit/10)*10; dn7 = int(DnLimit/1)*1; } } Else { dn1 = int(DnLimit/1000)*1000; dn2 = int(DnLimit/500)*500; dn3 = int(DnLimit/100)*100; dn4 = int(DnLimit/50)*50; dn5 = int(DnLimit/10)*10; dn6 = int(DnLimit/5)*5; dn7 = int(DnLimit/1)*1; } if CodeCategory() == 1 or CodeCategory() == 2 then { if sdate < 20101004 Then{ If BP >= 500000 Then 하한가 = BP-dn1; Else If BP >= 100000 Then 하한가 = BP-dn2; Else If BP >= 50000 Then 하한가 = BP-dn3; Else If BP >= 10000 Then 하한가 = BP-dn4; Else If BP >= 5000 Then 하한가 = BP-dn5; Else If BP >= 1000 Then 하한가 = BP-dn6; Else 하한가 = BP-dn6; } else{ If BP >= 500000 Then 하한가 = BP-dn1; Else If BP >= 100000 Then 하한가 = BP-dn2; Else If BP >= 50000 Then 하한가 = BP-dn3; Else If BP >= 10000 Then 하한가 = BP-dn4; Else If BP >= 5000 Then 하한가 = BP-dn5; Else If BP >= 1000 Then 하한가 = BP-dn6; Else 하한가 = BP-dn7; } } else if CodeCategory() == 8 or CodeCategory() == 9 then { 하한가 = BP-dn6; } } if countif(L <= 하한가,N) >= 1 Then find(1); > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 수식문의 > 안녕하세요 예스스탁입니다. 1. 변수명만 지정하시면 안됩니다. 해단 변수에 값을 저장하고 사용하셔야 합니다. var : ma2160(0),ma4320(0),ma90(0); var1 = EnvelopeDown(120,10); var2 = EnvelopeDown(240,10); ma2160 = ma(C,2160); ma4320 = ma(C,4320); ma90 = ma(c,90); if L < Daylow(1)*0.98 And L < min(daylow(1),daylow(2),daylow(3)) And ma2160 > ma4320 And L <= ma90*0.95 Then{ if L >= var1 Then buy("매수1",atlimit,var1); if L >= var2 Then buy("매수2",atlimit,var2); } 2. 최근 N일간 한번이상 하한가 발생한 종목을 찾는 식입니다. 참고하시기 바랍니다. input : N(10); var : 하한가(0), DnLimit(0); var : dn1(0), dn2(0), dn3(0), dn4(0), dn5(0),dn6(0),dn7(0); if date >= 19981207 then { if date < 20050328 && CodeCategory() == 2 then DnLimit = (BP * 0.12); Else DnLimit = (BP * 0.15); if CodeCategory() == 2 then { if date >= 20030721 then { dn1 = int(DnLimit/100)*100; dn2 = int(DnLimit/100)*100; dn3 = int(DnLimit/100)*100; dn4 = int(DnLimit/50)*50; dn5 = int(DnLimit/10)*10; dn6 = int(DnLimit/5)*5; dn7 = int(DnLimit/1)*1; } else { dn1 = int(DnLimit/1000)*1000; dn2 = int(DnLimit/500)*500; dn3 = int(DnLimit/100)*100; dn4 = int(DnLimit/50)*50; dn5 = int(DnLimit/10)*10; dn6 = int(DnLimit/10)*10; dn7 = int(DnLimit/1)*1; } } Else { dn1 = int(DnLimit/1000)*1000; dn2 = int(DnLimit/500)*500; dn3 = int(DnLimit/100)*100; dn4 = int(DnLimit/50)*50; dn5 = int(DnLimit/10)*10; dn6 = int(DnLimit/5)*5; dn7 = int(DnLimit/1)*1; } if CodeCategory() == 1 or CodeCategory() == 2 then { if sdate < 20101004 Then{ If BP >= 500000 Then 하한가 = BP-dn1; Else If BP >= 100000 Then 하한가 = BP-dn2; Else If BP >= 50000 Then 하한가 = BP-dn3; Else If BP >= 10000 Then 하한가 = BP-dn4; Else If BP >= 5000 Then 하한가 = BP-dn5; Else If BP >= 1000 Then 하한가 = BP-dn6; Else 하한가 = BP-dn6; } else{ If BP >= 500000 Then 하한가 = BP-dn1; Else If BP >= 100000 Then 하한가 = BP-dn2; Else If BP >= 50000 Then 하한가 = BP-dn3; Else If BP >= 10000 Then 하한가 = BP-dn4; Else If BP >= 5000 Then 하한가 = BP-dn5; Else If BP >= 1000 Then 하한가 = BP-dn6; Else 하한가 = BP-dn7; } } else if CodeCategory() == 8 or CodeCategory() == 9 then { 하한가 = BP-dn6; } } if countif(L <= 하한가,N) >= 1 Then find(1); 즐거운 하루되세요 > HI_ki**** 님이 쓴 글입니다. > 제목 : 수식문의 > 안녕하세요 나름 만들어봤는데 잘 안맞네요. 수정 부탁드립니다. var1 = EnvelopeDown(120,10); var2 = EnvelopeDown(240,10); if L < Daylow(1)*0.98 And L < min(daylow(1),daylow(2),daylow(3)) And ma2160 > ma4320 And L <= ma90*0.95 Then if L >= var1 Then buy("매수1",atlimit,var1); if L >= var2 Then buy("매수2",atlimit,var2); 이렇게 하면 안되나요? ma2160 > ma4320 이 조건이 안먹히네요. 감사합니다. 그리고 과거 하한가가 있는 종목을 검색하려 하는데 이건 어떻게 해야하나요?
프로필 이미지

예스스탁 예스스탁 답변

2015-01-13 14:44:14

안녕하세요 예스스탁입니다. N을 원하시는 기간으로 지정하시면 됩니다. 다만 종목검색은 모든 주기에서 최대 500봉 까지만 제공됩니다. 5000일까지는 검색이 되지 않습니다. 즐거운 하루되세요 > HI_ki**** 님이 쓴 글입니다. > 제목 : Re : Re : 수식문의 > 그럼 최근 5000일간 하한가가 있는 종목수식이 이렇게 되나요? input : N(5000); var : 하한가(0), DnLimit(0); var : dn1(0), dn2(0), dn3(0), dn4(0), dn5(0),dn6(0),dn7(0); if date >= 19981207 then { if date < 20050328 && CodeCategory() == 2 then DnLimit = (BP * 0.12); Else DnLimit = (BP * 0.15); if CodeCategory() == 2 then { if date >= 20030721 then { dn1 = int(DnLimit/100)*100; dn2 = int(DnLimit/100)*100; dn3 = int(DnLimit/100)*100; dn4 = int(DnLimit/50)*50; dn5 = int(DnLimit/10)*10; dn6 = int(DnLimit/5)*5; dn7 = int(DnLimit/1)*1; } else { dn1 = int(DnLimit/1000)*1000; dn2 = int(DnLimit/500)*500; dn3 = int(DnLimit/100)*100; dn4 = int(DnLimit/50)*50; dn5 = int(DnLimit/10)*10; dn6 = int(DnLimit/10)*10; dn7 = int(DnLimit/1)*1; } } Else { dn1 = int(DnLimit/1000)*1000; dn2 = int(DnLimit/500)*500; dn3 = int(DnLimit/100)*100; dn4 = int(DnLimit/50)*50; dn5 = int(DnLimit/10)*10; dn6 = int(DnLimit/5)*5; dn7 = int(DnLimit/1)*1; } if CodeCategory() == 1 or CodeCategory() == 2 then { if sdate < 20101004 Then{ If BP >= 500000 Then 하한가 = BP-dn1; Else If BP >= 100000 Then 하한가 = BP-dn2; Else If BP >= 50000 Then 하한가 = BP-dn3; Else If BP >= 10000 Then 하한가 = BP-dn4; Else If BP >= 5000 Then 하한가 = BP-dn5; Else If BP >= 1000 Then 하한가 = BP-dn6; Else 하한가 = BP-dn6; } else{ If BP >= 500000 Then 하한가 = BP-dn1; Else If BP >= 100000 Then 하한가 = BP-dn2; Else If BP >= 50000 Then 하한가 = BP-dn3; Else If BP >= 10000 Then 하한가 = BP-dn4; Else If BP >= 5000 Then 하한가 = BP-dn5; Else If BP >= 1000 Then 하한가 = BP-dn6; Else 하한가 = BP-dn7; } } else if CodeCategory() == 8 or CodeCategory() == 9 then { 하한가 = BP-dn6; } } if countif(L <= 하한가,N) >= 1 Then find(1); > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 수식문의 > 안녕하세요 예스스탁입니다. 1. 변수명만 지정하시면 안됩니다. 해단 변수에 값을 저장하고 사용하셔야 합니다. var : ma2160(0),ma4320(0),ma90(0); var1 = EnvelopeDown(120,10); var2 = EnvelopeDown(240,10); ma2160 = ma(C,2160); ma4320 = ma(C,4320); ma90 = ma(c,90); if L < Daylow(1)*0.98 And L < min(daylow(1),daylow(2),daylow(3)) And ma2160 > ma4320 And L <= ma90*0.95 Then{ if L >= var1 Then buy("매수1",atlimit,var1); if L >= var2 Then buy("매수2",atlimit,var2); } 2. 최근 N일간 한번이상 하한가 발생한 종목을 찾는 식입니다. 참고하시기 바랍니다. input : N(10); var : 하한가(0), DnLimit(0); var : dn1(0), dn2(0), dn3(0), dn4(0), dn5(0),dn6(0),dn7(0); if date >= 19981207 then { if date < 20050328 && CodeCategory() == 2 then DnLimit = (BP * 0.12); Else DnLimit = (BP * 0.15); if CodeCategory() == 2 then { if date >= 20030721 then { dn1 = int(DnLimit/100)*100; dn2 = int(DnLimit/100)*100; dn3 = int(DnLimit/100)*100; dn4 = int(DnLimit/50)*50; dn5 = int(DnLimit/10)*10; dn6 = int(DnLimit/5)*5; dn7 = int(DnLimit/1)*1; } else { dn1 = int(DnLimit/1000)*1000; dn2 = int(DnLimit/500)*500; dn3 = int(DnLimit/100)*100; dn4 = int(DnLimit/50)*50; dn5 = int(DnLimit/10)*10; dn6 = int(DnLimit/10)*10; dn7 = int(DnLimit/1)*1; } } Else { dn1 = int(DnLimit/1000)*1000; dn2 = int(DnLimit/500)*500; dn3 = int(DnLimit/100)*100; dn4 = int(DnLimit/50)*50; dn5 = int(DnLimit/10)*10; dn6 = int(DnLimit/5)*5; dn7 = int(DnLimit/1)*1; } if CodeCategory() == 1 or CodeCategory() == 2 then { if sdate < 20101004 Then{ If BP >= 500000 Then 하한가 = BP-dn1; Else If BP >= 100000 Then 하한가 = BP-dn2; Else If BP >= 50000 Then 하한가 = BP-dn3; Else If BP >= 10000 Then 하한가 = BP-dn4; Else If BP >= 5000 Then 하한가 = BP-dn5; Else If BP >= 1000 Then 하한가 = BP-dn6; Else 하한가 = BP-dn6; } else{ If BP >= 500000 Then 하한가 = BP-dn1; Else If BP >= 100000 Then 하한가 = BP-dn2; Else If BP >= 50000 Then 하한가 = BP-dn3; Else If BP >= 10000 Then 하한가 = BP-dn4; Else If BP >= 5000 Then 하한가 = BP-dn5; Else If BP >= 1000 Then 하한가 = BP-dn6; Else 하한가 = BP-dn7; } } else if CodeCategory() == 8 or CodeCategory() == 9 then { 하한가 = BP-dn6; } } if countif(L <= 하한가,N) >= 1 Then find(1); 즐거운 하루되세요 > HI_ki**** 님이 쓴 글입니다. > 제목 : 수식문의 > 안녕하세요 나름 만들어봤는데 잘 안맞네요. 수정 부탁드립니다. var1 = EnvelopeDown(120,10); var2 = EnvelopeDown(240,10); if L < Daylow(1)*0.98 And L < min(daylow(1),daylow(2),daylow(3)) And ma2160 > ma4320 And L <= ma90*0.95 Then if L >= var1 Then buy("매수1",atlimit,var1); if L >= var2 Then buy("매수2",atlimit,var2); 이렇게 하면 안되나요? ma2160 > ma4320 이 조건이 안먹히네요. 감사합니다. 그리고 과거 하한가가 있는 종목을 검색하려 하는데 이건 어떻게 해야하나요?