예스스탁
예스스탁 답변
2021-08-19 13:32:12.0
안녕하세요
예스스탁입니다.
var BL = [],req;
var CT = [],MK = [];
function Main_OnStart()
{
//처음 시작시 step은 0
step = 0;
//시작시점의 보유종목수
var num = Account1.GetTheNumberOfBalances();
//보유종목이 1개 이상이면 보유종목의 종목코드를 BL변수에 순차적으로 저장
if (num > 0)
{
BL = [];
for(var i = 0 ; i < num ; i++)
{
Account1.SetBalance(i);
BL.push(Account1.Balance.code);
}
Main.MessageList("BL : ",BL);
if (BL.length >= 1)
{
req = 0;
var TradeSet = new SystemTradeInfo(TRADE_FIXCOUNT,
1, // 거래수량
123456789, // 자산
1, // 단위수량
0, 0, CALCMETHOD_PERCENT, // 진입/청산 수수료
0, 0, CALCMETHOD_POINT, // 진입/청산 슬리피지
PYRAMIDING_ENTRY, // 피라미딩 설정여부
100000, // 최대진입수량
10); // 최대진입횟수
var ChartSet = new ReqChartItem(BL[req],5,CHART_PERIOD_MINUTE,5000,CHART_REQCOUNT_BAR,false,false);
var SymSet = new SystemInfo("[현물]WayPointStock01_H_Signal",YL_TYPE_NORMAL,null,TradeSet);
Main.ReqChartEx(ChartSet, SymSet);
Main.MessageList("차트객체요청 :",BL[req]);
}
}
else //보유종목이 없으면 바로 1분 타이머 시작
{
Main.MessageList("보유종목없음");
Main.SetTimer(1, 10000);//1번 타이머, 60초
}
}
function Main_OnRcvChartEx(ChartEx)
{
if (ChartEx.GetCode(1) == BL[req])
{
Main.MessageList("차트객체생성 :",ChartEx.GetCode(1));
CT.push(ChartEx);
Main.ReqMarketData(BL[req]);
Main.MessageList("종목객체요청 :",BL[req]);
}
}
function Main_OnRcvMarketData(MarketData)
{
if (MarketData.code == BL[req])
{
Main.MessageList("종목객체생성 :",MarketData.code);
MK.push(MarketData);
req = req+1;
if (req < BL.length)
{
var TradeSet = new SystemTradeInfo(TRADE_FIXCOUNT,
1, // 거래수량
123456789, // 자산
1, // 단위수량
0, 0, CALCMETHOD_PERCENT, // 진입/청산 수수료
0, 0, CALCMETHOD_POINT, // 진입/청산 슬리피지
PYRAMIDING_ENTRY, // 피라미딩 설정여부
100000, // 최대진입수량
10);
var ChartSet = new ReqChartItem(BL[req],5,CHART_PERIOD_MINUTE,5000,CHART_REQCOUNT_BAR,false,false);
var SymSet = new SystemInfo("[현물]WayPointStock01_H_Signal",YL_TYPE_NORMAL,null,TradeSet);
Main.ReqChartEx(ChartSet, SymSet);
Main.MessageList("차트객체요청 :",BL[req]);
}
else
{
Main.SetTimer(1, 10000);//1번 타이머, 60초
Main.MessageList("보유종목차트생성완료",CT.length,MK.length);
}
}
}
function Main_OnTimer(nEventID)
{
if (nEventID == 1)
{
//타이머 종료
Main.KillTimer(1);
Main.ReqPowerSearch("PSearch");
}
}
function Main_OnRcvItemList(aItemList, nCount)
{
//검색된 종목이 없으면
if (nCount == 0)
{
//기존 차트객체와 종목객체 모두 삭제
if (CT.length > 0 && MK.length > 0)
{
for(var i = MK.length-1 ; i >= 0 ; i--)
{
Main.RemoveObject(MK[i]);
Main.RemoveObject(CT[i]);
MK.splice(i,1);
CT.splice(i,1);
}
}
//타이머 다시 셋팅
Main.SetTimer(1, 100000);//1번 타이머, 60초
}
//검색된 종목이 있으면
if (nCount >= 1)
{
//차트종목이 검색리스트에 없으면 해당종목 삭제
for(var i = CT.length-1 ; i >= 0 ; i--)
{
var remove = true;
for(var ii = 0 ; ii < aItemList.length ; i++)
{
if (CT[i].GetCode(1) == aItemList[ii])
{
remove = false;
}
}
if (remove == true)
{
Main.RemoveObject(MK[i]);
Main.RemoveObject(CT[i]);
MK.splice(i,1);
CT.splice(i,1);
}
}
//검색된 종목과 기존 만든 차트들의 종목코드를 비교해
//차트가 만들어 지지 않은 종목이면 BL변수에 종목코드 추가
BL = [];
for(var i = 0 ; i < aItemList.length ; i++)
{
var add = true;
for(var z = 0 ; z < CT.length ; z++)
{
if (aItemList[i] == CT[z].GetCode(1))
{
add = false;
break;
}
}
if (add == true)
{
BL.push(aItemList[i]);
}
}
Main.MessageList("BL : ",BL);
//차트 생성해야할 종목이 있으면 차트요청
if (BL.length >= 1)
{
req = 0;
//차트 요청
var TradeSet = new SystemTradeInfo(TRADE_FIXCOUNT,
1, // 거래수량
123456789, // 자산
1, // 단위수량
0, 0, CALCMETHOD_PERCENT, // 진입/청산 수수료
0, 0, CALCMETHOD_POINT, // 진입/청산 슬리피지
PYRAMIDING_ENTRY, // 피라미딩 설정여부
100000, // 최대진입수량
10);
var ChartSet = new ReqChartItem(BL[req],5,CHART_PERIOD_MINUTE,5000,CHART_REQCOUNT_BAR,false,false);
var SymSet = new SystemInfo("[현물]WayPointStock01_H_Signal",YL_TYPE_NORMAL,null,TradeSet);
Main.ReqChartEx(ChartSet, SymSet);
}
else //없으면 타이머 다시 셋팅
{
Main.SetTimer(1, 100000);//1번 타이머, 60초
}
}
}
즐거운 하루되세요
> 몬스터 님이 쓴 글입니다.
> 제목 : 종목검색 삭제
> 안녕하세요.
아래 수식에서 PSearch 종목검색후 종목검색조건에서 제외되어 파워종목검색에서 사라진 종목도 여전히 스팟에 남아 있는데요.
조건에서 제외되어 파워종먹검색에서 사라진 종목들은 스팟에서 검색 업데이트시 제외되도록 수정 부탁드립니다.
var BL = [],req;
var CT = [],MK = [];
function Main_OnStart()
{
//처음 시작시 step은 0
step = 0;
//시작시점의 보유종목수
var num = Account1.GetTheNumberOfBalances();
//보유종목이 1개 이상이면 보유종목의 종목코드를 BL변수에 순차적으로 저장
if (num > 0)
{
BL = [];
for(var i = 0 ; i < num ; i++)
{
Account1.SetBalance(i);
BL.push(Account1.Balance.code);
}
Main.MessageList("BL : ",BL);
if (BL.length >= 1)
{
req = 0;
var TradeSet = new SystemTradeInfo(TRADE_FIXCOUNT,
1, // 거래수량
123456789, // 자산
1, // 단위수량
0, 0, CALCMETHOD_PERCENT, // 진입/청산 수수료
0, 0, CALCMETHOD_POINT, // 진입/청산 슬리피지
PYRAMIDING_ENTRY, // 피라미딩 설정여부
100000, // 최대진입수량
10); // 최대진입횟수
var ChartSet = new ReqChartItem(BL[req],5,CHART_PERIOD_MINUTE,5000,CHART_REQCOUNT_BAR,false,false);
var SymSet = new SystemInfo("[현물]WayPointStock01_H_Signal",YL_TYPE_NORMAL,null,TradeSet);
Main.ReqChartEx(ChartSet, SymSet);
Main.MessageList("차트객체요청 :",BL[req]);
}
}
else //보유종목이 없으면 바로 1분 타이머 시작
{
Main.MessageList("보유종목없음");
Main.SetTimer(1, 10000);//1번 타이머, 60초
}
}
function Main_OnRcvChartEx(ChartEx)
{
if (ChartEx.GetCode(1) == BL[req])
{
Main.MessageList("차트객체생성 :",ChartEx.GetCode(1));
CT.push(ChartEx);
Main.ReqMarketData(BL[req]);
Main.MessageList("종목객체요청 :",BL[req]);
}
}
function Main_OnRcvMarketData(MarketData)
{
if (MarketData.code == BL[req])
{
Main.MessageList("종목객체생성 :",MarketData.code);
MK.push(MarketData);
req = req+1;
if (req < BL.length)
{
var TradeSet = new SystemTradeInfo(TRADE_FIXCOUNT,
1, // 거래수량
123456789, // 자산
1, // 단위수량
0, 0, CALCMETHOD_PERCENT, // 진입/청산 수수료
0, 0, CALCMETHOD_POINT, // 진입/청산 슬리피지
PYRAMIDING_ENTRY, // 피라미딩 설정여부
100000, // 최대진입수량
10);
var ChartSet = new ReqChartItem(BL[req],5,CHART_PERIOD_MINUTE,5000,CHART_REQCOUNT_BAR,false,false);
var SymSet = new SystemInfo("[현물]WayPointStock01_H_Signal",YL_TYPE_NORMAL,null,TradeSet);
Main.ReqChartEx(ChartSet, SymSet);
Main.MessageList("차트객체요청 :",BL[req]);
}
else
{
Main.SetTimer(1, 10000);//1번 타이머, 60초
Main.MessageList("보유종목차트생성완료",CT.length,MK.length);
}
}
}
function Main_OnTimer(nEventID)
{
if (nEventID == 1)
{
//타이머 종료
Main.KillTimer(1);
Main.ReqPowerSearch("PSearch");
}
}
function Main_OnRcvItemList(aItemList, nCount)
{
//검색된 종목이 없으면
if (nCount == 0)
{
//타이머 다시 셋팅
Main.SetTimer(1, 100000);//1번 타이머, 60초
}
//검색된 종목이 있으면
if (nCount >= 1)
{
//검색된 종목과 기존 만든 차트들의 종목코드를 비교해
//차트가 만들어 지지 않은 종목이면 BL변수에 종목코드 추가
BL = [];
for(var i = 0 ; i < aItemList.length ; i++)
{
var add = true;
for(var z = 0 ; z < CT.length ; z++)
{
if (aItemList[i] == CT[z].GetCode(1))
{
add = false;
break;
}
}
if (add == true)
{
BL.push(aItemList[i]);
}
}
Main.MessageList("BL : ",BL);
//차트 생성해야할 종목이 있으면 차트요청
if (BL.length >= 1)
{
req = 0;
//차트 요청
var TradeSet = new SystemTradeInfo(TRADE_FIXCOUNT,
1, // 거래수량
123456789, // 자산
1, // 단위수량
0, 0, CALCMETHOD_PERCENT, // 진입/청산 수수료
0, 0, CALCMETHOD_POINT, // 진입/청산 슬리피지
PYRAMIDING_ENTRY, // 피라미딩 설정여부
100000, // 최대진입수량
10);
var ChartSet = new ReqChartItem(BL[req],5,CHART_PERIOD_MINUTE,5000,CHART_REQCOUNT_BAR,false,false);
var SymSet = new SystemInfo("[현물]WayPointStock01_H_Signal",YL_TYPE_NORMAL,null,TradeSet);
Main.ReqChartEx(ChartSet, SymSet);
}
else //없으면 타이머 다시 셋팅
{
Main.SetTimer(1, 100000);//1번 타이머, 60초
}
}
}
몬스터
2021-08-25 02:34:35.0
안녕하세요.
스팟시스템에 에러가 있는 것 같습니다.
파워종목 검색에서 사라지는 종목을 리스트에서 삭제하는 기능을 넣은 이후로 스팟내에서 모니터링하는 종목 리스트에서 파워종목 검색에 있는 리스트 전부가 사라지는 것 같습니다.
스크립트 확인부탁드립니다.
var BL = [],req;
var CT = [],MK = [];
function Main_OnStart()
{
var d = new Date();
var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
Main.MessageList("Main_OnStart",HHMMSS);
//처음 시작시 step은 0
step = 0;
//시작시점의 보유종목수
var num = Account1.GetTheNumberOfBalances();
//보유종목이 1개 이상이면 보유종목의 종목코드를 BL변수에 순차적으로 저장
if (num > 0)
{
BL = [];
for(var i = 0 ; i < num ; i++)
{
Account1.SetBalance(i);
BL.push(Account1.Balance.code);
}
Main.MessageList("BL : ",BL);
if (BL.length >= 1)
{
req = 0;
var TradeSet = new SystemTradeInfo(TRADE_FIXCOUNT,
1, // 거래수량
123456789, // 자산
1, // 단위수량
0, 0, CALCMETHOD_PERCENT, // 진입/청산 수수료
0, 0, CALCMETHOD_POINT, // 진입/청산 슬리피지
PYRAMIDING_ENTRY, // 피라미딩 설정여부
100000, // 최대진입수량
10); // 최대진입횟수
var ChartSet = new ReqChartItem(BL[req],5,CHART_PERIOD_MINUTE,5000,CHART_REQCOUNT_BAR,false,false);
var SymSet = new SystemInfo("[현물]",YL_TYPE_NORMAL,null,TradeSet);
Main.ReqChartEx(ChartSet, SymSet);
Main.MessageList("보유종목차차트객체요청 :",BL[req]);
}
}
else //보유종목이 없으면 바로 1분 타이머 시작
{
Main.MessageList("보유종목없음");
Main.SetTimer(1, 15000);//1번 타이머, 10초
}
}
function Main_OnRcvChartEx(ChartEx)
{
if (ChartEx.GetCode(1) == BL[req])
{
Main.MessageList("차트객체생성 :",ChartEx.GetCode(1));
CT.push(ChartEx);
Main.ReqMarketData(BL[req]);
Main.MessageList("종목객체요청 :",BL[req]);
}
}
function Main_OnRcvMarketData(MarketData)
{
if (MarketData.code == BL[req])
{
Main.MessageList("종목객체생성 :",MarketData.code);
MK.push(MarketData);
req = req+1;
if (req < BL.length)
{
var TradeSet = new SystemTradeInfo(TRADE_FIXCOUNT,
1, // 거래수량
123456789, // 자산
1, // 단위수량
0, 0, CALCMETHOD_PERCENT, // 진입/청산 수수료
0, 0, CALCMETHOD_POINT, // 진입/청산 슬리피지
PYRAMIDING_ENTRY, // 피라미딩 설정여부
100000, // 최대진입수량
10);
var ChartSet = new ReqChartItem(BL[req],5,CHART_PERIOD_MINUTE,5000,CHART_REQCOUNT_BAR,false,false);
var SymSet = new SystemInfo("[현물]",YL_TYPE_NORMAL,null,TradeSet);
Main.ReqChartEx(ChartSet, SymSet);
Main.MessageList("차트객체요청 :",BL[req]);
}
else
{
Main.SetTimer(1, 15000);//1번 타이머, 60초
Main.MessageList("차트생성완료",CT.length,MK.length);
}
}
}
function Main_OnTimer(nEventID)
{
var d = new Date();
var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
Main.MessageList("Main_OnTimer",HHMMSS);
if (nEventID == 1 )
{
//타이머 종료
Main.KillTimer(1);
if (HHMMSS > 90000)
{
Main.MessageList("ReqPowerSearch",HHMMSS)
// Main.MessageList("ReqPowerSearch")
Main.ReqPowerSearch("WP01");
}
else
Main.SetTimer(1, 15000);//1번 타이머, 10초
}
}
function Main_OnRcvItemList(aItemList, nCount)
{
Main.MessageList("Main_OnRcvItemList : ",nCount);
//검색된 종목이 없으면
if (nCount <= 0)
{
//기존 차트객체와 종목객체 모두 삭제
if (CT.length > 0 && MK.length > 0)
{
for(var i = MK.length-1 ; i >= 0 ; i--)
{
Main.RemoveObject(MK[i]);
Main.RemoveObject(CT[i]);
MK.splice(i,1);
CT.splice(i,1);
}
}
//타이머 다시 셋팅
Main.SetTimer(1, 100000);//1번 타이머, 60초
}
//검색된 종목이 있으면
if (nCount >= 1)
{
//차트종목이 검색리스트에 없으면 해당종목 삭제
for(var i = CT.length-1 ; i >= 0 ; i--)
{
var remove = true;
for(var ii = 0 ; ii < aItemList.length ; ii++)
{
if (CT[i].GetCode(1) == aItemList[ii])
{
remove = false;
}
}
if (remove == true)
{
Main.RemoveObject(MK[i]);
Main.RemoveObject(CT[i]);
MK.splice(i,1);
CT.splice(i,1);
}
}
//검색된 종목과 기존 만든 차트들의 종목코드를 비교해
//차트가 만들어 지지 않은 종목이면 BL변수에 종목코드 추가
BL = [];
for(var i = 0 ; i < aItemList.length ; i++)
{
var add = true;
for(var z = 0 ; z < CT.length ; z++)
{
if (aItemList[i] == CT[z].GetCode(1))
{
add = false;
break;
}
}
if (add == true)
{
BL.push(aItemList[i]);
}
}
Main.MessageList("BL : ",BL);
//차트 생성해야할 종목이 있으면 차트요청
if (BL.length >= 1)
{
req = 0;
//차트 요청
var TradeSet = new SystemTradeInfo(TRADE_FIXCOUNT,
1, // 거래수량
123456789, // 자산
1, // 단위수량
0, 0, CALCMETHOD_PERCENT, // 진입/청산 수수료
0, 0, CALCMETHOD_POINT, // 진입/청산 슬리피지
PYRAMIDING_ENTRY, // 피라미딩 설정여부
100000, // 최대진입수량
10);
var ChartSet = new ReqChartItem(BL[req],5,CHART_PERIOD_MINUTE,5000,CHART_REQCOUNT_BAR,false,false);
var SymSet = new SystemInfo("[현물]",YL_TYPE_NORMAL,null,TradeSet);
Main.ReqChartEx(ChartSet, SymSet);
}
else //없으면 타이머 다시 셋팅
{
Main.SetTimer(1, 15000);//1번 타이머, 60초
}
}
}
//생성된 차트들에서 신호가 발생하면
function Main_OnRiseSignal(ChartEx, Signal)
{
//매수신호 발생
if (Signal.signalKind == 1)
{
//EntryVol 금액 시장가 매수
var Vol = Math.floor(EntryVol/Signal.price);
Account1.OrderBuy(Signal.code, Vol,Signal.price,1);
}
//매수청산신호 발생
if (Signal.signalKind == 2)
{
//잔고셋팅
Account1.SetBalance(Signal.code,0);
//보유수량이 있으면
if (Account1.Balance.count > 0)
{
//전량 시장가 매도
Account1.OrderSell(Signal.code, Account1.Balance.count,Signal.price,1);
}
}
}
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 종목검색 삭제
> 안녕하세요
예스스탁입니다.
var BL = [],req;
var CT = [],MK = [];
function Main_OnStart()
{
//처음 시작시 step은 0
step = 0;
//시작시점의 보유종목수
var num = Account1.GetTheNumberOfBalances();
//보유종목이 1개 이상이면 보유종목의 종목코드를 BL변수에 순차적으로 저장
if (num > 0)
{
BL = [];
for(var i = 0 ; i < num ; i++)
{
Account1.SetBalance(i);
BL.push(Account1.Balance.code);
}
Main.MessageList("BL : ",BL);
if (BL.length >= 1)
{
req = 0;
var TradeSet = new SystemTradeInfo(TRADE_FIXCOUNT,
1, // 거래수량
123456789, // 자산
1, // 단위수량
0, 0, CALCMETHOD_PERCENT, // 진입/청산 수수료
0, 0, CALCMETHOD_POINT, // 진입/청산 슬리피지
PYRAMIDING_ENTRY, // 피라미딩 설정여부
100000, // 최대진입수량
10); // 최대진입횟수
var ChartSet = new ReqChartItem(BL[req],5,CHART_PERIOD_MINUTE,5000,CHART_REQCOUNT_BAR,false,false);
var SymSet = new SystemInfo("[현물]WayPointStock01_H_Signal",YL_TYPE_NORMAL,null,TradeSet);
Main.ReqChartEx(ChartSet, SymSet);
Main.MessageList("차트객체요청 :",BL[req]);
}
}
else //보유종목이 없으면 바로 1분 타이머 시작
{
Main.MessageList("보유종목없음");
Main.SetTimer(1, 10000);//1번 타이머, 60초
}
}
function Main_OnRcvChartEx(ChartEx)
{
if (ChartEx.GetCode(1) == BL[req])
{
Main.MessageList("차트객체생성 :",ChartEx.GetCode(1));
CT.push(ChartEx);
Main.ReqMarketData(BL[req]);
Main.MessageList("종목객체요청 :",BL[req]);
}
}
function Main_OnRcvMarketData(MarketData)
{
if (MarketData.code == BL[req])
{
Main.MessageList("종목객체생성 :",MarketData.code);
MK.push(MarketData);
req = req+1;
if (req < BL.length)
{
var TradeSet = new SystemTradeInfo(TRADE_FIXCOUNT,
1, // 거래수량
123456789, // 자산
1, // 단위수량
0, 0, CALCMETHOD_PERCENT, // 진입/청산 수수료
0, 0, CALCMETHOD_POINT, // 진입/청산 슬리피지
PYRAMIDING_ENTRY, // 피라미딩 설정여부
100000, // 최대진입수량
10);
var ChartSet = new ReqChartItem(BL[req],5,CHART_PERIOD_MINUTE,5000,CHART_REQCOUNT_BAR,false,false);
var SymSet = new SystemInfo("[현물]WayPointStock01_H_Signal",YL_TYPE_NORMAL,null,TradeSet);
Main.ReqChartEx(ChartSet, SymSet);
Main.MessageList("차트객체요청 :",BL[req]);
}
else
{
Main.SetTimer(1, 10000);//1번 타이머, 60초
Main.MessageList("보유종목차트생성완료",CT.length,MK.length);
}
}
}
function Main_OnTimer(nEventID)
{
if (nEventID == 1)
{
//타이머 종료
Main.KillTimer(1);
Main.ReqPowerSearch("PSearch");
}
}
function Main_OnRcvItemList(aItemList, nCount)
{
//검색된 종목이 없으면
if (nCount == 0)
{
//기존 차트객체와 종목객체 모두 삭제
if (CT.length > 0 && MK.length > 0)
{
for(var i = MK.length-1 ; i >= 0 ; i--)
{
Main.RemoveObject(MK[i]);
Main.RemoveObject(CT[i]);
MK.splice(i,1);
CT.splice(i,1);
}
}
//타이머 다시 셋팅
Main.SetTimer(1, 100000);//1번 타이머, 60초
}
//검색된 종목이 있으면
if (nCount >= 1)
{
//차트종목이 검색리스트에 없으면 해당종목 삭제
for(var i = CT.length-1 ; i >= 0 ; i--)
{
var remove = true;
for(var ii = 0 ; ii < aItemList.length ; i++)
{
if (CT[i].GetCode(1) == aItemList[ii])
{
remove = false;
}
}
if (remove == true)
{
Main.RemoveObject(MK[i]);
Main.RemoveObject(CT[i]);
MK.splice(i,1);
CT.splice(i,1);
}
}
//검색된 종목과 기존 만든 차트들의 종목코드를 비교해
//차트가 만들어 지지 않은 종목이면 BL변수에 종목코드 추가
BL = [];
for(var i = 0 ; i < aItemList.length ; i++)
{
var add = true;
for(var z = 0 ; z < CT.length ; z++)
{
if (aItemList[i] == CT[z].GetCode(1))
{
add = false;
break;
}
}
if (add == true)
{
BL.push(aItemList[i]);
}
}
Main.MessageList("BL : ",BL);
//차트 생성해야할 종목이 있으면 차트요청
if (BL.length >= 1)
{
req = 0;
//차트 요청
var TradeSet = new SystemTradeInfo(TRADE_FIXCOUNT,
1, // 거래수량
123456789, // 자산
1, // 단위수량
0, 0, CALCMETHOD_PERCENT, // 진입/청산 수수료
0, 0, CALCMETHOD_POINT, // 진입/청산 슬리피지
PYRAMIDING_ENTRY, // 피라미딩 설정여부
100000, // 최대진입수량
10);
var ChartSet = new ReqChartItem(BL[req],5,CHART_PERIOD_MINUTE,5000,CHART_REQCOUNT_BAR,false,false);
var SymSet = new SystemInfo("[현물]WayPointStock01_H_Signal",YL_TYPE_NORMAL,null,TradeSet);
Main.ReqChartEx(ChartSet, SymSet);
}
else //없으면 타이머 다시 셋팅
{
Main.SetTimer(1, 100000);//1번 타이머, 60초
}
}
}
즐거운 하루되세요
> 몬스터 님이 쓴 글입니다.
> 제목 : 종목검색 삭제
> 안녕하세요.
아래 수식에서 PSearch 종목검색후 종목검색조건에서 제외되어 파워종목검색에서 사라진 종목도 여전히 스팟에 남아 있는데요.
조건에서 제외되어 파워종먹검색에서 사라진 종목들은 스팟에서 검색 업데이트시 제외되도록 수정 부탁드립니다.
var BL = [],req;
var CT = [],MK = [];
function Main_OnStart()
{
//처음 시작시 step은 0
step = 0;
//시작시점의 보유종목수
var num = Account1.GetTheNumberOfBalances();
//보유종목이 1개 이상이면 보유종목의 종목코드를 BL변수에 순차적으로 저장
if (num > 0)
{
BL = [];
for(var i = 0 ; i < num ; i++)
{
Account1.SetBalance(i);
BL.push(Account1.Balance.code);
}
Main.MessageList("BL : ",BL);
if (BL.length >= 1)
{
req = 0;
var TradeSet = new SystemTradeInfo(TRADE_FIXCOUNT,
1, // 거래수량
123456789, // 자산
1, // 단위수량
0, 0, CALCMETHOD_PERCENT, // 진입/청산 수수료
0, 0, CALCMETHOD_POINT, // 진입/청산 슬리피지
PYRAMIDING_ENTRY, // 피라미딩 설정여부
100000, // 최대진입수량
10); // 최대진입횟수
var ChartSet = new ReqChartItem(BL[req],5,CHART_PERIOD_MINUTE,5000,CHART_REQCOUNT_BAR,false,false);
var SymSet = new SystemInfo("[현물]WayPointStock01_H_Signal",YL_TYPE_NORMAL,null,TradeSet);
Main.ReqChartEx(ChartSet, SymSet);
Main.MessageList("차트객체요청 :",BL[req]);
}
}
else //보유종목이 없으면 바로 1분 타이머 시작
{
Main.MessageList("보유종목없음");
Main.SetTimer(1, 10000);//1번 타이머, 60초
}
}
function Main_OnRcvChartEx(ChartEx)
{
if (ChartEx.GetCode(1) == BL[req])
{
Main.MessageList("차트객체생성 :",ChartEx.GetCode(1));
CT.push(ChartEx);
Main.ReqMarketData(BL[req]);
Main.MessageList("종목객체요청 :",BL[req]);
}
}
function Main_OnRcvMarketData(MarketData)
{
if (MarketData.code == BL[req])
{
Main.MessageList("종목객체생성 :",MarketData.code);
MK.push(MarketData);
req = req+1;
if (req < BL.length)
{
var TradeSet = new SystemTradeInfo(TRADE_FIXCOUNT,
1, // 거래수량
123456789, // 자산
1, // 단위수량
0, 0, CALCMETHOD_PERCENT, // 진입/청산 수수료
0, 0, CALCMETHOD_POINT, // 진입/청산 슬리피지
PYRAMIDING_ENTRY, // 피라미딩 설정여부
100000, // 최대진입수량
10);
var ChartSet = new ReqChartItem(BL[req],5,CHART_PERIOD_MINUTE,5000,CHART_REQCOUNT_BAR,false,false);
var SymSet = new SystemInfo("[현물]WayPointStock01_H_Signal",YL_TYPE_NORMAL,null,TradeSet);
Main.ReqChartEx(ChartSet, SymSet);
Main.MessageList("차트객체요청 :",BL[req]);
}
else
{
Main.SetTimer(1, 10000);//1번 타이머, 60초
Main.MessageList("보유종목차트생성완료",CT.length,MK.length);
}
}
}
function Main_OnTimer(nEventID)
{
if (nEventID == 1)
{
//타이머 종료
Main.KillTimer(1);
Main.ReqPowerSearch("PSearch");
}
}
function Main_OnRcvItemList(aItemList, nCount)
{
//검색된 종목이 없으면
if (nCount == 0)
{
//타이머 다시 셋팅
Main.SetTimer(1, 100000);//1번 타이머, 60초
}
//검색된 종목이 있으면
if (nCount >= 1)
{
//검색된 종목과 기존 만든 차트들의 종목코드를 비교해
//차트가 만들어 지지 않은 종목이면 BL변수에 종목코드 추가
BL = [];
for(var i = 0 ; i < aItemList.length ; i++)
{
var add = true;
for(var z = 0 ; z < CT.length ; z++)
{
if (aItemList[i] == CT[z].GetCode(1))
{
add = false;
break;
}
}
if (add == true)
{
BL.push(aItemList[i]);
}
}
Main.MessageList("BL : ",BL);
//차트 생성해야할 종목이 있으면 차트요청
if (BL.length >= 1)
{
req = 0;
//차트 요청
var TradeSet = new SystemTradeInfo(TRADE_FIXCOUNT,
1, // 거래수량
123456789, // 자산
1, // 단위수량
0, 0, CALCMETHOD_PERCENT, // 진입/청산 수수료
0, 0, CALCMETHOD_POINT, // 진입/청산 슬리피지
PYRAMIDING_ENTRY, // 피라미딩 설정여부
100000, // 최대진입수량
10);
var ChartSet = new ReqChartItem(BL[req],5,CHART_PERIOD_MINUTE,5000,CHART_REQCOUNT_BAR,false,false);
var SymSet = new SystemInfo("[현물]WayPointStock01_H_Signal",YL_TYPE_NORMAL,null,TradeSet);
Main.ReqChartEx(ChartSet, SymSet);
}
else //없으면 타이머 다시 셋팅
{
Main.SetTimer(1, 100000);//1번 타이머, 60초
}
}
}
예스스탁
예스스탁 답변
2021-08-25 13:59:18.0
안녕하세요
예스스탁입니다.
차트와 종목객체 삭제시에
차트상 매수가 진행중인 종목은 제외하고
종목검색리스트에 없는 종목만 차트와 종목객체를 삭제하게 수정해 드립니다.
var BL = [],req;
var CT = [],MK = [],SK = [];
function Main_OnStart()
{
var d = new Date();
var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
Main.MessageList("Main_OnStart",HHMMSS);
//처음 시작시 step은 0
step = 0;
//시작시점의 보유종목수
var num = Account1.GetTheNumberOfBalances();
//보유종목이 1개 이상이면 보유종목의 종목코드를 BL변수에 순차적으로 저장
if (num > 0)
{
BL = [];
for(var i = 0 ; i < num ; i++)
{
Account1.SetBalance(i);
BL.push(Account1.Balance.code);
}
Main.MessageList("BL : ",BL);
if (BL.length >= 1)
{
req = 0;
var TradeSet = new SystemTradeInfo(TRADE_FIXCOUNT,
1, // 거래수량
123456789, // 자산
1, // 단위수량
0, 0, CALCMETHOD_PERCENT, // 진입/청산 수수료
0, 0, CALCMETHOD_POINT, // 진입/청산 슬리피지
PYRAMIDING_ENTRY, // 피라미딩 설정여부
100000, // 최대진입수량
10); // 최대진입횟수
var ChartSet = new ReqChartItem(BL[req],5,CHART_PERIOD_MINUTE,5000,CHART_REQCOUNT_BAR,false,false);
var SymSet = new SystemInfo("[현물]",YL_TYPE_NORMAL,null,TradeSet);
Main.ReqChartEx(ChartSet, SymSet);
Main.MessageList("보유종목차차트객체요청 :",BL[req]);
}
}
else //보유종목이 없으면 바로 1분 타이머 시작
{
Main.MessageList("보유종목없음");
Main.SetTimer(1, 15000);//1번 타이머, 10초
}
}
function Main_OnRcvChartEx(ChartEx)
{
if (ChartEx.GetCode(1) == BL[req])
{
Main.MessageList("차트객체생성 :",ChartEx.GetCode(1));
CT.push(ChartEx);
Main.ReqMarketData(BL[req]);
Main.MessageList("종목객체요청 :",BL[req]);
}
}
function Main_OnRcvMarketData(MarketData)
{
if (MarketData.code == BL[req])
{
Main.MessageList("종목객체생성 :",MarketData.code);
MK.push(MarketData);
req = req+1;
if (req < BL.length)
{
var TradeSet = new SystemTradeInfo(TRADE_FIXCOUNT,
1, // 거래수량
123456789, // 자산
1, // 단위수량
0, 0, CALCMETHOD_PERCENT, // 진입/청산 수수료
0, 0, CALCMETHOD_POINT, // 진입/청산 슬리피지
PYRAMIDING_ENTRY, // 피라미딩 설정여부
100000, // 최대진입수량
10);
var ChartSet = new ReqChartItem(BL[req],5,CHART_PERIOD_MINUTE,5000,CHART_REQCOUNT_BAR,false,false);
var SymSet = new SystemInfo("[현물]",YL_TYPE_NORMAL,null,TradeSet);
Main.ReqChartEx(ChartSet, SymSet);
Main.MessageList("차트객체요청 :",BL[req]);
}
else
{
Main.SetTimer(1, 15000);//1번 타이머, 60초
Main.MessageList("차트생성완료",CT.length,MK.length);
}
}
}
function Main_OnTimer(nEventID)
{
var d = new Date();
var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
Main.MessageList("Main_OnTimer",HHMMSS);
if (nEventID == 1 )
{
//타이머 종료
Main.KillTimer(1);
if (HHMMSS > 90000)
{
Main.MessageList("ReqPowerSearch",HHMMSS)
// Main.MessageList("ReqPowerSearch")
Main.ReqPowerSearch("WP01");
}
else
Main.SetTimer(1, 15000);//1번 타이머, 10초
}
}
function Main_OnRcvItemList(aItemList, nCount)
{
Main.MessageList("Main_OnRcvItemList : ",nCount);
//검색된 종목이 없으면
if (nCount <= 0)
{
//기존 차트객체와 종목객체 모두 삭제
if (CT.length > 0 && MK.length > 0)
{
for(var i = CT.length-1 ; i >= 0 ; i--)
{
if (CT[i].GetOpenContracts() == 0)
{
Main.RemoveObject(MK[i]);
Main.RemoveObject(CT[i]);
MK.splice(i,1);
CT.splice(i,1);
}
}
}
//타이머 다시 셋팅
Main.SetTimer(1, 100000);//1번 타이머, 60초
}
//검색된 종목이 있으면
if (nCount >= 1)
{
//차트종목이 검색리스트에 없으면 해당종목 삭제
for(var i = CT.length-1 ; i >= 0 ; i--)
{
var remove = true;
for(var ii = 0 ; ii < aItemList.length ; ii++)
{
if (CT[i].GetCode(1) == aItemList[ii] || CT[i].GetOpenContracts() > 0)
{
remove = false;
}
}
if (remove == true)
{
Main.RemoveObject(MK[i]);
Main.RemoveObject(CT[i]);
MK.splice(i,1);
CT.splice(i,1);
}
}
//검색된 종목과 기존 만든 차트들의 종목코드를 비교해
//차트가 만들어 지지 않은 종목이면 BL변수에 종목코드 추가
BL = [];
for(var i = 0 ; i < aItemList.length ; i++)
{
var add = true;
for(var z = 0 ; z < CT.length ; z++)
{
if (aItemList[i] == CT[z].GetCode(1))
{
add = false;
break;
}
}
if (add == true)
{
BL.push(aItemList[i]);
}
}
Main.MessageList("BL : ",BL);
//차트 생성해야할 종목이 있으면 차트요청
if (BL.length >= 1)
{
req = 0;
//차트 요청
var TradeSet = new SystemTradeInfo(TRADE_FIXCOUNT,
1, // 거래수량
123456789, // 자산
1, // 단위수량
0, 0, CALCMETHOD_PERCENT, // 진입/청산 수수료
0, 0, CALCMETHOD_POINT, // 진입/청산 슬리피지
PYRAMIDING_ENTRY, // 피라미딩 설정여부
100000, // 최대진입수량
10);
var ChartSet = new ReqChartItem(BL[req],5,CHART_PERIOD_MINUTE,5000,CHART_REQCOUNT_BAR,false,false);
var SymSet = new SystemInfo("[현물]",YL_TYPE_NORMAL,null,TradeSet);
Main.ReqChartEx(ChartSet, SymSet);
}
else //없으면 타이머 다시 셋팅
{
Main.SetTimer(1, 15000);//1번 타이머, 60초
}
}
}
//생성된 차트들에서 신호가 발생하면
function Main_OnRiseSignal(ChartEx, Signal)
{
//매수신호 발생
if (Signal.signalKind == 1)
{
//EntryVol 금액 시장가 매수
var Vol = Math.floor(EntryVol/Signal.price);
Account1.OrderBuy(Signal.code, Vol,Signal.price,1);
}
//매수청산신호 발생
if (Signal.signalKind == 2)
{
//잔고셋팅
Account1.SetBalance(Signal.code,0);
//보유수량이 있으면
if (Account1.Balance.count > 0)
{
//전량 시장가 매도
Account1.OrderSell(Signal.code, Account1.Balance.count,Signal.price,1);
}
}
}
즐거운 하루되세요
> 몬스터 님이 쓴 글입니다.
> 제목 : Re : Re : 종목검색 삭제
> 안녕하세요.
스팟시스템에 에러가 있는 것 같습니다.
파워종목 검색에서 사라지는 종목을 리스트에서 삭제하는 기능을 넣은 이후로 스팟내에서 모니터링하는 종목 리스트에서 파워종목 검색에 있는 리스트 전부가 사라지는 것 같습니다.
스크립트 확인부탁드립니다.
var BL = [],req;
var CT = [],MK = [];
function Main_OnStart()
{
var d = new Date();
var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
Main.MessageList("Main_OnStart",HHMMSS);
//처음 시작시 step은 0
step = 0;
//시작시점의 보유종목수
var num = Account1.GetTheNumberOfBalances();
//보유종목이 1개 이상이면 보유종목의 종목코드를 BL변수에 순차적으로 저장
if (num > 0)
{
BL = [];
for(var i = 0 ; i < num ; i++)
{
Account1.SetBalance(i);
BL.push(Account1.Balance.code);
}
Main.MessageList("BL : ",BL);
if (BL.length >= 1)
{
req = 0;
var TradeSet = new SystemTradeInfo(TRADE_FIXCOUNT,
1, // 거래수량
123456789, // 자산
1, // 단위수량
0, 0, CALCMETHOD_PERCENT, // 진입/청산 수수료
0, 0, CALCMETHOD_POINT, // 진입/청산 슬리피지
PYRAMIDING_ENTRY, // 피라미딩 설정여부
100000, // 최대진입수량
10); // 최대진입횟수
var ChartSet = new ReqChartItem(BL[req],5,CHART_PERIOD_MINUTE,5000,CHART_REQCOUNT_BAR,false,false);
var SymSet = new SystemInfo("[현물]",YL_TYPE_NORMAL,null,TradeSet);
Main.ReqChartEx(ChartSet, SymSet);
Main.MessageList("보유종목차차트객체요청 :",BL[req]);
}
}
else //보유종목이 없으면 바로 1분 타이머 시작
{
Main.MessageList("보유종목없음");
Main.SetTimer(1, 15000);//1번 타이머, 10초
}
}
function Main_OnRcvChartEx(ChartEx)
{
if (ChartEx.GetCode(1) == BL[req])
{
Main.MessageList("차트객체생성 :",ChartEx.GetCode(1));
CT.push(ChartEx);
Main.ReqMarketData(BL[req]);
Main.MessageList("종목객체요청 :",BL[req]);
}
}
function Main_OnRcvMarketData(MarketData)
{
if (MarketData.code == BL[req])
{
Main.MessageList("종목객체생성 :",MarketData.code);
MK.push(MarketData);
req = req+1;
if (req < BL.length)
{
var TradeSet = new SystemTradeInfo(TRADE_FIXCOUNT,
1, // 거래수량
123456789, // 자산
1, // 단위수량
0, 0, CALCMETHOD_PERCENT, // 진입/청산 수수료
0, 0, CALCMETHOD_POINT, // 진입/청산 슬리피지
PYRAMIDING_ENTRY, // 피라미딩 설정여부
100000, // 최대진입수량
10);
var ChartSet = new ReqChartItem(BL[req],5,CHART_PERIOD_MINUTE,5000,CHART_REQCOUNT_BAR,false,false);
var SymSet = new SystemInfo("[현물]",YL_TYPE_NORMAL,null,TradeSet);
Main.ReqChartEx(ChartSet, SymSet);
Main.MessageList("차트객체요청 :",BL[req]);
}
else
{
Main.SetTimer(1, 15000);//1번 타이머, 60초
Main.MessageList("차트생성완료",CT.length,MK.length);
}
}
}
function Main_OnTimer(nEventID)
{
var d = new Date();
var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
Main.MessageList("Main_OnTimer",HHMMSS);
if (nEventID == 1 )
{
//타이머 종료
Main.KillTimer(1);
if (HHMMSS > 90000)
{
Main.MessageList("ReqPowerSearch",HHMMSS)
// Main.MessageList("ReqPowerSearch")
Main.ReqPowerSearch("WP01");
}
else
Main.SetTimer(1, 15000);//1번 타이머, 10초
}
}
function Main_OnRcvItemList(aItemList, nCount)
{
Main.MessageList("Main_OnRcvItemList : ",nCount);
//검색된 종목이 없으면
if (nCount <= 0)
{
//기존 차트객체와 종목객체 모두 삭제
if (CT.length > 0 && MK.length > 0)
{
for(var i = MK.length-1 ; i >= 0 ; i--)
{
Main.RemoveObject(MK[i]);
Main.RemoveObject(CT[i]);
MK.splice(i,1);
CT.splice(i,1);
}
}
//타이머 다시 셋팅
Main.SetTimer(1, 100000);//1번 타이머, 60초
}
//검색된 종목이 있으면
if (nCount >= 1)
{
//차트종목이 검색리스트에 없으면 해당종목 삭제
for(var i = CT.length-1 ; i >= 0 ; i--)
{
var remove = true;
for(var ii = 0 ; ii < aItemList.length ; ii++)
{
if (CT[i].GetCode(1) == aItemList[ii])
{
remove = false;
}
}
if (remove == true)
{
Main.RemoveObject(MK[i]);
Main.RemoveObject(CT[i]);
MK.splice(i,1);
CT.splice(i,1);
}
}
//검색된 종목과 기존 만든 차트들의 종목코드를 비교해
//차트가 만들어 지지 않은 종목이면 BL변수에 종목코드 추가
BL = [];
for(var i = 0 ; i < aItemList.length ; i++)
{
var add = true;
for(var z = 0 ; z < CT.length ; z++)
{
if (aItemList[i] == CT[z].GetCode(1))
{
add = false;
break;
}
}
if (add == true)
{
BL.push(aItemList[i]);
}
}
Main.MessageList("BL : ",BL);
//차트 생성해야할 종목이 있으면 차트요청
if (BL.length >= 1)
{
req = 0;
//차트 요청
var TradeSet = new SystemTradeInfo(TRADE_FIXCOUNT,
1, // 거래수량
123456789, // 자산
1, // 단위수량
0, 0, CALCMETHOD_PERCENT, // 진입/청산 수수료
0, 0, CALCMETHOD_POINT, // 진입/청산 슬리피지
PYRAMIDING_ENTRY, // 피라미딩 설정여부
100000, // 최대진입수량
10);
var ChartSet = new ReqChartItem(BL[req],5,CHART_PERIOD_MINUTE,5000,CHART_REQCOUNT_BAR,false,false);
var SymSet = new SystemInfo("[현물]",YL_TYPE_NORMAL,null,TradeSet);
Main.ReqChartEx(ChartSet, SymSet);
}
else //없으면 타이머 다시 셋팅
{
Main.SetTimer(1, 15000);//1번 타이머, 60초
}
}
}
//생성된 차트들에서 신호가 발생하면
function Main_OnRiseSignal(ChartEx, Signal)
{
//매수신호 발생
if (Signal.signalKind == 1)
{
//EntryVol 금액 시장가 매수
var Vol = Math.floor(EntryVol/Signal.price);
Account1.OrderBuy(Signal.code, Vol,Signal.price,1);
}
//매수청산신호 발생
if (Signal.signalKind == 2)
{
//잔고셋팅
Account1.SetBalance(Signal.code,0);
//보유수량이 있으면
if (Account1.Balance.count > 0)
{
//전량 시장가 매도
Account1.OrderSell(Signal.code, Account1.Balance.count,Signal.price,1);
}
}
}
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 종목검색 삭제
> 안녕하세요
예스스탁입니다.
var BL = [],req;
var CT = [],MK = [];
function Main_OnStart()
{
//처음 시작시 step은 0
step = 0;
//시작시점의 보유종목수
var num = Account1.GetTheNumberOfBalances();
//보유종목이 1개 이상이면 보유종목의 종목코드를 BL변수에 순차적으로 저장
if (num > 0)
{
BL = [];
for(var i = 0 ; i < num ; i++)
{
Account1.SetBalance(i);
BL.push(Account1.Balance.code);
}
Main.MessageList("BL : ",BL);
if (BL.length >= 1)
{
req = 0;
var TradeSet = new SystemTradeInfo(TRADE_FIXCOUNT,
1, // 거래수량
123456789, // 자산
1, // 단위수량
0, 0, CALCMETHOD_PERCENT, // 진입/청산 수수료
0, 0, CALCMETHOD_POINT, // 진입/청산 슬리피지
PYRAMIDING_ENTRY, // 피라미딩 설정여부
100000, // 최대진입수량
10); // 최대진입횟수
var ChartSet = new ReqChartItem(BL[req],5,CHART_PERIOD_MINUTE,5000,CHART_REQCOUNT_BAR,false,false);
var SymSet = new SystemInfo("[현물]WayPointStock01_H_Signal",YL_TYPE_NORMAL,null,TradeSet);
Main.ReqChartEx(ChartSet, SymSet);
Main.MessageList("차트객체요청 :",BL[req]);
}
}
else //보유종목이 없으면 바로 1분 타이머 시작
{
Main.MessageList("보유종목없음");
Main.SetTimer(1, 10000);//1번 타이머, 60초
}
}
function Main_OnRcvChartEx(ChartEx)
{
if (ChartEx.GetCode(1) == BL[req])
{
Main.MessageList("차트객체생성 :",ChartEx.GetCode(1));
CT.push(ChartEx);
Main.ReqMarketData(BL[req]);
Main.MessageList("종목객체요청 :",BL[req]);
}
}
function Main_OnRcvMarketData(MarketData)
{
if (MarketData.code == BL[req])
{
Main.MessageList("종목객체생성 :",MarketData.code);
MK.push(MarketData);
req = req+1;
if (req < BL.length)
{
var TradeSet = new SystemTradeInfo(TRADE_FIXCOUNT,
1, // 거래수량
123456789, // 자산
1, // 단위수량
0, 0, CALCMETHOD_PERCENT, // 진입/청산 수수료
0, 0, CALCMETHOD_POINT, // 진입/청산 슬리피지
PYRAMIDING_ENTRY, // 피라미딩 설정여부
100000, // 최대진입수량
10);
var ChartSet = new ReqChartItem(BL[req],5,CHART_PERIOD_MINUTE,5000,CHART_REQCOUNT_BAR,false,false);
var SymSet = new SystemInfo("[현물]WayPointStock01_H_Signal",YL_TYPE_NORMAL,null,TradeSet);
Main.ReqChartEx(ChartSet, SymSet);
Main.MessageList("차트객체요청 :",BL[req]);
}
else
{
Main.SetTimer(1, 10000);//1번 타이머, 60초
Main.MessageList("보유종목차트생성완료",CT.length,MK.length);
}
}
}
function Main_OnTimer(nEventID)
{
if (nEventID == 1)
{
//타이머 종료
Main.KillTimer(1);
Main.ReqPowerSearch("PSearch");
}
}
function Main_OnRcvItemList(aItemList, nCount)
{
//검색된 종목이 없으면
if (nCount == 0)
{
//기존 차트객체와 종목객체 모두 삭제
if (CT.length > 0 && MK.length > 0)
{
for(var i = MK.length-1 ; i >= 0 ; i--)
{
Main.RemoveObject(MK[i]);
Main.RemoveObject(CT[i]);
MK.splice(i,1);
CT.splice(i,1);
}
}
//타이머 다시 셋팅
Main.SetTimer(1, 100000);//1번 타이머, 60초
}
//검색된 종목이 있으면
if (nCount >= 1)
{
//차트종목이 검색리스트에 없으면 해당종목 삭제
for(var i = CT.length-1 ; i >= 0 ; i--)
{
var remove = true;
for(var ii = 0 ; ii < aItemList.length ; i++)
{
if (CT[i].GetCode(1) == aItemList[ii])
{
remove = false;
}
}
if (remove == true)
{
Main.RemoveObject(MK[i]);
Main.RemoveObject(CT[i]);
MK.splice(i,1);
CT.splice(i,1);
}
}
//검색된 종목과 기존 만든 차트들의 종목코드를 비교해
//차트가 만들어 지지 않은 종목이면 BL변수에 종목코드 추가
BL = [];
for(var i = 0 ; i < aItemList.length ; i++)
{
var add = true;
for(var z = 0 ; z < CT.length ; z++)
{
if (aItemList[i] == CT[z].GetCode(1))
{
add = false;
break;
}
}
if (add == true)
{
BL.push(aItemList[i]);
}
}
Main.MessageList("BL : ",BL);
//차트 생성해야할 종목이 있으면 차트요청
if (BL.length >= 1)
{
req = 0;
//차트 요청
var TradeSet = new SystemTradeInfo(TRADE_FIXCOUNT,
1, // 거래수량
123456789, // 자산
1, // 단위수량
0, 0, CALCMETHOD_PERCENT, // 진입/청산 수수료
0, 0, CALCMETHOD_POINT, // 진입/청산 슬리피지
PYRAMIDING_ENTRY, // 피라미딩 설정여부
100000, // 최대진입수량
10);
var ChartSet = new ReqChartItem(BL[req],5,CHART_PERIOD_MINUTE,5000,CHART_REQCOUNT_BAR,false,false);
var SymSet = new SystemInfo("[현물]WayPointStock01_H_Signal",YL_TYPE_NORMAL,null,TradeSet);
Main.ReqChartEx(ChartSet, SymSet);
}
else //없으면 타이머 다시 셋팅
{
Main.SetTimer(1, 100000);//1번 타이머, 60초
}
}
}
즐거운 하루되세요
> 몬스터 님이 쓴 글입니다.
> 제목 : 종목검색 삭제
> 안녕하세요.
아래 수식에서 PSearch 종목검색후 종목검색조건에서 제외되어 파워종목검색에서 사라진 종목도 여전히 스팟에 남아 있는데요.
조건에서 제외되어 파워종먹검색에서 사라진 종목들은 스팟에서 검색 업데이트시 제외되도록 수정 부탁드립니다.
var BL = [],req;
var CT = [],MK = [];
function Main_OnStart()
{
//처음 시작시 step은 0
step = 0;
//시작시점의 보유종목수
var num = Account1.GetTheNumberOfBalances();
//보유종목이 1개 이상이면 보유종목의 종목코드를 BL변수에 순차적으로 저장
if (num > 0)
{
BL = [];
for(var i = 0 ; i < num ; i++)
{
Account1.SetBalance(i);
BL.push(Account1.Balance.code);
}
Main.MessageList("BL : ",BL);
if (BL.length >= 1)
{
req = 0;
var TradeSet = new SystemTradeInfo(TRADE_FIXCOUNT,
1, // 거래수량
123456789, // 자산
1, // 단위수량
0, 0, CALCMETHOD_PERCENT, // 진입/청산 수수료
0, 0, CALCMETHOD_POINT, // 진입/청산 슬리피지
PYRAMIDING_ENTRY, // 피라미딩 설정여부
100000, // 최대진입수량
10); // 최대진입횟수
var ChartSet = new ReqChartItem(BL[req],5,CHART_PERIOD_MINUTE,5000,CHART_REQCOUNT_BAR,false,false);
var SymSet = new SystemInfo("[현물]WayPointStock01_H_Signal",YL_TYPE_NORMAL,null,TradeSet);
Main.ReqChartEx(ChartSet, SymSet);
Main.MessageList("차트객체요청 :",BL[req]);
}
}
else //보유종목이 없으면 바로 1분 타이머 시작
{
Main.MessageList("보유종목없음");
Main.SetTimer(1, 10000);//1번 타이머, 60초
}
}
function Main_OnRcvChartEx(ChartEx)
{
if (ChartEx.GetCode(1) == BL[req])
{
Main.MessageList("차트객체생성 :",ChartEx.GetCode(1));
CT.push(ChartEx);
Main.ReqMarketData(BL[req]);
Main.MessageList("종목객체요청 :",BL[req]);
}
}
function Main_OnRcvMarketData(MarketData)
{
if (MarketData.code == BL[req])
{
Main.MessageList("종목객체생성 :",MarketData.code);
MK.push(MarketData);
req = req+1;
if (req < BL.length)
{
var TradeSet = new SystemTradeInfo(TRADE_FIXCOUNT,
1, // 거래수량
123456789, // 자산
1, // 단위수량
0, 0, CALCMETHOD_PERCENT, // 진입/청산 수수료
0, 0, CALCMETHOD_POINT, // 진입/청산 슬리피지
PYRAMIDING_ENTRY, // 피라미딩 설정여부
100000, // 최대진입수량
10);
var ChartSet = new ReqChartItem(BL[req],5,CHART_PERIOD_MINUTE,5000,CHART_REQCOUNT_BAR,false,false);
var SymSet = new SystemInfo("[현물]WayPointStock01_H_Signal",YL_TYPE_NORMAL,null,TradeSet);
Main.ReqChartEx(ChartSet, SymSet);
Main.MessageList("차트객체요청 :",BL[req]);
}
else
{
Main.SetTimer(1, 10000);//1번 타이머, 60초
Main.MessageList("보유종목차트생성완료",CT.length,MK.length);
}
}
}
function Main_OnTimer(nEventID)
{
if (nEventID == 1)
{
//타이머 종료
Main.KillTimer(1);
Main.ReqPowerSearch("PSearch");
}
}
function Main_OnRcvItemList(aItemList, nCount)
{
//검색된 종목이 없으면
if (nCount == 0)
{
//타이머 다시 셋팅
Main.SetTimer(1, 100000);//1번 타이머, 60초
}
//검색된 종목이 있으면
if (nCount >= 1)
{
//검색된 종목과 기존 만든 차트들의 종목코드를 비교해
//차트가 만들어 지지 않은 종목이면 BL변수에 종목코드 추가
BL = [];
for(var i = 0 ; i < aItemList.length ; i++)
{
var add = true;
for(var z = 0 ; z < CT.length ; z++)
{
if (aItemList[i] == CT[z].GetCode(1))
{
add = false;
break;
}
}
if (add == true)
{
BL.push(aItemList[i]);
}
}
Main.MessageList("BL : ",BL);
//차트 생성해야할 종목이 있으면 차트요청
if (BL.length >= 1)
{
req = 0;
//차트 요청
var TradeSet = new SystemTradeInfo(TRADE_FIXCOUNT,
1, // 거래수량
123456789, // 자산
1, // 단위수량
0, 0, CALCMETHOD_PERCENT, // 진입/청산 수수료
0, 0, CALCMETHOD_POINT, // 진입/청산 슬리피지
PYRAMIDING_ENTRY, // 피라미딩 설정여부
100000, // 최대진입수량
10);
var ChartSet = new ReqChartItem(BL[req],5,CHART_PERIOD_MINUTE,5000,CHART_REQCOUNT_BAR,false,false);
var SymSet = new SystemInfo("[현물]WayPointStock01_H_Signal",YL_TYPE_NORMAL,null,TradeSet);
Main.ReqChartEx(ChartSet, SymSet);
}
else //없으면 타이머 다시 셋팅
{
Main.SetTimer(1, 100000);//1번 타이머, 60초
}
}
}
몬스터
2021-08-25 18:45:07.0
몬스터 님에 의해 삭제된 답변입니다.
몬스터
2021-08-30 22:06:36.0
안녕하세요.
어떤 문제인지 모르겠는데, 중복된 것을 제외하고 보유종목에 대한 일부 리스트가 사라지고 파워종목검색에 있는 리스트도 일부만 차트가 생성되고 있습니다.
또한, 두번째 줄에 선언하신 SK = []는 어디에 사용되는 것인지요?
확인 부탁드립니다.
var BL = [],req;
var CT = [],MK = [],SK = [];
function Main_OnStart()
{
var d = new Date();
var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
Main.MessageList("Main_OnStart",HHMMSS);
//처음 시작시 step은 0
step = 0;
//시작시점의 보유종목수
var num = Account1.GetTheNumberOfBalances();
//보유종목이 1개 이상이면 보유종목의 종목코드를 BL변수에 순차적으로 저장
if (num > 0)
{
BL = [];
for(var i = 0 ; i < num ; i++)
{
Account1.SetBalance(i);
BL.push(Account1.Balance.code);
}
Main.MessageList("BL : ",BL);
if (BL.length >= 1)
{
req = 0;
var TradeSet = new SystemTradeInfo(TRADE_FIXCOUNT,
1, // 거래수량
123456789, // 자산
1, // 단위수량
0, 0, CALCMETHOD_PERCENT, // 진입/청산 수수료
0, 0, CALCMETHOD_POINT, // 진입/청산 슬리피지
PYRAMIDING_ENTRY, // 피라미딩 설정여부
100000, // 최대진입수량
10); // 최대진입횟수
var ChartSet = new ReqChartItem(BL[req],5,CHART_PERIOD_MINUTE,5000,CHART_REQCOUNT_BAR,false,false);
var SymSet = new SystemInfo("[현물]",YL_TYPE_NORMAL,null,TradeSet);
Main.ReqChartEx(ChartSet, SymSet);
Main.MessageList("보유종목차차트객체요청 :",BL[req]);
}
}
else //보유종목이 없으면 바로 1분 타이머 시작
{
Main.MessageList("보유종목없음");
Main.SetTimer(1, 15000);//1번 타이머, 10초
}
}
function Main_OnRcvChartEx(ChartEx)
{
if (ChartEx.GetCode(1) == BL[req])
{
Main.MessageList("차트객체생성 :",ChartEx.GetCode(1));
CT.push(ChartEx);
Main.ReqMarketData(BL[req]);
Main.MessageList("종목객체요청 :",BL[req]);
}
}
function Main_OnRcvMarketData(MarketData)
{
if (MarketData.code == BL[req])
{
Main.MessageList("종목객체생성 :",MarketData.code);
MK.push(MarketData);
req = req+1;
if (req < BL.length)
{
var TradeSet = new SystemTradeInfo(TRADE_FIXCOUNT,
1, // 거래수량
123456789, // 자산
1, // 단위수량
0, 0, CALCMETHOD_PERCENT, // 진입/청산 수수료
0, 0, CALCMETHOD_POINT, // 진입/청산 슬리피지
PYRAMIDING_ENTRY, // 피라미딩 설정여부
100000, // 최대진입수량
10);
var ChartSet = new ReqChartItem(BL[req],5,CHART_PERIOD_MINUTE,5000,CHART_REQCOUNT_BAR,false,false);
var SymSet = new SystemInfo("[현물]",YL_TYPE_NORMAL,null,TradeSet);
Main.ReqChartEx(ChartSet, SymSet);
Main.MessageList("차트객체요청 :",BL[req]);
}
else
{
Main.SetTimer(1, 15000);//1번 타이머, 60초
Main.MessageList("차트생성완료",CT.length,MK.length);
}
}
}
function Main_OnTimer(nEventID)
{
var d = new Date();
var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
Main.MessageList("Main_OnTimer",HHMMSS);
if (nEventID == 1 )
{
//타이머 종료
Main.KillTimer(1);
if (HHMMSS > 90000)
{
Main.MessageList("ReqPowerSearch",HHMMSS)
// Main.MessageList("ReqPowerSearch")
Main.ReqPowerSearch("WP01");
}
else
Main.SetTimer(1, 15000);//1번 타이머, 10초
}
}
function Main_OnRcvItemList(aItemList, nCount)
{
Main.MessageList("Main_OnRcvItemList : ",nCount);
//검색된 종목이 없으면
if (nCount <= 0)
{
//기존 차트객체와 종목객체 모두 삭제
if (CT.length > 0 && MK.length > 0)
{
for(var i = CT.length-1 ; i >= 0 ; i--)
{
if (CT[i].GetOpenContracts() == 0)
{
Main.RemoveObject(MK[i]);
Main.RemoveObject(CT[i]);
MK.splice(i,1);
CT.splice(i,1);
}
}
}
//타이머 다시 셋팅
Main.SetTimer(1, 100000);//1번 타이머, 60초
}
//검색된 종목이 있으면
if (nCount >= 1)
{
//차트종목이 검색리스트에 없으면 해당종목 삭제
for(var i = CT.length-1 ; i >= 0 ; i--)
{
var remove = true;
for(var ii = 0 ; ii < aItemList.length ; ii++)
{
if (CT[i].GetCode(1) == aItemList[ii] || CT[i].GetOpenContracts() > 0)
{
remove = false;
}
}
if (remove == true)
{
Main.RemoveObject(MK[i]);
Main.RemoveObject(CT[i]);
MK.splice(i,1);
CT.splice(i,1);
}
}
//검색된 종목과 기존 만든 차트들의 종목코드를 비교해
//차트가 만들어 지지 않은 종목이면 BL변수에 종목코드 추가
BL = [];
for(var i = 0 ; i < aItemList.length ; i++)
{
var add = true;
for(var z = 0 ; z < CT.length ; z++)
{
if (aItemList[i] == CT[z].GetCode(1))
{
add = false;
break;
}
}
if (add == true)
{
BL.push(aItemList[i]);
}
}
Main.MessageList("BL : ",BL);
//차트 생성해야할 종목이 있으면 차트요청
if (BL.length >= 1)
{
req = 0;
//차트 요청
var TradeSet = new SystemTradeInfo(TRADE_FIXCOUNT,
1, // 거래수량
123456789, // 자산
1, // 단위수량
0, 0, CALCMETHOD_PERCENT, // 진입/청산 수수료
0, 0, CALCMETHOD_POINT, // 진입/청산 슬리피지
PYRAMIDING_ENTRY, // 피라미딩 설정여부
100000, // 최대진입수량
10);
var ChartSet = new ReqChartItem(BL[req],5,CHART_PERIOD_MINUTE,5000,CHART_REQCOUNT_BAR,false,false);
var SymSet = new SystemInfo("[현물]",YL_TYPE_NORMAL,null,TradeSet);
Main.ReqChartEx(ChartSet, SymSet);
}
else //없으면 타이머 다시 셋팅
{
Main.SetTimer(1, 15000);//1번 타이머, 60초
}
}
}
//생성된 차트들에서 신호가 발생하면
function Main_OnRiseSignal(ChartEx, Signal)
{
//매수신호 발생
if (Signal.signalKind == 1)
{
//EntryVol 금액 시장가 매수
var Vol = Math.floor(EntryVol/Signal.price);
Account1.OrderBuy(Signal.code, Vol,Signal.price,1);
}
//매수청산신호 발생
if (Signal.signalKind == 2)
{
//잔고셋팅
Account1.SetBalance(Signal.code,0);
//보유수량이 있으면
if (Account1.Balance.count > 0)
{
//전량 시장가 매도
Account1.OrderSell(Signal.code, Account1.Balance.count,Signal.price,1);
}
}
}
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : Re : Re : 종목검색 삭제
> 안녕하세요
예스스탁입니다.
차트와 종목객체 삭제시에
차트상 매수가 진행중인 종목은 제외하고
종목검색리스트에 없는 종목만 차트와 종목객체를 삭제하게 수정해 드립니다.
var BL = [],req;
var CT = [],MK = [],SK = [];
function Main_OnStart()
{
var d = new Date();
var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
Main.MessageList("Main_OnStart",HHMMSS);
//처음 시작시 step은 0
step = 0;
//시작시점의 보유종목수
var num = Account1.GetTheNumberOfBalances();
//보유종목이 1개 이상이면 보유종목의 종목코드를 BL변수에 순차적으로 저장
if (num > 0)
{
BL = [];
for(var i = 0 ; i < num ; i++)
{
Account1.SetBalance(i);
BL.push(Account1.Balance.code);
}
Main.MessageList("BL : ",BL);
if (BL.length >= 1)
{
req = 0;
var TradeSet = new SystemTradeInfo(TRADE_FIXCOUNT,
1, // 거래수량
123456789, // 자산
1, // 단위수량
0, 0, CALCMETHOD_PERCENT, // 진입/청산 수수료
0, 0, CALCMETHOD_POINT, // 진입/청산 슬리피지
PYRAMIDING_ENTRY, // 피라미딩 설정여부
100000, // 최대진입수량
10); // 최대진입횟수
var ChartSet = new ReqChartItem(BL[req],5,CHART_PERIOD_MINUTE,5000,CHART_REQCOUNT_BAR,false,false);
var SymSet = new SystemInfo("[현물]",YL_TYPE_NORMAL,null,TradeSet);
Main.ReqChartEx(ChartSet, SymSet);
Main.MessageList("보유종목차차트객체요청 :",BL[req]);
}
}
else //보유종목이 없으면 바로 1분 타이머 시작
{
Main.MessageList("보유종목없음");
Main.SetTimer(1, 15000);//1번 타이머, 10초
}
}
function Main_OnRcvChartEx(ChartEx)
{
if (ChartEx.GetCode(1) == BL[req])
{
Main.MessageList("차트객체생성 :",ChartEx.GetCode(1));
CT.push(ChartEx);
Main.ReqMarketData(BL[req]);
Main.MessageList("종목객체요청 :",BL[req]);
}
}
function Main_OnRcvMarketData(MarketData)
{
if (MarketData.code == BL[req])
{
Main.MessageList("종목객체생성 :",MarketData.code);
MK.push(MarketData);
req = req+1;
if (req < BL.length)
{
var TradeSet = new SystemTradeInfo(TRADE_FIXCOUNT,
1, // 거래수량
123456789, // 자산
1, // 단위수량
0, 0, CALCMETHOD_PERCENT, // 진입/청산 수수료
0, 0, CALCMETHOD_POINT, // 진입/청산 슬리피지
PYRAMIDING_ENTRY, // 피라미딩 설정여부
100000, // 최대진입수량
10);
var ChartSet = new ReqChartItem(BL[req],5,CHART_PERIOD_MINUTE,5000,CHART_REQCOUNT_BAR,false,false);
var SymSet = new SystemInfo("[현물]",YL_TYPE_NORMAL,null,TradeSet);
Main.ReqChartEx(ChartSet, SymSet);
Main.MessageList("차트객체요청 :",BL[req]);
}
else
{
Main.SetTimer(1, 15000);//1번 타이머, 60초
Main.MessageList("차트생성완료",CT.length,MK.length);
}
}
}
function Main_OnTimer(nEventID)
{
var d = new Date();
var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
Main.MessageList("Main_OnTimer",HHMMSS);
if (nEventID == 1 )
{
//타이머 종료
Main.KillTimer(1);
if (HHMMSS > 90000)
{
Main.MessageList("ReqPowerSearch",HHMMSS)
// Main.MessageList("ReqPowerSearch")
Main.ReqPowerSearch("WP01");
}
else
Main.SetTimer(1, 15000);//1번 타이머, 10초
}
}
function Main_OnRcvItemList(aItemList, nCount)
{
Main.MessageList("Main_OnRcvItemList : ",nCount);
//검색된 종목이 없으면
if (nCount <= 0)
{
//기존 차트객체와 종목객체 모두 삭제
if (CT.length > 0 && MK.length > 0)
{
for(var i = CT.length-1 ; i >= 0 ; i--)
{
if (CT[i].GetOpenContracts() == 0)
{
Main.RemoveObject(MK[i]);
Main.RemoveObject(CT[i]);
MK.splice(i,1);
CT.splice(i,1);
}
}
}
//타이머 다시 셋팅
Main.SetTimer(1, 100000);//1번 타이머, 60초
}
//검색된 종목이 있으면
if (nCount >= 1)
{
//차트종목이 검색리스트에 없으면 해당종목 삭제
for(var i = CT.length-1 ; i >= 0 ; i--)
{
var remove = true;
for(var ii = 0 ; ii < aItemList.length ; ii++)
{
if (CT[i].GetCode(1) == aItemList[ii] || CT[i].GetOpenContracts() > 0)
{
remove = false;
}
}
if (remove == true)
{
Main.RemoveObject(MK[i]);
Main.RemoveObject(CT[i]);
MK.splice(i,1);
CT.splice(i,1);
}
}
//검색된 종목과 기존 만든 차트들의 종목코드를 비교해
//차트가 만들어 지지 않은 종목이면 BL변수에 종목코드 추가
BL = [];
for(var i = 0 ; i < aItemList.length ; i++)
{
var add = true;
for(var z = 0 ; z < CT.length ; z++)
{
if (aItemList[i] == CT[z].GetCode(1))
{
add = false;
break;
}
}
if (add == true)
{
BL.push(aItemList[i]);
}
}
Main.MessageList("BL : ",BL);
//차트 생성해야할 종목이 있으면 차트요청
if (BL.length >= 1)
{
req = 0;
//차트 요청
var TradeSet = new SystemTradeInfo(TRADE_FIXCOUNT,
1, // 거래수량
123456789, // 자산
1, // 단위수량
0, 0, CALCMETHOD_PERCENT, // 진입/청산 수수료
0, 0, CALCMETHOD_POINT, // 진입/청산 슬리피지
PYRAMIDING_ENTRY, // 피라미딩 설정여부
100000, // 최대진입수량
10);
var ChartSet = new ReqChartItem(BL[req],5,CHART_PERIOD_MINUTE,5000,CHART_REQCOUNT_BAR,false,false);
var SymSet = new SystemInfo("[현물]",YL_TYPE_NORMAL,null,TradeSet);
Main.ReqChartEx(ChartSet, SymSet);
}
else //없으면 타이머 다시 셋팅
{
Main.SetTimer(1, 15000);//1번 타이머, 60초
}
}
}
//생성된 차트들에서 신호가 발생하면
function Main_OnRiseSignal(ChartEx, Signal)
{
//매수신호 발생
if (Signal.signalKind == 1)
{
//EntryVol 금액 시장가 매수
var Vol = Math.floor(EntryVol/Signal.price);
Account1.OrderBuy(Signal.code, Vol,Signal.price,1);
}
//매수청산신호 발생
if (Signal.signalKind == 2)
{
//잔고셋팅
Account1.SetBalance(Signal.code,0);
//보유수량이 있으면
if (Account1.Balance.count > 0)
{
//전량 시장가 매도
Account1.OrderSell(Signal.code, Account1.Balance.count,Signal.price,1);
}
}
}
즐거운 하루되세요
> 몬스터 님이 쓴 글입니다.
> 제목 : Re : Re : 종목검색 삭제
> 안녕하세요.
스팟시스템에 에러가 있는 것 같습니다.
파워종목 검색에서 사라지는 종목을 리스트에서 삭제하는 기능을 넣은 이후로 스팟내에서 모니터링하는 종목 리스트에서 파워종목 검색에 있는 리스트 전부가 사라지는 것 같습니다.
스크립트 확인부탁드립니다.
var BL = [],req;
var CT = [],MK = [];
function Main_OnStart()
{
var d = new Date();
var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
Main.MessageList("Main_OnStart",HHMMSS);
//처음 시작시 step은 0
step = 0;
//시작시점의 보유종목수
var num = Account1.GetTheNumberOfBalances();
//보유종목이 1개 이상이면 보유종목의 종목코드를 BL변수에 순차적으로 저장
if (num > 0)
{
BL = [];
for(var i = 0 ; i < num ; i++)
{
Account1.SetBalance(i);
BL.push(Account1.Balance.code);
}
Main.MessageList("BL : ",BL);
if (BL.length >= 1)
{
req = 0;
var TradeSet = new SystemTradeInfo(TRADE_FIXCOUNT,
1, // 거래수량
123456789, // 자산
1, // 단위수량
0, 0, CALCMETHOD_PERCENT, // 진입/청산 수수료
0, 0, CALCMETHOD_POINT, // 진입/청산 슬리피지
PYRAMIDING_ENTRY, // 피라미딩 설정여부
100000, // 최대진입수량
10); // 최대진입횟수
var ChartSet = new ReqChartItem(BL[req],5,CHART_PERIOD_MINUTE,5000,CHART_REQCOUNT_BAR,false,false);
var SymSet = new SystemInfo("[현물]",YL_TYPE_NORMAL,null,TradeSet);
Main.ReqChartEx(ChartSet, SymSet);
Main.MessageList("보유종목차차트객체요청 :",BL[req]);
}
}
else //보유종목이 없으면 바로 1분 타이머 시작
{
Main.MessageList("보유종목없음");
Main.SetTimer(1, 15000);//1번 타이머, 10초
}
}
function Main_OnRcvChartEx(ChartEx)
{
if (ChartEx.GetCode(1) == BL[req])
{
Main.MessageList("차트객체생성 :",ChartEx.GetCode(1));
CT.push(ChartEx);
Main.ReqMarketData(BL[req]);
Main.MessageList("종목객체요청 :",BL[req]);
}
}
function Main_OnRcvMarketData(MarketData)
{
if (MarketData.code == BL[req])
{
Main.MessageList("종목객체생성 :",MarketData.code);
MK.push(MarketData);
req = req+1;
if (req < BL.length)
{
var TradeSet = new SystemTradeInfo(TRADE_FIXCOUNT,
1, // 거래수량
123456789, // 자산
1, // 단위수량
0, 0, CALCMETHOD_PERCENT, // 진입/청산 수수료
0, 0, CALCMETHOD_POINT, // 진입/청산 슬리피지
PYRAMIDING_ENTRY, // 피라미딩 설정여부
100000, // 최대진입수량
10);
var ChartSet = new ReqChartItem(BL[req],5,CHART_PERIOD_MINUTE,5000,CHART_REQCOUNT_BAR,false,false);
var SymSet = new SystemInfo("[현물]",YL_TYPE_NORMAL,null,TradeSet);
Main.ReqChartEx(ChartSet, SymSet);
Main.MessageList("차트객체요청 :",BL[req]);
}
else
{
Main.SetTimer(1, 15000);//1번 타이머, 60초
Main.MessageList("차트생성완료",CT.length,MK.length);
}
}
}
function Main_OnTimer(nEventID)
{
var d = new Date();
var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
Main.MessageList("Main_OnTimer",HHMMSS);
if (nEventID == 1 )
{
//타이머 종료
Main.KillTimer(1);
if (HHMMSS > 90000)
{
Main.MessageList("ReqPowerSearch",HHMMSS)
// Main.MessageList("ReqPowerSearch")
Main.ReqPowerSearch("WP01");
}
else
Main.SetTimer(1, 15000);//1번 타이머, 10초
}
}
function Main_OnRcvItemList(aItemList, nCount)
{
Main.MessageList("Main_OnRcvItemList : ",nCount);
//검색된 종목이 없으면
if (nCount <= 0)
{
//기존 차트객체와 종목객체 모두 삭제
if (CT.length > 0 && MK.length > 0)
{
for(var i = MK.length-1 ; i >= 0 ; i--)
{
Main.RemoveObject(MK[i]);
Main.RemoveObject(CT[i]);
MK.splice(i,1);
CT.splice(i,1);
}
}
//타이머 다시 셋팅
Main.SetTimer(1, 100000);//1번 타이머, 60초
}
//검색된 종목이 있으면
if (nCount >= 1)
{
//차트종목이 검색리스트에 없으면 해당종목 삭제
for(var i = CT.length-1 ; i >= 0 ; i--)
{
var remove = true;
for(var ii = 0 ; ii < aItemList.length ; ii++)
{
if (CT[i].GetCode(1) == aItemList[ii])
{
remove = false;
}
}
if (remove == true)
{
Main.RemoveObject(MK[i]);
Main.RemoveObject(CT[i]);
MK.splice(i,1);
CT.splice(i,1);
}
}
//검색된 종목과 기존 만든 차트들의 종목코드를 비교해
//차트가 만들어 지지 않은 종목이면 BL변수에 종목코드 추가
BL = [];
for(var i = 0 ; i < aItemList.length ; i++)
{
var add = true;
for(var z = 0 ; z < CT.length ; z++)
{
if (aItemList[i] == CT[z].GetCode(1))
{
add = false;
break;
}
}
if (add == true)
{
BL.push(aItemList[i]);
}
}
Main.MessageList("BL : ",BL);
//차트 생성해야할 종목이 있으면 차트요청
if (BL.length >= 1)
{
req = 0;
//차트 요청
var TradeSet = new SystemTradeInfo(TRADE_FIXCOUNT,
1, // 거래수량
123456789, // 자산
1, // 단위수량
0, 0, CALCMETHOD_PERCENT, // 진입/청산 수수료
0, 0, CALCMETHOD_POINT, // 진입/청산 슬리피지
PYRAMIDING_ENTRY, // 피라미딩 설정여부
100000, // 최대진입수량
10);
var ChartSet = new ReqChartItem(BL[req],5,CHART_PERIOD_MINUTE,5000,CHART_REQCOUNT_BAR,false,false);
var SymSet = new SystemInfo("[현물]",YL_TYPE_NORMAL,null,TradeSet);
Main.ReqChartEx(ChartSet, SymSet);
}
else //없으면 타이머 다시 셋팅
{
Main.SetTimer(1, 15000);//1번 타이머, 60초
}
}
}
//생성된 차트들에서 신호가 발생하면
function Main_OnRiseSignal(ChartEx, Signal)
{
//매수신호 발생
if (Signal.signalKind == 1)
{
//EntryVol 금액 시장가 매수
var Vol = Math.floor(EntryVol/Signal.price);
Account1.OrderBuy(Signal.code, Vol,Signal.price,1);
}
//매수청산신호 발생
if (Signal.signalKind == 2)
{
//잔고셋팅
Account1.SetBalance(Signal.code,0);
//보유수량이 있으면
if (Account1.Balance.count > 0)
{
//전량 시장가 매도
Account1.OrderSell(Signal.code, Account1.Balance.count,Signal.price,1);
}
}
}
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 종목검색 삭제
> 안녕하세요
예스스탁입니다.
var BL = [],req;
var CT = [],MK = [];
function Main_OnStart()
{
//처음 시작시 step은 0
step = 0;
//시작시점의 보유종목수
var num = Account1.GetTheNumberOfBalances();
//보유종목이 1개 이상이면 보유종목의 종목코드를 BL변수에 순차적으로 저장
if (num > 0)
{
BL = [];
for(var i = 0 ; i < num ; i++)
{
Account1.SetBalance(i);
BL.push(Account1.Balance.code);
}
Main.MessageList("BL : ",BL);
if (BL.length >= 1)
{
req = 0;
var TradeSet = new SystemTradeInfo(TRADE_FIXCOUNT,
1, // 거래수량
123456789, // 자산
1, // 단위수량
0, 0, CALCMETHOD_PERCENT, // 진입/청산 수수료
0, 0, CALCMETHOD_POINT, // 진입/청산 슬리피지
PYRAMIDING_ENTRY, // 피라미딩 설정여부
100000, // 최대진입수량
10); // 최대진입횟수
var ChartSet = new ReqChartItem(BL[req],5,CHART_PERIOD_MINUTE,5000,CHART_REQCOUNT_BAR,false,false);
var SymSet = new SystemInfo("[현물]WayPointStock01_H_Signal",YL_TYPE_NORMAL,null,TradeSet);
Main.ReqChartEx(ChartSet, SymSet);
Main.MessageList("차트객체요청 :",BL[req]);
}
}
else //보유종목이 없으면 바로 1분 타이머 시작
{
Main.MessageList("보유종목없음");
Main.SetTimer(1, 10000);//1번 타이머, 60초
}
}
function Main_OnRcvChartEx(ChartEx)
{
if (ChartEx.GetCode(1) == BL[req])
{
Main.MessageList("차트객체생성 :",ChartEx.GetCode(1));
CT.push(ChartEx);
Main.ReqMarketData(BL[req]);
Main.MessageList("종목객체요청 :",BL[req]);
}
}
function Main_OnRcvMarketData(MarketData)
{
if (MarketData.code == BL[req])
{
Main.MessageList("종목객체생성 :",MarketData.code);
MK.push(MarketData);
req = req+1;
if (req < BL.length)
{
var TradeSet = new SystemTradeInfo(TRADE_FIXCOUNT,
1, // 거래수량
123456789, // 자산
1, // 단위수량
0, 0, CALCMETHOD_PERCENT, // 진입/청산 수수료
0, 0, CALCMETHOD_POINT, // 진입/청산 슬리피지
PYRAMIDING_ENTRY, // 피라미딩 설정여부
100000, // 최대진입수량
10);
var ChartSet = new ReqChartItem(BL[req],5,CHART_PERIOD_MINUTE,5000,CHART_REQCOUNT_BAR,false,false);
var SymSet = new SystemInfo("[현물]WayPointStock01_H_Signal",YL_TYPE_NORMAL,null,TradeSet);
Main.ReqChartEx(ChartSet, SymSet);
Main.MessageList("차트객체요청 :",BL[req]);
}
else
{
Main.SetTimer(1, 10000);//1번 타이머, 60초
Main.MessageList("보유종목차트생성완료",CT.length,MK.length);
}
}
}
function Main_OnTimer(nEventID)
{
if (nEventID == 1)
{
//타이머 종료
Main.KillTimer(1);
Main.ReqPowerSearch("PSearch");
}
}
function Main_OnRcvItemList(aItemList, nCount)
{
//검색된 종목이 없으면
if (nCount == 0)
{
//기존 차트객체와 종목객체 모두 삭제
if (CT.length > 0 && MK.length > 0)
{
for(var i = MK.length-1 ; i >= 0 ; i--)
{
Main.RemoveObject(MK[i]);
Main.RemoveObject(CT[i]);
MK.splice(i,1);
CT.splice(i,1);
}
}
//타이머 다시 셋팅
Main.SetTimer(1, 100000);//1번 타이머, 60초
}
//검색된 종목이 있으면
if (nCount >= 1)
{
//차트종목이 검색리스트에 없으면 해당종목 삭제
for(var i = CT.length-1 ; i >= 0 ; i--)
{
var remove = true;
for(var ii = 0 ; ii < aItemList.length ; i++)
{
if (CT[i].GetCode(1) == aItemList[ii])
{
remove = false;
}
}
if (remove == true)
{
Main.RemoveObject(MK[i]);
Main.RemoveObject(CT[i]);
MK.splice(i,1);
CT.splice(i,1);
}
}
//검색된 종목과 기존 만든 차트들의 종목코드를 비교해
//차트가 만들어 지지 않은 종목이면 BL변수에 종목코드 추가
BL = [];
for(var i = 0 ; i < aItemList.length ; i++)
{
var add = true;
for(var z = 0 ; z < CT.length ; z++)
{
if (aItemList[i] == CT[z].GetCode(1))
{
add = false;
break;
}
}
if (add == true)
{
BL.push(aItemList[i]);
}
}
Main.MessageList("BL : ",BL);
//차트 생성해야할 종목이 있으면 차트요청
if (BL.length >= 1)
{
req = 0;
//차트 요청
var TradeSet = new SystemTradeInfo(TRADE_FIXCOUNT,
1, // 거래수량
123456789, // 자산
1, // 단위수량
0, 0, CALCMETHOD_PERCENT, // 진입/청산 수수료
0, 0, CALCMETHOD_POINT, // 진입/청산 슬리피지
PYRAMIDING_ENTRY, // 피라미딩 설정여부
100000, // 최대진입수량
10);
var ChartSet = new ReqChartItem(BL[req],5,CHART_PERIOD_MINUTE,5000,CHART_REQCOUNT_BAR,false,false);
var SymSet = new SystemInfo("[현물]WayPointStock01_H_Signal",YL_TYPE_NORMAL,null,TradeSet);
Main.ReqChartEx(ChartSet, SymSet);
}
else //없으면 타이머 다시 셋팅
{
Main.SetTimer(1, 100000);//1번 타이머, 60초
}
}
}
즐거운 하루되세요
> 몬스터 님이 쓴 글입니다.
> 제목 : 종목검색 삭제
> 안녕하세요.
아래 수식에서 PSearch 종목검색후 종목검색조건에서 제외되어 파워종목검색에서 사라진 종목도 여전히 스팟에 남아 있는데요.
조건에서 제외되어 파워종먹검색에서 사라진 종목들은 스팟에서 검색 업데이트시 제외되도록 수정 부탁드립니다.
var BL = [],req;
var CT = [],MK = [];
function Main_OnStart()
{
//처음 시작시 step은 0
step = 0;
//시작시점의 보유종목수
var num = Account1.GetTheNumberOfBalances();
//보유종목이 1개 이상이면 보유종목의 종목코드를 BL변수에 순차적으로 저장
if (num > 0)
{
BL = [];
for(var i = 0 ; i < num ; i++)
{
Account1.SetBalance(i);
BL.push(Account1.Balance.code);
}
Main.MessageList("BL : ",BL);
if (BL.length >= 1)
{
req = 0;
var TradeSet = new SystemTradeInfo(TRADE_FIXCOUNT,
1, // 거래수량
123456789, // 자산
1, // 단위수량
0, 0, CALCMETHOD_PERCENT, // 진입/청산 수수료
0, 0, CALCMETHOD_POINT, // 진입/청산 슬리피지
PYRAMIDING_ENTRY, // 피라미딩 설정여부
100000, // 최대진입수량
10); // 최대진입횟수
var ChartSet = new ReqChartItem(BL[req],5,CHART_PERIOD_MINUTE,5000,CHART_REQCOUNT_BAR,false,false);
var SymSet = new SystemInfo("[현물]WayPointStock01_H_Signal",YL_TYPE_NORMAL,null,TradeSet);
Main.ReqChartEx(ChartSet, SymSet);
Main.MessageList("차트객체요청 :",BL[req]);
}
}
else //보유종목이 없으면 바로 1분 타이머 시작
{
Main.MessageList("보유종목없음");
Main.SetTimer(1, 10000);//1번 타이머, 60초
}
}
function Main_OnRcvChartEx(ChartEx)
{
if (ChartEx.GetCode(1) == BL[req])
{
Main.MessageList("차트객체생성 :",ChartEx.GetCode(1));
CT.push(ChartEx);
Main.ReqMarketData(BL[req]);
Main.MessageList("종목객체요청 :",BL[req]);
}
}
function Main_OnRcvMarketData(MarketData)
{
if (MarketData.code == BL[req])
{
Main.MessageList("종목객체생성 :",MarketData.code);
MK.push(MarketData);
req = req+1;
if (req < BL.length)
{
var TradeSet = new SystemTradeInfo(TRADE_FIXCOUNT,
1, // 거래수량
123456789, // 자산
1, // 단위수량
0, 0, CALCMETHOD_PERCENT, // 진입/청산 수수료
0, 0, CALCMETHOD_POINT, // 진입/청산 슬리피지
PYRAMIDING_ENTRY, // 피라미딩 설정여부
100000, // 최대진입수량
10);
var ChartSet = new ReqChartItem(BL[req],5,CHART_PERIOD_MINUTE,5000,CHART_REQCOUNT_BAR,false,false);
var SymSet = new SystemInfo("[현물]WayPointStock01_H_Signal",YL_TYPE_NORMAL,null,TradeSet);
Main.ReqChartEx(ChartSet, SymSet);
Main.MessageList("차트객체요청 :",BL[req]);
}
else
{
Main.SetTimer(1, 10000);//1번 타이머, 60초
Main.MessageList("보유종목차트생성완료",CT.length,MK.length);
}
}
}
function Main_OnTimer(nEventID)
{
if (nEventID == 1)
{
//타이머 종료
Main.KillTimer(1);
Main.ReqPowerSearch("PSearch");
}
}
function Main_OnRcvItemList(aItemList, nCount)
{
//검색된 종목이 없으면
if (nCount == 0)
{
//타이머 다시 셋팅
Main.SetTimer(1, 100000);//1번 타이머, 60초
}
//검색된 종목이 있으면
if (nCount >= 1)
{
//검색된 종목과 기존 만든 차트들의 종목코드를 비교해
//차트가 만들어 지지 않은 종목이면 BL변수에 종목코드 추가
BL = [];
for(var i = 0 ; i < aItemList.length ; i++)
{
var add = true;
for(var z = 0 ; z < CT.length ; z++)
{
if (aItemList[i] == CT[z].GetCode(1))
{
add = false;
break;
}
}
if (add == true)
{
BL.push(aItemList[i]);
}
}
Main.MessageList("BL : ",BL);
//차트 생성해야할 종목이 있으면 차트요청
if (BL.length >= 1)
{
req = 0;
//차트 요청
var TradeSet = new SystemTradeInfo(TRADE_FIXCOUNT,
1, // 거래수량
123456789, // 자산
1, // 단위수량
0, 0, CALCMETHOD_PERCENT, // 진입/청산 수수료
0, 0, CALCMETHOD_POINT, // 진입/청산 슬리피지
PYRAMIDING_ENTRY, // 피라미딩 설정여부
100000, // 최대진입수량
10);
var ChartSet = new ReqChartItem(BL[req],5,CHART_PERIOD_MINUTE,5000,CHART_REQCOUNT_BAR,false,false);
var SymSet = new SystemInfo("[현물]WayPointStock01_H_Signal",YL_TYPE_NORMAL,null,TradeSet);
Main.ReqChartEx(ChartSet, SymSet);
}
else //없으면 타이머 다시 셋팅
{
Main.SetTimer(1, 100000);//1번 타이머, 60초
}
}
}
몬스터
2021-08-31 00:06:15.0
몬스터 님에 의해 삭제된 답변입니다.