항상 많은 도움 감사드립니다. 시스템식에서 스위칭이 이루어질때 결과 보고서 상의 거래내역에는 문제없이 체크가 되지만 실제 거래에서는 오류가 발생되어 시스템 수정에 대하여 문의 드립니다. 어제 올리신 분의 경우와 비슷한 경우이긴 한테 차이가 있어서 한번 검토부탁드립니다.
오류 내역은 위에 나와 있는 세번째 그림에 나와 있구요..시스템식은 아래와 같습니다.
If MarketPosition == 0 && 조건 A then Sell ("매도",atmarket,def,2);
If MarketPosition <= 0 && 조건 B then buy ("매수",atmarket,def,2);
if IsEntryName("매도") == true Then {
ExitShort("dp5",AtLimit,EntryPrice-25,"",1,1);
if 조건 A-1 Then
ExitShort("매도정리",atmarket,def,"매도");
}
if IsEntryName("매수") == true Then {
ExitLong("Sp4",AtLimit,EntryPrice+35,"",1,1);
if 조건B-1 Then
ExitLong("매수정리",atmarket,def,"매수");
}
두번째 그림에 있는 시스템 보고서의 거래내역이 제대로 실행되는 내역이구요.
세번째 그림에서의 실제 거래 내역의 오류를 보면
if 조건 A-1 Then
ExitShort("매도정리",atmarket,def,"매도");
위에 있는 분할청산 시스템식이 조건이 충족되어서 매수 접수(exitlong)를 발생시켰는데 계약이 체결되기 전에
If MarketPosition <= 0 && 조건 B then buy ("매수",atmarket,def,2);
위의 매수 2계약 접수를 진행시켜 오류가 났으며 결국 이 매수는 진행되지 않았습니다.
2번째 그림의 시스템 보고서상에는 문제없이 거래가 종료되었으나 실제로는
if IsEntryName("매수") == true Then {
{
ExitLong("Sp4",AtLimit,EntryPrice+35,"",1,1);
if 조건B-1 Then
ExitLong("매수정리",atmarket,def,"매수");
위의 "매수"에 대한 분할청산 건 매도 2건이 미체결약정으로 남아 있는 상태입니다.
만일에 예수금이 3,4개의 계약이 가능한 상황이었다면 위와 같은 오류가 나지 않았을 것이라는 것은 알고 있습니다. 2계약에 해당되는 예수금을 가지고 위와 같은 오류가 발생하지 않게 하려면 시스템식을 어떻게 수정해야 할까요?
아니면 시스템 매매 설정에서 보완할 수 있는 방법이 있을까요?
답변 2
예스스탁
예스스탁 답변
2024-01-12 17:36:33
안녕하세요
예스스탁입니다.
올리신 내용은 수식 오류가 아닙니다.
올려주신 오류는 계좌의 금액부족으로 인한 증권사 원장에서 주문거부를 한 내용으로
수식으로 해결할 수 있는 부분이 아닙니다.
전략식은 차트 데이터로 조건만족여부를 판단해 신호만 발생하며
자동매매로 설정하면 신호와 함께 주문이 집행될 뿐입니다.
일반적으로 매수와 매도가 스위칭(리버셜)되는 전략은
반대포지션 청산과 진입이 동시에 이루어 지므로
지정한 수량의 2배의 증거금으로 운용되어야 하는 전략입니다.
진입수량이 1계약이면 스위칭될때 2계약씩 주문이 되므로
2계약 주문이 가능한 충분한 금액이 있어야 합니다.
모든 트레이딩은 전략 내용에 맞게 충분한 증거금이나 금액을 확충하고 운용하셔야 합니다.
해당 메시지는 증권사 원장에서 거부된 내용이므로
사용자분이 실제 2계약 주문이 가능한 금액이라고 판단하셔도
증권사 원장에서 계산하는 금액과 차이가 있을 수 있고
주문가격이 시장가등을 사용하면 더 많은 주문증거금이 필요하게 됩니다.
회피할 하나의 방법이라면
시스템 트레이딩 설정창의 부가기능에 진입주문지연 기능이 있습니다.
진입주문지연기능은 진입신호가 발생한 후에 지정한 시간(초) 이후에 주문을 집행하는 기능입니다.
청산주문은 발생 후 즉시 주문을 집행하고 진입주문은 N초 이후에 집행하므로
N초 이내에 청산주문이 체결된다면 증거금부족 오류를 피할 수 있습니다.
다만 N초 이내에 청산주문이 체결되지 않으면 기존과 같이 주문거부가 됩니다.
즐거운 하루되세요
> 비정성시 님이 쓴 글입니다.
> 제목 : 시스템 스위칭 오류 수정 문의 드립니다.
> 항상 많은 도움 감사드립니다. 시스템식에서 스위칭이 이루어질때 결과 보고서 상의 거래내역에는 문제없이 체크가 되지만 실제 거래에서는 오류가 발생되어 시스템 수정에 대하여 문의 드립니다. 어제 올리신 분의 경우와 비슷한 경우이긴 한테 차이가 있어서 한번 검토부탁드립니다.
오류 내역은 위에 나와 있는 세번째 그림에 나와 있구요..시스템식은 아래와 같습니다.
If MarketPosition == 0 && 조건 A then Sell ("매도",atmarket,def,2);
If MarketPosition <= 0 && 조건 B then buy ("매수",atmarket,def,2);
if IsEntryName("매도") == true Then {
ExitShort("dp5",AtLimit,EntryPrice-25,"",1,1);
if 조건 A-1 Then
ExitShort("매도정리",atmarket,def,"매도");
}
if IsEntryName("매수") == true Then {
ExitLong("Sp4",AtLimit,EntryPrice+35,"",1,1);
if 조건B-1 Then
ExitLong("매수정리",atmarket,def,"매수");
}
두번째 그림에 있는 시스템 보고서의 거래내역이 제대로 실행되는 내역이구요.
세번째 그림에서의 실제 거래 내역의 오류를 보면
if 조건 A-1 Then
ExitShort("매도정리",atmarket,def,"매도");
위에 있는 분할청산 시스템식이 조건이 충족되어서 매수 접수(exitlong)를 발생시켰는데 계약이 체결되기 전에
If MarketPosition <= 0 && 조건 B then buy ("매수",atmarket,def,2);
위의 매수 2계약 접수를 진행시켜 오류가 났으며 결국 이 매수는 진행되지 않았습니다.
2번째 그림의 시스템 보고서상에는 문제없이 거래가 종료되었으나 실제로는
if IsEntryName("매수") == true Then {
{
ExitLong("Sp4",AtLimit,EntryPrice+35,"",1,1);
if 조건B-1 Then
ExitLong("매수정리",atmarket,def,"매수");
위의 "매수"에 대한 분할청산 건 매도 2건이 미체결약정으로 남아 있는 상태입니다.
만일에 예수금이 3,4개의 계약이 가능한 상황이었다면 위와 같은 오류가 나지 않았을 것이라는 것은 알고 있습니다. 2계약에 해당되는 예수금을 가지고 위와 같은 오류가 발생하지 않게 하려면 시스템식을 어떻게 수정해야 할까요?
아니면 시스템 매매 설정에서 보완할 수 있는 방법이 있을까요?