커뮤니티

수식작성 문의드립니다.

프로필 이미지
망고주스
2019-06-07 02:22:20
3235
글번호 224895
답변완료
수고많으세요. 궁금한게 있어 질문드립니다. 먼저 수식을 적용하고, 매매를 해보고, 매매를 한 상태에서 수식을 적용해보았습니다. 청산이 되지 않는 경우가 있는데 왜 그런지 궁금합니다. (수식) var tEnable = true, BID,SID,Bnum,Snum; function Main_OnStart() { Main.MessageLog("청산식 시작"); } function Main_OnU*dateMarket(sItemCode, lU*dateID) { if (sItemCode == M1.code && lU*dateID == 20001 && tEnable == true) { A1.SetBalanceItem(M1.code,0); if (A1.Balance.profit > tProfit || A1.Balance.profit < tLoss) { if (A1.Balance.position == 1 && tEnable == true) { BID = A1.OrderBuy(A1.Balance.code, A1.Balance.count, 0, 1); tEnable = false; } else if (A1.Balance.postion == 2 && tEnable == true) { SID = A1.OrderSell(A1.Balance.code, A1.Balance.count, 0, 1); tEnable = false; } } } } function Main_OnOrderResponse(OrderResponse) { if (OrderResponse.orderID == BID) Bnum = OrderResponse.orderNum; else if(OrderResponse.orderID == SID) Snum = OrderResponse.orderNum; } function Main_OnNotifyFill(NotifyFill) { if (NotifyFill.orderNum == Bnum) { Main.MessageList("매도청산"); tEnable = true; } else if (NotifyFill.orderNum == Snum) { Main.MessageList("매수청산"); tEnable = true; } }
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2019-06-14 11:27:26

안녕하세요 예스스탁입니다. 올려주신 수식에 A1.Balance.profit이 사용되었는데 잔고객체(Balance)에는 profit이라는 함수나 프로퍼티가 없습니다. 잔고에서 현재가와 평단가 수량을 가져와 직접 계산해서 사용하셔야 합니다. function Main_OnU*dateMarket(sItemCode, lU*dateID) { if (sItemCode == M1.code && lU*dateID == 20001 && tEnable == true) { A1.SetBalanceItem(M1.code,0); var pl = 0; if (A1.Balance.position == 1) { pl = (A1.Balance.avgUnitCost-A1.Balance.current)*Account1.Balance.count; } if (A1.Balance.position == 2) { pl = (A1.Balance.current - A1.Balance.avgUnitCost)*Account1.Balance.count; } if (pl > tProfit || pl < tLoss) { if (A1.Balance.position == 1 && tEnable == true) { BID = A1.OrderBuy(A1.Balance.code, A1.Balance.count, 0, 1); tEnable = false; } else if (A1.Balance.postion == 2 && tEnable == true) { SID = A1.OrderSell(A1.Balance.code, A1.Balance.count, 0, 1); tEnable = false; } } } } 즐거운 하루되세요 > 망고주스 님이 쓴 글입니다. > 제목 : 수식작성 문의드립니다. > 수고많으세요. 궁금한게 있어 질문드립니다. 먼저 수식을 적용하고, 매매를 해보고, 매매를 한 상태에서 수식을 적용해보았습니다. 청산이 되지 않는 경우가 있는데 왜 그런지 궁금합니다. (수식) var tEnable = true, BID,SID,Bnum,Snum; function Main_OnStart() { Main.MessageLog("청산식 시작"); } function Main_OnU*dateMarket(sItemCode, lU*dateID) { if (sItemCode == M1.code && lU*dateID == 20001 && tEnable == true) { A1.SetBalanceItem(M1.code,0); if (A1.Balance.profit > tProfit || A1.Balance.profit < tLoss) { if (A1.Balance.position == 1 && tEnable == true) { BID = A1.OrderBuy(A1.Balance.code, A1.Balance.count, 0, 1); tEnable = false; } else if (A1.Balance.postion == 2 && tEnable == true) { SID = A1.OrderSell(A1.Balance.code, A1.Balance.count, 0, 1); tEnable = false; } } } } function Main_OnOrderResponse(OrderResponse) { if (OrderResponse.orderID == BID) Bnum = OrderResponse.orderNum; else if(OrderResponse.orderID == SID) Snum = OrderResponse.orderNum; } function Main_OnNotifyFill(NotifyFill) { if (NotifyFill.orderNum == Bnum) { Main.MessageList("매도청산"); tEnable = true; } else if (NotifyFill.orderNum == Snum) { Main.MessageList("매수청산"); tEnable = true; } }