커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

74455번 수식 수정 부탁드립니다

1. 전일하고 연속되는 파라볼릭 차트에서 양전환 캔들 포함 5캔들 10캔들 고가,저가를 표시 ->전일하고 연속되는 파라볼릭 차트에서 양전환 캔들 포함 5캔들째, 10캔들째 고가,저가 2. 당일부터 표시되는 파라볼릭 차트에서 양전환 캔들 포함 5캔들 10캔들 고가,저가를 표시 ->당일부터 표시되는 파라볼릭 차트에서 양전환 캔들 포함 5캔들째, 10캔들째 고가,저가 감사합니다
프로필 이미지
회원
2021-10-29
624
글번호 153229
지표
답변완료

부탁 드립니다.

항상 도움에 감사 드립니다. 틱봉용 수식으로 작성 해본 것입니다. 어딘가에 오류가 있어 보입니다. 수정 부탁 드립니다. 질문수식) input:p(10),sig(30); var1=obv(); var2=ma(var1,p); var3=var1-var2; var4=ma(var3,sig); 틱봉용 수식) input : ntime(6),P(60),sig(5); var : S1(0),D1(0),TM(0),TF(0),cnt(0),sum1(0),sum2(0); var : v2(0),v4(0),pre(0),C1(0),idx(0),vv(0); Array : v1[100](0),v3[100](0); if Bdate != Bdate[1] Then { S1 = TimeToMinutes(stime); D1 = sdate; idx = 0; } Else idx = idx+1; if D1 > 0 then { if sdate == D1 Then TM = TimeToMinutes(stime)-S1; Else TM = TimeToMinutes(stime)+1440-S1; TF = idx%ntime; if Bdate != bdate[1] or (TF < TF[1] and Bdate == Bdate[1]) Then { // idx = idx+1; C1 = C[1]; vv = 0; pre = v1[0][1]; For cnt = 1 to 99 { v1[cnt] = v1[cnt-1][1]; v3[cnt] = v3[cnt-1][1]; } } vv = vv + v; if C > C1 Then v1[0] = pre + vv; else if C < C1 Then v1[0] = pre - vv; else v1[0] = pre; if idx >= P then { sum1 = 0; For cnt = 0 to P-1 { sum1 = sum1+v1[cnt]; } v2 = sum1/p; v3[0] = v1[0]-v2; } if idx >= P+sig then { sum2 = 0; For cnt = 0 to sig-1 { sum2 = sum2+v3[cnt]; } v4 = sum2/sig; Plot1(v4); } } PlotBaseLine1(0);
프로필 이미지
yes
2021-10-28
673
글번호 153226
지표
답변완료

문의 드립니다.~~~~

항상 감사합니다. 건강하세요~~~ input : StartTime1(070000),EndTime1(100000); input : StartTime2(110000),EndTime2(120000); input : StartTime3(130000),EndTime3(140000); input : StartTime4(010000),EndTime4(030000); input : ntime(100000),n(10); <질문1> 전체시간 조건 중 input : StartTime1(070000),EndTime1(100000); input : StartTime2(110000),EndTime2(120000); 위 조건만 적용하고 전체조건중 아래 조건을 삭제하지 않고 적용되지 않게 하려면 어떻게 시간을 설정해야 하나요? input : StartTime3(130000),EndTime3(140000); input : StartTime4(010000),EndTime4(030000); <질문2> ntime(100000) 의 의미는 무엇인가요? 감사합니다~~~
프로필 이미지
예스요
2021-10-28
799
글번호 153219
시스템
답변완료

키움지표예스로 변경부탁드립니다

질문1 키움수식 기간=14 ====================== M1=Max(C,O); M2=Min(C,O); M3=Highest(M1,기간); M4=Lowest(M2,기간); M5=(M3+M4)/2; B=valuewhen(1, M5<M5(1), C); ma(B,35) ======================== 위수식을 예스로 변경하면 다음과같습니다 input:기간(14); var:M1(0),M2(0),M3(0),M4(0),M5(0),M6(0); M1=Max(C,O); M2=Min(C,O); M3=Highest(M1,기간); M4=Lowest(M2,기간); M5=(M3+M4)/2; if M5<M5[1] Then Value1=C; M6=ma(Value1,35); Plot1(M6); 위와같이하면 키움과예스의 수치가 정확히 일치를 합니다만 M1=Max(C,O); M2=Min(C,O); M3=Highest(M1,기간); M4=Lowest(M2,기간); M5=(M3+M4)/2; B=valuewhen(1, M5<M5(1), C); D=ma(B,35); M11=Max(C,O); M12=Min(C,O); M13=Highest(M11,기간); M14=Lowest(M12,기간); M15=(M13+M14)/2; B1=valuewhen(1, M15<M15(1), C); D1=ma(B1,35); E=(D+D1)/2: 이렇게 키움수식이 되었을시에 예스로변경하면 input:기간(14); var:M1(0),M2(0),M3(0),M4(0),M5(0),M6(0); M1=Max(C,O); M2=Min(C,O); M3=Highest(M1,기간); M4=Lowest(M2,기간); M5=(M3+M4)/2; if M5>M5[1] Then Value1=C; M6=ma(Value1,35); var:M11(0),M12(0),M13(0),M14(0),M15(0),M16(0),M17(0); M11=Max(C,O); M12=Min(C,O); M13=Highest(M11,기간); M14=Lowest(M12,기간); M15=(M13+M14)/2; if M15<M15[1] Then Value2=C; M16=ma(Value2,35); M17=(M6+M16)/2; Plot1(M17); 각각하나씩은 수치가 같은데요 두개의식을 합치면 수치가 달라집니다 질문2 또한 종목검색으로 만들시 input:기간(14); var:M1(0),M2(0),M3(0),M4(0),M5(0),M6(0); M1=Max(C,O); M2=Min(C,O); M3=Highest(M1,기간); M4=Lowest(M2,기간); M5=(M3+M4)/2; if M5>M5[1] Then Value1=C; M6=ma(Value1,35); var:M11(0),M12(0),M13(0),M14(0),M15(0),M16(0),M17(0); M11=Max(C,O); M12=Min(C,O); M13=Highest(M11,기간); M14=Lowest(M12,기간); M15=(M13+M14)/2; if M15<M15[1] Then Value2=C; M16=ma(Value2,35); M17=(M6+M16)/2; if crossup(C,M17) then find(1); 분명히 종목들이 존재를 하는데도 검색이 안됩니다 열흘이상 고민해봐도 해답을 모르겠습니다 도움이 절실합니다 부탁드리겠습니다 감사합니다 수고하세요
프로필 이미지
나고수야
2021-10-28
1019
글번호 153217
지표
답변완료

영웅문 수식을 변환하고 싶습니다.

안녕하세요? 영웅문에서 시스템 신호로 사용을 했는데요. 예스트레이더로 이전하고 싶습니다. 수식변환 도움 주실수 있나요? <<<매수진입/매도청산>>> R=highest(H,X); S=lowest(L,X); A=countsince(time>=T1,crossUp(c,R(1)) or crossDown(c,S(1))); crossUp(A,0.5) and C>R(1) <<<매수청산/매도진입>>> R=highest(H,X); S=lowest(L,X); crossDOWN(C,S(1)) <<<변수>>> T1 = 15 X = 30 <<<매매시간>>> 오전 9시 ~ 익일새벽 2시 <<<하루목표 수익 및 손절>>> 목표수익 100틱(나스닥) 목표손절 100틱(나스닥)
프로필 이미지
jyck
2021-10-28
957
글번호 153212
시스템
답변완료

수식문의 드립니다.

전일종가는 dayclose()로 나타내는데 전일이평선은 어떻게 나타낼수 있나요? 예를 들어 전일종가때 20이평선은 어떻게 수식이 나오나요?
프로필 이미지
고구미
2021-10-28
678
글번호 153211
시스템

푸른물결 님에 의해서 삭제되었습니다.

프로필 이미지
푸른물결
2021-10-28
29
글번호 153210
지표
답변완료

문의 드립니다.

안녕하세요 키움 수식인데 변환좀 부탁드립니다. 수식1 aa=MACD(short,long); bb=if(aa(1)<=aa,1,-1); sum(bb) 수식2 aa=MACD(short,long); bb=if(aa(1)<=aa,1,-1); sum(bb) 수식3 aa=MACD(short,long); bb=if(aa(1)<=aa,1,-1); cc=sum(bb); if(cc(1)>=cc,cc,0) 수식4 0 지표조건 short 30 long 60 항상 도움주심에 감사드립니다.
프로필 이미지
로꼬로꼬
2021-10-28
760
글번호 153209
지표
답변완료

문의드립니다.

안녕하세요. 1분봉에서 일봉 이평선 가격을 기준으로 매수/매도하는 수식을 작성하려고 합니다. 거의 일봉으로만 거래를 하다보니 분봉 시스템에 익숙치 않아서 도움을 부탁드립니다. 시스템 제작에 많은 도움을 주셔서 항상 감사드립니다. 전략은 개장 후 시가가 밀리면 1% 하락 시마다 분할 매수(현재는 4회만 표시하였으나 횟수 제한 없이 매수할 예정)한 후 평균가 대비 5% 상승 시 매도하는 전략입니다. 단 일봉 이평선(5,10,20,60) 중 현재가격 바로 아래에 있는 일봉이평선을 기준으로 삼아서 그 이평선 도달 전까지만 매수하고 이평선을 이탈(-2%)하면 손절할 예정이며, 일 1회만 거래하려고 합니다. 아래 수식으로 작성을 해봤는데 수정 부탁드립니다. 좋은 하루 보내세요. input : p5(0), p10(0),p20(20), p60(60),p120(120),p240(240); input : dayperiod5(5), dayperiod10(10), dayperiod20(20),dayperiod60(60); var : cond1(False), cond11(False), cond12(False); var : ma5(0),ma10(0),ma20(0),ma60(0),ma120(0),ma240(0), 이평(0), count(0); var : cnt(0),sum5(0), sum10(0), sum20(0), sum60(0), daymav(0), daymav5(0), daymav10(0), daymav20(0), daymav60(0); var : min1(0), min2(0), min3(0), min4(0); if Bdate != Bdate[1] Then { Cond1 = False; #당일조건만족여부 count = 0; } #일봉 이동평균계산 sum5 = 0; For cnt = 0 to dayPeriod5-1 { sum5 = sum5 + DayClose(cnt); } daymav5 = sum5/dayPeriod5; // 현재 20일선 sum10 = 0; For cnt = 0 to dayPeriod10-1 { sum10 = sum10 + DayClose(cnt); } daymav10 = sum10/dayPeriod10; // 현재 20일선 sum20 = 0; For cnt = 0 to dayPeriod20-1 { sum20 = sum20 + DayClose(cnt); } daymav20 = sum20/dayPeriod20; // 현재 20일선 sum60 = 0; For cnt = 0 to dayPeriod60-1 { sum60 = sum60 + DayClose(cnt); } daymav60 = sum60/dayPeriod60; // 현재 20일선 // 분봉 종가와 일봉이평선과의 간격 확인 min1 = nthminlist(1,C-daymav5,C-daymav10,C-daymav20,C-daymav60); min2 = nthminlist(2,C-daymav5,C-daymav10,C-daymav20,C-daymav60); min3 = nthminlist(3,C-daymav5,C-daymav10,C-daymav20,C-daymav60); min4 = nthminlist(4,C-daymav5,C-daymav10,C-daymav20,C-daymav60); // 종가가 모든 이평선보다 위에 있으면 daymav를 제일 높은 가격의 이평선선택 if min1>0 Then daymav = NthMaxList(1, daymav5, daymav10, daymav20, daymav60); // 1개의 이평선이 종가보다 높은 경우, 2번재 높은 가격의 이평선을 선택 Else if min2 > 0 Then daymav = NthMaxList(2, daymav5, daymav10, daymav20, daymav60); Else if min3 > 0 Then daymav = NthMaxList(3, daymav5, daymav10, daymav20, daymav60); Else if min4 > 0 Then daymav = NthMaxList(4, daymav5, daymav10, daymav20, daymav60); Else daymav = 0; If cond1 == False and MarketPosition == 0 and C < DayOpen(0) and C>daymav and count< 1 Then { Buy("b1", AtLimit, DayOpen(0)*0.99,1); } If cond1 == False and MarketPosition == 1 and C < DayOpen(0) and C>daymav and count< 2 Then { Buy("b2", AtLimit, DayOpen(0)*0.98,1); } If cond1 == False and MarketPosition == 1 and C < DayOpen(0) and C>daymav and count< 3 Then { Buy("b3", AtLimit, DayOpen(0)*0.97,1); } If cond1 == False and MarketPosition == 1 and C < DayOpen(0) and C>daymav and count< 4 Then { Buy("b4", AtLimit, DayOpen(0)*0.96,1); } If MarketPosition == 1 then { // 이평선 2% 이탈 시 손절 ExitLong("bx1",AtLimit,daymav*0.98,"",1,2); //익절(5%) ExitLong("bx11",AtLimit,AvgEntryPrice*1.05,"",1,2); } If CurrentEntries<CurrentEntries[1] Then count = count + 1;
프로필 이미지
깜피
2021-10-27
694
글번호 153208
시스템