답변완료
도움 요청 드립니다.
## 검색종목이 보유종목 이고,
+/- 조건일 경우 불타기/물타기 하려 합니다.
여러 수식들을 참고해 조건 수식 작성했는데,나머지는 잘 동작하는데
이 부분만 오랜 시간 수정하며 작동 했는데 안되서 도움 요청 드립니다.
var Req;
var BL = [] ; // 보유종목 코드 저장 리스트
var MK = [], MKreq;
var MKCnt = [];
var MKItem = [];
//종목검색이 완료
function Main_OnRcvItemList(aItemList, nCount)
{
var num = Account1.GetTheNumberOfBalances();
//검색종목수가 1개 이상이면
if (nCount >= 1 )
{
ItemList = aItemList;
Count = nCount;
Main.MessageList("검색완료",ItemList);
//종목객체 생성 요청
Main.MessageList("요청전 EntryItem",EntryItem);
var include = false;
for (var i = 0; i < num.length; i++ )
{
//잔고를 셋팅
Account1.SetBalanceItem(i);
if ( Account1.Balance.code == ItemList[Req] ) // 검색종목이 보유종목
{
include = true;
}
}
if (include == true )
{
Account1.SetBalanceItem(ItemList[Req] ,0);
var cond = false;
for (var i = 0; i < MKItem.length; i++)
{
if (MKItem[i] == ItemList[Req])
{
cond = true;
}
}
if (MKCnt[i] == 0 && Account1.Balance.count > 0 )
{
Account1.SetBalance(MK[i].code, 0);
Vol1 = Math.floor(추가매수금액/MK[i].Bid(1));
if (cond == true && Account1.Balance.current <= Account1.Balance.avgUnitCost * 0.8 )
{
Main.MessageList(Account1.Balance.code,"|보유종목 -20% 이하 추가 물타기 매수 ");
MKCnt[i] = 1;
Account1.OrderBuy(MK[i].code, Vol1, MK[i].Ask(2), 0);
}
if (cond == true && Account1.Balance.current >= Account1.Balance.avgUnitCost * 1.05 )
{
Main.MessageList(Account1.Balance.code,"|보유종목 +5% 이상 추가 불타기 매수 ");
MKCnt[i] = 1;
Account1.OrderBuy(MK[i].code, Vol1,MK[i].Ask(2), 0);
}
}
}
if (include == false) // 검색종목이 보유종목 아님
{
Account1.SetBalanceItem(ItemList[Req] ,0);
var Entry = false;
for(var z = 0; z < EntryItem.length; z++)
{
if (EntryItem[z] == ItemList[Req])
{
Entry = true;
}
}
if (Entry == false )
{
if (Account1.Balance.count == 0)
{
Main.ReqMarketData(ItemList[Req], 0, 0);
Main.MessageList("요청",ItemList[Req],Req);
}
}
if (Entry == true)
{
Main.MessageList("요청x",ItemList[Req]);
}
}
Req = Req+1;
Main.SetTimer(2, 3000);//간격(4초)
}
else
{
Main.MessageList("검색종목 없어 3초후 재검색");
Search = false;
}
}
//요청한 종목객체가 생성되면
function Main_OnRcvMarketData(MarketData)
{
//요청한 종목객체 생성이 완료되면
if (MarketData.code == BL[MKreq])//a MK[MKreq] = MarketData 담기
{
Main.MessageList("종목객체생성 : ",MarketData.code);
//MK배열변수에 종목객체 저장
MK[MKreq] = MarketData;
MKItem[MKreq] = MarketData.code;
MKCnt[MKreq] = 0 ;
MKreq = MKreq+1;
if (MKreq < BL.length)
{
Main.MessageList("ReqMarket : ",MKreq,BL[MKreq]);
S = Main.ReqMarketData(BL[MKreq]);
if (S == -1)
{
Main.MessageList("종목객체 생성제한 : ", Main.GetLimitedTime(0));
Main.SetTimer(4, 16000);// 타이머 4 15초 이후 간격(16초)
}
}
else
{
Main.MessageList("BL종목객체요청완료");
}
}