예스스탁
예스스탁 답변
2025-02-27 16:59:21.0
안녕하세요
예스스탁입니다.
아래 가이드 수식 참고하시기 바랍니다.
영문 업데이트가 게시판 금칙어라 Up*date와 같이 중간에 *이 삽입되어 있습니다.
수식 하단의 종목객체 업데이트 이벤트에서 *를 삭제하셔야 합니다.
var 타이머간격 = 3; //5초
var 매수금 = 1000000;
var OrderList = [];
var MKList = [];
var MKOD = [],MKCC = [];
var req;
function Main_OnStart()
{
//1번 타이머, 5초
Main.SetTimer(1, 타이머간격*1000);
}
function Main_OnTimer(nEventID)
{
var d = new Date();
YYYYMMDD = d.getFullYear()*10000+(d.getMonth()+1)*100+d.getDate();
HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
if (nEventID == 1 && HHMMSS >= 90000 && HHMMSS < 151500)
{
//종목검색 수행
Main.ReqPowerSearch("CC")
}
if (nEventID == 2)
{
Main.ReqMarketData(OrderList[req]);
}
}
function Main_OnRcvItemList(aItemList, nCount)
{
Main.KillTimer(1);
OrderList = [];
if (nCount >= 1)
{
if (MKList.length == 0)
{
OrderList = aItemList;
}
else
{
for (var a = 0; a < nCount; a++)
{
var Add = true;
for (var b = 0; b < MKList.length; b++)
{
if (aItemList[a] == MKList[b].code)
{
Add = false;
}
}
if (Add == true)
{
OrderList.push(aItemList[a]);
}
}
}
}
if (OrderList.length == 0)
{
Main.SetTimer(1, 타이머간격*1000);
}
else
{
req = 0;
Main.ReqMarketData(OrderList[req]);
}
}
function Main_OnRcvMarketData(MarketData)
{
if (MarketData.code == OrderList[req])
{
MKList.push(MarketData);
//첫매수 의미로 1을 저장
MKOD.push(1);
//첫매수시 매도1호가를 저장
MKCC.push(MarketData.Ask(1));
//Account1.OrderBuy(MarketData.code,1,0,1); //1주를 시장가 주문
// Account1.OrderBuy(MarketData.code,Math.floor(매수금/MarketData.Ask(1)),0,1); //10만원 시장가 주문
Account1.OrderBuy(MarketData.code,Math.floor(매수금/MarketData.Ask(1)),MarketData.Ask(1),0);
//10만원 지정가 주문 지정가로 주문하고자 하시면 주문함수 내용을 위와 같이 변경하시면 됩니다.
req = req+1;
if (req < OrderList.length)
{
var aa = Main.ReqMarketData(OrderList[req]);
if (aa == -1)
{
Main.SetTimer(2, 15000);
}
}
else
{
Main.SetTimer(1, 타이머간격*1000);
}
}
}
function Main_OnUp*dateMarket(sItemCode, lUp*dateID)//*삭제
{
//각 종목객체 체결시세 받을때 마다
if (lUp*dateID == 20001 && MKList.length > 0)//*삭제
{
for (var i = 0; i < MKList.length; i++)
{
//첫매수만 한 상태이면 첫매수가 -1%면 추가매수
if (MKOD[i] == 1 && MKList[i].current <= MKCC[i]*0.99 && sItemCode == MKList[i].code)
{
//추가매수했다는 의미로 2로 변경
MKOD[i] = 2;
Account1.OrderBuy(MKList[i].code,Math.floor(매수금/MKList[i].Ask(1)),MKList[i].Ask(1),0);
}
}
}
}
즐거운 하루되세요
> 님이랑 님이 쓴 글입니다.
> 제목 : 예스 스팟
> var 타이머간격 = 3; //5초
var 매수금 = 1000000;
var OrderList = [];
var MKList = [];
var MKOD = [];
var req;
function Main_OnStart()
{
//1번 타이머, 5초
Main.SetTimer(1, 타이머간격*1000);
}
function Main_OnTimer(nEventID)
{
var d = new Date();
YYYYMMDD = d.getFullYear()*10000+(d.getMonth()+1)*100+d.getDate();
HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
if (nEventID == 1 && HHMMSS >= 90000 && HHMMSS < 151500)
{
//종목검색 수행
Main.ReqPowerSearch("CC")
}
if (nEventID == 2)
{
Main.ReqMarketData(OrderList[req]);
}
}
function Main_OnRcvItemList(aItemList, nCount)
{
Main.KillTimer(1);
OrderList = [];
if (nCount >= 1)
{
if (MKList.length == 0)
{
OrderList = aItemList;
}
else
{
for (var a = 0; a < nCount; a++)
{
var Add = true;
for (var b = 0; b < MKList.length; b++)
{
if (aItemList[a] == MKList[b].code)
{
Add = false;
}
}
if (Add == true)
{
OrderList.push(aItemList[a]);
}
}
}
}
if (OrderList.length == 0)
{
Main.SetTimer(1, 타이머간격*1000);
}
else
{
req = 0;
Main.ReqMarketData(OrderList[req]);
}
}
function Main_OnRcvMarketData(MarketData)
{
if (MarketData.code == OrderList[req])
{
MKList.push(MarketData);
MKOD.push(0);
//Account1.OrderBuy(MarketData.code,1,0,1); //1주를 시장가 주문
// Account1.OrderBuy(MarketData.code,Math.floor(매수금/MarketData.Ask(1)),0,1); //10만원 시장가 주문
Account1.OrderBuy(MarketData.code,Math.floor(매수금/MarketData.Ask(1)),MarketData.Ask(1),0);
//10만원 지정가 주문 지정가로 주문하고자 하시면 주문함수 내용을 위와 같이 변경하시면 됩니다.
req = req+1;
if (req < OrderList.length)
{
var aa = Main.ReqMarketData(OrderList[req]);
if (aa == -1)
{
Main.SetTimer(2, 15000);
}
}
else
{
Main.SetTimer(1, 타이머간격*1000);
}
}
}
매수후 -1%하락하면 추가매수 수식 추가 부탁 드립니다