커뮤니티

로직 문의드립니다.

프로필 이미지
제이크
2016-07-26 23:47:28
155
글번호 100422
답변완료

첨부 이미지

안녕하세요. 아래 도움을 주신 식을 해외선물_오일에 적용하니 기존의 시간 제한을 두지 않은 식을 통해서는 신호가 발생하는데 아래 식을 적용하면 동일한 조건인데도 신호가 발생하지 않아 문의 드립니다. 기존 식에서의 crossdown, crossup 의 변수는 아래와 같이 극단의 경우로 가정하고, 3,5분봉에 적용했습니다. 제가 진입제한을 하고 싶은 시간은 차트상의 시간 기준으로 1. 09:30 ~ 20:00 (한국시간 기준, 23:30 ~ 10:00) 2. 23:30 ~ 24:00 (차트 시간상으로 당일 강제청산이 되더군요..사실 보유포지션을 강제로 청산할 필요는 없습니다만) 3. 수요일, 07:00~20:00 (차트상 표시되는 시간 기준) 신호발생한 이미지 샷을 첨부하였습니다. 감사합니다. [기존 시간진입 제한을 하지 않은 식] input : P(3); var : D1(0),MM(0); MM = stime%100; D1 = C/ma(c,P)*100; #이격3개가 모두 99.80이하인 시점에 매수진입 if CrossDown(d1,99.99) and ((MM >= 0 and MM < 25) or (MM >= 30 and MM < 55)) Then buy("b",OnClose,def,1); #이격3개가 모두 100.10이상인 시점에 매도진입 if crossup(d1,100.01) and ((MM >= 0 and MM < 25) or (MM >= 30 and MM < 55)) Then sell("s",OnClose,def,1); ===================================================================================== 안녕하세요 예스스탁입니다. 수식은 차트의 데이터를 이용하므로 차트에 보이는 시간으로 제한해야 합니다. 아래 내용 참고하시기 바랍니다. input : P1(5),P2(20); var : D1(0),MM(0),mav(0); var : Tcond1(false),Tcond2(false); MM = stime%100; D1 = C/ma(C,P1); mav = ma(C,p2); #9시30분이후~20시 사이, 23시30분~24시까지 true 아니면 false Tcond1 = (stime >= 93000 and stime <= 200000) or (stime >= 233000); #수요일 7시00분이후~20시 사이는 true 아니면 false Tcond2 = DayOfWeek(bdate) == 3 and stime >= 070000 and stime <= 200000; #이격이 99.5이하인 시점에 매수진입 if Tcond1 == false and Tcond2 == false and CrossDown(d1,99.5) and ((MM >= 0 and MM < 25) or (MM >= 30 and MM < 55)) Then buy("b",OnClose,def,1); #이격이 100.5이상인 시점에 매도진입 if Tcond1 == false and Tcond2 == false and crossup(d1,100.50) and ((MM >= 0 and MM < 25) or (MM >= 30 and MM < 55)) Then sell("s",OnClose,def,1); 즐거운 하루되세요 > 제이크 님이 쓴 글입니다. > 제목 : 수식 문의드립니다. > 안녕하세요. 진입조건은 아래와 같은데 특정시간에 대한 진입조건 제한을 하고 싶습니다. 차트상 표시되는 시간으로 09:30 ~ 20:00 (한국시간으로는 23:30 ~ 아침 10:00) 및 23:30~24:00 에 진입제한울 추가하고 싶습니다. 만약 특정 요일의 특정 시간도 진입제한을 가능하게끔 로직을 추가할수 있다면, 위의 식과 별도로 수요일, 07:00~20:00 (차트상 표시되는 시간) 에는 진입제한도 하나더 만들고 싶습니다. 늘 많은 도움 주셔서 감사합니다. ==================================================================================== 신규진입 조건식은 아래와 같습니다. input : P1(5),P2(20); var : D1(0),MM(0),mav(0); MM = stime%100; D1 = C/ma(C,P1); mav = ma(C,p2); #이격이 99.5이하인 시점에 매수진입 if CrossDown(d1,99.5) and ((MM >= 0 and MM < 25) or (MM >= 30 and MM < 55)) Then buy("b",OnClose,def,1); #이격이 100.5이상인 시점에 매도진입 if crossup(d1,100.50) and ((MM >= 0 and MM < 25) or (MM >= 30 and MM < 55)) Then sell("s",OnClose,def,1);
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2016-07-27 11:34:04

안녕하세요 예스스탁입니다. 1 수식은 차트봉의 시간을 가져와 사용합니다. 차트의 시간은 차트창속성의 배경탭에서 설정한 기준시간으로 표시됩니다. 기준시간이 한국시간이면 봉의 시간도 한국시간 기준시간이 시장시간이면 봉의 시간도 시장시간으로 리턴됩니다. 첨부된 그림과 같이 지정한 시간에는 신호가 발생하지 않습니다. input : P(3); var : D1(0),MM(0); var : Tcond1(false),Tcond2(false); MM = stime%100; D1 = C/ma(c,P)*100; #9시30분이후~20시 사이, 23시30분~24시까지 true 아니면 false Tcond1 = (time >= 93000 and time <= 200000) or (time >= 233000); #수요일 7시00분이후~20시 사이는 true 아니면 false Tcond2 = DayOfWeek(bdate) == 3 and time >= 070000 and time <= 200000; #이격이 99.5이하인 시점에 매수진입 if Tcond1 == false and Tcond2 == false and CrossDown(d1,99.99) and ((MM >= 0 and MM < 25) or (MM >= 30 and MM < 55)) Then buy("b",OnClose,def,1); #이격이 100.5이상인 시점에 매도진입 if Tcond1 == false and Tcond2 == false and crossup(d1,100.01) and ((MM >= 0 and MM < 25) or (MM >= 30 and MM < 55)) Then sell("s",OnClose,def,1); 2 아래 지표와 같이 보시기 바랍니다. 2개 지표가 모두 1일때만 신호가 발생합니다. input : P(3); var : D1(0),MM(0); var : Tcond1(false),Tcond2(false); MM = stime%100; D1 = C/ma(c,P)*100; #9시30분이후~20시 사이, 23시30분~24시까지 true 아니면 false Tcond1 = (time >= 93000 and time <= 200000) or (time >= 233000); #수요일 7시00분이후~20시 사이는 true 아니면 false Tcond2 = DayOfWeek(bdate) == 3 and time >= 070000 and time <= 200000; plot1(iff(Tcond1 == false && Tcond2 == false,1,0)); 3 첨부하신 그림에서 보면 각 진입청산식에 해당 내용이 정상적으로 적용이 되어 있지 않은것 같습니다. 시간제한 진입조건은 Tcond1 == false and Tcond2 == false 입니다. 신호에 시간제한 조건을 주고자하시면 신호의 내용에 모두 해당 조건을 if문에 추가해 주셔야 합니다. 4 시간제한이 원활하지 않으시면 02-3453-1060으로 전화주시기 바랍니다. 즐거운 하루되세요 > 제이크 님이 쓴 글입니다. > 제목 : 로직 문의드립니다. > 안녕하세요. 아래 도움을 주신 식을 해외선물_오일에 적용하니 기존의 시간 제한을 두지 않은 식을 통해서는 신호가 발생하는데 아래 식을 적용하면 동일한 조건인데도 신호가 발생하지 않아 문의 드립니다. 기존 식에서의 crossdown, crossup 의 변수는 아래와 같이 극단의 경우로 가정하고, 3,5분봉에 적용했습니다. 제가 진입제한을 하고 싶은 시간은 차트상의 시간 기준으로 1. 09:30 ~ 20:00 (한국시간 기준, 23:30 ~ 10:00) 2. 23:30 ~ 24:00 (차트 시간상으로 당일 강제청산이 되더군요..사실 보유포지션을 강제로 청산할 필요는 없습니다만) 3. 수요일, 07:00~20:00 (차트상 표시되는 시간 기준) 신호발생한 이미지 샷을 첨부하였습니다. 감사합니다. [기존 시간진입 제한을 하지 않은 식] input : P(3); var : D1(0),MM(0); MM = stime%100; D1 = C/ma(c,P)*100; #이격3개가 모두 99.80이하인 시점에 매수진입 if CrossDown(d1,99.99) and ((MM >= 0 and MM < 25) or (MM >= 30 and MM < 55)) Then buy("b",OnClose,def,1); #이격3개가 모두 100.10이상인 시점에 매도진입 if crossup(d1,100.01) and ((MM >= 0 and MM < 25) or (MM >= 30 and MM < 55)) Then sell("s",OnClose,def,1); ===================================================================================== 안녕하세요 예스스탁입니다. 수식은 차트의 데이터를 이용하므로 차트에 보이는 시간으로 제한해야 합니다. 아래 내용 참고하시기 바랍니다. input : P1(5),P2(20); var : D1(0),MM(0),mav(0); var : Tcond1(false),Tcond2(false); MM = stime%100; D1 = C/ma(C,P1); mav = ma(C,p2); #9시30분이후~20시 사이, 23시30분~24시까지 true 아니면 false Tcond1 = (stime >= 93000 and stime <= 200000) or (stime >= 233000); #수요일 7시00분이후~20시 사이는 true 아니면 false Tcond2 = DayOfWeek(bdate) == 3 and stime >= 070000 and stime <= 200000; #이격이 99.5이하인 시점에 매수진입 if Tcond1 == false and Tcond2 == false and CrossDown(d1,99.5) and ((MM >= 0 and MM < 25) or (MM >= 30 and MM < 55)) Then buy("b",OnClose,def,1); #이격이 100.5이상인 시점에 매도진입 if Tcond1 == false and Tcond2 == false and crossup(d1,100.50) and ((MM >= 0 and MM < 25) or (MM >= 30 and MM < 55)) Then sell("s",OnClose,def,1); 즐거운 하루되세요 > 제이크 님이 쓴 글입니다. > 제목 : 수식 문의드립니다. > 안녕하세요. 진입조건은 아래와 같은데 특정시간에 대한 진입조건 제한을 하고 싶습니다. 차트상 표시되는 시간으로 09:30 ~ 20:00 (한국시간으로는 23:30 ~ 아침 10:00) 및 23:30~24:00 에 진입제한울 추가하고 싶습니다. 만약 특정 요일의 특정 시간도 진입제한을 가능하게끔 로직을 추가할수 있다면, 위의 식과 별도로 수요일, 07:00~20:00 (차트상 표시되는 시간) 에는 진입제한도 하나더 만들고 싶습니다. 늘 많은 도움 주셔서 감사합니다. ==================================================================================== 신규진입 조건식은 아래와 같습니다. input : P1(5),P2(20); var : D1(0),MM(0),mav(0); MM = stime%100; D1 = C/ma(C,P1); mav = ma(C,p2); #이격이 99.5이하인 시점에 매수진입 if CrossDown(d1,99.5) and ((MM >= 0 and MM < 25) or (MM >= 30 and MM < 55)) Then buy("b",OnClose,def,1); #이격이 100.5이상인 시점에 매도진입 if crossup(d1,100.50) and ((MM >= 0 and MM < 25) or (MM >= 30 and MM < 55)) Then sell("s",OnClose,def,1);