단순히 예스트레이더의 한 전략창의 신호(진입명,청산명)를 받아서 스팟으로 신호명을 이용하여 매매를 하고 싶습니다 예제를 하나주시면 공부하겠습니다
감사합니다
답변 1
예스스탁
예스스탁 답변
2019-08-08 14:39:37
안녕하세요
예스스탁입니다.
아래 내용수식 내용 참고하셔서 수정보완해 사용하시기 바랍니다.
차트에서 신호발생할때 특정이름만 주문을 발생하는 내용입니다.
스크립트 객체설정
계좌객체 추가 --> 객체명 Account1, 주문계좌번호 지정
차트객체 추가 --> 객체명 Chart1, 차트와 아이디 연결
종목객체 추가 --> 객체명 MarketData1, 차트와 같은 종목으로 지정
var : BID,Bnum,SID,Snum;
function Main_OnStart()
{
Main.MessageList("Spot Start");
}
function Chart1_OnRiseSignal(Signal)
{
//차트에서 매수신호 발생하고 이름이 "매수1" 이면
if (Signal.signalKind == 1 && Signal.name == "매수1")
{
Main.MessageList("Buy신호 발생");
//매도3호가로 매수주문 후 주문아이디를 BID에 저장
BID = Account1.OrderBuy(Main.GetOrderCode(MarketData1.code), 1, MarketData1.Ask(3), 2);
}
//차트에서 매수청산신호 발생하고 이름이 "매수청산1" 이면
if (Signal.signalKind == 2 && Signal.name == "매수청산1")
{
//Bnum주문번호 미체결 셋팅
Account1.SetUnfill(Bnum);
//미체결이 있으면]
if (Account1.Unfill.count > 0)
{
//취소
Account1.OrderCancel(Bnum);
}
//잔고셋팅
Account1.SetBalance(Main.GetOrderCode(MarketData1.code), 0);
//매수포지션 수량이 있으면 전량 매수3호가로 청산(매도주문)
if (Account1.Balance.count > 0 && Account1.Balance.position == 2)
{
Account1.OrderSell(Account1.Balance.code, Account1.Balance.count,MarketData1.Bid(3),2);
}
}
//차트에서 매도신호 발생하고 이름이 "매도1" 이면
if (Signal.signalKind == 3 && Signal.name == "매도1")
{
Main.MessageList("Sell신호 발생");
//매수3호가로 매도주문 후 주문아이디를 SID에 저장
SID = Account1.OrderSell(Main.GetOrderCode(MarketData1.code), 1, MarketData1.Bid(3), 2);
}
//차트에서 매도청산신호 발생하고 이름이 "매도청산1" 이면
if (Signal.signalKind == 4 && Signal.name == "매도청산1")
{
//Snum주문번호 미체결 셋팅
Account1.SetUnfill(Snum);
//미체결이 있으면]
if (Account1.Unfill.count > 0)
{
//취소
Account1.OrderCancel(Snum);
}
//잔고셋팅
Account1.SetBalance(Main.GetOrderCode(MarketData1.code), 0);
//매도포지션 수량이 있으면 전량 매수3호가로 청산(매수주문)
if (Account1.Balance.count > 0 && Account1.Balance.position == 1)
{
Account1.OrderBuy(Account1.Balance.code, Account1.Balance.count,MarketData1.Ask(3),0);
}
}
}
function Main_OnOrderResponse(OrderResponse)
{
//주문응답 아이디가 BID와 같으면
if (OrderResponse.orderID == BID)
{
//주문이 정상접수 됐으면 Bnum에 주문번호 저장
if (OrderResponse.isNormal == true)
{
Bnum = OrderResponse.orderNum;
}
}
//주문응답 아이디가 SID와 같으면 Snum에 주문번호 저장
if (OrderResponse.orderID == SID)
{
//주문이 정상접수 됐으면 Snum에 주문번호 저장
if (OrderResponse.isNormal == true)
{
Snum = OrderResponse.orderNum;
}
}
}
즐거운 하루되세요
> 라떼처럼 님이 쓴 글입니다.
> 제목 : 신호 문의
> 단순히 예스트레이더의 한 전략창의 신호(진입명,청산명)를 받아서 스팟으로 신호명을 이용하여 매매를 하고 싶습니다 예제를 하나주시면 공부하겠습니다
감사합니다