답변완료
OnUp-dateMarket 함수에 대해.
Main_OnUp-dateMarket은 언제 발생되는 이벤트 인가요?
해당 이벤트를 받기 위한 사전 조건이 어떤게 있는지 문의 드립니다.
3번에서 객체에 대한 별도 처리 하지 않으면 객체 데이터가 변경될때 onUp-dateMarket이 들어와야 되는게 아닌지 궁금합니다.
다른 가이드 보면서 아래와 같은 순서로 작성했습니다.
1. Main_OnRcvItemList 로 종목 리스트 확보
- Main.ReqChartEx로 차트 데이터 요청
2. Main_OnRcvChartEx에서 차트 데이터 확보
- Main.ReqMarketData(Items[i].Code, 0, 0);로 마켓데이터 요청
3. Main_OnRcvMarketData에서 마켓데이터 확보
- 이때는 별도 처리 없이 필요한 데이터만 설정
- MarketData객체를 없애지는 않고 그대로 유지(Main.RemoveMarketData 호출 안함)
설명으로는 시세가 업데이트되면 발생되는 이벤트라고 하는데,
스팟이 A, B, C 세개의 전략이 운용중일때, 각 스팟별로 동일한 종목에 대한 MarketData를 얻어왔을때, 각 스팟이 각각 데이터를 받을수 있는지요?
2020-07-08
2853
글번호 225264
답변완료
질문 올립니다.
안녕하세요. 늘 감사드립니다.
네 개의 차트들, 즉 가령 20틱 차트, 1분봉 차트, 10분봉 차트, 30분봉 차트를 다 열어 놓고,
매수 진입:
각 차트들에서, 각각 EMA(20)들의 기울기가 모두 다 (즉 네 곳 다) 플러스일 때 매수,
매수 청산:
이 중 두 곳 이상에서 이 기울기가 마이너스가 되면 매수 청산,
매도 진입:
네 곳 다 20이평 기울기 마이너스일 때 매도 진입,
매도 청산:
두 곳 이상에서 기울기가 플러스가 되면 매도 청산.
하는 식들 부탁 드립니다.
감사합니다.
(제가 지금 예스랭귀지만 쓰고 있고, 예스스팟은 써 본지가 오래 되어서, 이런 것이 가능한지 잘 알지 못합니다.
가르쳐 주시면 대단히 감사하겠습니다)
2020-07-01
2834
글번호 225260
답변완료
스팟수식 부탁드립니다.
예스랭귀지 차트 신호대로 매매를 하려고 하는데
스팟을 이용하면 주문 체결 여부나 오류발생 때 대응할 수 있다고 해서 공부해보려고 했으나 너무 어렵네요..
1. 미니나스닥 신호대로 마이크로 나스닥 4계약 매매
2.
접수된 주문이 없고, 포지션이 없을 때,
-진입 미완성 신호 = 무시
-진입 완성신호 = 현재가로 주문.
접수된 주문이 없고, 포지션이 있을 때,
-청산 미완성/완성 신호 = 시장가 주문.
3. 주문 후 5초안에 오류가 발생하거나 체결이 안되면 기존 주문 취소 후 체결 될 때까지 5초마다 시장가로 재주문
1번은 차트객체 추가해서 미니나스닥 차트아이디 적용하고, 종목객체 추가해서 마이크로 나스닥 지정했고 계약수를 4로 어디서 바꾸죠?
2번은 도움말, 답변보면서 눈치껏 적었는데 의도한대로 작성됬는지 모르겠네요
3번은 어떻게 추가해야할지 잘 모르겠어요
-------------스크립트 시작-------------
var Position;
var BID;
var SID;
var Snum;
var Bnum;
function Main_OnStart()
{
Main.MessageList("Start");
Position = 0;
}
//(ExitLong)(ExitShort)
//시스템미완성 신호 발생
function Chart1_OnRiseIncompleteSignal(IncompleteSignal)
{
// Position = 1일때 ExitLong 미완성 신호 발생하면
if (IncompleteSignal.signalKind == 2 && Position == 1)
{
//포지션 설정
Position = 0 ;
//BNum 매수주문번호에 대해 미체결된 숫자설정
Account1.SetUnfillOrderNumber(BNum);
//미체결된 매수수량이 0 이상이면 취소주문
if(Account1.Unfill.Count > 0) Account1.OrderCancel(BNum);
//잔고 셋팅
Account1.SetBalanceIndex(Main.GetOrderCode(MarketData1.code));
//잔고수량 0 이상, 매수포지션일때
if (Account1.Balance.count > 0 && Account1.Balance.position == 2)
{
//잔고 수량 모두 시장가 청산(매도주문)
Account1.OrderSell(Main.GetOrderCode(MarketData1.code), Account1.Balance.count, 0, 1);
Main.MessageList("----------------");
Main.MessageList("매수청산",Position)
}
}
// Position = -1일때 ExitShort 미완성 신호 발생하면
if (IncompleteSignal.signalKind == 4 && Position == -1)
{
//포지션 설정
Position = 0 ;
// SNum 매도주문번호에 대해 미체결된 숫자설정
Account1.SetUnfillOrderNumber(SNum);
//미체결된 매도수량이 0 이상이면 취소주문
if (Account1.Unfill.count > 0) Account1.OrderCancel(SNum);
//잔고 셋팅
Account1.SetBalanceIndex(Main.GetOrderCode(MarketData1.code));
//잔고수량 0 이상, 매도포지션일때
if (Account1.Unfill.count > 0 && Account1.Balance.position == -1)
{
//잔고 수량 모두 시장가 청산(매수주문)
Account1.OrderBuy(Main.GetOrderCode(MarketData1.code));
Main.MessageList("----------------");
Main.MessageList("매도청산",Position)
}
}
}
//(Buy)(Sell)
//완성 신호 발생
function Chart1_OnRiseSignal(Signal)
{
//Position = 0일때 buy 완성 신호 최초발생하면
if (Signal.signalKind == 1 && Position == 0 )
{
BID = Account1.OrderBuy(Main.GetOrderCode(MarketData11.code), Math.abs(Signal.count), 0, 1 );
Position = 1 ;
Main.MessageList("----------------");
Main.MessageList("매수진입", Position);
}
//Position = 0일때 Sell 완성 신호 최초발생하면
if (Signal.signalKind == 3 && Position == 0)
{
SID = Account1.OrderSell(Main.GetOrderCode(MarketData1.code), Math.abs(Signal.count), 0, 1 );
Position = -1 ;
Main.MessageList("----------------");
Main.MessageList("매도진입", Position);
}
// Position = 1일때 ExitLong 완성 신호 발생하면
if (Signal.signalKind == 2 && Position == 1)
{
//포지션 설정
Position = 0 ;
//BNum 매수주문번호에 대해 미체결된 숫자설정
Account1.SetUnfillOrderNumber(BNum);
//미체결된 매수수량이 0 이상이면 취소주문
if(Account1.Unfill.Count > 0) Account1.OrderCancel(BNum);
//잔고 셋팅
Account1.SetBalanceIndex(Main.GetOrderCode(MarketData1.code));
//잔고수량 0 이상, 매수포지션일때
if (Account1.Balance.count > 0 && Account1.Balance.position == 2)
{
//잔고 수량 모두 시장가 청산(매도주문)
Account1.OrderSell(Main.GetOrderCode(MarketData1.code), Account1.Balance.count, 0, 1);
Main.MessageList("----------------");
Main.MessageList("매수청산",Position)
}
}
// Position = -1일때 ExitShort 완성 신호 발생하면
if (Signal.signalKind == 4 && Position == -1)
{
//포지션 설정
Position = 0 ;
// SNum 매도주문번호에 대해 미체결된 숫자설정
Account1.SetUnfillOrderNumber(SNum);
//미체결된 매도수량이 0 이상이면 취소주문
if (Account1.Unfill.count > 0) Account1.OrderCancel(SNum);
//잔고 셋팅
Account1.SetBalanceIndex(Main.GetOrderCode(MarketData1.code));
//잔고수량 0 이상, 매도포지션일때
if (Account1.Unfill.count > 0 && Account1.Balance.position == -1)
{
//잔고 수량 모두 시장가 청산(매수주문)
Account1.OrderBuy(Main.GetOrderCode(MarketData1.code));
Main.MessageList("----------------");
Main.MessageList("매도청산",Position)
}
}
}
//주문응답
function Main_OnOrderResponse(OrderResponse)
{
//Position이 1인 상태에서 주문응답아이디와 BID가 같으면
//BNum에 주문번호 저장
if (Position == 1 && OrderResponse.orderID == BID)
{
BNum = OrderResponse.orderNum;
}
//Position이 -1인 상태에서 주문응답아이디와 SID가 같으면
//SNum에 주문번호 저장
if (Position == -1 && OrderResponse.orderID == SID)
{
SNum = OrderResponse.orderNum;
}
}
2020-06-29
3186
글번호 225257