답변완료
종목관계 없이 몇일 후 잔고 청산
1.앞에 주신 1797번 답변은 매수는 되나 청산이 안되어
2.종목 선택하여 저장했다 청산 되는 수식이나 또는 청산 신호시 종목 관계없이 잔고 있으면 5계약식 5초 간격으로 청산되는 수식 원합니다.
var CallOrderCode, PutOrderCode;
var Direction,Code,BEcnt,BXcnt,SEcnt,SXcnt;
var MaxEntryVol = 5;
var MaxExitVol;
function Main_OnStart()
{
Main.MessageList("시작");
}
function C1_OnRiseSignal(Signal)
{
if (Signal.signalKind == 1 )
{
Main.MessageList("매수진입신호발생");
//내부파일에서 DD와 CC라는 이름으로 저장된 값을 가져와 Direction,Code변수에 저장
Direction = Main.GetUserValue("DD");
Code = Main.GetUserValue("CC");
//Direction이 1이나 -1이 아닐때 수행
if (Direction != 1 || Direction != -1)
{
Direction = 1;
Code = Option.GetATMCallRecent(0);
//방향과 종목코드를 내부파일에 DD,CC라는 이름으로 저장
Main.SetUserValue("DD", Direction);
Main.SetUserValue("CC", Code);
//매수주문
var UNum = Option.uppersATM;
var LNum = Option.lowersATM;
//콜옵션중 1.0에 가장 가까운 종목
//콜옵션 모든 종목을 현재가-1.0을 해서 절대값을 취해 저장
var CallCode = new Array(UNum+LNum+1);
var CallPrice = new Array(UNum+LNum+1);
for (var i = -LNum; i <= UNum; i++)
{
CallPrice[i+LNum] = Math.abs(Option.GetCurrent(0, i)-1.0);
CallCode[i+LNum] = Option.GetATMCallRecent(i);
}
//저장된 절대값중 가장 작은 종목의 값과 종목코드 계산
var AA = 99999999;
CallOrderCode = "";
for (var i = -LNum; i <= UNum; i++)
{
if (CallPrice[i+LNum] < AA)
{
AA = CallPrice[i+LNum];
CallOrderCode = CallCode[i+LNum]
}
}
A1.OrderBuy(CallOrderCode, 1, Option.GetAskByCode(Code,2), 0);
BEcnt = 1;
//1번 타이머 5초 셋팅
Main.SetTimer(1,5000);
}
}
if (Signal.signalKind == 2 )
{
Main.MessageList("매수청산신호발생");
//내부파일에서 DD와 CC라는 이름으로 저장된 값을 가져와 Direction,Code변수에 저장
Direction = Main.GetUserValue("DD");
Code = Main.GetUserValue("CC");
//Direction이 1이면
if (Direction == 1)
{
//Direction을 0으로 초기화
Direction = 0;
//내부파일에 DD와 CC에 저장값도 초기화
Main.SetUserValue("DD", 0);
Main.SetUserValue("CC", " ");
//잔고를 세팅
A1.SetBalance(Code, 0);
//잔고수량이 있으면
if (A1.Balance.count > 0)
{
//보유수량 저장
MaxExitVol = A1.Balance.count;
//1계약 매도주문
A1.OrderSell(Code,1,Option.GetBidByCode(Code, 2), 0);
BXcnt = 1;
//보유수량이 2계약 이상이면
if (MaxExitVol >= 2)
{
//2번 타이머 5초 셋팅
Main.SetTimer(2,5000);
}
}
}
}
중략
2018-11-12
2701
글번호 224647
답변완료
질문드립니다.
질문> 함수객체를 만들어 쓰고 싶습니다.
OrderFunction(시그널, 코드, 수량, 호가)
이렇게 만들고 싶은데..
수량에 따라서 주문이 다르게 들어가는 함수를 만들고 싶습니다.
JHoga를 Ask와 Bid의 주문호가로 지정하고 싶습니다.
가이드 식이나 비슷한 수식이 있을런지요?
아래는 만들다가 못만든 수식입니다.
function OrderFunction(JSignal, JCode, JCount, JHoga)
{
var S;
var OrderCode;
function Main_OnStart()
{ OrderCode = Main.GetOrderCode(JCode);
Main.ReqMarketData(Main.GetOrderCode(JCode));
}
function C1_OnRiseSignal(Signal)
{
S = new OrderFunction(Signal.signalKind,OrderCode,Signal.count);
if (Signal.count == 1)
{
if (Signal.signalKind == 1)
{
A1.OrderBuy(OrderCode, 2, NextData.Ask(JHoga), 0);
Main.MessageList("코드 : ",OrderCode);
Main.MessageList("호가 : ",JHoga);
}
if (Signal.signalKind == 2)
{
A1.OrderSell(OrderCode, 4, NextData.Bid(JHoga), 0);
Main.MessageList("코드 : ",OrderCode);
Main.MessageList("호가 : ",JHoga);
}
}
/*
if (S.JumunCount == 3)
{
if (S.JumunSignal == 1)
}
else
{
}*/
}
function Main_OnRcvMarketData(MarketData)
{
NextData = MarketData;
}
}
만들다가 못 만들었는데요. 가이드 식 좀 도와주실수 있는지요?
2018-11-12
2709
글번호 224636