커뮤니티
포지션 오류 정정 방법
2019-08-30 02:16:28
216
글번호 131586
매수 주문되었는데 체결이 되지 못한 상태에서
매수 청산을 하면서 매도 체결이 되었습니다.
그래서 결과적으로 포지션이 없는 상태에서 매도 거래가 잡히게 되었습니다.
문의사항은
1. 매수 접수 봉에서는 주문가를 빠르게 찍고 가격이 올라가서 주문이 안될수도 있는데
그 다음봉에서는 왜 체결이 안 된건가요? 주문이 접수가 되고 주문가에 봉이 걸쳐있는데도
체결여부는 시장에서 통제되는 것이라 시스템에서는 알수없는 것인가요?
2. 매수포지션 중에 체결된 거래가 없는 경우에서 매도 주문을 안하고 포지션만 취소하는 방법을 알려주세요.
3. 포지션 없는 중에 매도 체결된 거래를 청산하기 위해서
포지션은 안생기고 매도 청산을 하는 방법을 알려주세요.
4. 포지션은 없으면서 미결제 잔고가 있는 상태는 if문에서 어떻게 조건을 줘야 하나요?
5. 포지션을 주문기준이 아니라 체결 기준으로 바꿀수 있나요?
- 1. 포지션_오류.JPG (0.13 MB)
답변 1
예스스탁 예스스탁 답변
2019-08-30 15:41:08
안녕하세요
예스스탁입니다.
1
예스랭귀지는 차트기반의 언어로
차트 봉데이타로 조건을 체크해서 신호와 주문 발생할때 사용됩니다.
차트에 신호가 발생하면 주문까지만 발생시키고 이후 체결여부로 제어가 가능하지 않습니다.
2
잔고와 결합해 복합적으로 전략을 구사하시려면
예스스팟과 같은 API급 언어와 결합해서 전략을 구현하셔야 합니다.
예스랭귀지로는 가능한 부분이 없습니다.
3
예스스팟은 자바스크립트 언어가 탑제되어 있습니다.
스팟으로 코딩하시기 위해서는 해당 언어를 다루실 수 있어야 합니다.
아래 스팟 수식은
차트에서 신호가 발생하면 주문을 집행하고
청산신호시에는 진입신호에서 미체결된 부분은 취소하고
체결된 수량만 청산하게 하는 로직입니다.
스팟이 주요 트레이딩 도구가 되고
차트는 단지 신호를 발생용도이므로 차트에 시스템은 시험적용으로 적용하시면 됩니다.
각 객체설정방법등은 예스스팟 도움말 참고하시기 바랍니다.
4
스크립트 객체설정
차트객체추가 --> 속성에서 객체명 Chart1, 전략이 적용된 차트와 아이디 연결
계좌객체추가 --> 속성에서 객체명 Account1, 주문계좌지정
종목객체추가 --> 속성에서 객체명 MarketData1. 차트와 같은 종목으로 지정
var BID,SID,BNum,SNum;
var vol = 1; //진입수량 1걔
function Main_OnStart()
{
Main.MessageList("Start")
}
//연결된 차트에서 신호발생
function Chart1_OnRiseSignal(Signal)
{
//매수진입신호이면
if (Signal.signalKind == 1)
{
//매도3호가로 지정가 주문하고 주문아이디는 BID에 저장
BID = Account1.OrderBuy(Main.GetOrderCode(Signal.code),vol,MarketData1.Ask(3),2);
}
if (Signal.signalKind == 2)
{
//매수진입주문의 주문번호로 미체결 셋팅
Account1.SetUnfill(BNum);
//미체결 수량이 잇으면
if ( Account1.Unfill.count > 0 )
{
//취소
Account1.OrderCancel(Bnum);
}
//잔고셋팅
Account1.SetBalance(Main.GetOrderCode(Signal.code), 0);
//매수포지션 잔고가 있으면
if (Account1.Balance.count > 0 && Account1.Balance.position == 2)
{
//매수3호가로 잔고수량만큼 매도주문
Account1.OrderSell(Main.GetOrderCode(Signal.code),Account1.Balance.count,MarketData1.Bid(3),0)
}
}
//매도진입신호 발생
if (Signal.signalKind == 3)
{
//매수3호가로 지정가 주문하고 주문아이디는 SID에 저장
SID = Account1.OrderSell(Main.GetOrderCode(Signal.code),vol,MarketData1.Bid(3),0);
}
//매도청산신호 발생
if (Signal.signalKind == 4)
{
//매도진입주문 미체결객체 셋팅
Account1.SetUnfill(SNum);
//미체결수량이 있으면
if ( Account1.Unfill.count > 0)
{
//취소
Account1.OrderCancel(Snum);
}
//잔고셋팅
Account1.SetBalance(Main.GetOrderCode(Signal.code), 0);
//매도포지션 잔고가 있으면
if (Account1.Balance.count > 0 && Account1.Balance.position == 1)
{
//매도3호가로 잔고수량만큼 매수주문
Account1.OrderBuy(Main.GetOrderCode(Signal.code),Account1.Balance.count,MarketData1.Ask(1),0)
}
}
}
//주문응답
function Main_OnOrderResponse(OrderResponse)
{
//BID에 저장된값과 동일아이디의 주문응답이면
if (OrderResponse.orderID == BID)
{
//주문번호 BNum에 저장
BNum = OrderResponse.orderNum;
}
//SID에 저장된값과 동일아이디의 주문응답이면
if (OrderResponse.orderID == SID)
{
//주문번호 SNum에 저장
SNum = OrderResponse.orderNum;
}
}
즐거운 하루되세요
> yes랭귀지 님이 쓴 글입니다.
> 제목 : 포지션 오류 정정 방법
> 매수 주문되었는데 체결이 되지 못한 상태에서
매수 청산을 하면서 매도 체결이 되었습니다.
그래서 결과적으로 포지션이 없는 상태에서 매도 거래가 잡히게 되었습니다.
문의사항은
1. 매수 접수 봉에서는 주문가를 빠르게 찍고 가격이 올라가서 주문이 안될수도 있는데
그 다음봉에서는 왜 체결이 안 된건가요? 주문이 접수가 되고 주문가에 봉이 걸쳐있는데도
체결여부는 시장에서 통제되는 것이라 시스템에서는 알수없는 것인가요?
2. 매수포지션 중에 체결된 거래가 없는 경우에서 매도 주문을 안하고 포지션만 취소하는 방법을 알려주세요.
3. 포지션 없는 중에 매도 체결된 거래를 청산하기 위해서
포지션은 안생기고 매도 청산을 하는 방법을 알려주세요.
4. 포지션은 없으면서 미결제 잔고가 있는 상태는 if문에서 어떻게 조건을 줘야 하나요?
5. 포지션을 주문기준이 아니라 체결 기준으로 바꿀수 있나요?
다음글
이전글