커뮤니티

예스스팟 분할 청산

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

예스스탁 예스스탁 답변

2014-08-14 11:50:40

안녕하세요 예스스탁입니다. 아래 내용 참고하시기 바랍니다. 청산을 카운트 하려면 진입주문을 할때 초기화해서 카운트 해야 합니다. 아래 내용으로 흐름 참고하셔서 수정보완해 사용하시기 바랍니다. 진입과 청산조건을 몰라 차트신호로 진입과 청산신호를 대체했습니다. 진입조건만족하면 매수 후 청산조건 만족횟수를 카운트할 변수는 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); } } } } 즐거운 하루되세요 > 대가북극곰 님이 쓴 글입니다. > 제목 : 예스스팟 분할 청산 > 예스스팟에서 분할 청산로직을 구현하고 싶은데요, 예를 들어 같은 조건인데 처음 청산신호 발생 시에는 잔고의 50%를 청산하고 그 두번 째 신호 발생 시에는 남아있는 잔고의 60%(이미 청산된 수량 포함의 30%) 그리고 세번 째 신호 발생 시에는 잔고 전량 청산. 이 청산로직 구현 방법을 알려주시기 바랍니다.