종목 검색후 매수가 가 정해지게 수식을 만들엇읍니다
검색후 메수 전 까지 주가가 5 % 이상 상승하면 매수 취소 할수 있는 수식이 필요 합니다
답변 1
예스스탁
예스스탁 답변
2019-12-06 15:18:30
안녕하세요
예스스탁입니다.
아래와 같이 작성하시면 종목검색후에
각 종목에 대해 종목객체를 요청하고 종목객체가 생성된 시점의 현재가와 그이후 최고가를 계산하게 됩니다.
각 종목의 종목객체는 MK배열변수, 생성시점의 현재가는 PP배열변수에, 이후최고가는 HH배열변수에 모두 동일방번호에 저장됩니다.
매수주문시점에 매수할 종목의 종목객체를 찾아서 동일번호의 HH와 PP를 비교해서 조건지정해 처리하시면 됩니다.
//매수주문이 발생하는 이벤트
function 이벤트
{
if (매수조건)
{
//매수할 종목의 종목코드와
for (var i = 0; MK.length; i++)
{
if (주문할종목종목코드 == MK[i].code && HH[i] < PP[i]*1.05)
{
Account1.OrderBuy(sItemCode, nCount, dPrice, nPriceKind)
}
}
}
}
아래는 수식입니다.
var List = [], MK = [], PP = [],HH = [];
var req;
function Main_OnStart()
{
//종목검색
Main.MessageList("종목검색요청");
Main.ReqPowerSearch("사용자검색조건");
}
function Main_OnRcvItemList(aItemList, nCount)
{
Main.MessageList("종목검색완료");
if (nCount > 0)
{
List = aItemList;
req = 0;
Main.ReqMarketData(List[req]);
}
}
function Main_OnRcvMarketData(MarketData)
{
if (MarketData.code == List[req])
{
//종목객체 저장
MK[req] = MarketData;
//현재가 저장
PP[req] = MarketData.current;
//최고가 저장
HH[req] = MarketData.current;
req = req+1;
if (req < List.length)
{
var s = Main.ReqMarketData(List[req]);
if (s == -1)
{
Main.MessageList("종목객체생성제한 15초 뒤 재요청");
Main.SetTimer(1, 15000);
}
}
else
{
Main.MessageList("종목객체생성끝");
}
}
}
function Main_OnTimer(nEventID)
{
if (nEventID == 1)
{
Main.KillTimer(1);
Main.ReqMarketData(List[req]);
}
}
function Main_OnUp*dateMarket(sItemCode, lUp*dateID)//*제거
{
//시세 업데이트할때 업데이트된 종목을 찾아 최고가 갱신되면 HH변수 갱신
if (lUp*dateID == 20001)//*제거
{
for (var i = 0; i < MK.length; i++)
{
if (sItemCode == MK[i].code && MK[i].current > HH[i])
{
HH[i] = MK[i].current;
}
}
}
}
즐거운 하루되세요
> crazaq 님이 쓴 글입니다.
> 제목 : 수식 좀 부탁 드립니다
> 종목 검색후 매수가 가 정해지게 수식을 만들엇읍니다
검색후 메수 전 까지 주가가 5 % 이상 상승하면 매수 취소 할수 있는 수식이 필요 합니다