커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

수식 확인 부탁 드립니다

아래 수식중 확인 부탁 드립니다. 1) var2 = data1(ma(ma(ma(C, Period2),Period2),Period2)); 삼각 가중 이평 수식이 맞습니까? 2) ADXV > ADXS and ADXV > ADXB 작성된 부분이 data2 ADX가 시그널 상향 and ADX가 기준선 30이상일때 매수 진입 조건이 맞게 작성된 것입니까? 3) If CurrentContracts == entryVol And (False == ExBlockCOND) And (H < EntryPrice + (10 * TickSize)) Then ExitLong("청산1", Atlimit, EntryPrice + (10 * TickSize),"", 1,2); 매수진입 가격에서 10틱 고가에 도달 할시 1계약이 청산되도록 작성 한것인데 작동 되지를 않습니다 확인 부탁 드립니다. 아래수식의 변경을 부탁 드렸던 것입니다. If CurrentContracts = entryVol And (False = ExBlockCOND) And (H < EntryPrice + (10 * TickSize)) Then ExitLong("ExL", Atlimit, EntryPrice + (10 * TickSize), "청산1", 1); 4) data2에 TRIX가 상승시 매수진입 조건을 추가 하고 싶습니다 확인 부탁 드립니다. input : Period20(14); var : TRIXV(0,data3); TRIXV = data3(ADX(Period20)); 매수 진입 조건 TRIXV[1] < TRIXV 5) data3에 highestsince가 상승시 매수진입 조건을 추가할때 수식 작성 부탁 드립니다. input : Period1(5), Period2(20); Vars : entryVol(0), ExBlockCOND(False), blockCond(True); Vars : TickSize(0); Ticksize = pricescale; var1 = data1(wma(C, Period1)); var2 = data1(ma(ma(ma(C, Period2),Period2),Period2)); condition1 = CrossuP(var1, var2); input : Period10(14), Sig(9), BaseLine(30); var : ADXV(0,data2),ADXS(0,data3),ADXB(0,data2); ADXV = data2(ADX(Period10)); ADXS = data2(ema(ADXv,sig)); ADXB = data2(BaseLine); If condition1 and ADXV > ADXS and ADXV > ADXB Then Buy("B"); If CurrentContracts == entryVol And (False == ExBlockCOND) And (H < EntryPrice + (5 * TickSize)) Then ExitLong("청산1", Atlimit, EntryPrice + (5 * TickSize),"", 1,2);
프로필 이미지
뎅이요
2019-03-08
237
글번호 126884
시스템
답변완료

문의합니다

시스템 수식 input : ntime1(6),P(32); var : S1(0),D1(0),TM(0),TF(0); var : cnt(0),sum1(0),tmav1(0),tmav11(0),tmav12(0),tmav13(0); Array : C1[500](0); if Bdate != Bdate[1] Then { S1 = TimeToMinutes(stime); D1 = sdate; } if D1 > 0 then { if sdate == D1 Then TM = TimeToMinutes(stime)-S1; Else TM = TimeToMinutes(stime)+1440-S1; TF = TM%ntime1; if Bdate != Bdate[1] or (Bdate == Bdate[1] and TF < TF[1]) Then { for cnt = 1 to 499 { C1[cnt] = C1[cnt-1][1]; } tmav11 = tmav1[1]; tmav12 = tmav11[1]; tmav13 = tmav12[1]; } C1[0] = C; if C1[P] > 0 then{ sum1 = 0; for cnt = 0 to P-1{ sum1 = sum1+C1[cnt]; } tmav1 = sum1/P; if tmav13 < tmav12 and tmav12 < tmav11 and tmav11 < tmav1 and tmav13 > 0 Then buy(); if tmav13 > tmav12 and tmav12 > tmav11 and tmav11 > tmav1 and tmav13 > 0 Then sell(); } } 지표수식 input : ntime1(20),P(20); var : S1(0),D1(0),TM(0),TF(0); var : cnt(0),sum1(0),mav1(0),mav11(0),mav12(0),mav13(0); Array : C1[500](0); if Bdate != Bdate[1] Then{ S1 = TimeToMinutes(stime); D1 = sdate; } if D1 > 0 then{ if sdate == D1 Then TM = TimeToMinutes(stime)-S1; Else TM = TimeToMinutes(stime)+1440-S1; TF = TM%ntime1; if Bdate != Bdate[1] or (Bdate == Bdate[1] and TF < TF[1]) Then { for cnt = 1 to 499 { C1[cnt] = C1[cnt-1][1]; } mav11 = mav1[1]; mav12 = mav11[1]; mav13 = mav12[1]; } C1[0] = C; if C1[P] > 0 then{ sum1 = 0; for cnt = 0 to P-1{ sum1 = sum1+C1[cnt]; } mav1 = sum1/P; plot1(mav1,"이평",iff(mav1 > mav11 and mav11 > mav12 and mav12 > mav13,red,BLUE)); } } 1번 == 위 시스템 수식입니다 위 시스템 수식을 이용하여 6개 이평선을 이용할 수 있도록 시스템수식(매수매도)을 부탁합니다 예) input : ntime1(6),P(8),P(16),P(32),P(64),P(128),P(256); 예) 일반적으로 이평선 구하는 수식입니다 input : Period15(13),Period20(36),Period30(30),Period120(120),Period180(180),Period240(240); var : mav15(0),mav20(0),mav30(0),mav120(0),mav180(0),mav240(0); mav15 = ma(c, Period15); mav20 = ma(c, Period20); mav30 = ma(c, Period30); mav120 = ma(c, Period120); mav180 = ma(c, Period180); mav240 = ma(c, Period240); 각 모든 이평선이 전봉 3개가 상승할 때 매수 진입하는 수식은 아래와 같이 표현합니다 mav15[3] < av15[2] and mav15[2] < mav15[1] and mav15[1] < mav15 and mav20[3] < av20[2] and mav20[2] < mav20[1] and mav201] < mav20 and mav30[3] < av30[2] and mav15[2] < mav15[1] and mav15[1] < mav15 and mav120[3] < av120[2] and mav120[2] < mav120[1] and mav120[1] < mav120 and mav180[3] < av180[2] and mav180[2] < mav180[1] and mav180[1] < mav180 and mav240[3] < av240[2] and mav240[2] < mav240[1] and mav240[1] < mav240 ---- 분봉 이평선을 틱봉에 적용하려면 어떤 수식이 필요하나요 (전봉 3개가 상승할 때 매수진입, 전봉 3개가 하락할 때 매도진입) 2번 == 위 지표수식을 이용하여 6개 이평선을 이용할 수 있도록 지료수식을 부탁합니다 예) input : ntime1(6),P(8),P(16),P(32),P(64),P(128),P(256); 감사합니다
프로필 이미지
남산
2019-03-09
235
글번호 126882
시스템

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

프로필 이미지
남산
2019-03-08
0
글번호 126881
시스템

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

프로필 이미지
겐지
2019-03-08
0
글번호 126880
시스템
답변완료

수식요청드립니다.

안녕하세요. 연결선물 오버형 분봉 틱봉 스윙 시스템에서 매월 1일 장시작부터 말일까지 적용 수익청산은 제외하고 손실청산만 합산 5P 달성시 매수 매도 모든포지션 일괄 청산하는 월 손실제한 수식 요청 드립니다. 감사합니다.
프로필 이미지
dandy
2019-03-08
211
글번호 126879
시스템
답변완료

수식보완요청드립니다

아래는 작성해주신 시스템식입니다. 신호발생이 뜻하는 바와 다른점이 있어 재문의 드립니다. 아래식에서는 강제청산조건을 설정하면 한번 강제청산 후에 (고점갱신,저점갱신이 없는 조건에서도) 두번째 왔을 때에도 신호가 발생합니다. [원래 요청 사항] 방향 = 1 에서 채널고점갱신이후 첫번째 var3의 값에 왔을 때 매수 방향 = -1 에서 채널저점갱신이후 첫번째 var3의 값에 왔을 때 매도 추가1] 매수,매도 주문가격을 var3의 값으로 요청드립니다 추가2] 방향이 전환되면 손절처리되도록 부탁드립니다. 추가3] 강제청산조건 추가 input : sl(30), sp(100); SetStopLoss(sl*PriceScale,PointStop); SetStopProfittarget(sp*PriceScale,PointStop); 감사합니다 =========== Input:전환비율(0.382); Var:j(0),jj(0),HH(0),LL(0),hiBar(0),loBar(0),최종꼭지점(""),처리구분(""), TL1(0),Text1(0),T(0),지지(0),저항(0); Array:고[10,4](0),저[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime #==========================================# HH = H; LL = L; If Index == 0 Then { 고[1,1] = HH; 고[1,2] = 0; 저[1,1] = LL; 저[1,2] = 0; } If Index > 0 Then // Index가 0일때는 이전 봉이 없으므로 Index가 1일때부터 1씩 증가 { hiBar = hiBar + 1; // 최고점을 찍은 고[저]가의 위치를 저장 해놓기 위해 봉번호를 카운트한다. loBar = loBar + 1; } If HH[hiBar] < HH Then hiBar = 0; // 현재 봉이 최고가이면 봉번호를 0으로 초기화 If LL[loBar] > LL Then loBar = 0; Condition1 = 저[1,1] * (1 + (전환비율/100)) < HH and hiBar == 0; // 전저점에서 최소변동률만큼 더한 값보다 고가가 크다면 추세가 변한 것으로 보고 신규 고점으로 인식 Condition2 = 고[1,1] * (1 - (전환비율/100)) > LL and loBar == 0; // 전고점에서 최소변동률만큼 뺀 값보다 저가가 작다면 추세가 변한 것으로 보고 신규 저점으로 인식 처리구분 = ""; If Condition1 and Condition2 Then // 고점과 저점 조건 동시 만족 { If 최종꼭지점 == "저점" Then { If 저[1,1] > LL Then 처리구분 = "저점처리"; Else 처리구분 = "고점처리"; } Else If 최종꼭지점 == "고점" Then { If 고[1,1] < HH Then 처리구분 = "고점처리"; Else 처리구분 = "저점처리"; } } Else If Condition1 Then 처리구분 = "고점처리"; Else If Condition2 Then 처리구분 = "저점처리"; #==========================================# If 처리구분 == "고점처리" Then { If 최종꼭지점 == "저점" Then { For j = 10 DownTo 2 { For jj = 1 To 4 { 고[j,jj] = 고[j-1,jj]; } } 고[1,1] = HH[hiBar]; hiBar = -1; // 다음 봉의 고가가 기준 고가로 인식되려면 hiBar 값이 0이 되어야 한다. // 봉이 바뀔 때마다 hiBar의 값을 1씩 증가시키므로 다음 봉의 hiBar 값은 0이 된다. loBar = -1; } Else If 고[1,1] < HH[hiBar] Then // 1번 고점보다 높은 고가 출현 { 고[1,1] = HH[hiBar]; hiBar = -1; loBar = -1; // 시작점은 변동없고 끝점의 위치가 현재 봉으로 연장된 것임 } 최종꼭지점 = "고점"; T = 1; if T == 1 and T != T[1] then 지지 = 저[1,1] ; } #==========================================# If 처리구분 == "저점처리" Then { If 최종꼭지점 == "고점" Then { For j = 10 DownTo 2 { For jj = 1 To 4 { 저[j,jj] = 저[j-1,jj]; } } 저[1,1] = LL[loBar]; hiBar = -1; loBar = -1; } Else If 저[1,1] > LL[loBar] Then { 저[1,1] = LL[loBar]; hiBar = -1; loBar = -1; } 최종꼭지점 = "저점"; T = -1; if T == -1 and T != T[1] then 저항 = 고[1,1] ; } //========================================// // // // var : 방향(0),HV(0),LV(0); if crossdown(c,지지) then { 방향 = -1; Condition1 = false; } if crossup(c,저항) then { 방향 = 1 ; Condition2 = false; } if 방향 == 1 and 방향 != 방향[1] Then Hv = H; if 방향 == 1 and H > HV Then Hv = H; if 방향 == -1 and 방향 != 방향[1] Then Lv = H; if 방향 == -1 and L < LV Then Lv = L; input : Per1(23.6),Per2(38.2),Per3(50.0),Per4(61.8),Per5(76.4),Per6(123.6),Per7(161.8),Per8(200); var1 = Hv - (Hv - Lv)*Per1/100 ; var2 = Hv - (Hv - Lv)*Per2/100 ; var3 = Hv - (Hv - Lv)*Per3/100 ; var4 = Hv - (Hv - Lv)*Per4/100 ; var5 = Hv - (Hv - Lv)*Per5/100 ; if MarketPosition <= 0 and 방향 == 1 and Condition1 == false and CrossDown(c,var3) Then { buy(); Condition1 = true; } if MarketPosition == 1 and var3 > var3[BarsSinceEntry] and crossup(c,var3) Then ExitLong(); if MarketPosition >= 0 and 방향 == -1 and Condition2 == false and crossup(c,var3) Then { Sell(); Condition2 = true; } if MarketPosition == -1 and var3 < var3[BarsSinceEntry] and CrossDown(c,var3) Then ExitShort();
프로필 이미지
당일선물
2019-03-09
332
글번호 126878
시스템
답변완료

문의드립니다

var1 = (C-DayClose(1))/DayClose(1)*100; plot1(var1); 등락율지료입니다. 1%가 높아질때 마다 수평선 점선이 표시되게 해주세요. 4%가 높아질때 마다 수평선이 표시되게 해주세요. 몇%가 높아질수록 막대바의 색상이 바뀌게도 되는지요? (틱이 아닌) 상승율1% 단위의 수평선이 차트에 그어질수도 있는지요?
프로필 이미지
왕팡
2019-03-08
229
글번호 126877
지표
답변완료

문의드립니다

안녕하세요 볼밴과 엔벨로프을 동시에 표현하고자합니다 1.볼밴은 편차값을 두가지로 설정해서 엔벨로프와 동시에 나타내고자합니다 2.표준편차1-95.45% 표준편차2-68.27%로해서 하고자합니다 3.표차값은 변환가능 4.볼밴 상하단선의 기울기가 0을 기준으로 +(빨강),-(파랑)으로 표현하고자 합니다 감사합니다
프로필 이미지
만강
2019-03-08
267
글번호 126876
지표
답변완료

ATR채널을 만드는 지표식을 알고싶습니다.

상단 변동성채널은 350일 종가이동평균에 7-ATR을 더해서 설정하고 하단채널은 350일 종가이동평균에 3-ATR을 빼서 설정할 수있는 채널을 만들고 싶습니다. 지표식이 궁금합니다. 부탁드리겠습니다.
프로필 이미지
나인브레이커
2019-03-08
288
글번호 126867
지표