첨부 이미지
그림1
Inputs: lookBackDays(60) ;
Vars: buyPoint(0),sellPoint(0),LiqPoint(0);
buyPoint = Highest(High,lookBackDays);
sellPoint = Lowest(Low,lookBackDays);
if MarketPosition == 0 then Buy("" , Atstop,buyPoint);
if MarketPosition == 0 then Sell("",Atstop, sellPoint);
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
예시로 이런 간단한 전략을 짜고 시뮬레이션 창에서 당일청산에
마지막 봉에서 청산 조건으로 돌려보면 당일청산후 다음날 진입조건이 되었는데도 바로 진입이 되지 않고 다음 봉에서 진입을 합니다. (첨부 그림 2020년 5월 8일)
문제가 뭘까요 감사합니다.
답변 1
예스스탁
예스스탁 답변
2020-05-15 11:08:05
안녕하세요
예스스탁입니다.
1
수식에 사용되는 atstop은 봉완성시(다음봉시가수신) 값셋팅하고 다음봉의 시세와 비교해 신호가 발생합니다.
2
당일마지막봉 종가에 청산되므로
MarketPosition이 해당 봉에서는 1 또는 -1이고 그다음봉인 다음날 첫봉이 되어야 0이 됩니다.
3
그러므로 진입에 있는if MarketPosition == 0 then 이라는 조건이 마지막봉에서는
만족하지 못하므로 첫봉에 신호가 발생하지 않았습니다.
아래와 같이 해당 조건을 제외해야만 첫봉에서 신호가 발생할수 있습니다.
Buy("" , Atstop,buyPoint);
Sell("",Atstop, sellPoint);
매일 당일청산을 하는 식이므로
첫봉에는 MarketPosition == 0 조건없이 셋팅해서 진입하게 하고
당일 첫봉 완성후에는 MarketPosition == 0 조건으로 진입하게 작성하시면 됩니다.
Inputs: lookBackDays(60) ;
Vars: buyPoint(0),sellPoint(0),LiqPoint(0);
buyPoint = Highest(High,lookBackDays);
sellPoint = Lowest(Low,lookBackDays);
if NextBarSdate != sdate then
{
Buy("" , Atstop,buyPoint);
Sell("",Atstop, sellPoint);
}
Else
{
if MarketPosition == 0 then
{
Buy("" , Atstop,buyPoint);
Sell("",Atstop, sellPoint);
}
}
즐거운 하루되세요
> 시고르시고르 님이 쓴 글입니다.
> 제목 : 문의드립니다
>
Inputs: lookBackDays(60) ;
Vars: buyPoint(0),sellPoint(0),LiqPoint(0);
buyPoint = Highest(High,lookBackDays);
sellPoint = Lowest(Low,lookBackDays);
if MarketPosition == 0 then Buy("" , Atstop,buyPoint);
if MarketPosition == 0 then Sell("",Atstop, sellPoint);
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
예시로 이런 간단한 전략을 짜고 시뮬레이션 창에서 당일청산에
마지막 봉에서 청산 조건으로 돌려보면 당일청산후 다음날 진입조건이 되었는데도 바로 진입이 되지 않고 다음 봉에서 진입을 합니다. (첨부 그림 2020년 5월 8일)
문제가 뭘까요 감사합니다.