커뮤니티

기 보유종목 매도(현물)

프로필 이미지
adino30
2019-06-26 23:58:22
3266
글번호 224906
답변완료
안녕하세요? 아래 수식 작성 부탁드립니다 (매번 큰 도움 감사드립니다.) 1) (예를들어) 삼성전자 를 10주 기보유 (스마트폰 등으로 몇일전에 매수) 2) 기 보유한 삼성전자가 예스트레이더 차트(차트명 C1)에서 시스템(시스템명: S1) 적용되어 있음 3) 시스템 S1에서 매도신호 발생 4) 예스 스팟으로 매도신호 받아서 매도 ------------------------------------- 위의 상황을 아래 수식으로 작성했을때, 이미 해당종목에 대해 보유 수량이 있음에도 매도신호가 발생을 안하네요.. 도움 부탁드립니다. (변수 선언 부분은 글에서 제거했습니다.) function Main_OnStart() { Main.MessageList("시작합니다."); Main.MessageList("C1 차트종목: ",C1.GetCode(1)); //S2차트종목코드를 불러와 종목객체를 요청 Main.ReqMarketData(C1.GetCode(1), 0, 0); Start = 0; state1 = 0; } //요청한 종목객체가 생성되어 수신되면 function Main_OnRcvMarketData(MarketData) { //현재 수신된 종목객체가 요청한 종목과 같으면 //item에 종목객체를 저장(이후에 item이 해당 종목객체로 사용됨) if (MarketData.code == C1.GetCode(1)) SSEobject = MarketData; } function C1_OnRiseSignal(Signal) { Skind = Signal.signalKind; Scode = Signal.code; Scount = Signal.count; if (Signal.signalKind == 2) { A1.SetBalance(scode,0); BxID=A1.OrderSell(Scode,A1.Balance.count,SSEobject.current,0); Main.MessageLog("매도주문"); Start1 = 0; //타이머 실행 Main.MessageLog("매도주문 후 타이머20초 시작"); Main.SetTimer(2, 1000);//1초 타이머 } } function Main_OnOrderResponse(OrderResponse) { //매수주문 접수되면 주문번호 저장 if (OrderResponse.orderID == BuyID) { BuyNum = OrderResponse.orderNum; } //매수청산주문 접수되면 주문번호 저장 if (OrderResponse.orderID == BxID) { BxNum = OrderResponse.orderNum; } } function Main_OnTimer(nEventID) { if (nEventID == 2) { //2번 타이머 종료 Main.KillTimer(2); //BxNum주문번호에 대한 미체결 객체 설정 A1.SetUnfillOrderNumber(BxNum); //설정된 미체결객체에 잔량이 있으면 if (A1.Unfill.count > 0) { //BxNum주문 정정 (매수1호가로 정정) if (A1.Unfill.price != SSEobject.Bid(1)) { BxID = A1.OrderReplacePrice(BxNum, SSEobject.Bid(1)); Main.MessageLog("매도 정정"); Main.SetTimer(3, 1000); } } } if (nEventID == 3) { //2번 타이머 종료 Main.KillTimer(3); //BxNum주문번호에 대한 미체결 객체 설정 A1.SetUnfillOrderNumber(BxNum); //설정된 미체결객체에 잔량이 있으면 if (A1.Unfill.count > 0) { //BxNum주문 정정 (매수1호가로 정정) if (A1.Unfill.price != SSEobject.Bid(1)) { BxID = A1.OrderReplacePrice(BxNum, SSEobject.Bid(1)); Main.MessageLog("매도 정정"); } } } }
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2019-07-18 14:34:16

안녕하세요 예스스탁입니다. function C1_OnRiseSignal(Signal) { Skind = Signal.signalKind; Scode = Signal.code; Scount = Signal.count; if (Signal.signalKind == 2) { A1.SetBalance(scode,0); 위 내용에 보시면 Scode에 종목코드를 저장하고 잔고셋팅에는 scode로 s가 소문자입니다. 스팟은 자바스크립트 언어로 대소문자를 업격히 구분합니다. A1.SetBalance(Scode,0); 선언한 이름과 똑같이 대소문자 사용해 주셔야 합니다. 다른 변수도 선업과 다르게 대소문자 사용되지 않았는지 살펴보시기 바랍니다. 즐거운 하루되세요 > adino30 님이 쓴 글입니다. > 제목 : 기 보유종목 매도(현물) > 안녕하세요? 아래 수식 작성 부탁드립니다 (매번 큰 도움 감사드립니다.) 1) (예를들어) 삼성전자 를 10주 기보유 (스마트폰 등으로 몇일전에 매수) 2) 기 보유한 삼성전자가 예스트레이더 차트(차트명 C1)에서 시스템(시스템명: S1) 적용되어 있음 3) 시스템 S1에서 매도신호 발생 4) 예스 스팟으로 매도신호 받아서 매도 ------------------------------------- 위의 상황을 아래 수식으로 작성했을때, 이미 해당종목에 대해 보유 수량이 있음에도 매도신호가 발생을 안하네요.. 도움 부탁드립니다. (변수 선언 부분은 글에서 제거했습니다.) function Main_OnStart() { Main.MessageList("시작합니다."); Main.MessageList("C1 차트종목: ",C1.GetCode(1)); //S2차트종목코드를 불러와 종목객체를 요청 Main.ReqMarketData(C1.GetCode(1), 0, 0); Start = 0; state1 = 0; } //요청한 종목객체가 생성되어 수신되면 function Main_OnRcvMarketData(MarketData) { //현재 수신된 종목객체가 요청한 종목과 같으면 //item에 종목객체를 저장(이후에 item이 해당 종목객체로 사용됨) if (MarketData.code == C1.GetCode(1)) SSEobject = MarketData; } function C1_OnRiseSignal(Signal) { Skind = Signal.signalKind; Scode = Signal.code; Scount = Signal.count; if (Signal.signalKind == 2) { A1.SetBalance(scode,0); BxID=A1.OrderSell(Scode,A1.Balance.count,SSEobject.current,0); Main.MessageLog("매도주문"); Start1 = 0; //타이머 실행 Main.MessageLog("매도주문 후 타이머20초 시작"); Main.SetTimer(2, 1000);//1초 타이머 } } function Main_OnOrderResponse(OrderResponse) { //매수주문 접수되면 주문번호 저장 if (OrderResponse.orderID == BuyID) { BuyNum = OrderResponse.orderNum; } //매수청산주문 접수되면 주문번호 저장 if (OrderResponse.orderID == BxID) { BxNum = OrderResponse.orderNum; } } function Main_OnTimer(nEventID) { if (nEventID == 2) { //2번 타이머 종료 Main.KillTimer(2); //BxNum주문번호에 대한 미체결 객체 설정 A1.SetUnfillOrderNumber(BxNum); //설정된 미체결객체에 잔량이 있으면 if (A1.Unfill.count > 0) { //BxNum주문 정정 (매수1호가로 정정) if (A1.Unfill.price != SSEobject.Bid(1)) { BxID = A1.OrderReplacePrice(BxNum, SSEobject.Bid(1)); Main.MessageLog("매도 정정"); Main.SetTimer(3, 1000); } } } if (nEventID == 3) { //2번 타이머 종료 Main.KillTimer(3); //BxNum주문번호에 대한 미체결 객체 설정 A1.SetUnfillOrderNumber(BxNum); //설정된 미체결객체에 잔량이 있으면 if (A1.Unfill.count > 0) { //BxNum주문 정정 (매수1호가로 정정) if (A1.Unfill.price != SSEobject.Bid(1)) { BxID = A1.OrderReplacePrice(BxNum, SSEobject.Bid(1)); Main.MessageLog("매도 정정"); } } } }