커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내

안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
프로필 이미지
예스스탁
2026-02-27
4659
글번호 230811
지표
답변완료

수식문의(수평선)

늘 감사합니다. data3에서 당일 임의의 시간을 지정하면 완성봉의 종가로부터(그 시간부터) 수평선이 그려지게 하는 수식입니다. 예를들면 09시25분. 10시08분, 12시34분, 13시33분 등등 10개 정도입니다. 10개 정도의 시간은 임의로 지정하게 합니다. 감사합니다.
프로필 이미지
상암동
2016-03-16
163
글번호 96326
지표
답변완료

이격도

* 항상 많은 도움에 정말 고맙습니다. ^.^ <요청사항> 수식에 문제 있나요? 함 봐주십시요... input : Period(100); var : DParity(0); DParity = Disparity(Period); If countif(DParity <= 90, 400) >= 1 Then find(1); * 목적: 3분봉 차트 에서 400봉 이내 이격도 90이하가 한번 이라도 발생한종목 추출 * "검증이 완료" 나오는데...데이타가 아무것도 안나오네요......???
프로필 이미지
요타
2016-03-17
154
글번호 96325
종목검색
답변완료

확정신호후에 변동

아래와같이 수식작성하엿더니 예비신호는 발생안하는데요. 확정신호발생한후에도 봉이완성이안되고 가령1분봉이면 중간에 신호 확정되어도 나머지시간동안 계속 위아래로 움직이다가 시간이되면 다음봉으로 넘어가네요. 예비신호없이 봉이굳으면 신호발생되게는 안되나요? 예스스탁입니다. 봉미완성시에 조건판단해 신호발생하게는 할수 없습니다. 봉완성시에 신호가 발생하며 예비신호가 발생하지 않는 타입으로 지정해 드립니다. Input : Period(12), Period1(5), Period2(5); var : StoK(0),StoD(0); StoK = StochasticsK(Period,Period1); StoD = StochasticsD(Period,Period1,Period2); if crossup(stok,stod) Then buy("b",AtMarket); if CrossDown(stok,stod) Then sell("s",AtMarket);
프로필 이미지
수원
2016-03-16
115
글번호 96324
시스템
답변완료

안녕하세요

예스식으로 바꿔주세요 감사합니다 예스트레이더 식으로 변환 부탁드립니다 #property indicator_chart_window #property indicator_buffers 6 #property indicator_color1 RoyalBlue #property indicator_color2 Red #property indicator_color3 RoyalBlue #property indicator_color4 Red #property indicator_color5 RoyalBlue #property indicator_color6 Red //---- input parameters extern int Length=20; // Bollinger Bands Period extern int Deviation=2; // Deviation was 2 extern double MoneyRisk=1.00; // Offset Factor extern int Signal=1; // Display signals mode: 1-Signals & Stops; 0-only Stops; 2-only Signals; extern int Line=1; // Display line mode: 0-no,1-yes extern int Nbars=1000; double mykijun; double mytenkan; int ii; //---- indicator buffers double UpTrendBuffer[]; double DownTrendBuffer[]; double UpTrendSignal[]; double DownTrendSignal[]; double UpTrendLine[]; double DownTrendLine[]; extern bool SoundON=true; bool TurnedUp = false; bool TurnedDown = false; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { ObjectCreate("mywebsite",OBJ_LABEL,0,0,0); string short_name; //---- indicator line SetIndexBuffer(0,UpTrendBuffer); SetIndexBuffer(1,DownTrendBuffer); SetIndexBuffer(2,UpTrendSignal); SetIndexBuffer(3,DownTrendSignal); SetIndexBuffer(4,UpTrendLine); SetIndexBuffer(5,DownTrendLine); SetIndexStyle(0,DRAW_ARROW,0,1); SetIndexStyle(1,DRAW_ARROW,0,1); SetIndexStyle(2,DRAW_ARROW,0,1); SetIndexStyle(3,DRAW_ARROW,0,1); SetIndexStyle(4,DRAW_LINE); SetIndexStyle(5,DRAW_LINE); SetIndexArrow(0,159); SetIndexArrow(1,159); SetIndexArrow(2,108); SetIndexArrow(3,108); IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)); //---- name for DataWindow and indicator subwindow label short_name="BBands Stop("+Length+","+Deviation+")"; IndicatorShortName(short_name); SetIndexLabel(0,"UpTrend Stop"); SetIndexLabel(1,"DownTrend Stop"); SetIndexLabel(2,"UpTrend Signal"); SetIndexLabel(3,"DownTrend Signal"); SetIndexLabel(4,"UpTrend Line"); SetIndexLabel(5,"DownTrend Line"); //---- SetIndexDrawBegin(0,Length); SetIndexDrawBegin(1,Length); SetIndexDrawBegin(2,Length); SetIndexDrawBegin(3,Length); SetIndexDrawBegin(4,Length); SetIndexDrawBegin(5,Length); //---- return(0); } int deinit() { ObjectDelete("mywebsite"); } int start() { int i,shift,trend; double smax[25000],smin[25000],bsmax[25000],bsmin[25000]; for (shift=Nbars;shift>=0;shift--) { UpTrendBuffer[shift]=0; DownTrendBuffer[shift]=0; UpTrendSignal[shift]=0; DownTrendSignal[shift]=0; UpTrendLine[shift]=EMPTY_VALUE; DownTrendLine[shift]=EMPTY_VALUE; } for (shift=Nbars-Length-1;shift>=0;shift--) { smax[shift]=iBands(NULL,0,Length,Deviation,0,PRICE_CLOSE,MODE_UPPER,shift); smin[shift]=iBands(NULL,0,Length,Deviation,0,PRICE_CLOSE,MODE_LOWER,shift); if (Close[shift]>smax[shift+1]) trend=1; if (Close[shift]<smin[shift+1]) trend=-1; if(trend>0 && smin[shift]<smin[shift+1]) smin[shift]=smin[shift+1]; if(trend<0 && smax[shift]>smax[shift+1]) smax[shift]=smax[shift+1]; bsmax[shift]=smax[shift]+0.5*(MoneyRisk-1)*(smax[shift]-smin[shift]); bsmin[shift]=smin[shift]-0.5*(MoneyRisk-1)*(smax[shift]-smin[shift]); if(trend>0 && bsmin[shift]<bsmin[shift+1]) bsmin[shift]=bsmin[shift+1]; if(trend<0 && bsmax[shift]>bsmax[shift+1]) bsmax[shift]=bsmax[shift+1]; if (trend>0) { if (Signal>0 && UpTrendBuffer[shift+1]==-1.0) { UpTrendSignal[shift]=bsmin[shift]; UpTrendBuffer[shift]=bsmin[shift]; if(Line>0) UpTrendLine[shift]=bsmin[shift]; if (SoundON==true && shift==0 && !TurnedUp) { Alert("DodaCharts-BBands going Up on ",Symbol(),"-",Period()); TurnedUp = true; TurnedDown = false; } } else { UpTrendBuffer[shift]=bsmin[shift]; if(Line>0) UpTrendLine[shift]=bsmin[shift]; UpTrendSignal[shift]=-1; } if (Signal==2) UpTrendBuffer[shift]=0; DownTrendSignal[shift]=-1; DownTrendBuffer[shift]=-1.0; DownTrendLine[shift]=EMPTY_VALUE; } if (trend<0) { if (Signal>0 && DownTrendBuffer[shift+1]==-1.0) { DownTrendSignal[shift]=bsmax[shift]; DownTrendBuffer[shift]=bsmax[shift]; if(Line>0) DownTrendLine[shift]=bsmax[shift]; if (SoundON==true && shift==0 && !TurnedDown) { Alert("DodaCharts-BBands going Down on ",Symbol(),"-",Period()); TurnedDown = true; TurnedUp = false; } } else { DownTrendBuffer[shift]=bsmax[shift]; if(Line>0)DownTrendLine[shift]=bsmax[shift]; DownTrendSignal[shift]=-1; } if (Signal==2) DownTrendBuffer[shift]=0; UpTrendSignal[shift]=-1; UpTrendBuffer[shift]=-1.0; UpTrendLine[shift]=EMPTY_VALUE; } } ObjectSetText("mywebsite","Doda-Bollinger 1.0 | Powered by www.DodaCharts.com", 10, "Arial", Red); ObjectSet("mywebsite",OBJPROP_XDISTANCE,2); ObjectSet("mywebsite",OBJPROP_YDISTANCE,15); ObjectSet("mywebsite", OBJPROP_CORNER, 0); return(0); }
프로필 이미지
울버린777
2016-03-16
191
글번호 96323
시스템
답변완료

부탁드립니다.

이동평균선 60선의 기울기가 옆으로 횡보시 매매중단 시스템식 부탁드립니다. 감사합니다.
프로필 이미지
11
2016-03-16
117
글번호 96322
시스템
답변완료

수정 부탁드립니다.

안녕하세요. 수식 수정좀 부탁드립니다. 엇그제 타회사 스토캐스틱과 값이 달라서 문의를 드렸는데요. 해당 증권사로 문의하였더니 "문의하신 Stochastic Slowk()의 수식입니다. Slow %K = {(종가-저가)의 N기간 합/(고가-저가)의 N기간 합}*100 Slow %D = SLOW %K의 N기간 단순평균 " 이렇게 답변을 받았습니다. 위 스토캐스틱의 지표를 이용해서 아래 수식을 수정좀 해주세요. input : ndate(20151105); var1 = ma(C,60); var2 = StochasticsK(5,3); var3 = StochasticsK(10,6); if sdate == ndate and c>var1 and var2>var2[1] and var3<75 and ma(m,3) >= 1000000000 Then Condition1 = true; if Condition1 == true then find(1); 그리고 위 새로운 스토캐스틱을 이용해서 StochasticsK(10,6) 을 지표에 적용해서 볼려면 어떻게 해야하나요?
프로필 이미지
강태공3
2016-03-16
133
글번호 96321
종목검색
답변완료

이전글 문의

아래글을 예스스팟에 적용해보니 조건충족과 상관없이 자동설정하면 바로 청산됩니다. 맨 아래 처음 수식(매수가 기준 청산)은 제대로 작동되는데, 재문의 글의 답변로직(바로 아래 로직, 시초가 기준 청산)은 옵션객체(option1)를 추가했는데도 자동 걸자마자 바로 청산됩니다. -> 스트립트 객체에서 option1 추가하고, 속성에서 주가지수옵션 지정했읍니다. 원래, 조건(10% 총익시 청산)이 되서 청산되야 하는데, 조건과 상관없이 자동주문 걸면 바로 청산돼 버립니다. 무엇이 에러가 있읍니까? ----------------------------------------------------- 안녕하세요 예스스탁입니다. 옵션종목의 시초가가 필요하므로 스크립트 객체화면에 옵션객체를 추가하셔야 합니다. function Main_OnStart() { Main.SetTimer(1,5000);//5초마다 타이머 동작 } function Main_OnTimer(nEventID) { if (nEventID == 1) { var num =Account1.GetTheNumberOfBalances(); var CallPL = 0; var PutPL = 0; //계좌잔고에서 매수포지션인 콜과 풋의 손익률 합산 for (var i = 0; i < num; i++) { //잔고리스트 순번으로 잔고를 셋팅 Account1.SetBalance(i); //콜이고 매수포지션이면 손익률 합산(시초가기준) if (Account1.Balance.code.substring(0,2) == "12" && Account1.Balance.position == 2) { CallPL = CallPL+(Account1.Balance.current - Option1.GetOpen(Account1.Balance.code))/Option1.GetOpen(Account1.Balance.code); } //풋이고 매수포지션이면 손익률 합산(시초가기준) if (Account1.Balance.code.substring(0,2) == "13" && Account1.Balance.position == 2) { PutPL = PutPL+(Account1.Balance.current - Option1.GetOpen(Account1.Balance.code))/Option1.GetOpen(Account1.Balance.code); } } //콜풋 매수포지션 손익률이 10% 이상이면 if (CallPL+PutPL >= 0) { //계좌 잔고의 콜/풋 매수포지션 모두 청산 for (var i = 0; i < num; i++) { //잔고리스트 순번으로 잔고를 셋팅 Account1.SetBalance(i); //콜이고 매수포지션이면 청산 if (Account1.Balance.code.substring(0,2) == "12" && Account1.Balance.position == 2) { Account1.OrderSell(Account1.Balance.code, Account1.Balance.count,0,1); } //풋이고 매수포지션이면 청산 if (Account1.Balance.code.substring(0,2) == "13" && Account1.Balance.position == 2) { Account1.OrderSell(Account1.Balance.code, Account1.Balance.count,0,1); } } } } } 즐거운 하루되세요 > 초록이 님이 쓴 글입니다. > 제목 : 추가 문의... > 아래글 답변에서 한가지 추가 문의합니다. 만약, 매수 보유중인 콜/풋의 손익을 합산할때, 각각의 매수가가 아닌, 당일 시초가(각각의 시초가)를 기준으로 +10% 청산 하려면 어떻게 해야 합니까? ================================================================= 안녕하세요 예스스탁입니다. 문의하신 내용은 예스랭귀지로 구현하시기는 어렵습니다. 예스랭귀지는 차트에 적용되어 신호가 발생하는데 차트의 주종목에만 신호가 발생하고 주문이 가능하며 다른 차트의 신호상태나 손익은 알수가 없습니다. 해당 내용은 스팟에서 구현해 보셔야 합니다. 아래는 수식 가이드입니다. 아래 내용 참고하셔서 수정보완해 사용하시기 바랍니다. 5초마다 잔고의 매수로 보유하고 있는 콜과 풋의 손익률을 합산해 10%이상이면 계좌의 매수포지션으로 보유중인 전체 콜과 풋을 모두 청산합니다. function Main_OnStart() { Main.SetTimer(1,5000);//5초마다 타이머 동작 } function Main_OnTimer(nEventID) { if (nEventID == 1) { var num =Account1.GetTheNumberOfBalances(); var CallPL = 0; var PutPL = 0; //계좌잔고에서 매수포지션인 콜과 풋의 손익률 합산 for (var i = 0; i < num; i++) { //잔고리스트 순번으로 잔고를 셋팅 Account1.SetBalance(i); //콜이고 매수포지션이면 손익률 합산 if (Account1.Balance.code.substring(0,2) == "12" && Account1.Balance.position == 2) { CallPL = CallPL+(Account1.Balance.current - Account1.Balance.avgUnitCost)/Account1.Balance.avgUnitCost; } //풋이고 매수포지션이면 손익률 합산 if (Account1.Balance.code.substring(0,2) == "13" && Account1.Balance.position == 2) { PutPL = PutPL+(Account1.Balance.current - Account1.Balance.avgUnitCost)/Account1.Balance.avgUnitCost; } } //콜풋 매수포지션 손익률이 10% 이상이면 if (CallPL+PutPL >= 0) { //계좌 잔고의 콜/풋 매수포지션 모두 청산 for (var i = 0; i < num; i++) { //잔고리스트 순번으로 잔고를 셋팅 Account1.SetBalance(i); //콜이고 매수포지션이면 청산 if (Account1.Balance.code.substring(0,2) == "12" && Account1.Balance.position == 2) { Account1.OrderSell(Account1.Balance.code, Account1.Balance.count,0,1); } //풋이고 매수포지션이면 청산 if (Account1.Balance.code.substring(0,2) == "13" && Account1.Balance.position == 2) { Account1.OrderSell(Account1.Balance.code, Account1.Balance.count,0,1); } } } } } 즐거운 하루되세요 > 초록이 님이 쓴 글입니다. > 제목 : 시스템 문의.. > 풋옵션과 콜옵션을 조합하여 하고 있읍니다. 합성법인 스트랭글, 스트래들 전략을 쓰고 있는데, 아래와 같이 문의합니다. 스트래들로 프리미엄이 비슷한 콜,풋옵션을 둘다 매수했을때, 양측의 손익을 합한 총 손익이 +10% 가 날때, 두 포지션 모두 청산하여 수익을 지키고 싶은데, 로직 가능합니까? 우리트레이더의 stoploss 기능은 한 포지션만 걸수 있어 콜, 풋 포지션을 따로 따로 걸어야 하기 때문에, 총 수익과 연동할수가 없읍니다. (예컨대 콜이 +10% 수익나서 청산되도, 그때, 풋이 -10% 나면 수익 제로입니다) 콜과 풋의 손익을 합산해서 총손익이 +10% 날때 콜,풋을 모두 청산하여 수익을 지키고 싶읍니다) 가능합니까? 예스스팟까지 하여 검토 부탁합니다.
프로필 이미지
초록이
2016-03-16
120
글번호 96320
시스템
답변완료

문의 드립니다

수고 많으십니다. 매수 신호발생봉 고점 저점 수평선 (레드) 매도 신호발생봉 고점 저점 수평선 (블루) 그리고 혹시 위의 신호발생봉의 고점과 저점사이에 (노랑)색상을 넣을수 있는지요? 부탁드립니다. 감사합니다.
프로필 이미지
회원
2016-03-17
128
글번호 96319
시스템
답변완료

수식문의드립니다...

진입시 진입위치에 시가종가선처럼 수평선을 넣고 손절과 수익지점에도 수평선을 넣고 싶은데 가능 할까요? 예를들어 20일선 돌파시 매수가 100.50 이고 손절100.10 익절101.50일때 매수가, 손절가, 익절가에 수평선이 매수시점에 그려지고 청산시점에 끊기는 수평선이 가능 할까요...?
프로필 이미지
고구미
2016-03-16
122
글번호 96318
시스템