커뮤니티
오류수정
2015-12-15 09:25:22
108
글번호 93416
아래 수식의 오류사항을 바르게 수정하여 주십시요!!
Input : K(0);
var : PL(0);
PL = DayClose(1);
If TimeToMinutes(sTime) > TimeToMinutes(EntryTime(0)) + 60 Then {
Buy("b",AtStop,PL+K);
Sell("s",AtStop,PL-K);
}
답변 1
예스스탁 예스스탁 답변
2015-12-15 09:54:04
안녕하세요
예스스탁입니다.
작성하신 식에 문법적인 오류내용은 없습니다.
다만 현재 무포지션 상태에서 진입하면
진입상태가 아니므로 EntryTime(0)이 없습니다.
그러므로 식을 무포지션일때와 반대포지션일때로 구분하셔야 합니다.
또한 atstop이나 atlimit이 현재봉 완성시에 다음봉에서 값을 감시합니다.
그러므로 당일 마지막봉에 전일종가가격으로 값이 셋팅이 되면
다음날 첫봉에 신호가 발생하게 되는데
다음날첫봉에 전전일 종가를 기준으로 신호가 발생한것과 같습니다.
마지막봉에 셋팅이 되지 않도록 시간제한 조건을 주셔야 합니다.
당일 첫봉에 전일종가를 이용해 신호가 발생하도록 식을 추가해 주셔야 합니다.
당일 마지막봉은 시간으로만 지정가능합니다.
사용하시는 차트에서 마지막봉 시간을 확인후 지정해 주셔야 합니다.
아래식에서는 15시15분봉으로 지정되었습니다.
plot1(stime);
위 지표로 사용하시는 차트에서 시간확인하시기 바랍니다.
Input : K(0);
var : PL(0);
PL = DayClose(1);
#다음날 첫봉에 신호를 발생하기 위한 로직
#다음날 첫봉에서는 현재봉 종가가 전일종가이므로
#현재봉 종가기준으로 값셋팅
if MarketPosition == 0 and stime == 151500 Then{
Buy("b1",AtStop,DayClose+K);
Sell("s1",AtStop,DayClose-K);
}
#두번째 봉부터 신호발생
#무포지션에서는 시간제한 없이 진입
if MarketPosition == 0 and stime < 150000 Then{
Buy("b1",AtStop,PL+K);
Sell("s1",AtStop,PL-K);
}
#두번째 봉부터 신호발생
#매도포지션일때는 매도진입 후 60분이상 경과후 진입
If MarketPosition == -1 and TimeToMinutes(sTime) > TimeToMinutes(EntryTime(0)) + 60 and stime < 150000 Then
Buy("b2",AtStop,PL+K);
#매수포지션일때는 매수진입 후 60분이상 경과후 진입
If MarketPosition == -1 and TimeToMinutes(sTime) > TimeToMinutes(EntryTime(0)) + 60 and stime < 150000 Then
Sell("s2",AtStop,PL-K);
즐거운 하루되세요
> 너무조아 님이 쓴 글입니다.
> 제목 : 오류수정
> 아래 수식의 오류사항을 바르게 수정하여 주십시요!!
Input : K(0);
var : PL(0);
PL = DayClose(1);
If TimeToMinutes(sTime) > TimeToMinutes(EntryTime(0)) + 60 Then {
Buy("b",AtStop,PL+K);
Sell("s",AtStop,PL-K);
}
이전글