커뮤니티
예스스팟 Q&A
구름달 님에 의해서 삭제되었습니다.
2024-02-22
4
글번호 225952
답변완료
종목명 확인 방법 문의
ReqChartEx로 확장차트를 생성하고, 거기에 시스템을 적용한 후, 시스템에서 신호가 발생했을 때, 종목명(주식 종목명 입니다.)과 종목코드번호, 그리고 신호종류(매수와 청산) 정보를 확인하고자 합니다.
질의1)
그런데 ReqChartItem에는 code만이 있고 Signal객체에도 code만 보이는데(name은 종목명이 아니라 신호명이고), 종목의 이름을 확인하는 방법은 어떻게 하면 될까요?
질의2)
그리고, 신호종류는 파생에서는 signalKind가 4가지로 발생하지만 주식에서는 1 buy와 2 exitlong만 발생하는게 맞지요?
질의3)
ReqChartEx로 확장 챠트를 생성하고, 거기에 특정 시스템을 적용하여, 해당 시스템에서 신호가 수신할 수 있는 함수를 만들어서 거기서 신호(거기에 신호가 발생한 챠트 정보도 얻을 수 있다면 더 좋구요)가 도착했을 때 신호 정보 또는 신호 객체에서 신호명, 종목코드, 종목명, signalKind, 신호발생시각을 조회할 수 있기를 원합니다. 조회된 내용을 확인해볼 수 있도록 MessageList로 출력해보는 것 까지 코드로 샘플 작성 부탁드립니다.
질의4)
그리고, reqchartex로 생성하면 바로 만들어 지는게 아니라 OnRcvChartEx()라는데에서 뭔가를 해줘야 챠트가 제대로 생성이 되는건가요?
질의5)
그리고, ChartEx라는 객체가 생성되는 것 까지는 대충은 이해를 하는데 이걸 remove해야 하는 것이 메모리 관리상 안전할 거 같은데 이 remove 작업은 어느 단계에서 해주면 되고, 그러려면 여러 chartex객체를 어떻게 관리해야 하는 게 좋을까요?
질의6)
.push()라는 걸 어떤 것에 대해서 어떻게 쓰는 건지 메뉴얼을 찾아봐도 안나오길래, 혹시나 하고 java스크립트 문법을 찾아보니 array 변수에 대해서 .push .pop .sort .splice .shift .unshift 등을 지원하던데, 변수 선언 시 var AA = []; 와 같이 array변수로 선언된 AA와 같은 것에 대해서는 이러한 멤버함수와 같이 생긴 것을 사용할 수 있는 것인지요?
질의7)
java스크립트에 대해 잘 몰라서 그러는데, 배열을 초기화 하려면 배열변수에 'AA = []' 와 같이 해주거나 AA.length = 0 이라고 하는 방식으로 처리하면 되나요?
-------------
전화로 상세한 답변 잘 들었습니다. 감사합니다~
2024-02-22
562
글번호 225951
최신형 님에 의해서 삭제되었습니다.
2024-02-14
130
글번호 225937
답변완료
보유종목을 확장차트생성해서 매도
안녕하세요
아래식으로 보유종목을 확장차트생성해서 매도 테스트 중인데요
전략생성기에서 BII 지표를 이용한 전략생성을 할 수가 없는 것 같아요
그래서 게시판에 RSI 순위와 관련해서 신호가 나오면 순위에 의해 매수하는 수식이 있는데
아래수식에 매도신호가 나와도 BII상승시에는 매도가 안되게 수식을 첨가해 주시면 감사하겠습니다. (Bii하락시에는 신호에 의해 매도)
매도시에는 매도된 종목만 확장차트가 삭제되는 수식도
추가해 주시면 감사하겠습니다.
추가로 전략생성기에 BII 폼도 만들어 지기를 기대합니다.
감사합니다.
var ItemList;
var Count;
var ReqCount;
function Main_OnStart()
{
Main.MessageLog("스팟시작");
//보유 종목수(보유종목지정 필요)
Count = Account1.GetTheNumberOfBalances();
Main.MessageList("보유 종목수 : ", Count);
ItemList = [];
//보유 종목코드를 ItemList로 옮김
for(var i = 0 ; i < Count ; i++)
{
//보유종목 코드 필요
Account1.SetBalance(i)
ItemList.push(Account1.Balance.code);
}
Main.SetTimer(1, 10000);
ReqCount = 0;
}
function Main_OnTimer(nEventID)
{
if (nEventID == 1)
{
var StopSet = new SystemStopInfo(new StopLoss(4, CALCMETHOD_PERCENT, 0xFFDA93),
new StopTrailing(2, 5, CALCMETHOD_PERCENT, 0),
//new StopProfitTarget(10, CALCMETHOD_PERCENT, 0xFFDA93),
//new StopInactivity(0.5, 6, CALCMETHOD_PERCENT, 0xFFDA93),
new StopEndOfDay(151500));
var ChartSet = new ReqChartItem(ItemList[ReqCount],3,CHART_PERIOD_MINUTE,300,CHART_REQCOUNT_BAR,false,false);
var SystemSet = new SystemInfo("전략", YL_TYPE_WIZARD, null, null, null);
Main.MessageList(ReqCount,"확장차트생성_",ItemList[ReqCount]);
Main.ReqChartEx(ChartSet,SystemSet);
ReqCount = ReqCount+1;
if (ReqCount == Count)
{
Main.KillTimer(1);
Main.MessageLog("종목검색완료");
}
}
}
//신호발생
function Main_OnRiseSignal(ChartEx, Signal)
{
//신호발생 종목에 대해 잔고셋팅
Account1.SetBalance(Main.GetOrderCode(Signal.code),0);
//매수신호이고 잔고가 없을때만 매수
if (Signal.signalKind == 1 && Account1.Balance.count == 0)
{
Account1.OrderBuy(Main.GetOrderCode(Signal.code),1,0,1);
//Account1.OrderBuy(Main.GetOrderCode(Signal.code),Math.floor(100000/ChartEx.GetClose(1,0)),0,1);
Main.MessageLog("매수주문");
}
if (Signal.signalKind == 2)
{
//전체미체결주문 갯수
var num = Account1.GetTheNumberOfUnfills();
//전체 미체결수 만큼 루프를 돌면서
for (var i = 0; i < num; i++)
{
//미체결을 하나씩 셋팅하고
Account1.SetUnfill(i);
//미체결종목이 신호종목과 같고 미체결수량이 있으면
if (Account1.Unfill.code == Main.GetOrderCode(Signal.code) && Account1.Unfill.count > 0)
{
Account1.OrderCancel(Account1.Unfill.orderNum);
}
}
//잔고수량만큼만 매도
if (Account1.Balance.count > 0)
{
Account1.OrderSell(Main.GetOrderCode(Signal.code),Account1.Balance.count,0,1);
Main.MessageLog("매도주문");
}
}
}
2024-02-10
638
글번호 225936
답변완료
수식 부탁드립니다.
안녕하세요~
며칠동안 이리저리 궁리해보고 변경해봐도 해결이 되지 않아 부득이 부탁드립니다.
매수 및 매도 조건입니다.
1. 특정한 시간대에 사용자검색조건인 종목검색식을 통해 종목을 1차 매수하고, 1분 단위로 검색하여 10분 이내에 해당 종목이 매수가 대비 현재가가 -3%~ 1% 이내이면 2차까지 매수하고자 한다.
종목당 매수 금액은 1차, 2차 모두 같은 금액으로 지정하여 매수한다.
그리고, 매수 완성된 종목은 특정 "관심종목"그룹에 저장한다.
2. 매도는 "관심종목"그룹에 저장된 종목을 분할로 매도하되 각각의 조건에서 비율을 달리하여 매도한다.
1) 현재가가 매수가 대비 6%, 8%, 10%이상 인 경우 단계적으로 각각 잔고량의 20%, 25%, 33%씩 매도한다.
2) 현재가가 매수가 대비 4-%, -5%, -6%이하 인 경우 잔고량의 20%, 25%, 33%씩 매도한다.
3) 매수 이후 최고 상승율이 8~10%인 경우
~ 매수가 기준 최고가(8~10%인 경우) 대비 현재가가 4% 하락시 잔고량의 50%를 매도하고, 현재가가 매수가 대비 10% 하락시 남은 잔고 전량 매도한다.
4) 매수 이후 최고 상승이 10%이상 ~ 20 % 인 경우
~ 매수가 기준 최고가(10%이상~20%인 경우) 대비 현재가가 5% 하락시 잔고량의 50%를 매도하고, 현재가가 매수가 대비 10% 하락시 남은 잔고 전량 매도한다.
5) 당일 매도하지 못한 잔량은 익일 동일 조건으로 초기화하여 매도한다.
이상입니다.
설명절 유익하게 잘보내시기 바랍니다.
2024-02-09
580
글번호 225935
백테 님에 의해서 삭제되었습니다.
2024-02-08
10
글번호 225934
마포만세 님에 의해서 삭제되었습니다.
2024-02-04
2
글번호 225933
답변완료
예스스팟 전략에서 확장차트에 적용된 시스템(신호)의 입력변수의 값을 동적으로 변경가능여부?
안녕하세요. 아래 예를 들어 문의 드립니다.
예스스팟전략에 EC라는 확장차트에 Sy라는 시스템(신호)가 적용되어 있고
Sy에 Ins라는 입력변수가 있을 때
Main의 특정 이벤트(예 OnStart)처리중
이 변수의 값을 직접 변경하게 할 수 있나요?
간단한 예제로 설명 부탁드립니다.
2024-02-02
682
글번호 225932
답변완료
여러개의 주식 객체 가져오는 방법
안녕하세요
여러개의 주식객체를 가져와서 가격을 비교하려고 합니다. 그런데 ReqPowerSearch를 이용하여 검색해보니 조건에 부합하는 객체의 코드만(267850, 000650...)을 가져오는데, 이 가져온 코드들로 종목 객체 데이터들(시가, 종가, 등등)을 가져올 순 없을까요?
var ItemList= [];
function Main_OnStart()
{
Main.ReqPowerSearch("급등식1")
Main.MessageList("전일 종가대비 5% 이상 상승한 종목 가져오기");
}
function Main_OnRcvItemList(aItemList, nCount, aValues)
{
Main.MessageList("종목이 있습니다 ");
// 가져온 종목들 리스트
ItemList = aItemList
Main.MessageLog(ItemList.length)
}
2024-02-01
672
글번호 225931
redcon 님에 의해서 삭제되었습니다.
2024-01-31
0
글번호 225930