아래는 종목검색 후 검색된 종목이 잔고에 있으면 해당 종목을
시장가로 청산하는 스팟식을 작성해 주셨습니다. 아래 점선 아래부분은 매수주문식 같은데 필요 없는것 아닌가요?
검색된 종목이 잔고에 있으면 해당 종목을 시장가로 청산하는 스팟식으로만 간단하게 줄여주시기 바랍니다.
var EntryMoney;
var ItemList,Count;
//스팟시작
function Main_OnStart()
{
//타이머설정
Main.SetTimer(1, 300000);//간격(300초 5분)
EntryMoney = Math.floor(Account1.GetBalanceETCinfo(0)*10);
}
function Main_OnTimer(nEventID)
{
//타이머동작하면 사용자검색조건 실행
if (nEventID == 1)
{
Main.ReqPowerSearch("Stest");
Req = 0;
}
if (nEventID == 2 && Req < Count)
{
Main.ReqMarketData(ItemList[Req], 0, 0);
Req = Req+1;
Main.MessageList(ItemList[Req-1],Req);
}
}
//종목검색이 완료
function Main_OnRcvItemList(aItemList, nCount)
{
//검색종목수가 1개 이상이면
if (nCount >= 1)
{
ItemList = aItemList;
Count = nCount;
//잔고종목이 검색종목에 있으면 시장가로 전량 매도
var num = Account1.GetTheNumberOfBalances();
for(var i = 0; i < num; i++)
{
//잔고종목셋팅
Account1.SetBalance(i);
//검색종목들과 잔고종목의 종목코드 비교
//같은 종목코드 있으면 true 아니면 false
var cond = false;
for(var j = 0; j < Count; i++)
{
if (Account1.Balance.code == ItemList[j])
{
cond = true;
}
}
//true이면 매도
if (cond == true)
{
Account1.OrderSell(Account1.Balance.code, Account1.Balance.count,0,1);
}
}
----------------------------------------------------------------------------------------------------> 이 부분부터는 필요없는것 아닌가요?
//잔고셋팅해서 보유종목이 아니면
Account1.SetBalanceItem(ItemList[0],0);
Main.MessageList(ItemList,Count,Account1.Balance.count);
if (Account1.Balance.count == 0)
{
//종목객체 생성 요청
Req = 1;
Main.ReqMarketData(ItemList[0], 0, 0);
Main.SetTimer(2, 1000);//간격(1초)
}
}
}
//요청한 종목객체가 생성되면
function Main_OnRcvMarketData(MarketData)
{
var Ob = MarketData;
var EntryVol = 0;
EntryVol = Math.floor(EntryMoney/Ob.current);
if (EntryVol > 0)
{
Account1.OrderBuy(Ob.code,EntryVol,Ob.Ask(5),0);
Main.RemoveMarketData(Ob);
}
}
답변 1
예스스탁
예스스탁 답변
2015-06-03 19:23:34
안녕하세요
예스스탁입니다.
기존에 식은 종목검색 후에
검색된 종목이 잔고에 있으면 청산
잔고에 없으면 매수를 하는 식이었습니다.
종목검색후 잔고에 있으면 시장가로 청산하게만 수정해서 올려드립니다.
var EntryMoney;
var ItemList,Count;
//스팟시작
function Main_OnStart()
{
//타이머설정
Main.SetTimer(1, 300000);//간격(300초 5분)
}
function Main_OnTimer(nEventID)
{
//타이머동작하면 사용자검색조건 실행
if (nEventID == 1)
{
Main.ReqPowerSearch("Stest");
}
}
//종목검색이 완료
function Main_OnRcvItemList(aItemList, nCount)
{
//검색종목수가 1개 이상이면
if (nCount >= 1)
{
//검색된 종목을 한개씩 잔고셋팅
for(var i = 0; i < nCount; i++)
{
//잔고종목셋팅
Account1.SetBalance(aItemList[i],0);
//잔고가 있으면
if (Account1.Balance.count > 0)
{
//시장가로 매도
Account1.OrderSell(Account1.Balance.code, Account1.Balance.count,0,1);
}
}
}
}
즐거운 하루되세요
> 무명 님이 쓴 글입니다.
> 제목 : 수식 수정 부탁드립니다.
> 아래는 종목검색 후 검색된 종목이 잔고에 있으면 해당 종목을
시장가로 청산하는 스팟식을 작성해 주셨습니다. 아래 점선 아래부분은 매수주문식 같은데 필요 없는것 아닌가요?
검색된 종목이 잔고에 있으면 해당 종목을 시장가로 청산하는 스팟식으로만 간단하게 줄여주시기 바랍니다.
var EntryMoney;
var ItemList,Count;
//스팟시작
function Main_OnStart()
{
//타이머설정
Main.SetTimer(1, 300000);//간격(300초 5분)
EntryMoney = Math.floor(Account1.GetBalanceETCinfo(0)*10);
}
function Main_OnTimer(nEventID)
{
//타이머동작하면 사용자검색조건 실행
if (nEventID == 1)
{
Main.ReqPowerSearch("Stest");
Req = 0;
}
if (nEventID == 2 && Req < Count)
{
Main.ReqMarketData(ItemList[Req], 0, 0);
Req = Req+1;
Main.MessageList(ItemList[Req-1],Req);
}
}
//종목검색이 완료
function Main_OnRcvItemList(aItemList, nCount)
{
//검색종목수가 1개 이상이면
if (nCount >= 1)
{
ItemList = aItemList;
Count = nCount;
//잔고종목이 검색종목에 있으면 시장가로 전량 매도
var num = Account1.GetTheNumberOfBalances();
for(var i = 0; i < num; i++)
{
//잔고종목셋팅
Account1.SetBalance(i);
//검색종목들과 잔고종목의 종목코드 비교
//같은 종목코드 있으면 true 아니면 false
var cond = false;
for(var j = 0; j < Count; i++)
{
if (Account1.Balance.code == ItemList[j])
{
cond = true;
}
}
//true이면 매도
if (cond == true)
{
Account1.OrderSell(Account1.Balance.code, Account1.Balance.count,0,1);
}
}
----------------------------------------------------------------------------------------------------> 이 부분부터는 필요없는것 아닌가요?
//잔고셋팅해서 보유종목이 아니면
Account1.SetBalanceItem(ItemList[0],0);
Main.MessageList(ItemList,Count,Account1.Balance.count);
if (Account1.Balance.count == 0)
{
//종목객체 생성 요청
Req = 1;
Main.ReqMarketData(ItemList[0], 0, 0);
Main.SetTimer(2, 1000);//간격(1초)
}
}
}
//요청한 종목객체가 생성되면
function Main_OnRcvMarketData(MarketData)
{
var Ob = MarketData;
var EntryVol = 0;
EntryVol = Math.floor(EntryMoney/Ob.current);
if (EntryVol > 0)
{
Account1.OrderBuy(Ob.code,EntryVol,Ob.Ask(5),0);
Main.RemoveMarketData(Ob);
}
}