예스스탁
예스스탁 답변
2018-07-17 13:18:55
안녕하세요
예스스탁입니다.
1
1분주기로 반복해서 검색하면
이전 검색되어 차트가 만들어진 종목이 또 검색될 수 있습니다.
반복되는 종목은 피해서 차트를 만드셔야 합니다.
검색될때 마다 이전 검색되어 차트를 열었던 종목은 제외하고 차트 생성하게 해야 합니다.
2
차트나 종목객체는 15초당 60건으로 제한이 있습니다.
그러므로 차트나 종목객체를 생성할 때
순서대로 생성하고 제한시간이 걸리면 15초이상 쉬고 다시 요청하게
코딩하셔야 합니다.
3
스팟은 단순히 작성상의 가이드 입니다.
아래 내용 참고하셔서 수정보완해 사용하시기 바랍니다.
4
var List = [],ReqList = [];
var TradeSet,ChartSet,SystemSet,req;
//스팟 시작할때 파워종목검색의 사용자검색조건 실행
function Main_OnStart()
{
Main.SetTimer(1, 60000);
}
function Main_OnTimer(nEventID)
{
if (nEventID == 1)
{
Main.KillTimer(1);
//Main.ReqPowerSearch("검색조건명");//사용자검색조건명 지정
Main.ReqPowerSearch("#test");//사용자검색조건명 지정
}
if (nEventID == 2)
{
//차트 셋팅
ChartSet = new ReqChartItem(ReqList[req], 1, CHART_PERIOD_MINUTE, 400,CHART_REQCOUNT_BAR,false, false);
//시스템의 세부설정
TradeSet = new SystemTradeInfo(TRADE_FIXCOUNT,
1,// 거래수량
100000000, // 자산
1, // 단위수량
0, 0, CALCMETHOD_PERCENT, // 진입/청산 수수료
0, 0, CALCMETHOD_POINT, // 진입/청산 슬리피지
PYRAMIDING_ENTRY, // 피라미딩 설정여부
1000, // 최대진입수량
20); // 최대진입횟수
//시스템설정
SystemSet = new SystemInfo("매매조건명",YL_TYPE_NORMAL,null,TradeSet,null);
Main.ReqChartEx(ChartSet,SystemSet);
}
}
//종목검색 완료(aItemList : 종목리스트), (nCount : 종목수)
function Main_OnRcvItemList(aItemList, nCount)
{
ReqList = [];
for (var i = 0; i < nCount; i++)
{
var add = true;
for (var z = 0; z < List.length; z++)
{
if (aItemList[i] == List[z])
{
add = false;
}
}
if (add == true)
{
List.push(aItemList[i]);
ReqList.push(aItemList[i]);
}
}
if (ReqList.length > 0)
{
req = 0;
//차트 셋팅
ChartSet = new ReqChartItem(ReqList[req], 1, CHART_PERIOD_MINUTE, 400,CHART_REQCOUNT_BAR,false, false);
//시스템의 세부설정
TradeSet = new SystemTradeInfo(TRADE_FIXCOUNT,
1,// 거래수량
100000000, // 자산
1, // 단위수량
0, 0, CALCMETHOD_PERCENT, // 진입/청산 수수료
0, 0, CALCMETHOD_POINT, // 진입/청산 슬리피지
PYRAMIDING_ENTRY, // 피라미딩 설정여부
1000, // 최대진입수량
20); // 최대진입횟수
//시스템설정
//SystemSet = new SystemInfo("매매조건명",YL_TYPE_NORMAL,null,TradeSet,null);
SystemSet = new SystemInfo("test",YL_TYPE_NORMAL,null,TradeSet,null);
Main.ReqChartEx(ChartSet,SystemSet);
}
}
//확장챠트에서 발생한 신호에 의해 주문을 넣는 단계
function Main_OnRiseSignal(ChartEx, Signal)
{
//buy신호 발생
if (Signal.signalKind == 1)
{
// 매수주문
Account1.OrderBuy(Signal.code, Signal.count , Signal.price, 1);
}
//Exitlong신호 발생
if (Signal.signalKind == 2)
{
// 매도주문
Account1.OrderSell(Signal.code, Signal.count , Signal.price, 1);
}
}
function Main_OnRcvChartEx(ChartEx)
{
if (ChartEx.GetCode(1) == ReqList[req])
{
req = req+1;
if (req < ReqList.length)
{
//차트 셋팅
ChartSet = new ReqChartItem(ReqList[req], 1, CHART_PERIOD_MINUTE, 400,CHART_REQCOUNT_BAR,false, false);
//시스템의 세부설정
TradeSet = new SystemTradeInfo(TRADE_FIXCOUNT,
1,// 거래수량
100000000, // 자산
1, // 단위수량
0, 0, CALCMETHOD_PERCENT, // 진입/청산 수수료
0, 0, CALCMETHOD_POINT, // 진입/청산 슬리피지
PYRAMIDING_ENTRY, // 피라미딩 설정여부
1000, // 최대진입수량
20); // 최대진입횟수
//SystemSet = new SystemInfo("매매조건명",YL_TYPE_NORMAL,null,TradeSet,null);
SystemSet = new SystemInfo("test",YL_TYPE_NORMAL,null,TradeSet,null);
var S = Main.ReqChartEx(ChartSet,SystemSet);
if (S == -1)
{
Main.SetTimer(2, 20000);
}
}
else
{
Main.MessageList("차트생성완료");
Main.SetTimer(1, 60000);
}
}
}
즐거운 하루되세요
> 가이츠 님이 쓴 글입니다.
> 제목 : 질문드립니다.
> 아래는 현재 사용중인 스팟수식입니다. 장중에 타이머 기능을 통해 주기적으로 종목을 검색하고 지정된 매매시스템으로 매매를 하고자 합니다. 아래 수식에 파워종목검색의 1분주기 타이머 기능을 추가하여 주시면 감사하겠습니다.
//스팟 시작할때 파워종목검색의 사용자검색조건 실행
function Main_OnStart()
{
Main.ReqPowerSearch("검색조건명");//사용자검색조건명 지정
}
//종목검색 완료(aItemList : 종목리스트), (nCount : 종목수)
function Main_OnRcvItemList(aItemList, nCount)
{
// 확장챠트의 생성과 적용될 시스템의 세부 설정
var TradeSet = new SystemTradeInfo(TRADE_FIXCOUNT,
1,// 거래수량
100000000, // 자산
1, // 단위수량
0, 0, CALCMETHOD_PERCENT, // 진입/청산 수수료
0, 0, CALCMETHOD_POINT, // 진입/청산 슬리피지
PYRAMIDING_ENTRY, // 피라미딩 설정여부
1000, // 최대진입수량
20); // 최대진입횟수
//확장 챠트는 최대 100개까지만 가능
for (var i = 0; i < Math.min(nCount,100); i++)
{
//생성할 차트 셋팅
var ChartSet = new ReqChartItem(aItemList[i], 1, CHART_PERIOD_MINUTE, 400,CHART_REQCOUNT_BAR,false, false);
//차트에 적용할 시스템명 및 설정
var SystemSet = new SystemInfo("매매조건명",YL_TYPE_NORMAL,null,TradeSet,null);
Main.ReqChartEx(ChartSet,SystemSet);
}
}
//확장챠트에서 발생한 신호에 의해 주문을 넣는 단계
function Main_OnRiseSignal(ChartEx, Signal)
{
//buy신호 발생
if (Signal.signalKind == 1)
{
// 매수주문
Account1.OrderBuy(Signal.code, Signal.count , Signal.price, 1);
}
//Exitlong신호 발생
if (Signal.signalKind == 2)
{
// 매도주문
Account1.OrderSell(Signal.code, Signal.count , Signal.price, 1);
}
}