답변완료
계좌 순손익이 일정금액을 초과하면 계좌 일괄청산을 하려고 합니다.
수고 하십니다.
일정 거래시간과 계좌 순손익이 일정금액을 초과하면 계좌 일괄청산을 하려고 다음과 같이 스크립트를 작성하였슴니다.
원하는 처리가 안되어서 스크립트에 오류가 있는지 확인 부탁 드립니다.
function Main_OnStart()
{
Main.SetTimer(1, 5000);
}
function Main_OnTimer(nEventID)
{
var d = new Date();
var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
Account1.Refresh();
Main.MessageLog(" profit : " + Account1.Balance.profit);
if ((HHMMSS > closetime && HHMMSS < closetime+10) || (Account1.Balance.profit > profit) || (Account1.Balance.profit < loss))
{
// Main.KillTimer(1);
var num = Account1.GetTheNumberOfBalances();
for (var i = 0; i < num; i++)
{
Account1.SetBalanceIndex(i);
if (Account1.Balance.position == 1)
Account1.OrderBuy(Account1.Balance.code,Account1.Balance.count,0,1);
else if (Account1.Balance.position == 2)
Account1.OrderSell(Account1.Balance.code,Account1.Balance.count,0,1);
}
}
}
답변완료
종목코드
안녕하세요 NH Global 해외선물 중에서
Micro S&P종목코드를 넣으니 에러가 발생합니다.
Micro S&P종목코드와 S&P종목코드를 알려주세요.
아래 코드번호는 종목코드에서 선정하였는데 안되네요
수고하십시요
var start;
function Main_OnStart()
{Main.MessageLog("시작"); start=0;}
function C5_OnRiseSignal(Signal){
//var dayma1=C5.GetIndicatorData("이평",1,0);
//var dayma2=C5.GetIndicatorData("이평",2,0);
if (Signal.signalKind==1 ) {A1.OrderBuy(12156821001,MESM22,1,0,1); Start=1;}
if (Signal.signalKind==3 ) {A1.OrderSell(12156821001,MESM22,1,0,1);Start=1;}
}
답변완료
수식 수정 부탁합니다.
안녕하세요!
많은도움 받고 있습니다.
아래식은 정해진 시간에 한개식 매도하고 청산 시간에 한개식 메수하는 식인데
진입 매도는 잘되나 청산은 안되고 있으며 진입 매도 후 예스스팟 실행을 한번 종료 후 다시 실행시키면 한개씩 청산이 잘됩니다. 다시 실행하지 않아도 될 수 있게 수정 부탁합니다.
var EntryTime = 094000;
var ExitTime = 132000;
var MaxEnryVol = 3;
var Entry,Exit,CurrentVol;
var CSV,PSV,CSX,PSX;
var CallOrderCode,PutOrderCode;
function Main_OnStart()
{
var d = new Date();
var YYYYMMDD = d.getFullYear()*10000+(d.getMonth()+1)*100+d.getDate();
var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
Main.MessageList(HHMMSS,"Start");
Entry = true;
if (HHMMSS >= EntryTime)
{
Entry = false;
}
Exit = true;
if (HHMMSS >= ExitTime)
{
Exit = false;
}
if (Entry == true || Exit == true)
{
Main.MessageList(HHMMSS,"1번 타이머동작");
Main.SetTimer(1, 5000);
}
}
function Main_OnTimer(nEventID)
{
var d = new Date();
var YYYYMMDD = d.getFullYear()*10000+(d.getMonth()+1)*100+d.getDate();
var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
if (nEventID == 1)
{
if (Entry == true && HHMMSS >= EntryTime)
{
Main.MessageList(HHMMSS,"진입시작");
-------------------------------- 중략 ---------------------------------------------
//종목을 찾았으면
Main.SetUserValue("SellDate",YYYYMMDD);
Main.SetUserValue("CallOrderCode",CallOrderCode);
Main.SetUserValue("PutOrderCode",PutOrderCode);
Entry = false;
if (ExitTime > EntryTime)
Main.KillTimer(1);
A1.OrderSell(CallOrderCode, 1, Option.GetBid(CallOrderCode, 2), 0);
A1.OrderSell(PutOrderCode, 1, Option.GetBid(PutOrderCode, 2), 0);
CurrentVol = 1;
Main.SetTimer(2, 2000);
}
if (Exit == true && HHMMSS >= ExitTime)
{
Exit = false;
if (ExitTime > EntryTime)
Main.KillTimer(1);
var SellDate = Main.GetUserValue("SellDate")
if (YYYYMMDD == SellDate)
{
CallOrderCode = Main.GetUserValue("CallOrderCode");
PutOrderCode = Main.GetUserValue("PutOrderCode");
if (CallOrderCode != "")
{
A1.SetBalance(CallOrderCode, 0);
if (A1.Balance.count > 0 && A1.Balance.position == 1)
CSV = A1.Balance.count;
else
CSV = 0;
if (PSV > 0)
{
Main.SetTimer(3, 2000);
CSX = 1;
A1.OrderBuy(CallOrderCode, 1, Option.GetAsk(CallOrderCode, 2),0);
}
}
if (PutOrderCode != "")
{
A1.SetBalance(PutOrderCode, 0);
if (A1.Balance.count > 0 && A1.Balance.position == 1)
PSV = A1.Balance.count;
else
PSV = 0;
if (PSV > 0)
{
Main.SetTimer(4, 2000);
PSX = 1;
A1.OrderBuy(PutOrderCode, 1, Option.GetAsk(PutOrderCode, 2),0);
}
}
}
}
}
if (nEventID == 2)
{
CurrentVol = CurrentVol+1;
if (CurrentVol <= MaxEnryVol)
{
A1.OrderSell(CallOrderCode, 1, Option.GetBid(CallOrderCode, 2),0);
A1.OrderSell(PutOrderCode, 1, Option.GetBid(PutOrderCode, 2), 0);
}
else
{
Main.KillTimer(2);
}
}
if (nEventID == 3)
{
CSX = CSX+1;
if (CSX <= CSV)
{
A1.OrderBuy(CallOrderCode, 1, Option.GetAsk(CallOrderCode, 2),0);
A1.OrderBuy(PutOrderCode, 1, Option.GetAsk(PutOrderCode, 2),0);
}
else
{
Main.KillTimer(3);
}
}
if (nEventID == 4)
{
PSX = PSX+1;
if (PSX <= PSV)
{
A1.OrderBuy(CallOrderCode, 1, Option.GetAsk(CallOrderCode, 2),0);
A1.OrderBuy(PutOrderCode, 1, Option.GetAsk(PutOrderCode, 2),0);
}
else
{
Main.KillTimer(4);
}
}
}