어떻게 적어드려야 이해가 되시려는지 모르겠습니다 흠....
혹시 질문하는 로직(?) Flow 있으면 예제로 주시면 숙지좀 하겠습니다.
종가가 최근 3일간 종가 중 최고가일 때 롱 진입하여 익일 청산하는 방법을 사용하려 하고요.
종가 > 3일 최고가
반대로
종가가 최근 3일간 종가 중 최저가일 때 숏 진입하여 익일 청산하는 방법을 사용하려 하고요.
종가 < 3일 최저가
답변 1
예스스탁
예스스탁 답변
2021-05-20 10:10:13
안녕하세요
예스스탁입니다.
1
만약 의도하시는 부분이 과거봉에 대한 시뮬레이션이면
아래식을 일봉에 적용하시면 됩니다.
그러므면 일봉 종가에 진입하고 다음날 시가에 청산한 것으로 리포트결과를 보실수 있습니다.
input : N(3);
if C > Highest(C,N)[1] Then
Buy("b");
if C < lowest(C,N)[1] Then
Sell("s");
ExitLong("bx",AtMarket);
ExitShort("sx",AtMarket);
2
만약 실전에서 사용하기 위한 용도이면
분봉에서 일봉조건 체크해서 특정시간에 진입을 하게 하셔야 합니다.
차트의 봉완성의 기준은 다음봉시가가 수신될때이므로
1번과 같은 식을 일봉차트에 실전에서 사용하시면
청산이 다음날 시가청산이고 진입도 봉완성시(다음날시가수신)에 실제 주문이 집행되어
진입과 청산이 동일한 시점에 주문이 집행됩니다.
시스템은 동시호가에는 주문을 집행하지 못하므로
진입은 정규장내 특정시간에 조건체크해서 진입하게 하고 청산은 다음날 시가에 청산하게 구현하셔야 합니다.
아래는 5분봉기준으로 정규장 마지막봉의 시가에 조건체크해 진입하고
다음날 시초가에 청산하게 하는 식입니다.
input : N(3);
var : HC(0),LC(0),cnt(0);
HC = 0;
LC = 0;
For cnt = 1 to N
{
if HC == 0 or (HC > 0 and DayClose(cnt) > HC) Then
HC = DayClose(cnt);
if LC == 0 or (LC > 0 and DayClose(cnt) < LC) Then
LC = DayClose(cnt);
}
if NextBarStime >= 153000 and sTime < 153000 and C > HC Then
Buy("b",AtMarket);
if NextBarStime >= 153000 and sTime < 153000 and C < LC Then
Sell("s",AtMarket);
if MarketPosition == 1 and NextBarSdate != sDate Then
exitlong("bx",AtMarket);
if MarketPosition == -1 and NextBarSdate != sDate Then
ExitShort("sx",AtMarket);
즐거운 하루되세요
> algojj 님이 쓴 글입니다.
> 제목 : 문의드립니다.
> 어떻게 적어드려야 이해가 되시려는지 모르겠습니다 흠....
혹시 질문하는 로직(?) Flow 있으면 예제로 주시면 숙지좀 하겠습니다.
종가가 최근 3일간 종가 중 최고가일 때 롱 진입하여 익일 청산하는 방법을 사용하려 하고요.
종가 > 3일 최고가
반대로
종가가 최근 3일간 종가 중 최저가일 때 숏 진입하여 익일 청산하는 방법을 사용하려 하고요.
종가 < 3일 최저가