예스스탁
예스스탁 답변
2013-11-20 18:52:06
안녕하세요
예스스탁입니다.
아래식 참고하시기 바랍니다.
모든 매수주문은 매도5호가, 매도주문은 매수5호가에 나가게 작성되었습니다.
스크립트 객체화면에서
차트객체 3개, 계좌객체1개, 종목객체하나를 추가하셔야 합니다.
차트객체 3개 추가하시고 각각 속성에서 이름은 Chart1,Chart2,Chart3으로 지정하신 후에 아이디를 차트와 연결하시면 됩니다.
계좌객체 1개 추가하시고 속성에서 객체명은 Account1로 지정하고 계좌번호 지정해 주시면 됩니다.
좀옥객체 1개 추가하시고 속성에서 차트종목과 같은 종목으로 설정해 주시면 됩니다.
var Start;
function Main_OnStart()
{
Start = 0;
}
//Chart1에서 신호발생
function Chart1_OnRiseSignal(Signal)
{
//Start가 0이고 Buy신호 발생하면
if (Start == 0 && Signal.signalKind == 1)
{
//신호종목 잔고셋팅
Account1.SetBalanceItem(GetOrderCode(Signal.code),0);
//잔고의 수량이 0일때만 매수주문하고 Start는 1
if (Account1.Balance == 0)
{
Account1.OrderBuy(Main.GetOrderCode(Signal.code),Math.abs(Signal.count),MarketData1.Ask(5) , 0);
Start = 1;
}
}
//Start가 1이고 매수청산신호 발생시
if (Start == 1 && Signal.signalKind == 2)
{
//신호종목 잔고셋팅
Account1.SetBalanceItem(GetOrderCode(Signal.code),0);
//잔고의 수량이 0이상일때 청산주문하고 Start는 0
if (Account1.Balance > 0)
{
Account1.OrderSell(Main.GetOrderCode(Signal.code),Account1.Balance.count,MarketData1.Bid(5) , 0);
Start = 0;
}
}
//Start가 0이고 Sell신호 발생하면
if (Start == 0 && Signal.signalKind == 3)
{
//신호종목 잔고셋팅
Account1.SetBalanceItem(GetOrderCode(Signal.code),0);
//잔고의 수량이 0일때만 매도주문하고 Start는 -1
if (Account1.Balance == 0)
{
Account1.OrderSell(Main.GetOrderCode(Signal.code),Math.abs(Signal.count),MarketData1.Bid(5) , 0);
Start = -1;
}
}
//Start가 -1이고 매도청산신호 발생시
if (Start == -1 && Signal.signalKind == 4)
{
//신호종목 잔고셋팅
Account1.SetBalanceItem(GetOrderCode(Signal.code),0);
//잔고의 수량이 0이상일때 청산주문하고 Start는 0
if (Account1.Balance > 0)
{
Account1.OrderBuy(Main.GetOrderCode(Signal.code),Account1.Balance.count,MarketData1.Ask(5) , 0);
Start = 0;
}
}
}
//Chart2에서 신호발생
function Chart2_OnRiseSignal(Signal)
{
//Start가 0이고 Buy신호 발생하면
if (Start == 0 && Signal.signalKind == 1)
{
//신호종목 잔고셋팅
Account1.SetBalanceItem(GetOrderCode(Signal.code),0);
//잔고의 수량이 0일때만 매수주문하고 Start는 2
if (Account1.Balance == 0)
{
Account1.OrderBuy(Main.GetOrderCode(Signal.code),Math.abs(Signal.count),MarketData1.Ask(5) , 0);
Start = 2;
}
}
//Start가 2이고 매수청산신호 발생시
if (Start == 2 && Signal.signalKind == 2)
{
//신호종목 잔고셋팅
Account1.SetBalanceItem(GetOrderCode(Signal.code),0);
//잔고의 수량이 0이상일때 청산주문하고 Start는 0
if (Account1.Balance > 0)
{
Account1.OrderSell(Main.GetOrderCode(Signal.code),Account1.Balance.count,MarketData1.Bid(5) , 0);
Start = 0;
}
}
//Start가 0이고 Sell신호 발생하면
if (Start == 0 && Signal.signalKind == 3)
{
//신호종목 잔고셋팅
Account1.SetBalanceItem(GetOrderCode(Signal.code),0);
//잔고의 수량이 0일때만 매도주문하고 Start는 -2
if (Account1.Balance == 0)
{
Account1.OrderSell(Main.GetOrderCode(Signal.code),Math.abs(Signal.count),MarketData1.Bid(5) , 0);
Start = -2;
}
}
//Start가 -2이고 매도청산신호 발생시
if (Start == -2 && Signal.signalKind == 4)
{
//신호종목 잔고셋팅
Account1.SetBalanceItem(GetOrderCode(Signal.code),0);
//잔고의 수량이 0이상일때 청산주문하고 Start는 0
if (Account1.Balance > 0)
{
Account1.OrderBuy(Main.GetOrderCode(Signal.code),Account1.Balance.count,MarketData1.Ask(5) , 0);
Start = 0;
}
}
}
function Chart3_OnRiseSignal(Signal)
{
//Start가 0이고 Buy신호 발생하면
if (Start == 0 && Signal.signalKind == 1)
{
//신호종목 잔고셋팅
Account1.SetBalanceItem(GetOrderCode(Signal.code),0);
//잔고의 수량이 0일때만 매수주문하고 Start는 3
if (Account1.Balance == 0)
{
Account1.OrderBuy(Main.GetOrderCode(Signal.code),Math.abs(Signal.count),MarketData1.Ask(5) , 0);
Start = 3;
}
}
//Start가 2이고 매수청산신호 발생시
if (Start == 3 && Signal.signalKind == 2)
{
//신호종목 잔고셋팅
Account1.SetBalanceItem(GetOrderCode(Signal.code),0);
//잔고의 수량이 0이상일때 청산주문하고 Start는 0
if (Account1.Balance > 0)
{
Account1.OrderSell(Main.GetOrderCode(Signal.code),Account1.Balance.count,MarketData1.Bid(5) , 0);
Start = 0;
}
}
//Start가 0이고 Sell신호 발생하면
if (Start == 0 && Signal.signalKind == 3)
{
//신호종목 잔고셋팅
Account1.SetBalanceItem(GetOrderCode(Signal.code),0);
//잔고의 수량이 0일때만 매도주문하고 Start는 -3
if (Account1.Balance == 0)
{
Account1.OrderSell(Main.GetOrderCode(Signal.code),Math.abs(Signal.count),MarketData1.Bid(5) , 0);
Start = -3;
}
}
//Start가 -3이고 매도청산신호 발생시
if (Start == -3 && Signal.signalKind == 4)
{
//신호종목 잔고셋팅
Account1.SetBalanceItem(GetOrderCode(Signal.code),0);
//잔고의 수량이 0이상일때 청산주문하고 Start는 0
if (Account1.Balance > 0)
{
Account1.OrderBuy(Main.GetOrderCode(Signal.code),Account1.Balance.count,MarketData1.Ask(5) , 0);
Start = 0;
}
}
}
즐거운 하루되세요
> 수리산독사 님이 쓴 글입니다.
> 제목 : 수식문의 드립니다.
> 여러개의 차트에 시스템을 적용시켜놓은 상태에서 제일 처음 신호가 나와 진입이된다면
다른 차트에서 발생하는 신호는 진입을 하지 못하게 하는 게 가능할듯 해서 문의드립니다.
계좌상 미청산 계약이 없을시에만 진입신호 이후 주문이 발생하도록...
하는 수식 좀 부탁드립니다.