커뮤니티

문의

프로필 이미지
파일럿
2018-06-15 17:54:06
129
글번호 119786
답변완료

첨부 이미지

a1.OrderSell (order1.code , a1.Balance.count , order1.Bid(1) , 2 ) ; 위 수식으로 예스트레이더에서는 보유 수량을 불러와서 매도 처리가 되는데 글로벌에서는 첨부파일처럼 보유수량을 0 으로 처리되어 매도 처리가 않되는데 해결 부탁드립니다
시스템
답변 2
프로필 이미지

예스스탁 예스스탁 답변

2018-06-18 11:16:29

안녕하세요 예스스탁입니다. 해당 내용 테스트 해보았지만 잔고객체 셋팅에 문제가 없습니다. 첨부된 그림과 같이 주문집행이 됩니다. 적용한 수식은 아래와 같이 차트에서 신호 발생하면 신호에 따라 주문내는 로직입니다. 청산시 잔고셋팅하고 잔고수량으로 신호발생하게 했습니다. function Main_OnStart() { Main.MessageList("Start"); } function Chart1_OnRiseSignal(Signal) { if (Signal.signalKind == 1) { Account1.OrderBuy(Main.GetOrderCode(Signal.code),Signal.count,MarketData1.Ask(3),2); } if (Signal.signalKind == 2) { Account1.SetBalanceItem(Main.GetOrderCode(Signal.code), 0); if (Account1.Balance.count > 0) { Account1.OrderSell(Main.GetOrderCode(Signal.code),Account1.Balance.count,MarketData1.Bid(3),2); } } if (Signal.signalKind == 3) { Account1.OrderSell(Main.GetOrderCode(Signal.code),Signal.count,MarketData1.Bid(3),2); } if (Signal.signalKind == 4) { Account1.SetBalanceItem(Main.GetOrderCode(Signal.code), 0); if (Account1.Balance.count > 0) { Account1.OrderBuy(Main.GetOrderCode(Signal.code),Account1.Balance.count,MarketData1.Ask(3),2); } } } 올리신 내용만으로는 수식내에서 발란스를 언제 셋팅하셨는지 알수가 없습니다. 주문직전에 발란스 셋팅되었는지 확인하시기 바랍니다. 혹은 셋팅전이나 주문전에 계좌재조회를 하는지 여부도 체크사셔야 합니다. Account1.Refresh() Account1.SetBalanceItem(Main.GetOrderCode(Signal.code), 0); Account1.OrderSell(Main.GetOrderCode(Signal.code),Account1.Balance.count,MarketData1.Bid(3),2); 위와 같이 식을 작성하시면 계좌재조회를 하게 되면 실제원장과 가원장이 동기화가 되므로 동기화가 완료되기 전에 잔고셋티이 되어 가원장의 수량이 0일수 있습니다. 랭귀지에서 원장동기화를 하시면 동기화완료 확인후에 주문발생하게 코딩하셔야 합니다. 즐거운 하루되세요 > 파일럿 님이 쓴 글입니다. > 제목 : 문의 > a1.OrderSell (order1.code , a1.Balance.count , order1.Bid(1) , 2 ) ; 위 수식으로 예스트레이더에서는 보유 수량을 불러와서 매도 처리가 되는데 글로벌에서는 첨부파일처럼 보유수량을 0 으로 처리되어 매도 처리가 않되는데 해결 부탁드립니다
프로필 이미지

파일럿

2018-06-18 11:27:10

파일럿 님에 의해 삭제된 답변입니다.