커뮤니티
예스스팟 Q&A
답변완료
문의 (YS)
1. YS청산코드 일부분입니다. 만약 2.98 호가에서 청산시그널이 발생하면 3.01에 주문이 되는 문제가 발생하면서 YS주문메시지에 "호가단위에 어긋납니다."라는 메시지가 출력이됩니다.
이를 수정부탁드리겠습니다.
if (gPosition == 1 && gSignalKind == SIG_EXITLONG)
{
// gCallOrderCode 잔고 셋팅
CA.SetBalanceItem(gCallOrderCode, 0);
// 잔고에 수량이 존재하면
if (CA.Balance.count > 0)
{
if (Option.GetCurrentByCode(gCallOrderCode) >= 3.0)
var Tick = 0.05;
else
var Tick = 0.01;
var EXLxCallPrice1 = Option.GetCurrentByCode(gCallOrderCode) + Tick * 3;
gEXLxID1 = CA.OrderSell(gCallOrderCode, CA.Balance.count, EXLxCallPrice1, 0);
2014-03-24
1290
글번호 222880
시골소년 님에 의해서 삭제되었습니다.
2014-03-23
11
글번호 222879
파문일기 님에 의해서 삭제되었습니다.
2014-03-19
0
글번호 222871
답변완료
수식 점검 부탁드립니다^^
계좌객체
옵션객체 설정..
1. 장시작후 2.5에 근접한 옵션을 설정(2.5 대항옵션)후
콜 2.5, 풋 2.5근접 옵션을 기준으로 위, 아래 행사가를 3-4개 참조해서
확장챠트를 콜 풋 각각 만듭니다.
2. 만들어진 확장챠트에 예스랭기지 수식으로 만들어진 시스템(OpCall, OpPut)을 적용하고 싶습니다.
- 현재는 예스스팟전략 시험가동시 messagelist(콜,풋코드)가 뜹니다.
챠트 객체 생성후에
"정의되지 않은 업무가 요청되었습니다.(E_UNKONOWN_GBN)(10003)" 이라 뜨는데...
3. OpCall, OpPut 시스템의 진입명과 수량을 그대로 이용하고 싶습니다.
첨부파일은 적용하는 시스템이고, 또 챠트를 띄우는
방법을 알려주시면 .....
감사합니다
var Start;
var UNum; var LNum;
var CallCode; var CallPrice;
var PutCode; var PutPrice;
var CC; var PP;
var CallOrderCode; var PutOrderCode;
var vol1;
var vol2;
var CallStart;
var PutStart;
var ChartEx1 ;//= null;
var ChartEx2 ;//= null;
function Main_OnStart()
{
Start = 0;
vol1 = 0;
vol2 = 0;
CallStart = 0;
PutStart = 0;
var d = new Date();
var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
//9시 5분에
if (Start == 0 && HHMMSS >= 90001)// && HHMMSS >= 90030
{
Start = 1;
UNum = Option.uppersATM;
LNum = Option.lowersATM;
CallCode = new Array(UNum+LNum+1);
PutCode = new Array(UNum+LNum+1);
CallPrice = new Array(UNum+LNum+1);
PutPrice = new Array(UNum+LNum+1);
for (var i = -LNum; i <= UNum; i++)
{
CallPrice[i+LNum] = Math.abs(Option.GetCurrent(0, i)-2.3);
CallCode[i+LNum] = Option.GetATMCallRecent(i);
}
CC = 99999999;
// CallOrderCode = -1;
for (var i = -LNum; i <= UNum; i++)
{
if (CallPrice[i+LNum] < CC)
{
CC = CallPrice[i+LNum];
CallOrderCode = CallCode[i+LNum];
}
if (CallOrderCode == CallCode[i+LNum])
{
CallOrderCode1 = CallCode[i+LNum-1];
CallOrderCode2 = CallCode[i+LNum+1];
CallOrderCode3 = CallCode[i+LNum+2];
}
}
for (var ii = -UNum; ii <= LNum; ii++)
{
PutPrice[ii+UNum] = Math.abs(Option.GetCurrent(1, ii)-2.3);
PutCode[ii+UNum] = Option.GetATMPutRecent(ii);
}
PP = 99999999;
// PutOrderCode = -1;
for (var ii = -UNum; ii < LNum; ii++)
{
if (PutPrice[ii+UNum] <= PP)
{
PP = PutPrice[ii+UNum];
PutOrderCode = PutCode[ii+UNum];
}
if (PutOrderCode == PutCode[ii+UNum])
{
PutOrderCode1 = PutCode[ii+UNum-1];
PutOrderCode2 = PutCode[ii+UNum+1];
PutOrderCode3 = PutCode[ii+UNum+2];
PutOrderCode4 = PutCode[ii+UNum+3];
}
}
Main.MessageList("콜",CallOrderCode ,"풋",PutOrderCode);
// 이자리까지는 확인이 됩니다. 확장챠트 형서이 않됩니다.
//확장 차트객체 요청
var ReqChartItem1 = new ReqChartItem(CallOrderCode,10, CHART_PERIOD_SECOND, 5000, CHART_REQCOUNT_BAR, false, false);
// var ChartSet2 = new ReqChartItem(PutOrderCode,10, CHART_PERIOD_SECOND, 5000, CHART_REQCOUNT_BAR, false, false);
//참조데이터 추가
var ReqChartItem2 = new ReqChartItem(PutOrderCode1, 10, CHART_PERIOD_SECOND, 3000, CHART_REQCOUNT_BAR, false, false);
var ReqChartItem3 = new ReqChartItem(PutOrderCode, 10, CHART_PERIOD_SECOND, 3000, CHART_REQCOUNT_BAR, false, false);
var ReqChartItem4 = new ReqChartItem(PutOrderCode2, 10, CHART_PERIOD_SECOND, 3000, CHART_REQCOUNT_BAR, false, false);
var ReqChartItem5 = new ReqChartItem(CallOrderCode1, 10, CHART_PERIOD_SECOND, 3000, CHART_REQCOUNT_BAR, false, false);
var ReqChartItem6 = new ReqChartItem(CallOrderCode2, 10, CHART_PERIOD_SECOND, 3000, CHART_REQCOUNT_BAR, false, false);
var ReqChartItem7 = new ReqChartItem("00000000", 10, CHART_PERIOD_SECOND, 3000, CHART_REQCOUNT_BAR, false, false);
var ReqChartItem8 = new ReqChartItem(PutOrderCode3, 10, CHART_PERIOD_SECOND, 3000, CHART_REQCOUNT_BAR, false, false);
var ReqChartItem9 = new ReqChartItem(PutOrderCode4, 10, CHART_PERIOD_SECOND, 3000, CHART_REQCOUNT_BAR, false, false);
var ReqChartItem10 = new ReqChartItem(CallOrderCode3, 10, CHART_PERIOD_SECOND, 3000, CHART_REQCOUNT_BAR, false, false);
//var R20 = new ReqChartItem("EI735", 10, CHART_PERIOD_SECOND, 3000, CHART_REQCOUNT_BAR, false, false);
var ReferDataSet1 = new Array(ReqChartItem10,ReqChartItem2,ReqChartItem3,ReqChartItem4,ReqChartItem5,ReqChartItem6,ReqChartItem7,ReqChartItem8,ReqChartItem9);
//시스템 설정
var SystemInfo1 = new SystemInfo("OpCall",YL_TYPE_NORMAL,null,null,null);
// var SystemSet2 = new SystemInfo("OpPut",YL_TYPE_NORMAL,null,null,null);
//지정한 설정으로 챠트 생성을 요청
Main.ReqChartEx(ReqChartItem1,SystemInfo1,null,ReferDataSet1);
// Main.ReqChartEx(ChartSet2,SystemSet2,null,ReferDataSet2);
}
}
//요청한 차트객체 생성이 완료되면
function Main_OnRcvChartEx(ChartEx)
{
if (ChartEx.GetCode(1) == PutOrderCode)
{
ChartEx2 = ChartEx;
PutStart = 1;
}
}
function Main_OnUp*dateMarket(sItemCode, lUp*dateID)
{
if (sItemCode == PutOrderCode && lUp*dateID == 20001)
{
// if (ChartEx2 != null)
{
Main.MessageList("Code",ChartEx2.GetCode(1));
}
}
}
//확장차트에서 신호나오면 주문
function Main_OnRiseSignal(ChartEx2, Signal)
{
//차트
if (PutStart == 1 && ChartEx2.GetCode(1) == PutOrderCode)
{
if (Signal.signalKind == 1)
{
vol2 = Math.abs(Signal.count);
Account1.OrderBuy(Signal.code,vol2,Option.GetAskByCode(Signal.code,3),0);
}
if (vol2 > 0 && Signal.signalKind == 2)
{
Account1.OrderSell(Signal.code,vol2,Option.GetBidByCode(Signal.code,3),0);
}
if (Signal.signalKind == 3)
{
vol2 = Math.abs(Signal.count);
Account1.OrderBuy(Signal.code,vol2,Option.GetBidByCode(Signal.code,3),0);
}
if (vol2 > 0 && Signal.signalKind == 4)
{
Account1.OrderBuy(Signal.code,vol2,Option.GetAskByCode(Signal.code,3),0);
}
}
}
2014-03-20
1443
글번호 222870
답변완료
스팟 오류
오늘 아래와 같은 오류가 나서 청산이 안되었는데 수식의 오류가 있는지 문의드립니다.
예스스팟모니터에는 아래와 같이 오류가 나서 미체결주문이 되었는데 혹시 미체결일때 재주문할 수 있는 수식도 Sample이 있으면 부탁합니다.
주문가격 1.-2147483648
주문상태 [check_order_ok]가격 제한폭 초과[0.010000][36.500000][301J3250]: sqlnum 20003
사용 스팟수식은 아래와 같습니다.
if (Start == 2 && Signal.signalKind == 4 ) //ExitShort신호발생시 주문종목 청산
{
var SxP_price = Option.GetBidByCode(SellP_code, 5);
A1.OrderSell(SellP_code, Vol, SxP_price, 0);
}
2014-03-13
1437
글번호 222866
답변완료
실시간 데이터 받기
항상 빠른 답변을 주셔서 감사 합니다.
아직 함수들 사용에 미흡해서 무슨 함수를 써야하는지 공부중에 있는데 잘 이해가 안가네요.
예스스팟 프로그램중 질문이 있어 문의 드립니다.
예스랭기지를 사용해서 시작한후 선물 3분차트의 첫째봉의 고가 저가를 표시하는 차트를 지표로 추가를 하였습니다.
예스 랭기지 부분
Var : min_high(0), min_low(0);
min_high = TimeHigh(090000,090259);
min_low = TimeLow(090000,090259);
Plot1(min_high, "고가");
Plot2(min_low, "저가");
예스스팟 부분
var minhigh = C1.GetIndicatorData("고가저가", 1, 0);
var minlow = C1.GetIndicatorData("고가저가", 2, 0);
예스 스팟에서 SyntaxError : Unexpected token ILLIEGAL 이라고 나옵니다.
예스랭지기에서 plot에 대해서 print해서 data를 디버깅으로 보니 시작 시점이
예로써 처음에는 9시가 아니여서 그런지 (1.#R)로 표시되다가 다음날 9시가 되면 정상적인
data가 나옵니다.
이부분 때문에 예스스팟에서 error가 띄는것 같은데 어떻게 해야 하나요?
답변 주시면 감사 하겠습니다.
2014-03-21
1377
글번호 222865
답변완료
몇가지 질문 드립니다~
Q1) 첨부한 그림1을 보시면, 코드에서 4~7번 줄 사이(OnStart의 본문 구간)에는 본문을 접을 수 있는 표시가 생기는데 왜 밑의 함수에는 그런 표시가 안생기나요? 생기게 할 수 있나요?
Q2) 예스스팟으로 주문을 내면 예스트레이더에 연계된 챠트에서(예:F1) 그 주문낸 내용이 표시가 되나요? 표시가 된다면, 체결되었을 때 표시가 되나요?
2014-03-13
1317
글번호 222864
온고지신 님에 의해서 삭제되었습니다.
2014-03-13
0
글번호 222863
온고지신 님에 의해서 삭제되었습니다.
2014-03-13
1
글번호 222862
답변완료
문의드립니다
안녕하세요
예스 스팟을 이용하여 주식매매 시에
스팟 프로그램에 매수금액 및 수익률을 넣지 않고
일반 지표에서 처럼 입력 받아서 처리 하고 싶습니다
가능한지요?
가능하다면 샘플 좀 부탁드립니다
2014-03-10
1366
글번호 222861