커뮤니티

다시 질문드립니다.

프로필 이미지
하얀마음흑구
2012-02-03 17:13:11
445
글번호 47361
답변완료
밑에 답변주신 것 감사합니다. 알려주신 사용자 함수를 바탕으로 간단한 시스템을 적용해 보았는데 문제가 있어 다시 질문드립니다. CME기준입니다. // 이게 밑에서 알려주신 사용자 함수입니다. var : BarCountInDay(0),idx(0); if BarIndex <= 0 then { BarCountInDay = 0; } else { if stime == 180000 then {BarCountInDay = 0;} else {BarCountInDay = BarCountInDay + 1;} } idx = BarCountInDay; // 첫 봉에 진입하면 OnClose로 진입하는 로직 If (stime >= 90000 or stime < 50000) and MarketPosition == 0 and H < highest(H,채널기간)[1] Then if idx==0 then buy("b0",OnClose); // 첫 봉이 아니면 AtStop으로 진입하는 로직 If (stime >= 90000 or stime < 50000) and MarketPosition == 0 and H < highest(H,채널기간)[1] Then if idx!=0 Then buy("b1",AtStop,highest(H,채널기간)[1]+0.05); 이게 작성해본 로직인데요, 저는 첫 봉일때는 "b0"의 신호만 나와야하고 첫 봉이 아닐때는 "b1"의 신호만 나오는 것을 가정하고 만들었습니다. 그러나 idx!=0 부분이 제대로 역할을 못하는 것인지 첫 봉인데도 불구하고 "b1" 신호가 섞여나오고 있습니다. *** 진입논리를 바꾸지 않는 가정하에 첫봉에는 "b0"의 신호만 나오도록 하려면 어떻게 해야할까요?
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2012-02-06 10:51:18

안녕하세요 예스스탁입니다. 테스트해본 결과 신호가 정확히 발생하고 있습니다. 야간장 첫봉에는 b0, 첫봉이 아니면 b1신호만 발생합니다. 테스트한 수식입니다. input : 채널기간(10); var : BarCountInDay(0),idx(0); if BarIndex <= 0 then { BarCountInDay = 0; } else { if stime == 180000 then {BarCountInDay = 0;} else {BarCountInDay = BarCountInDay + 1;} } idx = BarCountInDay; // 첫 봉에 진입하면 OnClose로 진입하는 로직 If (stime >= 90000 or stime < 50000) and MarketPosition == 0 and H < highest(H,채널기간)[1] Then if idx==0 then buy("b0",OnClose); // 첫 봉이 아니면 AtStop으로 진입하는 로직 If (stime >= 90000 or stime < 50000) and MarketPosition == 0 and H < highest(H,채널기간)[1] Then if idx!=0 Then buy("b1",AtStop,highest(H,채널기간)[1]+0.05); SetStopLoss(0.2,PointStop); 즐거운 하루되세요 > 하얀마음흑구 님이 쓴 글입니다. > 제목 : 다시 질문드립니다. > 밑에 답변주신 것 감사합니다. 알려주신 사용자 함수를 바탕으로 간단한 시스템을 적용해 보았는데 문제가 있어 다시 질문드립니다. CME기준입니다. // 이게 밑에서 알려주신 사용자 함수입니다. var : BarCountInDay(0),idx(0); if BarIndex <= 0 then { BarCountInDay = 0; } else { if stime == 180000 then {BarCountInDay = 0;} else {BarCountInDay = BarCountInDay + 1;} } idx = BarCountInDay; // 첫 봉에 진입하면 OnClose로 진입하는 로직 If (stime >= 90000 or stime < 50000) and MarketPosition == 0 and H < highest(H,채널기간)[1] Then if idx==0 then buy("b0",OnClose); // 첫 봉이 아니면 AtStop으로 진입하는 로직 If (stime >= 90000 or stime < 50000) and MarketPosition == 0 and H < highest(H,채널기간)[1] Then if idx!=0 Then buy("b1",AtStop,highest(H,채널기간)[1]+0.05); 이게 작성해본 로직인데요, 저는 첫 봉일때는 "b0"의 신호만 나와야하고 첫 봉이 아닐때는 "b1"의 신호만 나오는 것을 가정하고 만들었습니다. 그러나 idx!=0 부분이 제대로 역할을 못하는 것인지 첫 봉인데도 불구하고 "b1" 신호가 섞여나오고 있습니다. *** 진입논리를 바꾸지 않는 가정하에 첫봉에는 "b0"의 신호만 나오도록 하려면 어떻게 해야할까요?