예스스탁
예스스탁 답변
2014-03-19 17:47:51
안녕하세요
예스스탁입니다.
아래 내용 참고하셔서 수정보완해 사용하시기 바랍니다.
1.
기본흐름은 아래와 같습니다.
지정한 종목의 시초가 수신
--> 차트의 지정한 지표값+1로 지정가 주문
--> 주문후 주문번호 저장
차트에서 매수신호 발생하면 나오면
--> 미체결이 있는지 확인하고
--> 미체결수량있으면 매도1호가로 정정주문
진입주문이 1주라도 체결이 되면
타이머를 걸어 1초간격으로 시세파악해 잔고평균단가보다 3% 하락하면
매수3호가로 잔고수량 잔량 매도주문
차트에서 매수청산신호 발생하면
--> 미체결이 있는지 확인하고
--> 미체결수량있으면 모두 취소하고
--> 잔고수량 전량 매수3호가로 매도주문
2.
스크립트 객체 설정
차트객체 추가 --> 객체명 Chart1, 차트아이디 연결
종목객체 추가 --> 객체명 MarketData1, 차트종목과 같은 종목으로 선택
계좌객체 추가 --> 객체명 Account1, 계좌번호 지정
3.
수식안에 게시판금칙어가 있어
영문 업데이트가 Up*date와 같이 중간에 *이 들어가 있습니다.
제거하시기 바랍니다.
var S1,BuyID1,BuyNum1;
var Xcond1;
function Main_OnStart()
{
S1 = 0;
}
function Main_OnUp*dateMarket(sItemCode, lUp*dateID)//*제거
{
//시초가 수신되면 (정규장전에 MarketData1.open은 0이고 정규장 시각하면 0이상의 값을 가짐)
if (S1 == 0 && sItemCode == MarketData1.code && lUp*dateID == 20001 && MarketData1.open > 0 ) //*제거
{
S1 = 1;
//차트1의 지표1보다 1틱 높은 값으로 매수주문
var in1 = Chart1.GetIndicatorData("차트에적용된지표이름", 1, 0);
BuyID1 = Account1.OrderBuy(MarketData1.code, 10, in1+ MarketData1.GetTickSize(), 0);
Xcond1 = false;
}
}
function Chart1_OnRiseSignal(Signal)
{
//매수신호 발생하면
if (S1 == 1)
{
if (Signal.signalKind == 1)
{
//BuyNum1주문번호 미체결객체 셋팅
Account1.SetUnfillOrderNumber(BuyNum1);
//미체결수량이 있으면
if (Account1.Unfill.count > 0)
{
//매도1호가로 정정주문
BuyID1 = Account1.OrderReplacePrice(sOrderNumber, MarketData1.Ask(1));
}
}
if (Xcond1 == false && Signal.signalKind == 2)
{
Xcond = true;
//BuyNum1주문번호 미체결객체 셋팅
Account1.SetUnfillOrderNumber(BuyNum1);
//미체결수량이 있으면 취소주문
if (Account1.Unfill.count > 0)
{
Account1.OrderCancel(BuyNum1);
}
//MarketData1종목 잔고객체 셋팅
Account1.SetBalanceItem(MarketData1.code, 0);
//잔고에 수량이 있으면
if (Account1.Balance.count > 0)
{
//매수3호가로 잔고수량모두 매도 주문
Account1.OrderSell(MarketData1.code, Account1.Balance.count,MarketData1.Bid(3), 0);
}
}
}
}
//주문응답 수신
function Main_OnOrderResponse(OrderResponse)
{
//현재 수신된 주문응답의 아이디가 BuyID1과 같으면
if (OrderResponse.orderID == BuyID1)
{
//주문번호 저장
BuyNum1 = OrderResponse.orderNum;
}
}
function Main_OnNotifyFill(NotifyFill)
{
//BuyNum1 주문에 대해 체결통보가 들어오면
if (NotifyFill.orderNum == BuyNum1)
{
//1초 타이머 셋팅(아이디 1번)
Main.SetTimer(1, 1000);
}
}
function Main_OnTimer(nEventID)
{
if (nEventID == 1 && Xcond == false)
{
Xcond = true;
//MarketData1종목 잔고객체 셋팅
Account1.SetBalanceItem(MarketData1.code, 0);
if ( MarketData1.current <= Account1.Balance.avgUnitCost*0.97)
{
Account1.OrderSell(MarketData1.code, Account1.Balance.count,MarketData1.Bid(3), 0);
}
}
}
즐거운 하루되세요
> somun 님이 쓴 글입니다.
> 제목 : 수식 부탁드립니다
> 안녕하세요.
스팟에 주식 개별종목 차트를 지정하고,
장 시작과 동시에 일정금액을 지정가로 주문하는 수식 가이드 부탁드립니다.
1. 장 시작과 동시에,
지표1의 한틱 위에 일정금액 매수주문 (지표1에 현재가 도달여부와 상관없이)
2. 시스템에서 매수신호 발생하면,
1의 주문이 전량 체결되었으면 무시하고
체결되지 않았거나 일부만 체결되었으면 정정 매수주문
3. 시스템 매도신호 발생하면 매수청산하고
미체결 잔량에 대하여 매수주문 취소
4. 1의 매수 주문가 대비 3% 손실이면 청산주문
그럼 수고하시구요, 미리 감사드립니다..