답변완료
일괄 자동정정 기능에 관한 로직이 맞는지 검증요청
아래와 같이 5초후 미체결내역에 대한 일괄자동정정을 하려고 하는데
OnTimer 이벤트 로직검증 요청드립니다.
전화부탁드려요.
원하는 것은
스팟에서 현재가로 진입한 옵션주문들이
미체결발생시 5초이후에 특정가격으로 강제로 주문을 내려고 합니다.
이때 신규 미체결이 발생할때는 신규발생시점부터 5초간 더 유지하도록 하려고합니다.
이후 5초가 지나면 모든 미체결을 일괄적으로 체결시키려고 합니다.
이경우 아래 로직이면 될지 아니면 수정이 필요하면
전화부탁드려요.
OnTimer부분과 변수 선언부분은 생략했습니다.
//---- 미체결 정정주문 시작
Ufcnt = ACC6268.GetTheNumberOfUnfills();
if (Ufcnt > 0){ UfTime = UfTime + 1; }
if (Ufcnt != OldUfcnt) {UfTime = 0;}
if (UfTime > 4) //미체결 발생후 5초경과시 자동청산
{
var Num = ACC6268.GetTheNumberOfUnfills();
for(var i = 0; i < Num; i++)
{
//---- 미체결 전체 시장가 정정
ACC6268.SetUnfillIndex(i);
if (ACC6268.Unfill.orderKind == 1) //매도(1)포지션이면
{
ACC6268.OrderReplace(ACC6268.Unfill.orderNum, ACC6268.Unfill.count,0.01);
}
if (ACC6268.Unfill.orderKind == 2) //매수(2)포지션이면
{
ACC6268.OrderReplace(ACC6268.Unfill.orderNum, ACC6268.Unfill.count,6.00);
}
}
UfTime = 0;
}
OldUfcnt = Ufcnt;
//------- 미체결 로직종료
2015-08-17
1912
글번호 223626
답변완료
Option객체가 비정상입니다. 확인 부탁드립니다.
option 객체에서
게시판에 있는 예제를 활용하여 테스트하는데
var UNum = Option1.uppersATM;
var LNum = Option1.lowersATM;
LNum, UNum 모두 값이 -1로 나옵니다.
Option 객체가의 이상합니다.
다시한번 점검 부탁드립니다.
function Main_OnStart()
{
var UNum = Option1.uppersATM;
var LNum = Option1.lowersATM;
Main.MessageList("UNum", UNum);
Main.MessageList("LNum", LNum);
var PutCode = new Array(UNum+LNum+1);
var PutPrice = new Array(UNum+LNum+1);
//풋 옵션중 2.0에 가장 가까운 종목 매도
//풋 옵션 모든 종목을 현재가-2.0을 해서 절대값을 취해 저장
for (var i = -UNum; i <= LNum; i++)
{
PutPrice[i+UNum] = Math.abs(Option1.GetCurrent(1, i)-2.0);
PutCode[i+UNum] = Option1.GetATMPutRecent(i);
}
//저장된 절대값중 가장 작은 종목의 값과 종목코드 계산
var PP = 99999999;
PutOrderCode = "";
for (var i = -UNum; i <= LNum; i++)
{
if (PutPrice[i+UNum] < PP)
{
PP = PutPrice[i+UNum];
PutOrderCode = PutCode[i+UNum]
}
}
Main.MessageList("PutOrderCode", PutOrderCode);
var UNum = Option1.uppersATM;
var LNum = Option1.lowersATM;
var CallCode = new Array(UNum+LNum+1);
var CallPrice = new Array(UNum+LNum+1);
//콜 옵션중 2.0에 가장 가까운 종목
//콜 옵션 모든 종목을 현재가-2.0을 해서 절대값을 취해 저장
for (var i = -LNum; i <= UNum; i++)
{
CallPrice[i+LNum] = Math.abs(Option1.GetCurrent(0, i)-2.0);
CallCode[i+LNum] = Option1.GetATMCallRecent(i);
}
//저장된 절대값중 가장 작은 종목의 값과 종목코드 계산
var CC = 99999999;
CallOrderCode = "";
for (var i = -LNum; i <= UNum; i++)
{
if (CallPrice[i+LNum] < CC)
{
CC = CallPrice[i+LNum];
CallOrderCode = CallCode[i+LNum];
}
}
Main.MessageList("CallOrderCode", CallOrderCode);
}
2015-08-12
1905
글번호 223618
답변완료
Reference Error : MaxPutcode is not defined
더위에 수고 많으십니다. 항상 많은 도움 받고 있습니다.
2.5에 가까운 옵션값을 잡아서 선물차트신호를 => 옵션값으로 변환해서 매매하고 싶습니다.
일단 msg값만 확인되면 그 값으로 매수,매도 하면 될 것 같은데.. 여기서 막히네요.;;
제목과 같은 에러가 뜹니다...
옵션객체 , 계좌객체 , 차트객체는 모두 추가하였습니다.
//==================================================================
var ChartName = "A돌파";
var d = new Date();
var OpPrice = 2.50; //진입가격대, OpPrice에 가장 근접한 값 주문
var LowPrice = 0.40; //최소가격대 이상일때로 제한하는 변수
var HighPrice = 10.00; //최대가격대 이하일때로 제한하는 변수
var OrderGap = 0.30; //주문시 체결가격 설정(현재가 + OrderGap)
var ForPrice; // 옵션값후보
var Delta;
var MaxCall; // 콜을 여기에 저장
var MaxCallCode; // 콜의 코드를 여기에 저장
var MaxPut;
var MaxPutCode;
function Main_OnStart()
{
Delta = 100;
for(var i = -10; i <= 10; i++)
{
ForPrice = Option.GetCurrent(0,i); // GetCurrent 0 은 콜 , 1은 풋
if ( Math.abs(ForPrice - OpPrice) <= Delta && LowPrice < ForPrice && ForPrice < HighPrice )
{
Delta = Math.abs(ForPrice - OpPrice);
MaxCallCode = Option.GetATMCallRecent(i);
MaxCall = Option.GetCurrentByCode(MaxCallCode);
}
}
Delta = 100;
for(var i = -10; i <= 10; i++)
{
ForPrice = Option.GetCurrent(1,i); // GetCurrent 0 은 콜 , 1은 풋
if ( Math.abs(ForPrice - OpPrice) <= Delta && LowPrice < ForPrice && ForPrice < HighPrice )
{
Delta = Math.abs(ForPrice - OpPrice);
MaxPutCode = Option.GetATMPutRecent(i);
MaxPut = Option.GetCurrentByCode(MaxPutCode);
}
}
Main.MessageLog("<< 잔존일 "+Option.GetRemainDays(0,0)+"일 // 차트명 : "+ChartName+" >> ------------------------------- 구동시각 "+d.getHours()+":"+d.getMinutes()+":"+d.getSeconds());
Main.MessageLog("현재 Put 가격 : "+MaxPut+" // 종목코드 : "+MaxPutcode); // 출력
Main.MessageLog("현재 Call 가격 : "+MaxCall+" // 종목코드 : "+MaxCallcode);
}
2015-08-11
1872
글번호 223610