예스스탁
예스스탁 답변
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초
감사합니다. 각 식 시작에 멘트좀 부탁드립니다.^^