커뮤니티
수식 문의드립니다.
2018-01-08 22:52:22
193
글번호 115575
간단한 etf 거래 로직을 운영중인데, 매수(진입)거래는 되는데 매도(청산) 거래가 되지 않습니다.
총 5개 로직을 동시에 돌리고 있고,
1개는 데이 전략, 나머지 4개는 포지션(오버나이트) 전략입니다.
포지션 전략의 대상 상품은 모두 동일합니다.
데이 전략은 매수(진입)와 매도(청산)가 다 잘됩니다.
그런데 포지션 전략은 매도(청산)가 계속해서 안됩니다.
1) 4개의 포지션 전략이 모두 동일한 상품을 대상으로 하고 있어서, 다음날 계좌에 있는 애들 중 어떤 애를 선택해서 매도해야할지 시스템이 스스로 몰라서 무언가 지정을 해주어야 하는 것인지?
2) 아니면 포지션 전략의 경우.. 다음날 매도가 되도록 수식에 무언가가 포함되어야 하는지..
3) 아니면 단순히 제가 수식을 잘못 적었는지.. 그것이 궁금합니다.
제 로직을 단순화하여 제시하니 검토해주시면 감사하겠습니다.
if 조건 1 and 조건 2 then Buy("b1", AtMarket);
if 조건 3 then ExitLong("EL", AtMarket);
여기서 조건 3은 시간 조건입니다. stime == 시각 이런식으로 되어 있습니다.
즉, 몇시 몇분 몇초에 자동으로 청산 주문이 나가도록 되어 있습니다.
이렇게 단순한데.. 왜 주문이 안나가는지 모르겠습니다.
도움 주시면 감사하겠습니다.
답변 1
예스스탁 예스스탁 답변
2018-01-10 10:39:30
안녕하세요
예스스탁입니다.
시스템은 차트데이터를 이용해서 조건만족하면 신호와 함께 주문을 집행합니다.
잔고상황은 알지 못해서 실제 잔고의 포지션의 보유여부를 시스템에서는 알지 못합니다.
단순히 수식의 코딩한데로 동작만 할 뿐입니다.
실제 계좌의 잔고도 해당 종목의 수량이 어떤 전략에서 몇개씩 주문했는지
별도로 기억하지 않습니다.
올려주신 내용이 다음날 청산하는 로직이 신호가 발생하지 않은것인지
신호는 발생했지만 주문이 집행되지 않은것인지 불명확합니다.
신호는 발생했다면 수식에서는 문제가 없습니다.
신호가 발생하지 않았다면
조건3의 로직을 살펴보아야 합니다.
시간을 지정했는데 해당시간의 봉이 없으면 신호가 발생하지 못합니다.
그러므로 지정한 시간이후의 첫봉에서 신호가 발생하게 아래와 같이
코딩해 주셔야 합니다.
if MarketPosition == 1 and
EntryDate > sdate and
(stime == 150000 or (stime > 150000 and stime[1] < 150000)) Then
ExitLong();
신호는 발생했는데 실제 주문이 발생하지 않았다면 상황은 2가지 입니다.
첫번째는 청산신호발생후 주문을 냈지만 수량부족으로 주문이 거부되는 경우입니다.
이부분은 수식에서 별도 처리가 불가능합니다.
시스템은 진입신호에서 발생한 수량으로 청산수량이 발생합니다.
잔고 수량은 알수가 없기 때문에 진입신호에서 발생한 수량으로
그대로 주문이 집행되기에 미체결등으로 수량이 맞지 않으면 주문거부되게 됩니다.
두번째는 주문자체가 집행되지 않는 경우입니다.
이경우는 일반적으로 설정창의 옵션설정 때문에 발생하지 않는 경우가 많습니다.
시스템 트레이딩 설정창의 매매탭에는 [주문시작신호]라는 옵션이 있습니다.
[모든신호],[진입신호] 2가지 옵션이 있는데
[모든신호]로 지정하면 시스템 적용후 발생하는 신호에 대해 제한없이 모두 주문을 집행합니다.
[진입신호]로 지정하면 시스템 적용후 진입신호가 발생한 이후부터 실제 주문을 집행하게 됩니다.
그러므로 시스템 적용후 청산신호가 첫신호이면 해당신호는 신호만 표시하고 주문을 하지 않습니다.
즉 [진입신호]옵션은 앞으로 발샐항 진입부터 주문을 시작하겠다는 옵션입니다.
전일 진입이 발생했는데 오늘 주문시작신호를 [진입신호]로 하면
오늘 발생하는 청산은 주문이 집행되지 않으므로 이경우에는 [모든신호]로
설정하고 시스템 적용하셔야 합니다.
즐거운 하루되세요
> 중박주식 님이 쓴 글입니다.
> 제목 : 수식 문의드립니다.
> 간단한 etf 거래 로직을 운영중인데, 매수(진입)거래는 되는데 매도(청산) 거래가 되지 않습니다.
총 5개 로직을 동시에 돌리고 있고,
1개는 데이 전략, 나머지 4개는 포지션(오버나이트) 전략입니다.
포지션 전략의 대상 상품은 모두 동일합니다.
데이 전략은 매수(진입)와 매도(청산)가 다 잘됩니다.
그런데 포지션 전략은 매도(청산)가 계속해서 안됩니다.
1) 4개의 포지션 전략이 모두 동일한 상품을 대상으로 하고 있어서, 다음날 계좌에 있는 애들 중 어떤 애를 선택해서 매도해야할지 시스템이 스스로 몰라서 무언가 지정을 해주어야 하는 것인지?
2) 아니면 포지션 전략의 경우.. 다음날 매도가 되도록 수식에 무언가가 포함되어야 하는지..
3) 아니면 단순히 제가 수식을 잘못 적었는지.. 그것이 궁금합니다.
제 로직을 단순화하여 제시하니 검토해주시면 감사하겠습니다.
if 조건 1 and 조건 2 then Buy("b1", AtMarket);
if 조건 3 then ExitLong("EL", AtMarket);
여기서 조건 3은 시간 조건입니다. stime == 시각 이런식으로 되어 있습니다.
즉, 몇시 몇분 몇초에 자동으로 청산 주문이 나가도록 되어 있습니다.
이렇게 단순한데.. 왜 주문이 안나가는지 모르겠습니다.
도움 주시면 감사하겠습니다.
다음글
이전글