금요일 마감 직전 청산과 관련해
지난번에 주신 수식대로 NH YesSpot을 적용했는데 작동이 되지 않습니다.
(VI에서는 작동이 됨)
스크립트에 문제가 있나요?
var TT, TT1, ExitTime;
var RF1, RF2;
function Main_OnStart()
{
TT = getHHMMSS();
Dax_ExitTime = 55500;
Dax_endTime = 55800;
ExitTime = 65500;
endTime = 65800;
var d = new Date();
var YYYYMMDD = d.getFullYear()*10000+(d.getMonth()+1)*100+d.getDate();
Week = getDateStr(YYYYMMDD);
Main.MessageLog(TT + " 스팟작동, 오늘의 요일은 : " + Week);
Main.SetTimer(1, 60000);
Main.SetTimer(2, 60000);
}
function Main_OnTimer(nEventID)
{
TT1 = getHHMMSS();
if(nEventID == 1 && TT1 > Dax_ExitTime && TT1 < Dax_endTime && Week == "금")
{ Main.MessageLog(TT1 + " 오늘의 요일은 : " + Week + " Dax_포지션정리 시작 ");
Main.KillTimer(1);
A1.Refresh();
RF1 = true;
}
if(nEventID == 2 && TT1 > ExitTime && TT1 < endTime && Week == "금")
{ Main.MessageLog(TT1 + " 오늘의 요일은 : " + Week + " 포지션정리 시작 ");
Main.KillTimer(2);
A1.Refresh();
RF2 = true;
}
}
function Main_OnUp*dateAccount(sAccntNum, sItemCode, lUp*dateID)
{
if (RF1 == true && lUp*dateID == 30000)
{
RF1 = false;
var num1 = A1.GetTheNumberOfBalances();
for (j = 0; j < num1; j++)
{
A1.SetBalance(j);
var Code1 = A1.Balance.code ;
var avgC1 = A1.Balance.avgUnitCost ;
var Count1 = A1.Balance.count ;
var Price1 = A1.Balance.current ;
if(Code1.substring(0,3) == "FDX")
if (A1.Balance.position == 2)
{A1.OrderSell(Code1, Count1, 0, 1);
Main.MessageLog(TT1 + " #001계좌 매수포지션청산 - 종목 : " + Code1 + " " + Count1 + " 계약 , 현재가 : " + Price1);
}
if (A1.Balance.position == 1)
{A1.OrderBuy(Code1, Count1,0, 1);
Main.MessageLog(TT1 + " #001계좌 매도포지션청산 - 종목 : " + Code1 + " " + Count1 + " 계약 , 현재가 : " + Price1);
}
}
}
if (RF2 == true && lUp*dateID == 30000)
{
RF2 = false;
var num2 = A1.GetTheNumberOfBalances();
for (j = 0; j < num2; j++)
{
A1.SetBalance(j);
var Code1 = A1.Balance.code ;
var avgC1 = A1.Balance.avgUnitCost ;
var Count1 = A1.Balance.count ;
var Price1 = A1.Balance.current ;
if (A1.Balance.position == 2)
{A1.OrderSell(Code1, Count1, 0, 1);
Main.MessageLog(TT1 + " #001계좌 매수포지션청산 - 종목 : " + Code1 + " " + Count1 + " 계약 , 현재가 : " + Price1);
}
if (A1.Balance.position == 1)
{A1.OrderBuy(Code1, Count1,0, 1);
Main.MessageLog(TT1 + " #001계좌 매도포지션청산 - 종목 : " + Code1 + " " + Count1 + " 계약 , 현재가 : " + Price1);
}
}
}
}
답변 1
예스스탁
예스스탁 답변
2023-01-09 13:53:41
> 민현종 님이 쓴 글입니다.
> 제목 : [79724] 오류
> 금요일 마감 직전 청산과 관련해
지난번에 주신 수식대로 NH YesSpot을 적용했는데 작동이 되지 않습니다.
(VI에서는 작동이 됨)
스크립트에 문제가 있나요?
var TT, TT1, ExitTime;
var RF1, RF2;
function Main_OnStart()
{
TT = getHHMMSS();
Dax_ExitTime = 55500;
Dax_endTime = 55800;
ExitTime = 65500;
endTime = 65800;
var d = new Date();
var YYYYMMDD = d.getFullYear()*10000+(d.getMonth()+1)*100+d.getDate();
Week = getDateStr(YYYYMMDD);
Main.MessageLog(TT + " 스팟작동, 오늘의 요일은 : " + Week);
Main.SetTimer(1, 60000);
Main.SetTimer(2, 60000);
}
function Main_OnTimer(nEventID)
{
TT1 = getHHMMSS();
if(nEventID == 1 && TT1 > Dax_ExitTime && TT1 < Dax_endTime && Week == "금")
{ Main.MessageLog(TT1 + " 오늘의 요일은 : " + Week + " Dax_포지션정리 시작 ");
Main.KillTimer(1);
A1.Refresh();
RF1 = true;
}
if(nEventID == 2 && TT1 > ExitTime && TT1 < endTime && Week == "금")
{ Main.MessageLog(TT1 + " 오늘의 요일은 : " + Week + " 포지션정리 시작 ");
Main.KillTimer(2);
A1.Refresh();
RF2 = true;
}
}
function Main_OnUp*dateAccount(sAccntNum, sItemCode, lUp*dateID)
{
if (RF1 == true && lUp*dateID == 30000)
{
RF1 = false;
var num1 = A1.GetTheNumberOfBalances();
for (j = 0; j < num1; j++)
{
A1.SetBalance(j);
var Code1 = A1.Balance.code ;
var avgC1 = A1.Balance.avgUnitCost ;
var Count1 = A1.Balance.count ;
var Price1 = A1.Balance.current ;
if(Code1.substring(0,3) == "FDX")
if (A1.Balance.position == 2)
{A1.OrderSell(Code1, Count1, 0, 1);
Main.MessageLog(TT1 + " #001계좌 매수포지션청산 - 종목 : " + Code1 + " " + Count1 + " 계약 , 현재가 : " + Price1);
}
if (A1.Balance.position == 1)
{A1.OrderBuy(Code1, Count1,0, 1);
Main.MessageLog(TT1 + " #001계좌 매도포지션청산 - 종목 : " + Code1 + " " + Count1 + " 계약 , 현재가 : " + Price1);
}
}
}
if (RF2 == true && lUp*dateID == 30000)
{
RF2 = false;
var num2 = A1.GetTheNumberOfBalances();
for (j = 0; j < num2; j++)
{
A1.SetBalance(j);
var Code1 = A1.Balance.code ;
var avgC1 = A1.Balance.avgUnitCost ;
var Count1 = A1.Balance.count ;
var Price1 = A1.Balance.current ;
if (A1.Balance.position == 2)
{A1.OrderSell(Code1, Count1, 0, 1);
Main.MessageLog(TT1 + " #001계좌 매수포지션청산 - 종목 : " + Code1 + " " + Count1 + " 계약 , 현재가 : " + Price1);
}
if (A1.Balance.position == 1)
{A1.OrderBuy(Code1, Count1,0, 1);
Main.MessageLog(TT1 + " #001계좌 매도포지션청산 - 종목 : " + Code1 + " " + Count1 + " 계약 , 현재가 : " + Price1);
}
}
}
}