커뮤니티

예스스팟 Q&A

답변완료

파워검색(주식) 연동한 매매 시스템식을 좀 봐주시기 바랍니다.

안녕하세요~. 예스랭귀지와 스팟을 알게 된 지 아직 두달이 안 된 생초보입니다. 예스랭귀지로 쉬운 지표식이나 검색식은 만들 수 있게 되었습니다만, 스팟은 어렵군요.예제 몇 개 보거나 게시글 복기 정도로 학습하기에는 벅찬 듯 합니다. 마음 고쳐 먹고 이틀 전 서점 가서 두어 권 책도 사왔습니다. 첫 목표는, 차트연동이 아닌, 파워검색 종목을 매수하여 1, 2차 익절(손절 없는) 시스템식으로 간단하게 매매를 완결 짓자는 거였습니다. 그런런데 매도함수에서 지금 3주 째 막혔습니다. 그리고 여타 문제도 눈에 띕니다. 성공한 부분과 아직 구현 못 한 부분으로 나누어 설명합니다. 1. 성공 - 외부입력변수로 매수금액,익절률1차, 익절률2차, 매도비중1차, 매도비중2차 설정하고 종목당 매수금액 만큼 매수되는 걸 확인했습니다. 2. 실패 1) 장 시작 전, 어제 마감 장 기준으로 검색된 종목이 아침에 주문이 나갑니다(ㅠㅠ). 2) 실매수 후 1차익절가격 근처도 안 갔는데 1차익절 주문이,,, 매수가 이하로 발생하여 실제 매도되기도 하고, 또는 현재가가 1차 익절가격 도달도 안했는데 미리 1차 익절가격으로 예약 주문이 발생하기도 했습니다. 3) 당일 실제 매매한 종목이 파워검색에서 다시 검색되어 또 매매하면 안 되도록 스팟식이 짜여 있는데요, 시스템을 한 번 껐다 다시 가동시키면 실제 매매를 안 했는데도 이미 '재탕'종목이라고 거절합니다. 4) 한번은, 손가락 매도로 일부를 매도했더니 시스템 전체가 이상한 메시지가 뜨면서 먹통 비슷하게 되어 버렸습니다. 당일 매매완료되지 않은 종목에 대해서, 다음날 새로 편입해서 자동매매를 새로 걸어주는 방식에 대해 문의 글 중 하나 참조해서 해 봤는데 종목방만 세팅되고 이후 계속 잠을 잡니다. 이거는 다음에 문의 드리겠고요. 일단 위에 파워검색연동 시스템 1,2차 익절완료까지만 도움을 주시길 바랍니다. 웬만하면 첫경험의 수위(=첫 질문)를 높이려고 안간 힘을 썼으나 끝내 이렇게 도움글을 부탁드립니다. 게시글 보니까 정말 정성스럽게 답해 주시던데요, 감명 받고 미리 큰 꾸벅^^ 감사드립니다. 건승하십시오. ----------------- 시스템식을 붙여 넣으니까 금칙어가 있다고 해서 안되고, 스팟식도 첨부도 안되고 해서 워드파일에 붙여서 첨부했습니다. 감사합니다.
프로필 이미지
소운
2017-04-02
2623
글번호 224151
답변완료

매수주문 청산주문 리피트 부탁드립니다.

항상 도움주셔서 감사하게 생각하고 있습니다. 하이투자증권을 사용하고 있고 지난번에 올려놓은 스팟식으로 선물신호☞ 옵션주문 형태로 스팟식을 6개 돌리고 있습니다. 이번에 호가인하와 관련하여 주문계약수가 늘었을때 조금이나마 슬리피지를 줄이고자 시간을 나누어 주문을 내려고 합니다. 스팟식 6개에 각각 시간지연주문식을 넣지않로 하나의 스팟식으로 지연주문을 하고자합니다. 1. 계좌에서 옵션매수나 청산 주문이 나오면 같은 종목 같은 수량으로 5초 뒤 똑같이 한번 더 주문한다. 2. 5초뒤 1.번 작업을 한번 더 수행한다. 3. 5초뒤 1.번 작업을 한 번 더 수행한다. 4. 1.번 작업과 2.번 작업 사이에 나오는 새로운 주문이 나오면 이 작업을 반복한다.
프로필 이미지
피니트
2017-03-26
2596
글번호 224149

영원한자유 님에 의해서 삭제되었습니다.

프로필 이미지
영원한자유
2017-03-19
32
글번호 224144
답변완료

지표문의(현대선물, 한투)

차트에서 첨부파일의 사진의 동그라미 부분(2개)처럼 빨간색 계통, 파란색 계통의 선이 나오게 하는 지표는 무엇인지 궁금합니다. 대충이라도 알려주세요. 밑에 처럼 입력하고 검증했는데, 오류나네요. input : N(120); var1 = highest(H,N); var2 = Lowest(L,N); plot1(var1+PriceScale*2,"최고가+2틱"); plot2(var1-PriceScale*2,"최고가-2틱"); plot3(var2+PriceScale*2,"최저가+2틱"); plot4(var2-PriceScale*2,"최저가-2틱");
프로필 이미지
살구바
2017-03-16
2740
글번호 224143
답변완료

문의드립니다.

FX 거래를 위하여 수식 작성중 모의거래로 테스트시 보유 포지션이 있는데도 잔고수량이 계속 "0"으로만 나옵니다. 수식확인 부탁드립니다. ------------------------------------------------------------- function Main_OnStart() { Account1.SetBalanceItem(MarketDataFX1.code, 0); var Fx1 = Account1.Balance.count; var FP1 = Account1.Balance.position; Account1.SetBalanceItem(MarketDataFX2.code, 0); var Fx2 = Account1.Balance.count; var FP2 = Account1.Balance.position; Main.MessageLog("Fx1= "+Fx1); Main.MessageLog("Fx2= "+Fx2); }
프로필 이미지
simtang3
2017-03-15
2621
글번호 224140
답변완료

당일 개인,외국인 등의 수급 데이터 가져오는 방법이 있나요?

안녕하세요. 아래의 함수를 통해서 전일 개인 매수/매도 수량은 가져 왔는데요. MarketData.GetInvestorInfoByCategory(1, 0, 2, 1) 당일 수급데이터는 가져올 수 없나요? 함수 인자의 마지막 1을 0으로 하면 범위를 벗어 났다고 오류 나오네요. 방법 좀 알려 주시면 감사하겠습니다.
프로필 이미지
파워풀맨
2017-03-14
2624
글번호 224139
답변완료

수식에서 참조할 첫번째 종목데이터가 없습니다

이 문구가 뜨는데 어떻게 해결해야 하나요? 또한 시스템에서, 다른 주기 봉차트를 참조로 걸어두려고 하는데, 하는 방법을 잘 모르겠습니다.. 감사합니다
프로필 이미지
이대규
2017-03-14
2428
글번호 224138

파워풀맨 님에 의해서 삭제되었습니다.

프로필 이미지
파워풀맨
2017-03-12
0
글번호 224137
답변완료

옵션매매 문의드립니다.

항상 도움 주셔서 감사히 공부하고 있습니다. 선물신호로 옵션매수후 청산하고 있는데. 한계약일 경우에는 문제가 전혀 없는데 피라미딩으로 하나의 차트에서 2계약 이상 매수할 때, 행사가가 다른 옵션 매수후 청산할 경우에는 마지막 행사가로만 청산이 되어 계좌에 매도계약이 남게 되어 질문드립니다. 예를 들면 P 272.5 1계약 매수후 P270.0 1계약 추가 매수후 청산이 될 때 P270.0 2계약 매도 신호가 나옵니다. 결국 완전청산이 되지않고 P 272.5 1계약 매수 , P272.0 1계약 매도 상태가 됩니다. 완전한 청산을 위해서 스팟식을 어떻게 바꾸면 좋을 지 조언 부탁 드립니다. var ChartName = "pyramiding"; var d = new Date(); var OpPrice = 1.00; //진입가격대, OpPrice에 가장 근접한 값 주문 var LowPrice = 0.40; //최소가격대 이상일때로 제한하는 변수 var HighPrice = 9.90; //최대가격대 이하일때로 제한하는 변수 var OrderGap = 0.30; //주문시 체결가격 설정(현재가 + OrderGap) var ForPrice; // 옵션값후보 var Delta; var MaxCall; // 콜을 여기에 저장 var MaxCallcode; // 콜의 코드를 여기에 저장 var MaxPut; var MaxPutcode; function Main_OnStart() { Delta = 100; for(var i = -5; i <= 5; i++) { ForPrice = Option.GetCurrent(0,i); // GetCurrent 0 은 콜 , 1은 풋 if ( Math.abs(ForPrice - OpPrice) <= Delta && LowPrice < ForPrice && ForPrice < HighPrice ) { Delta = Math.abs(ForPrice - OpPrice); MaxCallcode = Option.GetATMCallRecent(i); MaxCall = Option.GetCurrentByCode(MaxCallcode); } } Delta = 100; for(var i = -10; i <= 10; i++) { ForPrice = Option.GetCurrent(1,i); // GetCurrent 0 은 콜 , 1은 풋 if ( Math.abs(ForPrice - OpPrice) <= Delta && LowPrice < ForPrice && ForPrice < HighPrice ) { Delta = Math.abs(ForPrice - OpPrice); MaxPutcode = Option.GetATMPutRecent(i); MaxPut = Option.GetCurrentByCode(MaxPutcode); } } Main.MessageLog("<< "+ChartName+" >> 콜 : "+MaxCall+" ("+MaxCallcode+") , 풋 : "+MaxPut+" ("+MaxPutcode+") ----- 구동시각 "+d.getHours()+":"+d.getMinutes()+":"+d.getSeconds()+" , 잔존일 "+Option.GetRemainDays(0,0)+"일"); } //////////////////////////////////////////////////////// 신호 뜰때 매매 /////////////////////////////////////////// function Chart1_OnRiseSignal(Signal) { var EntryVol = Signal.count; // 선물신호 수량 d = new Date(); var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); if ( HHMMSS >= 90001 ) { ////////////////////////////////////////////// if (Signal.signalKind == 1) // Call 매수 { Delta = 100; for(var i = -5; i <= 5; i++) { ForPrice = Option.GetCurrent(0,i); // GetCurrent 0 은 콜 , 1은 풋 if ( Math.abs(ForPrice - OpPrice) <= Delta && LowPrice < ForPrice && ForPrice < HighPrice ) { Delta = Math.abs(ForPrice - OpPrice); MaxCallcode = Option.GetATMCallRecent(i); MaxCall = Option.GetCurrentByCode(MaxCallcode); } } OrderPrice = parseInt((MaxCall+OrderGap)*100)/100; //부동소수점 오류방지 ACC.OrderBuy(MaxCallcode, EntryVol, OrderPrice, 0); //괄호 의미는 (코드, 수량, 가격, 지정가) Main.MessageLog("("+d.getHours()+":"+d.getMinutes()+":"+d.getSeconds()+" ☞ "+ChartName+" 콜 매수진입) 종목명:"+MaxCallcode+", 수량:"+EntryVol+", 현재가:"+MaxCall+", 주문가:"+OrderPrice +" CCC"); } ////////////////////////////////////////////// if (Signal.signalKind == 2) // Call 청산 { ExitPrice = Option.GetCurrentByCode(MaxCallcode); OrderPrice = parseInt((ExitPrice - OrderGap)*100)/100; //부동소수점 오류방지 ACC.OrderSell(MaxCallcode, EntryVol, OrderPrice, 0); Main.MessageLog("("+d.getHours()+":"+d.getMinutes()+":"+d.getSeconds()+" ☞ "+ChartName+" 콜 청산주문) 종목명:"+MaxCallcode+", 수량:"+EntryVol+", 현재가:"+ExitPrice+", 주문가:"+OrderPrice+ " c"); } ///////////////////////////////////////////// if (Signal.signalKind == 3) // Put 매수 { Delta = 100; for(var i = -10; i <= 10; i++) { ForPrice = Option.GetCurrent(1,i); // GetCurrent 0 은 콜 , 1은 풋 if ( Math.abs(ForPrice - OpPrice) <= Delta && LowPrice < ForPrice && ForPrice < HighPrice ) { Delta = Math.abs(ForPrice - OpPrice); MaxPutcode = Option.GetATMPutRecent(i); MaxPut = Option.GetCurrentByCode(MaxPutcode); } } OrderPrice = parseInt((MaxPut+OrderGap)*100)/100; //부동소수점 오류방지 ACC.OrderBuy(MaxPutcode, EntryVol, OrderPrice , 0); Main.MessageLog("("+d.getHours()+":"+d.getMinutes()+":"+d.getSeconds()+" ☞ "+ChartName+" 풋 매수진입) 종목명:"+MaxPutcode+", 수량:"+EntryVol+", 현재가:"+MaxPut+", 주문가:"+OrderPrice +" PPP"); } ///////////////////////////////////////////// if (Signal.signalKind == 4) // Put 청산 { ExitPrice = Option.GetCurrentByCode(MaxPutcode); OrderPrice = parseInt((ExitPrice - OrderGap)*100)/100; //부동소수점 오류방지 ACC.OrderSell(MaxPutcode, EntryVol, OrderPrice, 0); Main.MessageLog("("+d.getHours()+":"+d.getMinutes()+":"+d.getSeconds()+" ☞ "+ChartName+" 풋 청산주문) 종목명:"+MaxPutcode+", 수량:"+ EntryVol+", 현재가:"+ExitPrice+", 주문가:"+OrderPrice+" p" ); } } }
프로필 이미지
피니트
2017-03-03
2525
글번호 224136

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

프로필 이미지
한바다
2017-03-03
0
글번호 224135