커뮤니티
예스스팟 Q&A
답변완료
강조 수식의 엑셀 수신
하이켄 아시 같은 강조수식을 엑셀로 뽑아낼 수 있을까요?
예를 들면 마젠타는 +1, 사이언은 -1 이런식으로요.. 답변 감사드립니다
2023-06-09
1021
글번호 225802
답변완료
2414번 추가 질문입니다.
안녕하세요. 전에 작성해주신 수식에 대해서 추가 문의 드립니다.
제가 구상했던 시스템 운영 방식에 거의 다다른 것 같습니다.
큰 도움 주셔서 너무 감사합니다. 즐거운 하루 보내세요.
------------------------------------------------------------------------------------
1. 미완성 신호로 매도하는 부분을 작성해주셨는데, 미완성 신호로 매수하는 부분 추가
(제가 내용을 추가 했는데 확인 부탁드립니다.)
2. 미완성 신호로 매수된 경우, 원래 익일 시가에 완성신호로 매수되는 금번차수 매수 금지
(미완성 1차 매수 시 완성 1차 매수 금지, 미완성 2차 매수시 완성 2차 매수 금지)
var ItemList;
var Count;
var ReqCount;
var d;
var H;
var CT = [];
function Main_OnStart()  
{
      Main.MessageLog("스팟시작");
      d = new Date();
      h = d.getDate();
      //지정한 관심그룹의 종목수(관심그룹지정 필요)
      Count = Main.GetItemCountOfInterest("관심종목1");
      Main.MessageList("지정관심그룹 종목수 : ", Count);
      ItemList = [];      
      //관심그룹 종목코드를 ItemList로 옮김
      for(var i = 0 ; i < Count ; i++)
      {
            //관심그룹지정 필요
            ItemList.push(Main.GetItemCodeInInterest("관심종목1", i));
      }
      //관심종목이 1개 이상이면 
      if (Count > 0)
    {
            //첫종목부터 요청시작
            //요청갯수 카운트 변수는 초기값 0
            ReqCount = 0;
            
            var TradeSet =  new SystemTradeInfo(TRADE_FIXCAPITAL,
                                             1,                         // 거래수량
                                             100000000,                 // 자산
                                             1,                         // 단위수량
                                             0, 0, CALCMETHOD_PERCENT,  // 진입/청산 수수료
                                             0, 0, CALCMETHOD_POINT,    // 진입/청산 슬리피지
                                             PYRAMIDING_ENTRY,          // 피라미딩 설정여부(다른진입신호만 허용)
                                             100000,                      // 최대진입수량
                                             20);                       // 최대진입횟수
            var ChartSet = new ReqChartItem(ItemList[ReqCount],1,CHART_PERIOD_DAILY,1000,CHART_REQCOUNT_BAR,true,false);
            /////SystemInfo(name,kind,inputVar,tradeInfo,stopInfo)
            var SystemSet  = new SystemInfo("YL_시스템(일봉)", YL_TYPE_NORMAL, null, TradeSet);
            //차트객체 요청
            Main.ReqChartEx(ChartSet,SystemSet);
            Main.MessageList("확장차트생성요청:",ItemList[ReqCount]);
            //1벝 타이머 10초 세팅
            Main.SetTimer(1, 10000);
      }
}  
//차트객체 수신
function Main_OnRcvChartEx(ChartEx)
{
      //방금 요청한 종목이 맞는지 확인
      if (ChartEx.GetCode(1) == ItemList[ReqCount])   
      {
            Main.MessageList("확장차트생성완료:",ChartEx.GetCode(1));
            //차트객체를 순차적으로 CT배열변수에 저장
            CT.push(ChartEx);
            
            //요청갯수 1증가
            ReqCount = ReqCount+1;
               
            //요청갯수가 Count 미만이면
            if (ReqCount < Count)
            {
                  //다음종목 요청
                  var TradeSet =  new SystemTradeInfo(TRADE_FIXCAPITAL,
                                                   1,                         // 거래수량
                                                   100000000,                 // 자산
                                                   1,                         // 단위수량
                                                   0, 0, CALCMETHOD_PERCENT,  // 진입/청산 수수료
                                                   0, 0, CALCMETHOD_POINT,    // 진입/청산 슬리피지
                                                   PYRAMIDING_ENTRY,          // 피라미딩 설정여부(다른진입신호만 허용)
                                                   100000,                      // 최대진입수량
                                                   20);                       // 최대진입횟수
                  var ChartSet = new ReqChartItem(ItemList[ReqCount],1,CHART_PERIOD_DAILY,1000,CHART_REQCOUNT_BAR,true,false);
                  /////SystemInfo(name,kind,inputVar,tradeInfo,stopInfo)
                  var SystemSet  = new SystemInfo("YL_시스템(일봉)", YL_TYPE_NORMAL, null, TradeSet);
                  Main.ReqChartEx(ChartSet,SystemSet);
                  Main.MessageList("확장차트생성요청:",ItemList[ReqCount]);                  
            }
            else//아니면
            {
                  //종목객체생성 종료
                  Main.MessageList("종목객체생성완료");      
            }
      }
}
//타이머 동작
function Main_OnTimer(nEventID)
{
      //1번 타이머 동작
      if (nEventID == 1)
      {
            var d = new Date();
            HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
            //15시 25분이 되면
            if (HHMMSS >= 152500)
            {
                  //타이머종료
                  Main.KillTimer(1);
#######################################추가#####################################
                  //생성된 전체차트에서 미완성 매수신호 있는 것을 확인하고 
                  //미완성매수신호가 있고 잔고에 보유수량이 없으면 매수
                  for (var i = 0; i < CT.length; i++)
                  {
                        ///마지막봉의 미완성 신호 정보를 가져와 저장
                        var Incom2 = CT[i].GetIncompleteSignal();
                        //미완성 정보가 있고 매수 신호이면
                        if (Incom2[0] != null && Incom2[0].signalKind == 1) 
                        {
                              Account1.SetBalance(Incom2[0].code, 0)
                              if (Account1.Balance.count > 0)
                              {
                                    Account1.OrderBuy(Incom2[0].code, Incom2[0].count, Incom2[0].price, 0);
                              }
                        }
                  }
##############################################################################
                  //생성된 전체차트에서 미완성 매도신호 있는 것을 확인하고 
                  //미완성매도신호가 있고 잔고에 보유수량이 있으면 전량 매도
                  for (var i = 0; i < CT.length; i++)
                  {
                        ///마지막봉의 미완성 신호 정보를 가져와 저장
                        var Incom = CT[i].GetIncompleteSignal();
                        //미완성 정보가 있고 매수청산 신호이면
                        if (Incom[0] != null && Incom[0].signalKind == 2) 
                        {
                              Account1.SetBalance(Incom[0].code, 0)
                              if (Account1.Balance.count > 0)
                              {
                                    Account1.OrderSell(Incom[0].code, Account1.Balance.count, Incom[0].price, 0);
                              }
                        }
                  }
            }
      }
}
//신호발생
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), Signal.count, Signal.price, 0);      
            Main.MessageList("매수주문9");
      }
      if (Signal.signalKind == 2)
      {
            //전체미체결주문 갯수
            var num = Account1.GetTheNumberOfUnfills();
            //전체 미체결수 만큼 루프를 돌면서
            for (var i = 0; i < num; i++)
            {
                  //미체결을 하나씩 셋팅하고 Account1.GetTotalAmount(nCategory, nTradeKind)
                  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), Signal.count, Signal.price, 0);
                  Main.MessageList("매도주문");  
            }
      }
}
2023-05-18
1182
글번호 225801
주식승부 님에 의해서 삭제되었습니다.
2023-05-15
0
글번호 225800
답변완료
예스스팟을 이용한 핸드폰버전 개발
예스스팟을 이용한 전략을 핸드폰용으로도 개발이 가능한지 문의 드립니다.
만약 현재는 안된다면 차후에라도 가능하게 될런지도 궁금합니다.
2023-05-12
1209
글번호 225799
답변완료
문의_pointless
exit 수식 추가 건입니다. 차트1 exitlong("a"); 차트2 exitlong("b"); 1) a 또는 b 를 만족하면 청산 2) a and b 를 만족해야만 청산 3) 차트참조 없이 setstoploss(2, percentstop); setstoptrailing(5,0,percentstop,1); 위 3가지 경우로 나누어 청산수식 추가 부탁드립니다. ********************************************************************* var UNum; var LNum; var CallCode; var CallPrice; var PutCode; var PutPrice; var CC; var PP; var CallOrderCode; var PutOrderCode; var CallExit,PutExit; function Main_OnStart() { CallExit = false; PutExit = false; Main.SetTimer(1, 5000); } //차트에서 신호가 발생하면 function Chart1_OnRiseSignal(Signal) { //해당 신호가 매수신호이면 if (Signal.signalKind == 1) { CallOrderCode = Option1.GetATMCallRecent(1); //*** 콜옵션 외가격+1 을 찾는다 PutOrderCode = Option1.GetATMPutRecent(1);//*** 풋옵션 외가격-1 을 찾는다 //콜옵션종목 매수 if (CallExit == false) { //지정가 Account1.OrderBuy(CallOrderCode, 1, Option1.GetAskByCode(CallOrderCode, 2), 0); //시장가 //Account1.OrderBuy(CallOrderCode, 1, 0, 1); } } }
2023-05-08
1189
글번호 225798
hello 님에 의해서 삭제되었습니다.
2023-04-26
0
글번호 225793
히익 님에 의해서 삭제되었습니다.
2023-04-17
1
글번호 225792
답변완료
옵션 관련
혹시 예스스팟에서 둘째주 목요일마다 양매도하고 만기때마다 청산(그 다음 월 둘째 주 목요일)하는 전략을 백테스트 해볼 수 있나요?
2023-04-17
1274
글번호 225791
답변완료
장전시간외 거래 가능여부
8시30분~8시40분에 장전시간외 거래에 스팟으로 주문 넣을 수 있는지요?
혹시 가능하다면 계좌에 있는 전종목을 매도주문 넣는 코드 샘플좀 짜주실 수 있으실까요?
너무나 감사드립니다.
2023-04-07
1211
글번호 225788
답변완료
초보질문
예스스팟에 대해 자신이 직접 수식등을 작성 사용하기엔 어려울 경우 유료로 대신 작성 해주는 제휴업체나 또 다른 방법은 없을까요?
2023-04-04
1192
글번호 225785