커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

이루나라 님에 의해서 삭제되었습니다.

프로필 이미지
이루나라
2025-09-30
0
글번호 194422
종목검색

2wnwn 님에 의해서 삭제되었습니다.

프로필 이미지
2wnwn
2025-09-30
34
글번호 194414
지표
답변완료

부탁드립니다

수고하십니다. 아래수식에 추가할수식부탁드립니다. 이평선매수매도식이고 10%씩 증액매수프로그램인데요. 1.만일 전봉 매도 수익율이 n% (20%) 일경우 처음진입금액으로 돌아가시오--추가수식부탁드립니다. inputs : P1(5),P2(20),RSILength(10), OverSold(30),OverBought(70); input : 첫진입금액(1000000),A(10); var : m1(0,Data2),m2(0,Data2), R(0,Data1); var : TT(0,Data1),T1(0,Data1),entry(0,Data1),mm(0,data1),vol(0,Data1); m1 = Data2(ma(C,P1)); m2 = Data2(ma(C,P2)); R = data1(RSI(RSILength)); If Data2(m1 > m2) and Crossup(R, OverSold) Then { if TotalTrades == 0 Then mm = 첫진입금액; Else mm = mm*(1+A/100); Buy("B",OnClose,Def,Floor(Floor(mm/C)/10)*10); } if data2(crossup(ma(c,5),ma(c,20))) Then { if TotalTrades == 0 Then mm = 첫진입금액; Else mm = mm*(1+A/100); Buy("B2",OnClose,Def,Floor(Floor(mm/C)/10)*10); } if Data2(CrossDown(m1,m2)) or Crossup(R, OverBought) Then Sell("S");
프로필 이미지
2685up
2025-09-30
246
글번호 194410
시스템
답변완료

문의

input : periodo(20),fator(1.25); var : up(False),down(False),pesado(False); up = close > open; down=open>close; pesado = volume>(ema(volume,periodo)*fator); PlotPaintBar(H,L,"강조",IFf(pesado and up,lime,IFf(pesado and down,red,iff(up,Silver,Gray)))); 검색식으로 부탁합니다
프로필 이미지
레전드
2025-09-30
231
글번호 194406
검색
답변완료

조건검색식 도와주세요

예스트레이더 조건검색으로 투자경고종목을 검색하는 수식을 만들고 싶습니다. 종가배팅에 참고하기 위해 당일 저녁 투자경고종목으로 지정되기 전에 미리 알고 싶습니다. 영웅문 기준 으로 투자경고종목을 신호표시하는 수식입니다. 그런데 아래 수식으로도 50% 정도의 확률로 수식이 맞습니다. 아래 수식을 변현해주셔도 좋고, 투자경고종목을 검색할 수 있는 더 좋은 조건식이 있으면 그것으로 대체해주셔도 좋습니다. * 투자경고종목 수식 * A=c(3)*2<=c;//당일의 종가가 3일 전날의 종가보다 100% 이상 상승 A1=SUM(A); B=c(5)*1.6<=c;//당일의 종가가 5일 전날의 종가보다 60% 이상 상승한 B1=SUM(B); D=c(15)*2<=c;//당일의 종가가 15일 전날의 종가보다 100% 이상 상승 D1=SUM(D); E=highest(c,15)==c;//해당일의 종가가 최근 15일 종가 중 최고가 E1=SUM(E); F=(A OR B OR D) AND E;//초단기,단기,중장기 급등 조건 중 만족하면서 15일 최고가일 때 G=SUM(F); I=((A1-A1(11)==2 AND A) OR (B1-B1(11)==2 AND B) OR (D1-D1(11)==2 AND D)) AND E1-E1(11)>=2;//초단기,단기,중장기 급등으로 지정 예고된 종목 중 지정예고일부터 계산하여 10일째 되는 날 이내에 조건 재 만족 J=COUNTSINCE(G(1)-G(11)==0 AND F,I);//투자경고종목 지정 예고 신호가 먼저 나온 후, 첫번째 신호만 포착하기위해 COUNT함수 사용하여 COUNT가 0에서 1크로스업하는 순간만 추출 CROSSUP(J,0) AND I
프로필 이미지
마을
2025-09-30
611
글번호 194403
검색
답변완료

부탁드립니다.

트레이딩뷰 지표 중 일부수식입니다. 변환 부탁드립니다. mode = input.string("Range", "Weight Mode", options=["Range", "Body", "Both"]) rangeWeightB = (high - low) bodyWeightB = math.abs(close - open) weightB = mode == "Range" ? rangeWeightB : mode == "Body" ? bodyWeightB : (rangeWeightB + bodyWeightB) / 2.0 normWeightB = weightB / ta.sma(weightB, length) alpha = 2.0 / (length + 1) var float swemaB = na swemaB := na(swemaB[1]) ? src : swemaB[1] + alpha * normWeightB * (src - swemaB[1])
프로필 이미지
bw
2025-09-30
299
글번호 194402
종목검색
답변완료

수식작성 질문입니다

하루에 1번만 거래(하루에 매수,매도 조건을 모두 만족하는 경우 매수 상태면 매도 조건만 유효, 매도 상태면 매수 조건만 유효) 의 수식을 알고싶습니다. 항상 감사합니다 선생님
프로필 이미지
추세추종중독자
2025-09-30
234
글번호 194399
시스템
답변완료

94464 청산조건식 다시한번 부탁드립니다.

수정해주신 수식을 사용해도 오류가 개선되지 않네요. 혹시 for문을 이용해서 수식을 풀어야 되는지요? 다시한번 부탁드립니다.
프로필 이미지
eel
2025-09-30
200
글번호 194398
시스템
답변완료

부틱드립니다

수고하십니다 예스로 부탁드립니다 // This work is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International // https://creativecommons.org/licenses/by-nc-sa/4.0/ // &#169; Zeiierman { //@version=6 indicator("AI-Weighted RSI (Zeiierman)", overlay=false, max_lines_count=500, max_labels_count=500, precision = 1) //~~} // ~~ Tooltips { var string t1 = "RSI lookback length computed on the current timeframe." var string t2 = "Moving Average lookback length computed on RSI." var string t3 = "Rolling window for correlation learning and z-scoring.." //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~} // ~~ Inputs { rsiLen = input.int(14, "RSI Length", minval=2, group="Rsi Settings", tooltip=t1) sigLen = input.int(20, "Signal Length", minval=2, group="Rsi Settings", tooltip=t2) learnLen = input.int(20, "Learning Window", minval=1, group="Learning / Prediction", tooltip=t3) //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~} // ~~ Per-bar features { retLog = math.log(close / nz(close[1], close)) rsiVal = ta.rsi(close, rsiLen) atrPct = ta.atr(200) / close vol = volume volLogChg = math.log(vol / nz(vol[1], vol)) //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~} // ~~ Target (y): prior bar RSI { y_rsi = rsiVal[1] //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~} // ~~ Predictors (X): prior-bar values of each feature (aligned with y) { x_ret = nz(retLog[1]) x_rsi = nz(rsiVal[1]) x_atrp = nz(atrPct[1]) x_vchg = nz(volLogChg[1]) x_vol = nz(vol[1]) //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~} // ~~ Utilities { f_z(src, len) => m = ta.sma(src, len) s = ta.stdev(src, len) s > 0 ? (src - m) / s : 0 f_corr(a, b, len) => ta.correlation(a, b, len) //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~} // ~~ Top-K indices by value { f_topk_indices(arr) => sz = arr.size() kk = math.min(5, sz) tmp = array.new_float(sz, 0.0) for i = 0 to sz - 1 tmp.set(i, nz(arr.get(i))) out = array.new_int() for n = 0 to kk - 1 maxI = 0 maxV = tmp.get(0) for j = 1 to sz - 1 vj = tmp.get(j) take = na(maxV) or (not na(vj) and vj > maxV) if take maxV := vj maxI := j out.push(maxI) tmp.set(maxI, na) out //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~} // ~~ Feature S e leCTion via correlations { corrs_abs_ret = math.abs(nz(f_corr(y_rsi, x_ret, learnLen))) corrs_abs_rsi = math.abs(nz(f_corr(y_rsi, x_rsi, learnLen))) corrs_abs_atrp = math.abs(nz(f_corr(y_rsi, x_atrp, learnLen))) corrs_abs_vchg = math.abs(nz(f_corr(y_rsi, x_vchg, learnLen))) corrs_abs_vol = math.abs(nz(f_corr(y_rsi, x_vol, learnLen))) corrs = array.from(corrs_abs_ret, corrs_abs_rsi, corrs_abs_atrp, corrs_abs_vchg, corrs_abs_vol) topIdx = f_topk_indices(corrs) //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~} // ~~ Z-scored current levels of each predictor series { xz_ret = nz(f_z(x_ret, learnLen)) xz_rsi = nz(f_z(x_rsi, learnLen)) xz_atrp = nz(f_z(x_atrp, learnLen)) xz_vchg = nz(f_z(x_vchg, learnLen)) xz_vol = nz(f_z(x_vol, learnLen)) featZ = array.from(xz_ret, xz_rsi, xz_atrp, xz_vchg, xz_vol) //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~} // ~~ Signed “coefficients” ~ correlations on standardized inputs { coef_ret = nz(f_corr(y_rsi, x_ret, learnLen)) coef_rsi = 1.0 // Hardcoded: always 1, since x_rsi == y_rsi coef_atrp = nz(f_corr(y_rsi, x_atrp, learnLen)) coef_vchg = nz(f_corr(y_rsi, x_vchg, learnLen)) coef_vol = nz(f_corr(y_rsi, x_vol, learnLen)) coef = array.from(coef_ret, coef_rsi, coef_atrp, coef_vchg, coef_vol) //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~} // ~~ Prediction from S e leCTed features: sum_i corr_i * z(feature_i) { f_pred(topIdxArr, coefArr, featArr) => s = 0.0 k = topIdxArr.size() for i = 0 to k - 1 idx = topIdxArr.get(i) c = coefArr.get(idx) z = featArr.get(idx) s += (nz(c) * nz(z)) s pred_rsi_z = f_pred(topIdx, coef, featZ) //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~} // ~~ Map z back to RSI level using rolling mean/std of the target { rsi_mean = ta.sma(y_rsi, learnLen) rsi_std = ta.stdev(y_rsi, learnLen) pred_rsi = nz(rsi_mean) + nz(rsi_std) * pred_rsi_z //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~} // ~~ Map prediction → “weight” { rsiWeight = math.max(-2, math.min(2, (50 - nz(pred_rsi)) / 50)) * -1 ma_rsi = ta.sma(rsiWeight,sigLen) //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~} // ~~ Plots { rsiPlot = plot(rsiWeight, "AI-Weighted RSI", color=#7E57C2) rsiMa = plot(ma_rsi, "AI-Weighted RSI Signal Line", color=color.yellow) rsiUpperBand = hline(0.5, "AI-Weighted RSI Upper Band", color=#787B86) midline = hline(0, "AI-Weighted RSI Middle Band", color=color.new(#787B86, 50)) rsiLowerBand = hline(-0.5, "AI-Weighted RSI Lower Band", color=#787B86) fill(rsiUpperBand, rsiLowerBand, color=color.rgb(126, 87, 194, 90), title="AI-Weighted RSI Background Fill") midLinePlot = plot(0, color = na, editable = false, display = display.none) fill(rsiPlot, midLinePlot, 0.5, 0, top_color = color.new(color.lime, 0), bottom_color = color.new(color.lime, 100), title = "Overbought Gradient Fill") fill(rsiPlot, midLinePlot, 0, -0.5, top_color = color.new(color.red, 100), bottom_color = color.new(color.red, 0), title = "Oversold Gradient Fill") //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
프로필 이미지
파생돌이
2025-09-30
798
글번호 194396
지표