커뮤니티

부탁드립니다.

프로필 이미지
미카엘
2014-10-31 11:25:54
145
글번호 79944
답변완료
* 초보자입니다. 제가 로직을 만들었는데요. 매수식 코딩에 오류가 있는 것 같습니다. # 당일 첫봉에서 6번째 봉 사이에는 신호발생시 1회만 매수되어야 하고, # 당일 7번째 봉에서 마지막 12번째 봉까지도 신호 발생시 1회만 매수되어야 합니다. 그런데, 7번째 봉 이후에 매수신호가 3번이나 발생했습니다. * 오류가 있는 부분을 수정해 주세요. * 추가사항: 당일 2번째 봉 이후는 하나의 봉에서 해당봉 시가대비 해당봉 종가가 30% 이상 급등하면 매수 금지라는 조건을 달아주세요. * 그 외에 잘못 코딩된 부분을 지적해 주세요. # RSI 침체기준선32, 과열기준선 70 Input : Period(14), LPercent(32), SPercent(70); Var : value(0); var : EntryCnt(0); value = RSI(Period); if dayindex+1 == 1 Then var1 = C; # 1봉~6봉까지 1회 매수 가능 if dayindex+1 == 1 or dayindex+1 == 6 then EntryCnt = 0; # 7봉 이후 1회 매수 가능 if MarketPosition != 0 and MarketPosition != MarketPosition[1] Then EntryCnt = EntryCnt+1; # 매수 //신규매수는 12봉까지만 가능// 전일대비 당일 시가가 70%이상 급등하면 2봉까지 매수 금지// 밴드 상한선보다 시가가 7% (1.07)이상 높으면 금지// 밴드 하한선보다 6% 이상 높지 않으면 매수 금지 // 직전거래가 수익이면 신규매수 중단 Condition1 = PositionProfit(1) > 0 and ExitDate(1) == sdate; If MarketPosition == 0 and Condition1 == false and dayindex+1 <= 12 and EntryCnt == 0 and Data2(open)<Data2(bollbandup(21,2)*1.07) and Data2(open)>Data2(bollbanddown(21,2)*1.06) and Data2(C)>Data2(Open) and value>=SPercent Then { if (var1 < DayClose(1)*1.7 and dayindex+1 >= 1) or (var1 >= DayClose(1)*1.7 and dayindex+1 >= 3) Then buy(); }
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2014-10-31 15:09:02

안녕하세요 예스스탁입니다. 해당식 따로 적용해 보았지만 신호가 1일 2회이상 나오지는 않습니다. 아마 참조데이터가 다른주기이시거나 동일주기이지만 거래가 없는 구간이 있는 종목같습니다. 수식 작성시에 참조데이터를 이용하실 경우에는 변수를 선언할때도 저장되는 값의 데이터번호를 지정해 주시고 함수도 모두 각 데이터번호를 지정해 주셔야 합니다. 주종목과 참조데이터의 주기가 다르거나 혹은 같은주기라도 거래가 없어 특정시간에 봉이 비게 되면 참조데이터의 봉도 합쳐서 봉갯수를 카운트 하게 되고 기간값을 가지는 함수의 기간도 위와 같이 판정하게 됩니다. # RSI 침체기준선32, 과열기준선 70 Input : Period(14), LPercent(32), SPercent(70); Var : value(0); var : EntryCnt(0); value = RSI(Period); #첫봉 종가 if data1(dayindex+1) == 1 Then var1 = C; # 1봉,7번째 봉에 진입횟수를 0으로 초기화 if data1(dayindex+1) == 1 or data1(dayindex+1) == 7 then EntryCnt = 0; # 진입신호가 발생하면 카운트를 1씩 증가 if MarketPosition != 0 and MarketPosition != MarketPosition[1] Then EntryCnt = EntryCnt+1; # 매수 //신규매수는 12봉까지만 가능// 전일대비 당일 시가가 70%이상 급등하면 2봉까지 매수 금지// 밴드 상한선보다 시가가 7% (1.07)이상 높으면 금지// 밴드 하한선보다 6% 이상 높지 않으면 매수 금지 // 직전거래가 수익이면 신규매수 중단 Condition1 = PositionProfit(1) > 0 and ExitDate(1) == sdate; If MarketPosition == 0 and Condition1 == false and data1(dayindex+1) <= 1 and EntryCnt == 0 and Data2(open)<Data2(bollbandup(21,2)*1.07) and Data2(open)>Data2(bollbanddown(21,2)*1.06) and Data2(C)>Data2(Open) and value>=SPercent Then { if (var1 < DayClose(1)*1.7 and data1(dayindex+1) >= 1) or (var1 >= DayClose(1)*1.7 and data1(dayindex+1) >= 3 and C <= O*1.3) Then buy(); } 위식적용해 보시고 7번째 봉이후에 계속 1회이상 신호가 발생하시면 주종목과 참조데이터종류도 같이 올려주시기 바랍니다. 즐거운 하루되세요 > 미카엘 님이 쓴 글입니다. > 제목 : 부탁드립니다. > * 초보자입니다. 제가 로직을 만들었는데요. 매수식 코딩에 오류가 있는 것 같습니다. # 당일 첫봉에서 6번째 봉 사이에는 신호발생시 1회만 매수되어야 하고, # 당일 7번째 봉에서 마지막 12번째 봉까지도 신호 발생시 1회만 매수되어야 합니다. 그런데, 7번째 봉 이후에 매수신호가 3번이나 발생했습니다. * 오류가 있는 부분을 수정해 주세요. * 추가사항: 당일 2번째 봉 이후는 하나의 봉에서 해당봉 시가대비 해당봉 종가가 30% 이상 급등하면 매수 금지라는 조건을 달아주세요. * 그 외에 잘못 코딩된 부분을 지적해 주세요. # RSI 침체기준선32, 과열기준선 70 Input : Period(14), LPercent(32), SPercent(70); Var : value(0); var : EntryCnt(0); value = RSI(Period); if dayindex+1 == 1 Then var1 = C; # 1봉~6봉까지 1회 매수 가능 if dayindex+1 == 1 or dayindex+1 == 6 then EntryCnt = 0; # 7봉 이후 1회 매수 가능 if MarketPosition != 0 and MarketPosition != MarketPosition[1] Then EntryCnt = EntryCnt+1; # 매수 //신규매수는 12봉까지만 가능// 전일대비 당일 시가가 70%이상 급등하면 2봉까지 매수 금지// 밴드 상한선보다 시가가 7% (1.07)이상 높으면 금지// 밴드 하한선보다 6% 이상 높지 않으면 매수 금지 // 직전거래가 수익이면 신규매수 중단 Condition1 = PositionProfit(1) > 0 and ExitDate(1) == sdate; If MarketPosition == 0 and Condition1 == false and dayindex+1 <= 12 and EntryCnt == 0 and Data2(open)<Data2(bollbandup(21,2)*1.07) and Data2(open)>Data2(bollbanddown(21,2)*1.06) and Data2(C)>Data2(Open) and value>=SPercent Then { if (var1 < DayClose(1)*1.7 and dayindex+1 >= 1) or (var1 >= DayClose(1)*1.7 and dayindex+1 >= 3) Then buy(); }