예스스팟으로 당일 개별종목 매매하고 있습니다.
개별종목 매수 하자 마자 5% 익절을 걸어 놓고 있습니다.
3%손절선을 걸고 싶습니다.
신규편입종목 stop 주문 실행을 걸어놨는데 익절 주문이 들어간 상태라 매도주문이 불가능하다고 뜹니다.
1. 예스스팟 안에서 로직을 수정해야 한다면 예시 부탁드립니다.
2. 신규편입종목 stoploss에서 옵션(이전 주문 취소 후 시장가 매도 등)으로 가능하다면 설명 부탁드립니다.
답변 1
예스스탁
예스스탁 답변
2018-07-13 15:58:13
안녕하세요
예스스탁입니다.
사용하시는 종목검색에 아래내용 참고하셔서
추가해서 구현하시기 바랍니다.
기존에 사용하시는 스팟수식이 매수후 익절처리를 하는 내용이시므로
종목객체는 준비가 되어 잇는 것으로 판단하고 그 이후의 내용입니다.
종목객체의 시세가 업데이될때마다
현재 시세업데이트 된 종목의 객체를 찾고
잔고셋팅해서 현재가가 평단가 -3%에 도달하면 기존의
해당 종목으로 주문낼 미체결 내역을 모두 취소하고
보유수량 전량을 매도하는 내용입니다.
var OBJ = []; //매수주문낸 종목의 종목객체들 저장 배열변수
var xcond = false,XID,Xcode;
function Main_OnUp*dateMarket(sItemCode, lUp*dateID)
{
//종목객체 1개이상
if (OBJ.length > 0 && lUp*dateID == 20001)
{
//루프를 돌려 현재 업데이트 된 종목의 종목객체를 찾고
for (var i = 0; i < OBJ.length; i++)
{
//찾았으면
if (OBJ[i].code == sItemCode)
{
//잔고객체 생성
Account1.SetBalance(OBJ[i].code, 0);
//현재가가 잔고평단가-3% 이하이면
if (OBJ[i].current <= Account1.Balance.avgUnitCost*0.97)
{
//전체 미체결수
var num = Account1.GetTheNumberOfUnfills();
//미체결수만큼 루프
xcond = false;
for (var z = 0; z < num; z++)
{
Account1.SetUnfill(z);
//현재 종목 미체결 모두 취소
if (Account1.Unfill.code == Account1.Balance.code)
{
xcond = true;
xcode = Account1.Balance.code;
XID = Account1.OrderCancel(Account1.Unfill.orderNum);
}
}
}
}
}
}
}
function Main_OnOrderResponse(OrderResponse)
{
//취소주문에 대한 응답을 받으면
if (OrderResponse.orderID == XID)
{
//다시 잔고객체 생성
Account1.SetBalance(xcode, 0);
//수량이 1이상이면
if (Account1.Balance.count > 0)
{
//시장가로 전량 매도
Account1.OrderSell(Account1.Balance.code, Account1.Balance.count,0,1);
}
}
}
즐거운 하루되세요
> sc2018 님이 쓴 글입니다.
> 제목 : 손절문의.
> 예스스팟으로 당일 개별종목 매매하고 있습니다.
개별종목 매수 하자 마자 5% 익절을 걸어 놓고 있습니다.
3%손절선을 걸고 싶습니다.
신규편입종목 stop 주문 실행을 걸어놨는데 익절 주문이 들어간 상태라 매도주문이 불가능하다고 뜹니다.
1. 예스스팟 안에서 로직을 수정해야 한다면 예시 부탁드립니다.
2. 신규편입종목 stoploss에서 옵션(이전 주문 취소 후 시장가 매도 등)으로 가능하다면 설명 부탁드립니다.