커뮤니티

예스스팟 Q&A

답변완료

부탁드립니다.

1.아래 수식에서는 현재 1계약의 포지션이 있는경우 반대포지션으로의 1계약 진입을 위하여는, 청산과 진입을 위하여 2계약 (VV = 2;) 이 동시에 주문체결하게 됩니다. 이를 5초간의 시간차를 두고 1계약씩 주문체결 되도록 수식을 변경 하여 주시면 감사 하겠습니다. 2. 매수 미완성신호발생을 IncompleteSignal.signalKind == 1 로 매도 미완성신호발생을 IncompleteSignal.signalKind == 3 으로 하면 미완성신호가 없는 경우의 표기는 IncompleteSignal.signalKind == 0 으로 하면 되나요? var T; function Main_OnStart() { T = 0; Main.MessageLog("시작"); OrderCode = Main.GetOrderCode(KP.code); } function C1_OnRiseIncompleteSignal(IncompleteSignal) { Main.MessageLog("미완성신호발생/" + IncompleteSignal.signalKind); A1.SetBalance(Main.GetOrderCode(IncompleteSignal.code)) if ((A1.Balance.position == 1 || A1.Balance.position == 0) && IncompleteSignal.signalKind == 1) { T = 1; if(A1.Balance.position == 0) VV = 1; else VV = 2; Main.SetTimer(1,10000); } if ( A1.Balance.position == 1 && IncompleteSignal.signalKind == 3) { T = 0; Main.KillTimer(1); Main.SetTimer(2,10000); } if ((A1.Balance.position == 2 || A1.Balance.position == 0) && IncompleteSignal.signalKind == 3) { T = -1; if(A1.Balance.position == 0) VV = 1; else VV = 2; Main.SetTimer(2,10000); } if (A1.Balance.position == 2 && IncompleteSignal.signalKind == 1) { T = 0; Main.KillTimer(2); Main.SetTimer(1,10000); } } function Main_OnTimer(nEventID) { if (nEventID == 1 && T == 1) { Main.KillTimer(1); A1.OrderBuy(KP.code, VV, KP.Ask(5),2); Main.MessageLog("매수진입"); } if (nEventID == 1 && T == 0) { Main.KillTimer(1); Main.MessageLog("중복매수진입금지"); } if (nEventID == 2 && T == -1) { Main.KillTimer(2); A1.OrderSell(KP.code, VV, KP.Bid(5),2); Main.MessageLog("매도진입"); } if (nEventID == 2 && T == 0) { Main.KillTimer(2); Main.MessageLog("중복매도진입금지"); } }
프로필 이미지
너무조아
2016-12-23
2024
글번호 224072
답변완료

스팟에 있었으면 하는 메소드

먼저 성심성의껏 알려주신 점에 깊이 감사드립니다. 전화상 말씀드린 스팟에 있었으면 하는 메소드를 정리해보았습니다. 귀찮다 생각지마시고 귀사의 프로그램에 대해 애정이 있고 지속적으로 사용하기를 원하기에 이런 글을 올린다는 것으로 이해해주셨으면 합니다. 1. 관심종목 Refresh(그룹명) - 관심종목의 해당그룹명을 재갱신 (현재 종목이 추가되면 조회버튼으로 일일이 누르고 있음) Sort() - 이름순, 등락순, 거래량순 등으로 소팅 DeleteItem(그룹명, 종목명) - 해당 그룹의 종목삭제 DeleteGroup(그룹명) - 해당 그룹삭제 CreateGroup(그룹명) - 해당 그룹생성 2. 확장차트객체 DeleteChartEx(차트번호 or 종목명) - 확장차트제거 진입된 종목이 청산되면 더 이상 차트가 필요없을 수도 있기에.... ArrageChartEx(방식) - 만약 차트가 10개생성되면 쭈욱 나열이 되는데, 바둑판식 배열 등으로 정렬될 수 있도록 하는 기능 3. 엑셀객체 CreateSheet(생성시트번호, 시트이름) - 시트생성 DeleteSheet(시트번호) - 해당시트 제거 그외 좀 개선되었으면 하는 기능. 1. YS특징상 리얼타임에서 코딩 -> 검증 -> 디버깅하는 과정을 반복적으로 거치는데 6131화면에서 디버깅후 기존 올려진 전략을 X로 내리고, 다시 적용하고, 시험적용 or 자동주문 선택후 확인 누르는 작업을 수없이 하게 됩니다. 안정화되기까지 수도 없이 할 것입니다. 이를 좀 간단히 할 수 있게 개선이 꼭 되었으면 합니다. 가령 적용된 전략의 X 옆에 변경된 소스를 Reload 하는 버튼을 만들어서 바로 적용가능하게 하여 전략을 내리고 올리고 하는 반복적인 시간낭비를 없애면 어떨까합니다.... 2. YS 스튜디오에서 옵션창이 있어서 편집창 글꼴 변경, 글꼴 크기 조절등이 되었으면 하네요. UHD 모니터를 사용하다보니 글자크기가 너무 작아서.. 3. YS를 처음 접하는 유저나 어떤 전략을 기술하기 위해 이곳을 찾는 유저들을 위해 이 게시판의 상단에 자주 쓰이는 코드의 프레임워크를 만들어 놓으면 어떨까요? 가령, 주식매매하는 사람들을 위해 종목 검색부터 확장차트 띄우고 주문내는 대략적인 코드...선물옵션하는 사람들도 마찬가지고... 모범 답안은 아니더라도 프로그램의 전체 흐름을 파악할 수 있는 PSEUDO 코드라든지...암튼 자주 질문하는 내용을 상단에 표기하는것이 목적입니다. 여기 게시판의 담당자도 많은 질문에 대한 답변으로 에너지를 줄여 다른 곳에 포커싱할 수 있다고 보여집니다. 여러가지 올렸는데 귀사의 적극적 검토를 부탁드립니다. 감사합니다.
프로필 이미지
gt
2016-12-19
2098
글번호 224071
답변완료

수식문의드립니다

예전에 깔짝 프로그래밍 배운걸로는 아무리 봐도 모르겠네요 그당시도 아니고 10여년이 지나서.. 20틱 차트에서 파라볼릭af0.1 maxAF0.1 상향돌파시 신호나오자마자 -3틱에 바로 주문신호들어가고 체결시 신호가에서+3틱에 바로 청산신호들어가게요 이게 예스랭귀지에서는 신호가 오면 그때 주문이 들어가는거라고하는데 -3틱으로 밀리는 신호가와야 그때서야 주문이 들어간다고하더라구요 반대로 매도 신호가 떠도 같은식으로 신호가 나온후에 5분간 체결이 안되면 취소가 되는함수도부탁드립니다 그외에는 자동으로 바뀌면 청산후 다시 매도도 가능하게요 나름 찾아보고 공부하려고했는데 너무 방대하네요 가이드좀 잘부탁드립니다
프로필 이미지
쩜상쩜하
2016-12-15
2118
글번호 224064

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

프로필 이미지
idnotbe
2016-12-15
14
글번호 224063

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

프로필 이미지
idnotbe
2016-12-15
0
글번호 224062
답변완료

ELW 관련 수식문의("[01165] 주식워런트증권 지정가호가 매매만 가능합니다")

아래의 수식으로 현물거래를하다가 ELW 거래에 적용해보니 아래와 같은 에러 메시지가 뜹니다. "[01165] 주식워런트증권 지정가호가 매매만 가능합니다" 그래서 가격 구분을 지정가로 바꾸고, 가격을 직접입력해서 해봤는데도 계속 주문 가격이 0으로 나가서 거래가 되질 않네요. 수식상의 어디를 수정하면 되는지요?? function Chart1_OnRiseSignal(Signal) { //buy신호발생 if (Signal.signalKind == 1) { //신호종목 잔고 셋팅 Account1.SetBalance(Main.GetOrderCode(Signal.code),0); //보유수량이 없으면 if (Account1.Balance.count == 0) { //10주 시장가로 매수 Account1.OrderBuy(Main.GetOrderCode(Signal.code), 10, 0,1); } //보유수량이 있다면 else if (Account1.Balance.count > 0) { //현재가가 평균단가 대비 10% 하락시 보유수량+10주 시장가로 매수 if (Account1.Balance.current < Account1.Balance.avgUnitCost*0.9) { Account1.OrderBuy(Main.GetOrderCode(Signal.code), Account1.Balance.count +10, 0,1); } //현재가가 평균단가 대비 3% 이상 상승시 전량매도 if (Account1.Balance.current > Account1.Balance.avgUnitCost*1.03) { Account1.OrderSell(Main.GetOrderCode(Signal.code), Account1.Balance.count, Account1.Balance.current,0) } } }
프로필 이미지
김종인
2016-12-13
2125
글번호 224061
답변완료

예스스팟에서 Grid 객체 활용시 그리드 보이게 하는 방법?

예스스팟 편집기에서 Grid 객체를 포함시킨후 예스스팟에서 실행시켜도 그리드 화면은 나타나지 않습니다. 그리드 보이게 하는 방법 설명 부탁드립니다.
프로필 이미지
시메트
2016-12-09
2264
글번호 224059
답변완료

Account.Refresh() 호출후 이벤트 OnU*dateAccount 미발생.

오류증상 요점. Account.Refresh() 호출이후 이벤트 OnU*dateAccount 발생하지 않음. 요류증상 상세. 사용프로그램 : NH선물의 YesGlobalPro. 실행환경 : 모의매매, 실매매 모두 동일하게 이벤트 발생하지 않음. 운영체제 : win7 Account1.Refresh(); 호출장소를 OnStart에서 호출하든 타이머 1초짜리 걸고 OnTimer에서 호출하든 모두 동일하게 OnU*dateAccount 이벤트 발생하지 않고 있습니다. 한편, 주문체결등에 의한 OnU*dateAccount 이벤트는 정상발생하고 있습니다. 해결 방법 부탁드립니다. 사용된 코드. function Main_OnStart() { Account1.Refresh(); } function Main_OnU*dateAccount(sAccntNum, sItemCode, lU*dateID) { Main.MessageLog("OnU*dateAccount"); if(lU*dateID == 30000 ){ Main.MessageLog("가원장 동기화 완료"); } }
프로필 이미지
시메트
2016-12-08
2219
글번호 224055

시메트 님에 의해서 삭제되었습니다.

프로필 이미지
시메트
2016-12-08
0
글번호 224054
답변완료

현물 거래에 사용하는 스팟수식 ELW 거래에도 적용 가능한지요?

현재 스팟수식으로 현물거래를 하고 있습니다. 계좌객체와 차트객체를 이용하고 있으며 수식 내용을 간략하게 설명드리자면 차트 객체에서 종목코드를 가져 온 다음 계좌 객체를 이용해 해당 종목의 보유 수량, 현재가, 평균 단가를 비교해 매수/매도하는 수식입니다. 제가 궁금한 것은 현물 거래에 사용하는 계좌객체와 차트객체를 ELW 거래시에도 사용이 가능한지 입니다.
프로필 이미지
김종인
2016-12-07
2032
글번호 224053