커뮤니티

부탁드립니다.

프로필 이미지
중박주식
2019-09-06 21:35:48
239
글번호 131813
답변완료
다음조건으로 수식 작성 부탁드립니다. 이전에 부탁드린거에 비해서는 조금 복잡해서(제 기준으로는) 방법이 잘 생각나지가 않습니다. 아 그리고 혹시 dayhigh, daylow와 같은 명령어가 거래량에 대해서는 없는건가요? 그게 있으면 참 편할거 같은데.. 그래서 더 어려운거 같습니다. 암튼 부탁드립니다. 내용은 아래와 같습니다. ---------------------------------------------------- 매수조건 1) 12시 이후에만 매수 가능 2) 9시~10시 사이의 최고가를 10~12시 사이에 넘은 적이 없음 3) 9시~10시 사이의 봉당 최대거래량을 10~12시 사이에 넘은 적이 없음 4) 10~12시 사이의 최고가와 최저가의 차이가 5%를 넘지 않음 5) 10~12시 사이의 거래량 평균값의 세 배를 초과하는 봉이 존재하지 않음 6) 12시 이후에 거래량과 주가가 동시에 당일 최대값을 갱신하면 매수 진입 청산조건 1) 진입 이후, 전봉 보다 거래량이 감소한 경우가 한번이라도 발생한 이후, 당일 최대거래량을 갱신한 경우 (이 조건이 가장 까다로운데 예를 들어 설명하면: 1시에 진입한 후, 1시 1분에도 전봉보다 거래량이 증가, 2분에도 거래량이 증가하다가, 3분에 전봉보다 거래량이 감소함. 그 후 아무 때라도 당일 거래량 최고치를 갱신을 하게 되면 조건 만족. 만약 1시에 진입하자마자 1시 1분에 전봉보다 거래량이 감소하면, 바로 다음봉부터 당일 거래량 최고치를 갱신하게 되면 조건 만족) - 위의 조건을 만족할 시에는 주가가 당일 최고치에서 15% 감소할 때 청산 주문 2) 1)의 조건이 만족하지 않은 상태에서는 주가가 당일 최고치에서 15% 감소할 때 청산 주문 3) 1)과 2)를 만족하지 않은 경우 - 주가가 상한가에 진입: 익일 9시 1분에 청산 - 주가가 3시 15분까지 상한가에 진입하지 못함. 3시 16분에 청산 4) 주가가 상한가에 진입했다가 상한가가 풀린 경우 - 바로 다음봉에 청산 --------------------------------- 감사합니다.
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2019-09-09 11:38:45

안녕하세요 예스스탁입니다. var : h1(0),v1(0),h2(0),l2(0),v2(0); var : dv(0),sumv(0),sumi(0),avgv(0); 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 bdate != bdate[1] Then { h1 = h; v1 = 0; dv = 0; Condition1 = false; Condition2 = false; } if v > dv Then dv = 0; if stime < 10000 then { if h > h1 Then h1 = h; if v > v1 Then v1 = v; } if (sdate != sdate[1] and stime >= 100000) or (sdate == sdate[1] and stime >= 100000 and stime[1] < 100000) Then { h2 = h; l2 = L; v2 = 0; sumv = 0; sumi = 0; } if stime >= 100000 and stime < 120000 then { if h > h2 Then h2 = h; if l < l2 Then l2 = l; if v > v2 Then v2 = v; sumv = sumv+v; sumi = sumi+1; avgv = sumv/sumi; } if stime >= 120000 Then { if v >= avgv*3 Then Condition1 = true; if h1 >= h2 and v1 >= v2 and h2 <= l2*1.05 and Condition1 == false and h > DayHigh(0) and v >= dv[1] Then buy("b"); } if MarketPosition == 1 then { if C == 상한가 Then Condition1 = true; if countif(V<V[1],BarsSinceEntry) >= 1 Then ExitLong("bx1",AtStop,DayHigh*0.85); ExitLong("bx2",AtStop,DayHigh*0.85); if NextBarSdate != sdate and c == 상한가 Then ExitLong("bx31",AtMarket); if stime == 151500 and Condition1 == false Then ExitLong("bx32",AtMarket); if C < 상한가 and c[1] == 상한가 Then exitlong("bx4"); } 즐거운 하루되세요 > 중박주식 님이 쓴 글입니다. > 제목 : 부탁드립니다. > 다음조건으로 수식 작성 부탁드립니다. 이전에 부탁드린거에 비해서는 조금 복잡해서(제 기준으로는) 방법이 잘 생각나지가 않습니다. 아 그리고 혹시 dayhigh, daylow와 같은 명령어가 거래량에 대해서는 없는건가요? 그게 있으면 참 편할거 같은데.. 그래서 더 어려운거 같습니다. 암튼 부탁드립니다. 내용은 아래와 같습니다. ---------------------------------------------------- 매수조건 1) 12시 이후에만 매수 가능 2) 9시~10시 사이의 최고가를 10~12시 사이에 넘은 적이 없음 3) 9시~10시 사이의 봉당 최대거래량을 10~12시 사이에 넘은 적이 없음 4) 10~12시 사이의 최고가와 최저가의 차이가 5%를 넘지 않음 5) 10~12시 사이의 거래량 평균값의 세 배를 초과하는 봉이 존재하지 않음 6) 12시 이후에 거래량과 주가가 동시에 당일 최대값을 갱신하면 매수 진입 청산조건 1) 진입 이후, 전봉 보다 거래량이 감소한 경우가 한번이라도 발생한 이후, 당일 최대거래량을 갱신한 경우 (이 조건이 가장 까다로운데 예를 들어 설명하면: 1시에 진입한 후, 1시 1분에도 전봉보다 거래량이 증가, 2분에도 거래량이 증가하다가, 3분에 전봉보다 거래량이 감소함. 그 후 아무 때라도 당일 거래량 최고치를 갱신을 하게 되면 조건 만족. 만약 1시에 진입하자마자 1시 1분에 전봉보다 거래량이 감소하면, 바로 다음봉부터 당일 거래량 최고치를 갱신하게 되면 조건 만족) - 위의 조건을 만족할 시에는 주가가 당일 최고치에서 15% 감소할 때 청산 주문 2) 1)의 조건이 만족하지 않은 상태에서는 주가가 당일 최고치에서 15% 감소할 때 청산 주문 3) 1)과 2)를 만족하지 않은 경우 - 주가가 상한가에 진입: 익일 9시 1분에 청산 - 주가가 3시 15분까지 상한가에 진입하지 못함. 3시 16분에 청산 4) 주가가 상한가에 진입했다가 상한가가 풀린 경우 - 바로 다음봉에 청산 --------------------------------- 감사합니다.