답변완료
체결문의 (재문의)
해당 차트아이디는 동일한것으로 확인되었습니다.
첨부파일에 스크린샷을 올렸습니다.
왜 신호완성 로그가 안찍히는지,
확인부탁드립니다.
감사합니다.
---------------------------------------------------
안녕하세요
예스스탁입니다.
차트에서 신호가 발생했는데
신호완성이라는 메세지로그가 동작하지 않는다면
차트객체와 차트가 연결이 되어 있지 않기 때문입니다.
차트객체 속성화면에서 차트아이디와
신호를 받고자하는 차트의 아이디를 동일하게 부여하셔야 합니다.
대소문자를 엄격히 구분하므로 대소문자 유의하셔서 지정해 보시기 바랍니다.
즐거운 하루되세요
> 별이777 님이 쓴 글입니다.
> 제목 : 체결 문의
>
선물신호참조해서, 스팟으로 주문나가는데요.
선물신호에서 신호가 나왔는데도.
스팟으로 주문이 안나갑니다.
스크립트메세지에는 '시작' 만 찍히고, 그뒤는 안찍힙니다.
그뒤 아무런 로그도 없습니다.
"신호완성" 로그가 안찍힙니다.
답변 부탁드립니다.
yt 선물신호는 '시험'모드로 적용해놓은상태이고,
예스스팟은 '자동'모드를 적용해놓은 상태입니다.
yt는 선물계좌,
스폿은 현물계좌로 세팅한 상태입니다.
스팟로직은 아래와 같습니다.
var ID;
var Number;
function Main_OnOrderResponse(OrderResponse)
{
if (OrderResponse.orderID == ID)
{
Number = OrderResponse.orderNum;
Main.SetTimer(1, 60000);
}
}
function Main_OnTimer(nEventID)
{
if (nEventID == 1)
{
A1.OrderReplacePrice(Number,F2.Ask(2));
Main.KillTimer(1);
}
}
function Main_OnNotifyFill(NotifyFill)
{
if (NotifyFill.orderNum == Number)
Main.KillTimer(1);
}
var Position;
var OrdeCode;
var BID;
var SID;
var Snum;
var Bnum;
var BuyFill;
var SellFill;
function Main_OnStart()
{
Main.MessageLog("시작");
Position = 0;
OrdeCode = Main.GetOrderCode(F2.code);
// OrdeCode = Option.GetATMCallRecent(0);
}
// if (Signal.signalKind == 1)
// {
// ID = Main.OrderBuy(A2231.number, Option.GetATMCallRecent(0), 1, 0, 1);
// }
//A1.Orderbuy(Option.GetATMCallRecent(0),1,0,1)
function C1_OnRiseSignal(Signal)
{
Main.MessageLog("신호완성/"+Signal.signalKind);
// Vol = A1.balance / F2.current / 20
Vol = 1;
if (Signal.signalKind == 1 )
{
Position = 1;
BID = A1.OrderBuy(OrdeCode, Vol,F2.current, 0);
// BID = A1.OrderBuy(OrdeCode, Signal.count,F1.current, 0);
// BID = A1.Orderbuy(Option.GetATMCallRecent(0),1,0,1)
Main.MessageLog("매수진입");
BuyFill = 0;
}
if (Position == 1 && Signal.signalKind == 2 )
{
if (BuyFill == 1)
{
A1.OrderSell(OrdeCode, Vol,F2.Bid(2), 0);
Main.MessageLog("매수청산실행");
}
if (BuyFill == 0)
{
A1.OrderCancel(BNum);
Main.MessageLog("매수청산취소");
}
}
if (Signal.signalKind == 3 )
{
Position = -1;
SellFill = 0;
SID = A1.OrderSell(OrdeCode, Vol, F2.current, 0);
Main.MessageLog("매도진입");
}
if (Position == -1 && Signal.signalKind == 4 )
{
if (SellFill == 1)
{
A1.OrderBuy(OrdeCode, Vol,F2.Ask(2), 0);
Main.MessageLog("매도청산");
}
if (SellFill == 0)
{
A1.OrderCancel(SNum);
Main.MessageLog("매도청산취소");
}
}
}
function Main_OnOrderResponse(OrderResponse)
{
if (Position == 1 && OrderResponse.orderID == BID)
{
BNum = OrderResponse.orderNum;
}
if (Position == -1 && OrderResponse.orderID == SID)
{
SNum = OrderResponse.orderNum;
}
}
function Main_OnNotifyFill(NotifyFill)
{
if (Position == 1 && NotifyFill.orderNum == BNum)
{
BuyFill = 1;
}
if (Position == -1 && NotifyFill.orderNum == SNum)
{
SellFill = 1;
}
}
2013-01-17
1953
글번호 221959
답변완료
체결 문의
선물신호참조해서, 스팟으로 주문나가는데요.
선물신호에서 신호가 나왔는데도.
스팟으로 주문이 안나갑니다.
스크립트메세지에는 '시작' 만 찍히고, 그뒤는 안찍힙니다.
그뒤 아무런 로그도 없습니다.
"신호완성" 로그가 안찍힙니다.
답변 부탁드립니다.
yt 선물신호는 '시험'모드로 적용해놓은상태이고,
예스스팟은 '자동'모드를 적용해놓은 상태입니다.
yt는 선물계좌,
스폿은 현물계좌로 세팅한 상태입니다.
스팟로직은 아래와 같습니다.
var ID;
var Number;
function Main_OnOrderResponse(OrderResponse)
{
if (OrderResponse.orderID == ID)
{
Number = OrderResponse.orderNum;
Main.SetTimer(1, 60000);
}
}
function Main_OnTimer(nEventID)
{
if (nEventID == 1)
{
A1.OrderReplacePrice(Number,F2.Ask(2));
Main.KillTimer(1);
}
}
function Main_OnNotifyFill(NotifyFill)
{
if (NotifyFill.orderNum == Number)
Main.KillTimer(1);
}
var Position;
var OrdeCode;
var BID;
var SID;
var Snum;
var Bnum;
var BuyFill;
var SellFill;
function Main_OnStart()
{
Main.MessageLog("시작");
Position = 0;
OrdeCode = Main.GetOrderCode(F2.code);
// OrdeCode = Option.GetATMCallRecent(0);
}
// if (Signal.signalKind == 1)
// {
// ID = Main.OrderBuy(A2231.number, Option.GetATMCallRecent(0), 1, 0, 1);
// }
//A1.Orderbuy(Option.GetATMCallRecent(0),1,0,1)
function C1_OnRiseSignal(Signal)
{
Main.MessageLog("신호완성/"+Signal.signalKind);
// Vol = A1.balance / F2.current / 20
Vol = 1;
if (Signal.signalKind == 1 )
{
Position = 1;
BID = A1.OrderBuy(OrdeCode, Vol,F2.current, 0);
// BID = A1.OrderBuy(OrdeCode, Signal.count,F1.current, 0);
// BID = A1.Orderbuy(Option.GetATMCallRecent(0),1,0,1)
Main.MessageLog("매수진입");
BuyFill = 0;
}
if (Position == 1 && Signal.signalKind == 2 )
{
if (BuyFill == 1)
{
A1.OrderSell(OrdeCode, Vol,F2.Bid(2), 0);
Main.MessageLog("매수청산실행");
}
if (BuyFill == 0)
{
A1.OrderCancel(BNum);
Main.MessageLog("매수청산취소");
}
}
if (Signal.signalKind == 3 )
{
Position = -1;
SellFill = 0;
SID = A1.OrderSell(OrdeCode, Vol, F2.current, 0);
Main.MessageLog("매도진입");
}
if (Position == -1 && Signal.signalKind == 4 )
{
if (SellFill == 1)
{
A1.OrderBuy(OrdeCode, Vol,F2.Ask(2), 0);
Main.MessageLog("매도청산");
}
if (SellFill == 0)
{
A1.OrderCancel(SNum);
Main.MessageLog("매도청산취소");
}
}
}
function Main_OnOrderResponse(OrderResponse)
{
if (Position == 1 && OrderResponse.orderID == BID)
{
BNum = OrderResponse.orderNum;
}
if (Position == -1 && OrderResponse.orderID == SID)
{
SNum = OrderResponse.orderNum;
}
}
function Main_OnNotifyFill(NotifyFill)
{
if (Position == 1 && NotifyFill.orderNum == BNum)
{
BuyFill = 1;
}
if (Position == -1 && NotifyFill.orderNum == SNum)
{
SellFill = 1;
}
}
2013-01-14
2147
글번호 221947
답변완료
1틱챠트 지연현상
첨부된 엑셀파일은 2013-01-10 일 선물의 1틱챠트에 아래의 지표를 적용하여 실제시각과 챠트에서 처리하는 데이타의 시각을 비교하여 지연시간을 알아본 것입니다. 예스트레이더4 버전을 사용한 것이고 최초봉의 수를 5000으로 잡았읍니다.
최초 5000개 봉을 그린 이후에, 지연이 5분이상 되는 부분도 있고, 지연이 거의0 인 부분도 있는데, 이런 지연이 생기는 원인은 무엇입니까?
네트웍 문제는 아닙니다. 데이타를 지연되어 보내주거나, 예스트레이더4 소프트웨어의 챠트에 봉을 그릴 수 있는 속도의 한계로 생각되는데, 초당 몇개의 봉을 지연없이 그릴 수 있는지 자체평가한 결과를 공개해 주시면 사용에 도움이 되겠읍니다. PC는 intel i5-2500K 3.3GHz, 1GB RAM 에 예스트레이더4 만 실행하는 상태에서 만든 것입니다.
(4MB 이상의 파일은 첨부가 안되어 일부 지연과 관련없는 데이타를 지웠읍니다.)
=============== 지표 ======================
Var: strFileName(""), ctime(0), delay(0);
if index == 0 then {
strFileName = "chart_" + NumToStr(CurrentDate, 0) + "_" + NumToStr(CurrentTime, 0) + ".csv";
print(strFileName, ",cTime,delay,sDate,sTime,index,open,high,low,close,openinterest,bids,asks,ticks,upticks,downticks,volume,upvol,downvol");
}
ctime = CurrentTime;
delay = (int(ctime/10000)*3600+(mod(ctime,10000)-mod(ctime,100))/100*60+mod(ctime,100)) -
(int(sTime/10000)*3600+(mod(sTime,10000)-mod(sTime,100))/100*60+mod(sTime,100));
print(strFileName, ",%8.0f,%8.0f,%8.0f,%8.0f,%8.0f,%8.2f,%8.2f,%8.2f,%8.2f,%8.0f,%8.0f,%8.0f,%8.0f,%8.0f,%8.0f,%8.0f,%8.0f,%8.0f",
CurrentTime, delay, sDate, sTime, index, open, high, low, close, openinterest, bids, asks, ticks, upticks, downticks, volume, upvol, downvol);
2013-01-14
2230
글번호 221943