예스스탁
예스스탁 답변
2014-01-23 18:09:29
안녕하세요
예스스탁입니다.
1.
종목객체의 생성은 수식안에서 자동으로
생성되게 처리가 되지만
차트의 경우에는 수식안에서 생성할 수 있는 갯수(5개)에
한계가 있어 스크립트 객체에서 모두 차트객체 추가하시고
사용하셔야 합니다.
아래는 관심종목의 특정그룹에 포함된
전체 종목의 종목객체를 생성하는 식입니다.
참고하시기 바랍니다.
var nIndex = 0;
var InNum;
var SObject = new Array(200);
function Main_OnStart()
{
InNum = Main.GetItemCountOfInterest("AAA");
nIndex = 0;
Main.MessageList("총종목수:"+InNum);
Main.ReqMarketData(Main.GetItemCodeInInterest("AAA", 0), 0, 0);
Main.MessageList(Main.GetItemCodeInInterest("AAA", 0),"종목객체 요청");
}
function Main_OnRcvMarketData(MarketData)
{
Main.MessageList(MarketData.code,"종목객체 수신");
nIndex = nIndex+1;
SObject[nIndex] = MarketData;
Main.MessageList(SObject[nIndex].code,"종목개체 저장완료- SObject[]배별방번호 : " ,nIndex);
Main.SetTimer(1,2000);
}
function Main_OnTimer(nEventID)
{
if (nIndex < InNum)
{
Main.ReqMarketData(Main.GetItemCodeInInterest("AAA", nIndex), 0, 0);
Main.MessageList(Main.GetItemCodeInInterest("AAA", nIndex),"종목객체 요청");
}
}
2.
아래 내용 참고하시기 바랍니다.
스크립트 객체의 모든 차트객체별로 식을 만들어 드릴수는 없습니다.
아래식은 Chart1에 대한 내용만 있습니다.
차트객체별로 변수 따로 하셔서 만드시면 됩니다.
var nIndex = 0;
var InNum;
var SObject = new Array(200);
function Main_OnStart()
{
InNum = Main.GetItemCountOfInterest("AAA");
nIndex = 0;
Main.MessageList("총종목수:"+InNum);
Main.ReqMarketData(Main.GetItemCodeInInterest("AAA", 0), 0, 0);
Main.MessageList(Main.GetItemCodeInInterest("AAA", 0),"종목객체 요청");
Chat1cnt = 0;
}
function Main_OnRcvMarketData(MarketData)
{
Main.MessageList(MarketData.code,"종목객체 수신");
nIndex = nIndex+1;
SObject[nIndex] = MarketData;
Main.MessageList(SObject[nIndex].code,"종목개체 저장완료- SObject[]배별방번호 : " ,nIndex);
Main.SetTimer(1,2000);
}
function Main_OnTimer(nEventID)
{
if (nIndex < InNum)
{
Main.ReqMarketData(Main.GetItemCodeInInterest("AAA", nIndex), 0, 0);
Main.MessageList(Main.GetItemCodeInInterest("AAA", nIndex),"종목객체 요청");
}
}
//스팟시작후 차트에서 매수미완성 신호가 처음발생하면 매수
function Chart1_OnRiseIncompleteSignal(IncompleteSignal)
{
if (Chat1cnt == 0 && IncompleteSignal.signalKind == 1)
{
Chat1cnt = 1;
//생성된 종목객체 중 몇번배열방이 Chart1 종목인지 찾음
var X1 = 0;
var Vol1 = 0;
for (var i=1; i <= InNum; i++)
{
if (IncompleteSignal.code == SObject[i])
{
X1 = i;
break;
}
}
if (X1 >= 1)
{
var BuyMoney1 = 1000000; //매수주문금액
if (SObject[X].tradeUnit == 1) //매매단위 1주
Vol1 = Math.floor(BuyMoney1/SObject[X].current );
else //매매단위 10주
Vol1 = Math.floor((BuyMoney1/SObject[X].current )/SObject[X].tradeUnit)*10;
//100만원어치 매수3호가로 매수주문 실행
Account1.OrderBuy(IncompleteSignal.code,Vol1,SObject[X].Ask(3),0);
}
}
}
3.
아래식 참고하시기 바랍니다.
1455분에 각 차트에서 미완성 매수신호가 진행중이면
시장가로 매수합니다.
2번과 마찬가지로 스크립트 객체화면에 추가된 차트 만큼
작성하셔야 합니다.
function Main_OnStart()
{
Main.SetTimer(2,5000);
}
function Main_OnTimer(nEventID)
{
var d = new Date();
var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
if (nEventID == 2 && HHMMSS >= 145500 )
{
var aSignal1 = Chart1.GetIncompleteSignal();
var aSignal2 = Chart2.GetIncompleteSignal();
var aSignal3 = Chart3.GetIncompleteSignal();
....
// Chart1에서 매수예비신호 발생해 있으면 시장가 매수
if (aSignal1[0] != null && aSignal1[0].SignalKind == 1)
{
Account1.OrderBuy(aSignal1[0].code,10,0,1);
}
// Chart2에서 매수예비신호 발생해 있으면 시장가 매수
if (aSignal2[0] != null && aSignal1[0].SignalKind == 1)
{
Account1.OrderBuy(aSignal2[0].code,10,0,1);
}
// Chart3에서 매수예비신호 발생해 있으면 시장가 매수
if (aSignal3[0] != null && aSignal1[0].SignalKind == 1)
{
Account1.OrderBuy(aSignal3[0].code,10,0,1);
}
}
}
4.
2번 내용에 있습니다.
즐거운 하루되세요
> HI_jw***** 님이 쓴 글입니다.
> 제목 : 예스스팟식 문의드립니다.
> 현물의경우 자연스레 관심종목이 많아져서 차트가 계속추가되는데요.
1, 예스스팟 편집기에 차트객체와 종목개체를 전부 추가해야 되는건가요?
2, 위의 추가된 전종목 조건만족즉시 미완성봉이라도 종목당 100만원씩 1일 1번만 매수할 려고 합니다.(차트는 일봉기준)
3, 전종목 조건만족시 동시호가에 시장가매수 하는식도 부탁드립니다.
4. 그리고 코스피, 코스닥 금액에대한 예스스팟의 수량계산식도 궁금합니다.
날씨가 많이 추워졌습니다.
건강조심하시고 항상 친절한 답변 감사드립니다.
jws4927@paran.com