답변완료
수식 점검 부탁드립니다^^
계좌객체
옵션객체 설정..
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
1399
글번호 222870