커뮤니티

스팟식 문의 드립니다

프로필 이미지
시골소년
2014-03-06 04:26:48
1154
글번호 222838
답변완료
아래 사항 식으로 부탁드립니다. 계좌객체명: A1 종목객체명:F1 차트객체명:C1,C2 1. A, B 두개의 시스템이 같은 방향신호일때만 진입(예를들면, 하나가 매수신호발생후 다른 시스템이 매수신호발생할때만 진입) 2.청산은 두개의 시스템중 C1에서실행 3.진입은 현재가로하고 200초후자동정정주문 상대2호가, 미체결시 취소주문과 청산주문 미실행하고 체결되었으면 청산실행 4.진입주문지연 3초 감사합니다. 각 식 시작에 멘트좀 부탁드립니다.^^
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2014-03-06 17:30:02

안녕하세용 예스스탁입니다. 스팟수식은 모두 실제 주문과 관계됨으로 저희쪽에서 완전히 테스트해 올려드릴 수는 없습니다. 답변드리는 내용은 가이드입니다. 아래식 참고하셔서 수정 보완해 사용하시기 바랍니다. var Start; var S1, S2; var BuyID1,SellID; var Bcond, Scond; var BuyNum,SellNum; var BFill,SFill; function Main_OnStart() { Start = 0; Bcond = 0; Scond = 0; } function C1_OnRiseSignal(Signal) { S1 = Signal.signalKind; //S2가 1인상태에서 S1이 1이면 if (S1 == 1 && S2 == 1) { //Start는 1 Start = 1; Bcond = 0; //1번 타이머 셋팅(3초) Main.SetTimer(1, 3000); } //exitlong신호 발생하면 청산 if (Start == 1 && S1 == 2) { //BuyNum 주문 미체결객체 셋팅 A1.SetUnfillOrderNumber(BuyNum); //미체결 수량이 0이상이면 취소주문 if (A1.Unfill.count > 0) A1.OrderCancel(BuyNum); else //미체결 내역이 없으면 매수3호가로 1계약 매도주문 A1.OrderSell(F1.code, 1, F1.Bid(3), 0); } //S2가 3인상태에서 S1이 3이면 if (S1 == 3 && S2 == 3) { Start = 1; Scond = 0; //2번 타이머 셋팅(3초) Main.SetTimer(2, 3000); } //exitshort신호 발생하면 청산 if (Start == 1 && S1 == 4) { //SellNum 주문 미체결객체 셋팅 A1.SetUnfillOrderNumber(SellNum); //미체결 수량이 0이상이면 취소주문 if (A1.Unfill.count > 0) A1.OrderCancel(SellNum); else //미체결 내역이 없으면 매수3호가로 1계약 매도주문 A1.OrderSell(F1.code, 1, F1.Bid(3), 0); } } function C2_OnRiseSignal(Signal) { S2 = Signal.signalKind; S1 = Signal.signalKind; //S1이 1인상태에서 S2가 1이면 if (S1 == 1 && S2 == 1) { //Start는 1 Start = 1; //1계약 매도3호가로 매수주문 A1.OrderBuy(F1.code, 1, F1.Ask(3), 0); } //S1이 3인상태에서 S2가 3이면 if (S1 == 3 && S2 == 3) { Start = 1; //1계약 매수3호가로 매도주문 A1.OrderSell(F1.code, 1, F1.Bid(3), 0); } } function Main_OnTimer(nEventID) { //1번 타이머 동작하면 if (nEventID == 1) { //1번 타이머 중지 Main.KillTimer(1); //1계약 현재가로 매수주문 BuyID = A1.OrderBuy(F1.code, 1, F1.current, 0); } //2번 타이머 동작하면 if (nEventID == 2) { //2번타이머 중지 Main.KillTimer(2); //1계약 현재가로 매도주문 SellID = A1.OrderSell(F1.code, 1, F1.current, 0); } //11번 타이머 동작하면 if (nEventID == 11) { //11번타이머 중지 Main.KillTimer(11); //BuyNum 미체결객체 셋팅 A1.SetUnfillOrderNumber(BuyNum); //미체결 수량이 0이상이면 if (A1.Unfill.count > 0) { //매도2호가로 정정주문 BuyID = A1.OrderReplacePrice(BuyNum, F1.Ask(2)); } } //12번 타이머 동작하면 if (nEventID == 12) { //12번타이머 중지 Main.KillTimer(12); //SellNum 미체결객체 셋팅 A1.SetUnfillOrderNumber(SellNum); //미체결 수량이 0이상이면 if (A1.Unfill.count > 0) { //매도2호가로 정정주문 SellID = A1.OrderReplacePrice(SellNum, F1.Bid(2)); } } } //주문응답(주문 후 주문번호 저장) function Main_OnOrderResponse(OrderResponse) { //매수주문아이디와 같은 아이디의 주문응답이 들어오면 BuyNum에 주문번호 저장 if (OrderResponse.orderID == BuyID) { BuyNum = OrderResponse.orderNum; if (Bcond == 0) { //11번 타이머 셋팅, 200초 Main.SetTimer(11, 200000); Bcond = 1; } } //매도주문아이디와 같은 아이디의 주문응답이 들어오면 SellNum에 주문번호 저장 if (OrderResponse.orderID == SellID) { SellNum = OrderResponse.orderNum; if (Scond == 0) { //12번 타이머 셋팅, 200초 Main.SetTimer(12, 200000); Scond = 1; } } } 즐거운 하루되세요 > 시골소년 님이 쓴 글입니다. > 제목 : 스팟식 문의 드립니다 > 아래 사항 식으로 부탁드립니다. 계좌객체명: A1 종목객체명:F1 차트객체명:C1,C2 1. A, B 두개의 시스템이 같은 방향신호일때만 진입(예를들면, 하나가 매수신호발생후 다른 시스템이 매수신호발생할때만 진입) 2.청산은 두개의 시스템중 C1에서실행 3.진입은 현재가로하고 200초후자동정정주문 상대2호가, 미체결시 취소주문과 청산주문 미실행하고 체결되었으면 청산실행 4.진입주문지연 3초 감사합니다. 각 식 시작에 멘트좀 부탁드립니다.^^