커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

부탁 드립니다.

항상 도움 주셔서 감사 합니다. 그림과 같이 수식1을 대륙별 기준 수평선을 계단식(흑색선과 같이)으로 그을수 있겠는지요? *수식2는 참고용 지표 입니다. 미리 감사드립니다. 수식1) input:Sstime(080000),Eetime(070000); If stime == Sstime or (stime > Sstime and stime[1] < Sstime) Then { Var1 = 0; Var2 = Var1[1]; } if (stime >= Sstime or stime <= Eetime) and C>O Then var3 = Var3+v; if (stime >= Sstime or stime <= Eetime) and C<O Then var4 = var4+v; var1=var3-var4; plot1(Var1,"지표"); plot2(Var2,"이전지표_수평선"); 수식2) ***참고지표**** input:p14(14); input : 아시아시작(08000),아시아종료(15300); input : 유럽시작(153000),유럽종료(213000); input : 미국시작(21300),미국종료(07000); var : Tcond1(false),Tcond2(false),Tcond3(false); var : V1(0),V2(0),V3(0); Var1 =ma( rsi(p14),5); If stime == 아시아시작 or (stime > 아시아시작 and stime[1] < 아시아시작) Then { Tcond1 = true; V1 = Var1; } If stime == 아시아종료 or (stime > 아시아종료 and stime[1] < 아시아종료) Then { Tcond1 = false; } If stime == 유럽시작 or (stime > 유럽시작 and stime[1] < 유럽시작) Then { Tcond2 = true; V2 = Var1; } If stime == 유럽종료 or (stime > 유럽종료 and stime[1] < 유럽종료) Then { Tcond2 = false; } If stime == 미국시작 or (stime > 미국시작 and stime[1] < 미국시작) Then { Tcond3 = true; V3 = Var1; } If stime == 미국종료 or (stime > 미국종료 and stime[1] < 미국종료) Then { Tcond3 = false; } plot1(var1,"RSI");//속성에서 그래프종류는 선그래프 if Tcond1 == true Then plot2(V1,"아시아기준");//속성에서 그래프종류는 일자그래프 if Tcond2 == true Then plot3(V2,"유럽기준");//속성에서 그래프종류는 일자그래프 if Tcond3 == true Then plot4(V3,"미국기준");//속성에서 그래프종류는 일자그래프 PlotBaseLine1(30,"30"); plotbaseline2(50,"50"); PlotBaseLine3(70,"70");
프로필 이미지
yes
2015-11-17
236
글번호 92488
지표
답변완료

수식문의 드립니다

안녕하세요. 질문이 있어서 글 올립니다. 1.현재로부터 몇봉전 시간을 알고 싶은데 stime[xx] 이런식으로 하면 안되는데 어떻게 하면 알수 있나요? 2.아래 지표가 검증은 되는데 실행시키면 컴이 다운됩니다.어디가 잘못되었을나요? =========================================================== Input : MarketCloseTime(150500), StartIndex(120),Period(300); var : cnt(0), curFtr(0),MaxFtr(0), MinFtr(0),Upftr(0), Downftr(0),period2(0); curFtr=0; MaxFtr = 0; MinFtr = 0; if dayindex > StartIndex and sTime <= (MarketCloseTime-5500) Then { if dayindex > (StartIndex+period) Then { For cnt=0 to period-1 { Var5=data1(h)-data1(h[cnt]); Var6=data1(L)-data1(L[cnt]); If var5 > MaxFtr Then MaxFtr=Var5; If Var6 < MinFtr Then MinFtr=Var6; } } else { For cnt=0 to dayindex-StartIndex { Var5=data1(h)-data1(h[cnt]); Var6=data1(L)-data1(L[cnt]); If var5 > MaxFtr Then MaxFtr=Var5; If Var6 < MinFtr Then MinFtr=Var6; } } } UpFtr=CurFtr-MinFtr; Downftr=MaxFtr-CurFtr; Var2=Upftr+Downftr; Plot1(-var2, "MinMaxFtr"); =============================================================== 수고하세요
프로필 이미지
청계천꼼장어
2015-11-17
167
글번호 92485
지표
답변완료

45033번 글에 대한 재문의

감사합니다. 큰 도움이 되었습니다. 그런데, 2015년 6월 15일 부터인, '상한가가 30퍼센트로 확대되었을 때 이후' 부터의 데이터만 얻고 싶다면 어떻게 해야 하나요? > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 문의드립니다-2 > 안녕하세요 예스스탁입니다. input : N(3); var : 상한가(0), UpLimit(0); var : up1(0), up2(0), up3(0), up4(0), up5(0),up6(0),Up7(0); if date >= 19981207 then { if date < 20050328 && CodeCategory() == 2 then UpLimit = (BP[0] * 1.12); Else if date >= 20050328 and date < 20150615 Then UpLimit = (BP[0] * 1.15); Else UpLimit = (BP[0] * 1.30); if CodeCategory() == 2 then { if date >= 20030721 then { up1 = int(UpLimit/100+0.00001)*100; up2 = int(UpLimit/100+0.00001)*100; up3 = int(UpLimit/100+0.00001)*100; up4 = int(UpLimit/50+0.00001)*50; up5 = int(UpLimit/10+0.00001)*10; up6 = int(UpLimit/5+0.00001)*5; up7 = int(UpLimit/1+0.00001)*1; } else { up1 = int(UpLimit/1000+0.00001)*1000; up2 = int(UpLimit/500+0.00001)*500; up3 = int(UpLimit/100+0.00001)*100; up4 = int(UpLimit/50+0.00001)*50; up5 = int(UpLimit/10+0.00001)*10; up6 = int(UpLimit/10+0.00001)*10; up7 = int(UpLimit/1+0.00001)*1; } } Else { up1 = int(UpLimit/1000+0.00001)*1000; up2 = int(UpLimit/500+0.00001)*500; up3 = int(UpLimit/100+0.00001)*100; up4 = int(UpLimit/50+0.00001)*50; up5 = int(UpLimit/10+0.00001)*10; up6 = int(UpLimit/5+0.00001)*5; up7 = int(UpLimit/1+0.00001)*1; } if CodeCategory() == 1 || CodeCategory() == 2 then { if sdate < 20101004 Then{ If BP >= 500000 Then 상한가 = up1; Else If BP >= 100000 Then 상한가 = iff(up2>=500000, up1, up2); Else If BP >= 50000 Then 상한가 = iff(up3>=100000, up2, up3); Else If BP >= 10000 Then 상한가 = iff(up4>=50000, up3, up4); Else If BP >= 5000 Then 상한가 = iff(up5>=10000, up4, up5); Else If BP >= 1000 Then 상한가 = iff(up5>=5000, up5, up6); Else 상한가 = iff(up6>=1000, up6, up6); } Else{ If BP >= 500000 Then 상한가 = up1; Else If BP >= 100000 Then 상한가 = iff(up2>=500000, up1, up2); Else If BP >= 50000 Then 상한가 = iff(up3>=100000, up2, up3); Else If BP >= 10000 Then 상한가 = iff(up4>=50000, up3, up4); Else If BP >= 5000 Then 상한가 = iff(up5>=10000, up4, up5); Else If BP >= 1000 Then 상한가 = iff(up5>=5000, up5, up6); Else 상한가 = iff(up6>=1000, up6, up7); } } else if CodeCategory() == 8 || CodeCategory() == 9 then { // ETF 상한가 = up6; } } upLimit[0] = 상한가; if date != date[1] Then{ for cnt = 1 to 19{ upLimit[cnt] = upLimit[cnt-1][1]; } } if upLimit[n] > 0 and DayClose(N) >= DayClose(N+1)*1.15 and DayHigh(N) < upLimit[n] Then find(1); 즐거운 하루되세요 > rayleigh 님이 쓴 글입니다. > 제목 : 문의드립니다-2 > N+1일 전 종가대비 N일의 종가가 15퍼센트이상 오른 종목중, '상한가가 아닌' 종목을 찾고 싶습니다. '상한가가 아닌' 종목을 찾는게 굉장히 복잡해보이는데, 왜냐하면 가격에 따라 호가단위가 달라지기 때문입니다. 저는 50만원 미만 종목만 거래할 것이라는 것도 혹시 도움이 &#46124;으면 합니다. 감사합니다.
프로필 이미지
회원
2015-11-17
167
글번호 92484
종목검색
답변완료

45031번 글에 대한 재문의

수고 많으십니다. 수식 중에 이해가 안되는 부분이 있어서 그 부분에 이해되지 않는 내용을 적어보겠습니다. 1. input : N(2); var : cnt(0); Array : V1[20](0),V2[20](0),V3[20](0); if date != date[1] date가 date[1]과 같지 않다는게 무슨 뜻인지 모르겠습니다. 그리고 이렇게 해서 왜 V1,V2,V3에 전일 값이 계속해서 저장되는지 모르겠습니다. Then{ V1[0] = 0; V2[0] = 0; V3[0] = m; for cnt = 1 to 19{ V1[cnt] = V1[cnt-1][1]; V2[cnt] = V2[cnt-1][1]; V3[cnt] = V3[cnt-1][1]; } } V1에는 14시50분의 가격, V2에는 15시의 거래대금, V3에는 09시의 거래대금을 저장하시는 것 같습니다. 그런데 위에 식을 보면 V1에는 '가격'과 14시 50분이라는 '시간'에 대한 지정이 없는 것 같아서, V1에 어떻게 14시 50분의 가격이 저장되는지 이해가 가지 않습니다. V2와 V3도 마찬가지로 어떻게 15시의 거래대금, 09시의 거래대금이 저장되는 건지 이해가 가지 않습니다. 궁금증을 풀어주시면 감사하겠습니다. if stime == 144500 Then V1[0] = C; if stime == 150000 Then V2[0] = m; if V1[N] > 0 Then { var1 = (V1[N]-DayClose(N+1))/DayClose(N+1)*100; if var1 >= 0.15 Then find(var2[N]); } plot1(V1[n],"첫째"); plot2(V2[n],"둘째"); plot3(V3[n],"셋째");
프로필 이미지
회원
2015-11-17
150
글번호 92483
종목검색
답변완료

시스템매매의 정지

당일 중에 진입 및 청산이 3 회이상인 경우는 마지막 3 번째의 청산후 당일 중에는 더이상 진입 및 청산의 단계가 진행이 되지 않도록 시스템 매매가 정지 되도록 하고, 다음(익일) 영업시간부터 시스템의 작동이 다시 시작 할 수 있도록 하는 수식을 부탁 합니다.
프로필 이미지
너무조아
2015-11-17
146
글번호 92481
시스템

너무조아 님에 의해서 삭제되었습니다.

프로필 이미지
너무조아
2015-11-17
2
글번호 92480
시스템
답변완료

문의드립니다.

안녕하세요 항상 도움주심에 감사드립니다. 옵션가격을 이동평균하고 있는데 만기가 지나면 새로 갱신해서 구하고 싶습니다. 이전월물 가격에 영향을 받지 않도록 하는 수식코딩을 예시해 주시길 부탁합니다. 감사합니다.
프로필 이미지
봉자
2015-11-17
150
글번호 92478
지표
답변완료

부탁 드립니다.

안녕하세요. 지난번에 문의한 내용이 제대로 설명이 되지 않은 것 같아서 조건을 다시 적어봤습니다. 부탁 드립니다. 1. 당일 거래량으로만 계산한 OBV 10, 20 이동평균선 부탁 드립니다. 2. 10시 이후 진폭이 40틱 이상 60틱 이하일 때 큰 박스(30틱) 이내의 움직임 안에서(시간을 정해줘야 하면 70분으로 해주세요) 작은 박스(20틱) 이내의 횡보가 지속될 때 작은 박스의 중심을 기준으로 중심 아래에서 중심 위로 올라가는 열틱 이상의 움직임이 있거나 중심 위에서 중심 아래로 내려가는 열틱 이상의 움직임이 있으면 카운트1 작은 박스(20틱)의 highest나 lowest를 갱신하면 카운트 취소 첫 진입과 반대로 중심을 벗어나는 열틱의 움직임이 있으면 카운트2 다시 반대로 중심을 벗어나는 열틱의 움직임이 있으면 카운트3 이렇게 카운트 N을 만족하면 차트에 표시하는 지표식을 부탁 드립니다. 진입식은 10틱의 움직임이 3번 이상 나온 후, 큰 박스(30)틱의 고가나 저가를 돌파할 때 입니다. 큰 박스의 고가 돌파에 매수했으면 저가 이탈에 손절입니다. 감사합니다.
프로필 이미지
고운무지개
2015-11-17
205
글번호 92477
지표
답변완료

문의드립니다

아래식에서 5회 매매횟수로 제한 한다고 하면 일반적으로 기본 신호 위치랑 같게 나온다는 전제하에 프로핏타겟 로직을 넣고 싶습니다 그냥 일반 프로핏타겟 식을 넣어버리면 프로핏타겟이 나오자 마자 같은방향으로 진입해버리는 오류가 나오네요 var : entrycnt(0); if stime == 090000 or (stime > 090000 and stime[1] < 090000 ) Then Entrycnt = 0; if MarketPosition != 0 and MarketPosition != MarketPosition[1] Then entrycnt=entrycnt+1; Input : STO1(10); Input : Ent_N(5); Input : Period1(20); var : Stok(0); StoK = StochasticsK(Period1,1); if MarketPosition == 0 and entrycnt < Ent_N and StoK > 50+STO1 Then buy("B_En"); if MarketPosition == 1 and IsEntryName("B_En") == true and StoK < 50-STO1 Then exitlong("B_Ex"); if MarketPosition == 0 and entrycnt < Ent_N and StoK < 50-STO1 Then sell("S_En"); if MarketPosition == -1 and IsEntryName("S_En") == true and StoK > 50+STO1 Then ExitShort("S_Ex");
프로필 이미지
파인애플
2015-11-17
150
글번호 92476
시스템