커뮤니티

문의 드립니다.

프로필 이미지
즐겁게
2013-07-31 13:09:07
612
글번호 222478
답변완료
안녕하세요. 질문 1. 예스스팟을 이용해서, 가령 코스피200선물을 거래하는 경우, 주간장에서는 10분봉 차트를 이용하고 야간장에서는 5분봉 차트를 이용하는 것이, 예스스팟에 의해 자동으로 선택되게 하는 것이 가능한지요? 가능하다면 소스를 어떻게 짜야 할지 알려 주시면 대단히 감사하겠습니다. (좀더 일반적으로 표현한다면, 예스스팟을 이용하여, 지정한 시간대에, 지정한 분봉차트 내지 지정한 틱 차트를 바탕으로 매매되게하는 방법) 질문 2. 미체결 주문의 주문번호를 알아 내는 방법 부탁드립니다. 미체결 주문을 취소하기 위해서 주문번호가 필요한데, SetUnfillIndex를 써서, 루프를 돌려서 // A. Buy 신호 발생. if (Signal.signalKind == 1) { // 전체 미체결 객체 중에 차트 주종목과 같은 종목으로 주문낸 미체결 매수 주문, 미체결 매도 주문이 있는지를 찾음 A_Unfill_Buy_Cond = false; // 미체결 매수 주문이 있으면 true, 없으면 false A_Unfill_Sell_Cond = false;// 미체결 매도 주문이 있으면 true, 없으면 false // 사실 이 부분을 위해선, Unfill.count를 이용하는 것도 가능할 텐데... var NumberOfUnfills = Account1.GetTheNumberOfUnfills(); for (var i=1; i<=NumberOfUnfills; i++) { Account1.SetUnfillIndex(i); var ChartCode = Main.GetOrderCode(Chart1.GetCode(1)); if (Account1.Unfill.code == ChartCode && Account1.Unfill.orderKind == 2) // 여기에서의 Unfill은 미체결 매수주문을 의미. { A_Unfill_Buy_Cond = true; // 이 때의 i번째 Unfill은 차트 주종목(과 같은 종목)이고, 또 매수 미체결이다. A_Unfill_Buy_OrderNumber = Account1.Unfill.orderNum } if (Account1.Unfill.code == ChartCode && Account1.Unfill.orderKind == 1) // 여기에서의 Unfill은 미체결 매도 주문을 의미. { A_Unfill_Sell_Cond = true; // 이 때의 i번째 Unfill은 차트 주종목(과 같은 종목)이고, 또 매도 미체결이다. A_Unfill_Sell_OrderNumber = Account1.Unfill.orderNum } 이렇게 해 보고 있는데, 실제 적용을 해 보면, ReferenceError: A_Unfill_Buy_Cond is not defined ReferenceError: C_Unfill_Buy_OrderNumber is not defined 이런 오류보고가 계속 나옵니다. (위의 A는 Buy 신호 발생의 경우이고, C는 Sell 신호 발생의 경우입니다). 오타는 최대한 검토해서 없는 것으로 보이는데, 논리적인 문제가 있는 것 같습니다. 위 소스의 문제점을 지적해 주시고 수정해 주셔도 대단히 감사하겠고, 위 소스를 완전히 무시하시고, 미체결 주문의 주문번호를 알아 내는 다른 방법을 알려 주셔도 대단히 감사하겠습니다. 질문 3. 특히, 2번 질문에 대해, Unfill.count를 이용해서 하는 방법이 가능하다면 코드를 알려 주시면 대단히 감사하겠습니다. 감사합니다.
답변 2
프로필 이미지

예스스탁 예스스탁 답변

2013-07-31 15:41:26

안녕하세요 예스스탁입니다. 1. 문의하신 부분은 차트객체 2개에 각 10분차트, 5분차트등 원하신는 주기의 차트와 아이디를 연결하시고 정규장인지 CME장인지 확인하셔서 주문내시면 됩니다. Main객체의 함수중에 Main.GetMarketStatus()가 정규장이면 0, CME면 1을 리턴합니다. 아래와 같이 작성하시면 정규장에는 Chart1의 신호로 주문이 나가고 CME야간장에서는 Chart2로 주문이 발생합니다 function Chart1_OnRiseSignal(Signal) { if (Main.GetMarketStatus() == 0) { if (Signal.signalKind == 1) Account1.OrderBuy(Main.GetOrderCode(Signal.code),1,0,1); if (Signal.signalKind == 2) Account1.OrderSell(Main.GetOrderCode(Signal.code),1,0,1); if (Signal.signalKind == 3) Account1.OrderSell(Main.GetOrderCode(Signal.code),1,0,1); if (Signal.signalKind == 4) Account1.OrderBuy(Main.GetOrderCode(Signal.code),1,0,1); } } function Chart2_OnRiseSignal(Signal) { if (Main.GetMarketStatus() == 1) { if (Signal.signalKind == 1) Account1.OrderBuy(Main.GetOrderCode(Signal.code),1,0,1); if (Signal.signalKind == 2) Account1.OrderSell(Main.GetOrderCode(Signal.code),1,0,1); if (Signal.signalKind == 3) Account1.OrderSell(Main.GetOrderCode(Signal.code),1,0,1); if (Signal.signalKind == 4) Account1.OrderBuy(Main.GetOrderCode(Signal.code),1,0,1); } } 2. ReferenceError: A_Unfill_Buy_Cond is not defined 은 변수가 선언되지 않았을때 발생합니다. 전역변수나 지역변수로 선언하시고 사용하셔야 합니다. 아래식 참고하시기 바랍니다. function Chart1_OnRiseSignal(Signal) { if (Signal.signalKind == 1) { //for수행전 모두 false나 0으로 초기화 var A_Unfill_Buy_Cond = false; var A_Unfill_Sell_Cond = false; var A_Unfill_Buy_OrderNumber = 0; var A_Unfill_Sell_OrderNumber = 0; //전체 미체결수 num = Account1.GetTheNumberOfUnfills(); //리스트상 0번째(제일위)부터 가장 아래(num-1)까지 호출 for (var i = 0; i < num,i++) { //i번재 미체결 객체 셋팅 Account1.SetUnfillIndex(i) //i번재 셋팅된 미체결 객체의 종목코드가 Chart1 주종목과 같고 매수주문이면 if ( Account1.Unfill.code == Main.GetOrderCode(Chart1.GetCode(1)) && Account1.Unfill.orderKind == 2) { A_Unfill_Sell_Cond = true; //true저장 A_Unfill_Buy_OrderNumber = Account1.Unfill.orderNum;//주문번호 저장 } //i번재 셋팅된 미체결 객체의 종목코드가 Chart1 주종목과 같고 매도주문이면 if ( Account1.Unfill.code == Main.GetOrderCode(Chart1.GetCode(1)) && Account1.Unfill.orderKind == 1) { A_Unfill_Sell_Cond = true; //true저장 A_Unfill_Sell_OrderNumber = Account1.Unfill.orderNum;//주문번호 저장 } } if (A_Unfill_Buy_Cond == true) { 실행문 } if (A_Unfill_Buy_Cond == true) { 실행문 } } if (Signal.signalKind == 3) { //for수행전 모두 false나 0으로 초기화 var C_Unfill_Buy_Cond = false; var C_Unfill_Sell_Cond = false; var C_Unfill_Buy_OrderNumber = 0; var C_Unfill_Sell_OrderNumber = 0; //전체 미체결수 num = Account1.GetTheNumberOfUnfills(); //리스트상 0번째(제일위)부터 가장 아래(num-1)까지 호출 for (var i = 0; i < num,i++) { //i번재 미체결 객체 셋팅 Account1.SetUnfillIndex(i) //i번재 셋팅된 미체결 객체의 종목코드가 Chart1 주종목과 같고 매수주문이면 if ( Account1.Unfill.code == Main.GetOrderCode(Chart1.GetCode(1)) && Account1.Unfill.orderKind == 2) { C_Unfill_Sell_Cond = true; //true저장 C_Unfill_Buy_OrderNumber = Account1.Unfill.orderNum; //주문번호 저장 } //i번재 셋팅된 미체결 객체의 종목코드가 Chart1 주종목과 같고 매도주문이면 if ( Account1.Unfill.code == Main.GetOrderCode(Chart1.GetCode(1)) && Account1.Unfill.orderKind == 1) { C_Unfill_Sell_Cond = true; //true저장 C_Unfill_Sell_OrderNumber = Account1.Unfill.orderNum; //주문번호 저장 } } if (C_Unfill_Buy_Cond == true) { 실행문 } if (C_Unfill_Buy_Cond == true) { 실행문 } } } 즐거운 하루되세요 > 즐겁게 님이 쓴 글입니다. > 제목 : 문의 드립니다. > 안녕하세요. 질문 1. 예스스팟을 이용해서, 가령 코스피200선물을 거래하는 경우, 주간장에서는 10분봉 차트를 이용하고 야간장에서는 5분봉 차트를 이용하는 것이, 예스스팟에 의해 자동으로 선택되게 하는 것이 가능한지요? 가능하다면 소스를 어떻게 짜야 할지 알려 주시면 대단히 감사하겠습니다. (좀더 일반적으로 표현한다면, 예스스팟을 이용하여, 지정한 시간대에, 지정한 분봉차트 내지 지정한 틱 차트를 바탕으로 매매되게하는 방법) 질문 2. 미체결 주문의 주문번호를 알아 내는 방법 부탁드립니다. 미체결 주문을 취소하기 위해서 주문번호가 필요한데, SetUnfillIndex를 써서, 루프를 돌려서 // A. Buy 신호 발생. if (Signal.signalKind == 1) { // 전체 미체결 객체 중에 차트 주종목과 같은 종목으로 주문낸 미체결 매수 주문, 미체결 매도 주문이 있는지를 찾음 A_Unfill_Buy_Cond = false; // 미체결 매수 주문이 있으면 true, 없으면 false A_Unfill_Sell_Cond = false;// 미체결 매도 주문이 있으면 true, 없으면 false // 사실 이 부분을 위해선, Unfill.count를 이용하는 것도 가능할 텐데... var NumberOfUnfills = Account1.GetTheNumberOfUnfills(); for (var i=1; i<=NumberOfUnfills; i++) { Account1.SetUnfillIndex(i); var ChartCode = Main.GetOrderCode(Chart1.GetCode(1)); if (Account1.Unfill.code == ChartCode && Account1.Unfill.orderKind == 2) // 여기에서의 Unfill은 미체결 매수주문을 의미. { A_Unfill_Buy_Cond = true; // 이 때의 i번째 Unfill은 차트 주종목(과 같은 종목)이고, 또 매수 미체결이다. A_Unfill_Buy_OrderNumber = Account1.Unfill.orderNum } if (Account1.Unfill.code == ChartCode && Account1.Unfill.orderKind == 1) // 여기에서의 Unfill은 미체결 매도 주문을 의미. { A_Unfill_Sell_Cond = true; // 이 때의 i번째 Unfill은 차트 주종목(과 같은 종목)이고, 또 매도 미체결이다. A_Unfill_Sell_OrderNumber = Account1.Unfill.orderNum } 이렇게 해 보고 있는데, 실제 적용을 해 보면, ReferenceError: A_Unfill_Buy_Cond is not defined ReferenceError: C_Unfill_Buy_OrderNumber is not defined 이런 오류보고가 계속 나옵니다. (위의 A는 Buy 신호 발생의 경우이고, C는 Sell 신호 발생의 경우입니다). 오타는 최대한 검토해서 없는 것으로 보이는데, 논리적인 문제가 있는 것 같습니다. 위 소스의 문제점을 지적해 주시고 수정해 주셔도 대단히 감사하겠고, 위 소스를 완전히 무시하시고, 미체결 주문의 주문번호를 알아 내는 다른 방법을 알려 주셔도 대단히 감사하겠습니다. 질문 3. 특히, 2번 질문에 대해, Unfill.count를 이용해서 하는 방법이 가능하다면 코드를 알려 주시면 대단히 감사하겠습니다. 감사합니다.
프로필 이미지

즐겁게

2013-08-01 00:26:36

이 번에도, 궁금증을 쏙 찝어서 긁어 주시는 전문적인 답변 대단히 감사합니다! 회사 번창하시길 진심으로 빕니다.