예스스탁
예스스탁 답변
2016-03-09 11:01:08
안녕하세요
예스스탁입니다.
예스스팟 수식답변은 가이드 정도만 해드립니다.
아래 수식내용과 주석 참고하셔서 수정보완해 사용하시기 바랍니다.
수식에 게시판 금칙어가 있어
영문 업데이트가 Up*date 로 중간에 *이 들어가 있습니다.
제거하고 사용하셔야 합니다.
var T,T1,T2;
var BuyID,BuyNum, ExitID,ExitNum;
function Main_OnStart()
{
T = 0;
Main.SetTimer(1, 10000);//10초
Xcond1 = false;
Xcond2 = false;
}
function Main_OnUp*dateMarket(sItemCode, lUp*dateID)//*제거
{
T2 = T1;//직전 시세의 시간
T1 = MarketData1.time;//현재 시세의 시간
//9시 10분에
if (sItemCode == MarketData1.code && T1 >= 910000000 && T2 < 910000000)
{
Main.MessageList("ok")
//MarketData1의 현재가가 시초가보다 크면
if (MarketData1.current > MarketData1.open)
{
T = 1;//방향확인 변수 1
//MarketData2를 예수금의 60%로 매수
BuyID = Account1.OrderBuy(MarketData2.code, Math.floor((Account1.GetBalanceETCinfo(0)*0.6)/MarketData2.current),0,1);
}
//현재가가 시초가 보다 작으면
if (MarketData1.current < MarketData1.open)
{
T = -1;//방향확인 변수 -1
//MarketData3을 예수금의 60%로 매수
BuyID = Account1.OrderBuy(MarketData3.code, Math.floor((Account1.GetBalanceETCinfo(0)*0.6)/MarketData2.current),0,1);
}
}
}
function Main_OnTimer(nEventID)
{
var d = new Date();
var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
//14시 49분이 되면(14시50분은 정규장 마감이므로 1분 앞으로 지정)
if (Xcond1 == false && HHMMSS >= 144900)
{
Xcond1 = true;
//9시 10분에 MarketData2 종목을 매수한 경우
if (T == 1)
{
// MarketData2 매수 미체결 수량 모두 취소
Account1.SetUnfill(BuyNum);
if (Account1.Unfill.code == MarketData2.code && Account1.Unfill.count > 0 && Account1.Unfill.orderKind == 2)
{
Account1.OrderCancel(Account1.Unfill.orderNum);
}
//MarketData2종목 잔고보유수량만큼 매수1호가로 매도
Account1.SetBalance(MarketData2.code,0);
if (Account1.Balance.count > 0)
{
ExitID = Account1.OrderSell(MarketData2.code, Account1.Balance.count, MarketData2.Bid(1), 0);
}
}
//9시 10분에 MarketData3 종목을매수한 경우
if (T == -1)
{
// MarketData3 종목 매수 미체결 수량 모두 취소
Account1.SetUnfill(BuyNum);
if (Account1.Unfill.code == MarketData3.code && Account1.Unfill.count > 0 && Account1.Unfill.orderKind == 2)
{
Account1.OrderCancel(Account1.Unfill.orderNum);
}
//MarketData3종목 잔고보유수량만큼 매수1호가로 매도
Account1.SetBalance(MarketData3.code,0);
if (Account1.Balance.count > 0)
{
ExitID = Account1.OrderSell(MarketData2.code, Account1.Balance.count, MarketData2.Bid(1), 0);
}
}
}
//14시 59분이 되면
if (Xcond2 == false && HHMMSS >= 145900)
{
Xcond2 = true;
if (T == 1)
{
// 매도주문 미체결 객체 셋팅
Account1.SetUnfill(ExitNum);
//미체결 수량이 잇으면 매수5호가로 정정
if (Account1.Unfill.code == MarketData2.code && Account1.Unfill.count > 0 && Account1.Unfill.orderKind == 1)
{
Account1.OrderReplacePrice(ExitNum, MarketData2.Bid(5));
}
}
if (T == 1)
{
// 매도주문 미체결 객체 셋팅
Account1.SetUnfill(ExitNum);
//미체결 수량이 잇으면 매수5호가로 정정
if (Account1.Unfill.code == MarketData3.code && Account1.Unfill.count > 0 && Account1.Unfill.orderKind == 1)
{
Account1.OrderReplacePrice(ExitNum, MarketData3.Bid(5));
}
}
}
}
function Main_OnOrderResponse(OrderResponse)
{
//매수주문 번호 저장
if (OrderResponse.orderID == BuyID)
{
BuyNum = OrderResponse.orderID;
}
//매도주문 번호 저장
if (OrderResponse.orderID == ExitID)
{
ExitNum = OrderResponse.orderID;
}
}
즐거운 하루되세요
> 브로웅 님이 쓴 글입니다.
> 제목 : 코스피 200지수 추종하여 코덱스 레버리지/인버스 매매 시스템 질문
> 안녕하세요. 이제막 시스템 트레이딩에 입문한 초보 투자자입니다.
제가 여쭤볼것은 위 제목과 같이 구현을 하고자 하는데,
구현이 가능한지와 정말 죄송하지만 간단히 작성하는 힌트라도 주시면
감사하겠습니다. 정말 감사드립니다.
1. 조건 : 코스피 200지수를 모니터링하여, 특정조건 만족시 인버스, 레버리지 선택 매수후 당일 청산
2. 코스피 200지수 모니터링 조건 : 장 시작후 10분동안 시가, 종가를 저장하여
i) 10분후, 코스피 200 지수의 시가 > 종가
코덱스 인버스 11분봉 시가에 계좌 총액의 60% 매수, 2시 50분 전부 매도
(2시50분 매도 실패 경우, 장마감호가에 전부 매도)
ii) 10분후, IF 시가 < 종가
코덱스 레버리지 11분봉의 시가에 계좌 총액 60% 매수, 2시 50분 전부 매도
(2시50분 매도 실패 경우, 장마감호가에 전부 매도)
간단한것 같으면서도, 손도 못대고 있습니다. 일단 코스피 200지수를 모니터링하고,
그 신호를 바탕으로 코덱스 레버리지, 인버스 ETF 를 매수/매도 하는게 가능한가요?
읽어주셔서 감사드리며, 좋은 하루 보내십쇼!