커뮤니티

문의 (YS)

프로필 이미지
TRF
2014-03-24 10:13:01
1247
글번호 222880
답변완료
1. YS청산코드 일부분입니다. 만약 2.98 호가에서 청산시그널이 발생하면 3.01에 주문이 되는 문제가 발생하면서 YS주문메시지에 "호가단위에 어긋납니다."라는 메시지가 출력이됩니다. 이를 수정부탁드리겠습니다. if (gPosition == 1 && gSignalKind == SIG_EXITLONG) { // gCallOrderCode 잔고 셋팅 CA.SetBalanceItem(gCallOrderCode, 0); // 잔고에 수량이 존재하면 if (CA.Balance.count > 0) { if (Option.GetCurrentByCode(gCallOrderCode) >= 3.0) var Tick = 0.05; else var Tick = 0.01; var EXLxCallPrice1 = Option.GetCurrentByCode(gCallOrderCode) + Tick * 3; gEXLxID1 = CA.OrderSell(gCallOrderCode, CA.Balance.count, EXLxCallPrice1, 0);
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2014-03-26 15:00:01

안녕하세요 예스스탁입니다. 옵션에서 현재가에 n틱을 더하는 내용이므로 해당 부분 경우별로 조건채크해서 값을 지정하셔야 합니다. 아래 내용 참고하시기 바랍니다. if (gPosition == 1 && gSignalKind == SIG_EXITLONG) { CA.SetBalanceItem(gCallOrderCode, 0); if (CA.Balance.count > 0) { if (Option.GetCurrentByCode(gCallOrderCode) >= 3.0) var Tick = 0.05; else var Tick = 0.01; //먼저 현재가+Tick*3가격 계산(현재가가 2.98이면 3.01) var EXLxCallPrice1 = Option.GetCurrentByCode(gCallOrderCode) + Tick * 3; //현재가가 3.0미만이고 EXLxCallPrice1는 3.0을 초과하면 (현재가 2.98,EXLxCallPrice1는 3.01 ) if (Option.GetCurrentByCode(gCallOrderCode) < 3.0 && EXLxCallPrice1+ Tick * 3 > 3.0) { //EXLxCallPrice1에서 3.0초과 틱수 계산 (0.01/0.01 = 1) var Diff = Math.floor((EXLxCallPrice1-3.0)/Tick); //3.0에 초과틱수에 0.05곱해서 가격계산해서 EXLxCallPrice1에 다시 저장 var EXLxCallPrice1 = 3.0+0.05*Diff; } gEXLxID1 = CA.OrderSell(gCallOrderCode, CA.Balance.count, EXLxCallPrice1, 0); } } 즐거운 하루되세요 > TRF 님이 쓴 글입니다. > 제목 : 문의 (YS) > 1. YS청산코드 일부분입니다. 만약 2.98 호가에서 청산시그널이 발생하면 3.01에 주문이 되는 문제가 발생하면서 YS주문메시지에 "호가단위에 어긋납니다."라는 메시지가 출력이됩니다. 이를 수정부탁드리겠습니다. if (gPosition == 1 && gSignalKind == SIG_EXITLONG) { // gCallOrderCode 잔고 셋팅 CA.SetBalanceItem(gCallOrderCode, 0); // 잔고에 수량이 존재하면 if (CA.Balance.count > 0) { if (Option.GetCurrentByCode(gCallOrderCode) >= 3.0) var Tick = 0.05; else var Tick = 0.01; var EXLxCallPrice1 = Option.GetCurrentByCode(gCallOrderCode) + Tick * 3; gEXLxID1 = CA.OrderSell(gCallOrderCode, CA.Balance.count, EXLxCallPrice1, 0);