커뮤니티

분할청산 로직

프로필 이미지
대가북극곰
2014-08-08 15:01:31
159
글번호 77533
답변완료
예스스팟에서 분할 청산로직을 구현하고 싶은데요, 예를 들어 같은 조건인데 처음 청산신호 발생 시에는 잔고의 50%를 청산하고 그 두번 째 신호 발생 시에는 남아있는 잔고의 60%(이미 청산된 수량 포함의 30%) 그리고 세번 째 신호 발생 시에는 잔고 전량 청산. 이 청산로직 구현 방법을 알려주시기 바랍니다. *예스스팟 Q&A에 올렸는데 답이 없어서 여기에 올립니다.
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2014-08-11 11:23:15

안녕하세요 예스스탁입니다. 아래 내용 참고하시기 바랍니다. 청산을 카운트 하려면 진입주문을 할때 초기화해서 카운트 해야 합니다. 아래 내용으로 흐름 참고하셔서 수정보완해 사용하시기 바랍니다. 진입과 청산조건을 몰라 차트신호로 진입과 청산신호를 대체했습니다. 진입조건만족하면 매수 후 청산조건 만족횟수를 카운트할 변수는 0으로 셋팅 --> 청산조건이 만족하면 카운트를 1씩 증가 --> 카운트가 1,2,3일때 각각 수량 계산해서 청산주문 var Start,Xcnt; function Main_OnStart() { Start = 0; Xcnt = 0; } function Chart1_OnRiseSignal(Signal) { //매수신호 if (Signal.signalKind == 1) { Start = 1; Account1.OrderBuy(Main.GetOrderCode(Chart1.GetCode(1)), 100, 0,1); Xcnt = 0; //청산횟수 초기화 } //매수청산신호 if (Start == 1 && Signal.signalKind == 2) { //청산신호 카운트 Xcnt = Xcnt+1; Account1.SetBalanceItem(Main.GetOrderCode(Chart1.GetCode(1)), 0); //첫번째 발생 if (Xcnt == 1) { if (Account1.Balance.count > 0 && Account1.Balance.position == 2) { Account1.OrderSell(Account1.Balance.code,Math.floor(Account1.Balance.count*0.5), 0,1); } } //두번째 발생 if (Xcnt == 2) { if (Account1.Balance.count > 0 && Account1.Balance.position == 2) { Account1.OrderSell(Account1.Balance.code,Math.floor(Account1.Balance.count*0.6), 0,1); } } //세번째 발생 if (Xcnt == 3) { if (Account1.Balance.count > 0 && Account1.Balance.position == 2) { Account1.OrderSell(Account1.Balance.code,Account1.Balance.count, 0,1); } } } } 예스스팟 문의는 예스스팟 Q&A에만 남겨주시기 바랍니다. 예스스팟은 문의에 따라 시간이 많이 걸리게 됩니다. 간단한 내용이라 가이드 작성해 드립니다. 즐거운 하루되세요 > 대가북극곰 님이 쓴 글입니다. > 제목 : 분할청산 로직 > 예스스팟에서 분할 청산로직을 구현하고 싶은데요, 예를 들어 같은 조건인데 처음 청산신호 발생 시에는 잔고의 50%를 청산하고 그 두번 째 신호 발생 시에는 남아있는 잔고의 60%(이미 청산된 수량 포함의 30%) 그리고 세번 째 신호 발생 시에는 잔고 전량 청산. 이 청산로직 구현 방법을 알려주시기 바랍니다. *예스스팟 Q&A에 올렸는데 답이 없어서 여기에 올립니다.