커뮤니티

22784 문제있습니다

프로필 이미지
하얀마음흑구
2012-02-06 14:14:35
375
글번호 47402
답변완료

첨부 이미지

22784 글 답변으로 신호가 정확히 발생하고있다 라고 하셨는데, 문제 발생합니다. 코스피200연결선물 CME 기준이고요, 첨부파일 보시면 스크린 샷에 b1신호가 18시에 나온 것을 확인할 수 있습니다. 모두 나열한 것이 아닌데도 20여개의 b1거래 중 4개가 나왔으면 적은 횟수가 아닙니다. 밑에 질문드린 그대로 다시 확인 부탁드립니다. /////////////////////////////////////////////////////////////////// 안녕하세요 예스스탁입니다. 테스트해본 결과 신호가 정확히 발생하고 있습니다. 야간장 첫봉에는 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"의 신호만 나오도록 하려면 어떻게 해야할까요?
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2012-02-06 17:09:22

안녕하세요 예스스탁입니다. 차트가 CME로만 되어 있으신것 같습니다. atstop은 현재봉의 if조건이 만족하면 다음봉을 감시하게 되므로 만약 5분봉 차트에서 4시 55분에 조건이 만족하면 다음봉(18시봉)에 신호가 발생할 수 있습니다. b1신호를 아래와 같이 변경하시면 됩니다. 새벽의 마지막봉에 if문이 만족하지 못하도록 b1의 if문의 시간을 (stime >= 90000 or stime < 45500)로 변경했습니다. 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 < 45500) 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); 즐거운 하루되세요 > 하얀마음흑구 님이 쓴 글입니다. > 제목 : 22784 문제있습니다 > 22784 글 답변으로 신호가 정확히 발생하고있다 라고 하셨는데, 문제 발생합니다. 코스피200연결선물 CME 기준이고요, 첨부파일 보시면 스크린 샷에 b1신호가 18시에 나온 것을 확인할 수 있습니다. 모두 나열한 것이 아닌데도 20여개의 b1거래 중 4개가 나왔으면 적은 횟수가 아닙니다. 밑에 질문드린 그대로 다시 확인 부탁드립니다. /////////////////////////////////////////////////////////////////// 안녕하세요 예스스탁입니다. 테스트해본 결과 신호가 정확히 발생하고 있습니다. 야간장 첫봉에는 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"의 신호만 나오도록 하려면 어떻게 해야할까요?