첨부 이미지
그림1
계좌객체
옵션객체 설정..
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);
}
}
}
답변 4
예스스팟에서 초단위의 data제공을 해주지 않나요?...
분봉 틱봉은 되는데..
며칠 고민 하면서 이것, 저것 점검하다가
문득 초봉 단위의 데이타 문제인가 싶어 검증하는데
여기에 걸렸네요.
다른 차이점이 있나요?
아니면 초봉은 제공을 하지 않는지...
감사합니다
예스스탁
예스스탁 답변
2014-03-26 14:35:12
안녕하세요
예스스탁입니다.
이용에 불편을 드려 죄송합니다.
현재 수식내에서 차트객체를 생성할때 초차트생성에 문제가 있어
수정중에 있습니다.최대한 빠른시일안에 수정하도록 하겠습니다.
수정완료되면 다시 답변드리도록 하겠습니다.
즐거운 하루되세요
> 파문일기 님이 쓴 글입니다.
> 제목 : Re : 수식 점검 부탁드립니다^^
> 예스스팟에서 초단위의 data제공을 해주지 않나요?...
분봉 틱봉은 되는데..
며칠 고민 하면서 이것, 저것 점검하다가
문득 초봉 단위의 데이타 문제인가 싶어 검증하는데
여기에 걸렸네요.
다른 차이점이 있나요?
아니면 초봉은 제공을 하지 않는지...
감사합니다
예스스탁
예스스탁 답변
2014-03-31 10:52:39
안녕하세요
예스스탁입니다.
이용에 불편을 드려 죄송합니다
초차트 부분 수정되어 정상적으로 사용하실수 있습니다.
즐거운 하루되세요
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : Re : 수식 점검 부탁드립니다^^
> 안녕하세요
예스스탁입니다.
이용에 불편을 드려 죄송합니다.
현재 수식내에서 차트객체를 생성할때 초차트생성에 문제가 있어
수정중에 있습니다.최대한 빠른시일안에 수정하도록 하겠습니다.
수정완료되면 다시 답변드리도록 하겠습니다.
즐거운 하루되세요
> 파문일기 님이 쓴 글입니다.
> 제목 : Re : 수식 점검 부탁드립니다^^
> 예스스팟에서 초단위의 data제공을 해주지 않나요?...
분봉 틱봉은 되는데..
며칠 고민 하면서 이것, 저것 점검하다가
문득 초봉 단위의 데이타 문제인가 싶어 검증하는데
여기에 걸렸네요.
다른 차이점이 있나요?
아니면 초봉은 제공을 하지 않는지...
감사합니다