커뮤니티

예스스팟 Q&A

답변완료

하이투자증권에서 예스스팟 전략 제작도 해주나요?

스팟 매뉴얼 읽어보고 있습니다만 워낙 이쪽으로 초보라 쉽지 않습니다 하이투자증권에서 거래 예정인데 제가 원하는바를 이야기하면 제작해주는 부서는 없나요?
프로필 이미지
미수맨
2018-06-10
2292
글번호 224465
답변완료

문의드립니다.

수고하십니다. 장시작전에 지정가 AA에 매도를 XX주 , BB에 XX주 매도 주문을 내고 현재가가 AA에 오면 +NN호가 위에 XX주 매도 주문을 내고 지정가 AA에 걸어둔 XX주가 매도 체결이 되면 -MM호가 아래 XX주 매수주문을 내는 식 부탁드립니다. 항상 고맙습니다.
프로필 이미지
여세우
2018-06-14
2275
글번호 224464

훈sys 님에 의해서 삭제되었습니다.

프로필 이미지
훈sys
2018-06-07
6
글번호 224463
답변완료

문의드립니다.

항상 도움 주셔서 고맙습니다. 옵션이 아닌 Account1의 내용을 엑셀로 출력하고 싶습니다. 종목명, 종목코드,평단가,수량,현재가를 엑셀에 표시하고 싶습니다. var a = "A"; function Main_OnStart() { Main.SetTimer(1, 1000); } function Main_OnTimer(nEventID) { var ItemCode = new Array(6); var ItemPrice = new Array(6); ItemCode[0] = "종목코드" ItemPrice[0] = "평단가" for(var i = 1; i <= 5; i++) { ItemCode[i] = Option.GetATMCallRecent(i); ItemPrice[i] = Option.GetavgUnitCost(0, i); } //지정된 셀을 기준으로 우측으로 배열변수에 저장된 값을 순서대로 입력 Excel1.SetArrayToRow(1, "C1", ItemCode); //지정된 셀을 기준으로 우측으로 배열변수에 저장된 값을 순서대로 입력 Excel1.SetArrayToRow(1, "C2", ItemPrice); //지정된 셀을 기준으로 아래로 배열변수에 저장된 값을 순서대로 입력 Excel1.SetArrayToCol(1, "C4", ItemCode); //지정된 셀을 기준으로 아래로 배열변수에 저장된 값을 순서대로 입력 Excel1.SetArrayToCol(1, "D4", ItemPrice); Main.KillTimer(1); } 잘 부탁드립니다.
프로필 이미지
여세우
2018-06-11
2296
글번호 224460

여세우 님에 의해서 삭제되었습니다.

프로필 이미지
여세우
2018-06-09
5
글번호 224459

도도당 님에 의해서 삭제되었습니다.

프로필 이미지
도도당
2018-06-06
13
글번호 224458

스팟 강제청산로직 코딩관련

안녕하십니까. 운영자님 도움으로 자동매매를 잘 돌리고 있습니다. 자동매매를 좀 더 정교하게 다듬고 싶어서, 청산로직을 추가하려고 합니다. 아래는 지난 게시글을 검색하여 자동매매에 추가하였는데, 청산로직이 실행되지 않고 있습니다. "종목객체생성완료"메시지까지 뜨고 실거래에서는 청산이 안됩니다 그래서 코드를 살펴보다가 바로 아래의 코드처럼, 특정종목의 현재가와 계좌잔고전체의 평균단가를 비교하면서, 잔고에 있는 개별종목들이 STOPLOSS에 적용이 안되는가 싶어 문의드립니다. 바쁘신데 번거롭게 하는게 아닌지 죄송스럽습니다만, 잘 부탁드리겠습니다. if (ItemObject[i].current >= Account1.Balance.avgUnitCost*1.10) 게시판번호 669, 2013년 8월 9일자 작성글 //매수잔고 if (Account1.Balance.position == 2) { //현재가가 평균단가 대비 10%이상 상승하면 매도 if (ItemObject[i].current >= Account1.Balance.avgUnitCost*1.10) { Account1.OrderSell(Account1.Balance.code,Account1.Balance.count, 0,1); //주문 후 해당 종목객체 삭제 Main.RemoveMarketData(ItemObject[i]); Main.MessageList("수익청산 : ",ItemObject[i].code,"종목객체삭제"); } ========================================================== 안녕하세요 예스스탁입니다. 예스스팟의 StopLoss, StopPrifitTarget, StopTrailing과 같은 객체들은 예스스팟에서 차트를 생성하고 차트에 시스템을 적용시 설정하는 객체입니다. 예스스팟에서 Main.ReqChartEx라는 함수로 차트를 만드실 수 있는데 Main.ReqChartEx에는 생성할 차트의 제반조건과 적용할 시스템, 지표, 참조데이터를 지정해서 차트를 생성하실 수 있습니다. 이때 시스템을 적용할 때 강제청산을 설정하고자 하면 해당 객체에 값을 지정해서 이용하는 것입니다. 기존에 차트에 시스템 적용할 때 시스템 트레이딩 설정창의 강제청산탭에서 원하는 강제청산을 설정하고 적용하는 것과 같습니다. 아래스팟식 참고하시기 바랍니다. function Main_OnStart() { //생성할 차트정보설정(종목명,주기,주기구분,조회건수,조회건수 구분,수정주가,갭보정) var Chart1 = new ReqChartItem("00000000", 1, CHART_PERIOD_MINUTE, 300, CHART_REQCOUNT_BAR, false, false); //차트에 적용할 시스템의 외부변수 정보(기본값과 다른값을 지정할때 변경할 값으로 지정가능) var Input = new Array(new YLInputVar("Period", "10"), new YLInputVar("Period1", "5")) //차트에 적용할 시스템의 트레이딩 설정정보 var Trade = new SystemTradeInfo(TRADE_FIXCOUNT, // 기본거래수량 1, // 거래수량 123456789, // 자산 1, // 단위수량 0.01,0.01, CALCMETHOD_PERCENT, // 진입/청산 수수료 0.025, 0.025, CALCMETHOD_POINT, // 진입/청산 슬리피지 PYRAMIDING_ALL, // 피라미딩 설정여부 100000, // 최대진입수량 20); // 최대진입횟수 //차트에 적용할 강제청산 정보 //손절매,트레일링스탑,목표수익,최소가격변화,당일청산,청산시점) var Stop = new SystemStopInfo(new StopLoss(1, CALCMETHOD_PERCENT), // 손절매 new StopTrailing(2, 3, CALCMETHOD_PERCENT, 0), // 최대수익대비하락 new StopProfitTarget(4, CALCMETHOD_PERCENT), // 목표수익 new StopInactivity(5, 6, CALCMETHOD_PERCENT), // 최소가격변화 new StopEndOfDay(151400), // 당일청산 STOP_INSTANT); //차트에 적용할 시스템 설정 //(적용할 시스템명,파일종류,외부변수정보,트레이딩기본정보,강제청산정보); var System = new SystemInfo("Stochastics", YL_TYPE_NORMAL,Input,Trade,Stop); //적용할 지표설정 var Indicator = new Array(new IndicatorInfo("Stochastics",YL_TYPE_NORMAL, new Array(new YLInputVar("Period", "10"),new YLInputVar("Period1", "5")))); //적용할 참조데이터 설정 var Data = new Array(new ReqChartItem("00000000", 5, CHART_PERIOD_MINUTE, 300, CHART_REQCOUNT_BAR, false, false), new ReqChartItem("000660", 5, CHART_PERIOD_MINUTE, 300, CHART_REQCOUNT_BAR, false, false), new ReqChartItem("005930", 10, CHART_PERIOD_MINUTE, 300, CHART_REQCOUNT_BAR, false, false)); Main.ReqChartEx(Chart1,System,Indicator,Data); } 위 수식과 같이 잔고의 종목들에 대해 손절매나 목표수익, 트레일링 스탑을 적용하는 것은 아니고 차트에 시스템 적용할 때 강제청산에 대해 설정값을 지정하는 객체들입니다. 아래는 계좌에 매수하여 종목이 추가되면 해당 종목에 대해 목표수익과 손절매, 트레일링스탑을 적용하는 식입니다. 최대 10종목까지 수행됩니다. 식작성하실 때 참고하시기 바랍니다. 스크립트 객체화면에 계좌객체가 필요합니다. 객체명 Account1 식상 게시판 금칙어가 있습니다 영문 업데이트가 Up*date로 작성이 되어 있으므로 * 제거하시기 바랍니다. var Nth = 0; var ItemCode = new Array(10); var ItemObject = new Array(10); var ItemHigh = new Array(10); //종목추가(주식)) function Main_OnUp*dateAccount(sAccntNum, sItemCode, lUp*dateID)//*제거 { if (lUp*dateID == 30001)//*제거 { Nth = Nth+1;//횟수 ItemCode[Nth] = sItemCode; Main.ReqMarketData(ItemCode[Nth], 0,0);//종목객체 생성요청 Main.MessageList("⊙.⊙",Nth,"번째","신규종목편입 ",ItemCode,"▶종목객체요청"); } } //종목객체 생성완료 function Main_OnRcvMarketData(MarketData) { if (MarketData.code == ItemCode[Nth]) { ItemObject[Nth] = MarketData; ItemHigh[Nth] = 0; Main.MessageList(Nth,"번째","종목객체생성완료 : ",ItemObject[Nth].code); } } //종목객체 시세 업데이트 function Main_OnUp*dateMarket(sItemCode, lUp*dateID)//*제거 { //편입된 종목수 만킄만 수행 for (var i = 1; i <= Nth; i++) { if (ItemObject[i].code == sItemCode && lUp*dateID == 20001)//*제거 { Main.MessageList("-----------------------------------------------"); Main.MessageList(ItemObject[i].code,"업데이트"); //잔고셋팅 Account1.SetBalanceItem(ItemObject[i].code,0); //종목편입 이후의 최고가 계산 if (ItemObject[i].current > ItemHigh[i]) { ItemHigh[i] = ItemObject[i].current; } //매수잔고 if (Account1.Balance.position == 2) { //현재가가 평균단가 대비 10%이상 상승하면 매도 if (ItemObject[i].current >= Account1.Balance.avgUnitCost*1.10) { Account1.OrderSell(Account1.Balance.code,Account1.Balance.count, 0,1); //주문 후 해당 종목객체 삭제 Main.RemoveMarketData(ItemObject[i]); Main.MessageList("수익청산 : ",ItemObject[i].code,"종목객체삭제"); } // 현재가가 평균단가 대비 10%이상 하락하면 매도 if (ItemObject[i].current <= Account1.Balance.avgUnitCost*0.90) { Account1.OrderSell(Account1.Balance.code,Account1.Balance.count, 0,1); //주문 후 해당 종목객체 삭제 Main.RemoveMarketData(ItemObject[i]); Main.MessageList("손절청산 : ",ItemObject[i].code,"종목객체삭제"); } //현재가가 평균단가 대비 8% 이상 상승후 평균단가+5%까지 하락하면 매도주문 if (ItemHigh[i] >= Account1.Balance.avgUnitCost*1.08 && ItemObject[i].current <= Account1.Balance.avgUnitCost*1.05) { Account1.OrderSell(Account1.Balance.code,Account1.Balance.count, 0,1); //주문 후 해당 종목객체 삭제 Main.RemoveMarketData(ItemObject[i]); Main.MessageList("TR청산 : ",ItemObject[i].code,"종목객체삭제"); } } Main.MessageList("-----------------------------------------------"); Main.MessageList("종 목 : ",ItemObject[i].code); Main.MessageList("평균단가 : ",Account1.Balance.avgUnitCost); Main.MessageList("현 재 가 : ",ItemObject[i].current); Main.MessageList("진입최고 : ",ItemHigh[i]); } } } 즐거운 하루되세요 > 즐겁게 님이 쓴 글입니다. > 제목 : 문의 드립니다. > 항상 상세하시고 친절하신 답변에 감사드립니다. 예스스팟에서 손절 익절 추적스탑 등을 구현하는 방법을 공부하려고 하는데, 예스스팟의 "객체정보" 화면에서 보면, StopLoss, StopPrifitTarget, StopTrailing이라는 객체들이 보입니다. YesLanguage의 SetStopLoss, SetStopPrifitTarget, SetStopTrailing이라는 강제청산함수들과 기능이 매우 유사할 것으로 짐작이 되는데, 이 객체들의 실제 적용례를 부탁드립니다. 1. StopLoss, StopPrifitTarget, StopTrailing 객체들의 실제 사용례를, 아주 간단하게라도 예문을 각각 보여 주시면 대단히 감사하겠습니다. 2. 특히, 이 객체들의 properties 중에 보면 "color"라고 하는 프라퍼티가 있어서, 화면상에 손절선, 익절선, 추적스탑선 등을 색깔로 표시해 주는 좋은 기능일 것으로 짐작이 되는데, 시뮬레이션 등을 할 수 없는 예스스팟에서 색깔로라도 그 것들을 볼 수 있으면 크게 도움이 될 거 같습니다. 이 color의 사용례도 (소스 코드 문장 중에) 보여 주시면 대단히 감사하겠습니다. (3. 더불어서, StopEndOfDay, StopInactivity 객체들의 예문도 짧게라도 보여 주시면 감사하겠습니다) 감사합니다.
프로필 이미지
아름다운사람들
2018-06-02
1743
글번호 224454

예스스팟과 트레이더 차이가 뭔가요?

주식거래를 하는데 장중 전종목을 감시하다가, 조건 만족되면 주문이 나가고 역시 조건만족되면 매도하는 시스템을 만들고 싶습니다 계산해보니까 하루에 한 200번 매매가 될것 같습니다. 이런걸 하려면 예스스팟을 해야 하나요 아님 예스 트레이더를 해야 하나요? 어느 증권회사 하면 되는지요 감사합니다
프로필 이미지
미수맨
2018-06-01
2448
글번호 224453
답변완료

1688번 추가 문의

** 1688번에 추가 작성된 내용입니다 ** 안녕하세요 번거로우시겠지만 1688번 '마감청산'과 관련하여 한가지만 추가 질문 드립니다. 아래 작성해주신 수식을 적용해 본 결과 모두 정상으로 작동합니다. 감사드립니다. 한가지 추가하고 싶은 것은 아침에 YT를 접속하면 Main_OnStart가 작동하여 그때부터 5초단위로 체크를 하게 되므로, 실제 작동에 필요한 시간까지 불필요한 부하가 걸릴 수 있는 것 같습니다. 아래 '마감청산'수식이 14시57분부터 작동하도록 부탁드립니다. 확인을 위하여 Main.MessageLog("마감청산 시작"); 을 추가하였는데 메세지가 14시57분이후 발생하면 좋겠습니다. ---> 즉, 14시57분부터 작동 시작 이상입니다 감사합니다 !! var A1,A2,A3; function Main_OnStart() { Main.SetTimer(1, 5000); A1 = false; A2 = false; A3 = false; Main.MessageLog("마감청산 시작"); } function Main_OnTimer(nEventID) { var d = new Date(); var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); if (nEventID == 1) { if (A1 == false && HHMMSS >= 145930) { A1 = true; Account1.SetBalance(Main.GetOrderCode(MarketData1.code), 0); if (Account1.Balance.count > 0 && Account1.Balance.position == 1) { Account1.OrderBuy(Account1.Balance.code, Account1.Balance.count, MarketData1.Ask(5), 0); } if (Account1.Balance.count > 0 && Account1.Balance.position == 2) { Account1.OrderSell(Account1.Balance.code, Account1.Balance.count, MarketData1.Bid(5), 0); } } if (A2 == false && HHMMSS >= 150000) { A2 = true; 이하 생략
프로필 이미지
새로운세상
2018-06-05
2464
글번호 224451
답변완료

문의드립니다.

수고하십니다. 국내선물을 거래하고 싶으며, 증권사는 하이투자입니다. 입력변수추가로 inputbar를 아래와 같이 사용하고 싶습니다. (1) 초기진입 1:매수진입 2:매도진입 (2) 진입수량 (3) 진입횟수 (4) 청산방법:1:스토케스틱 청산 2:지정가 또는 지정수익률 청산(지정가1,2 입력) (5) 당일청산 1:청산 2:오버나이트 (6) 손절:손실합계금액(시장가) 첫 주문의 종류를 입력변수에서 확정하고 싶습니다. 청산방법은 1:차트의 스토 신호대로 청산, 2:지정가1, 지정가2 또는 지정수익률1,2 를 입력하여 청산 (복잡해지면 (5)번 -청산방법-이후는 안 해 주셔도 됩니다.) 이상입니다. * 잘 부탁드립니다 *
프로필 이미지
여세우
2018-06-21
2496
글번호 224448