커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
3530
글번호 230811
답변완료
지표 변환 부탁 드립니다
// ====================================================================================================================}
// INPUTS
// ===================================================================================================================={
// User inputs for customization
len = input.int(10, "Length")
dsl_mode = input.string("Fast", "DSL Lines Mode", ["Fast", "Slow"]) == "Fast" ? 2 : 1
// Color definitions
color_up = #8BD8BD
color_dn = #436cd3
// Condition for a dashed line
bool dashed = bool(bar_index % 2)
// ====================================================================================================================}
// CALCULATIONS
// ===================================================================================================================={
// Calculate RSI with a period of 10
RSI = ta.rsi(close, 10)
// Zero-Lag Exponential Moving Average function
zlema(src, length) =>
lag = math.floor((length - 1) / 2)
ema_data = 2 * src - src[lag]
ema2 = ta.ema(ema_data, length)
ema2
// Discontinued Signal Lines
dsl_lines(src, length)=>
up = 0.
dn = 0.
up := (src > ta.sma(src, length)) ? nz(up[1]) + dsl_mode / length * (src - nz(up[1])) : nz(up[1])
dn := (src < ta.sma(src, length)) ? nz(dn[1]) + dsl_mode / length * (src - nz(dn[1])) : nz(dn[1])
[up, dn]
// Calculate DSL lines for RSI
[lvlu, lvld] = dsl_lines(RSI, len)
// Calculate DSL oscillator using ZLEMA of the average of upper and lower DSL Lines
dsl_osc = zlema((lvlu + lvld) / 2, 10)
// Calculate DSL Lines for the oscillator
[level_up, level_dn] = dsl_lines(dsl_osc, 10)
// Determine color based on oscillator position relative to its DSL Lines
color = color.from_gradient(dsl_osc, level_dn, level_up, color_dn, color_up)
// ====================================================================================================================}
// PLOT
// ===================================================================================================================={
// Plot upper and lower DSL Lines
plot(level_up, color = dashed ? color.new(color_up, 20) : na, editable = false)
plot(level_dn, color = dashed ? color.new(color_dn, 20) : na, editable = false)
// Plot the DSL oscillator
plot(dsl_osc, color = color, linewidth = 2)
// Detect crossovers for signal generation
up = ta.crossover(dsl_osc, level_dn) and dsl_osc < 55
dn = ta.crossunder(dsl_osc, level_up) and dsl_osc > 50
// Plot signals on the oscillator
plotshape(up ? dsl_osc[1] : na, "", shape.circle, location.absolute, color_up, -1, "", chart.fg_color, false, size.tiny)
plotshape(dn ? dsl_osc[1] : na, "", shape.circle, location.absolute, color_dn, -1, "", chart.fg_color, false, size.tiny)
// Plot signals on the chart
plotshape(up, "", shape.triangleup, location.bottom, color_up, 0, "Enter", chart.fg_color, true, size.tiny,
force_overlay = true)
plotshape(dn, "", shape.triangledown, location.top, color_dn, 0, "Exit", chart.fg_color, true, size.tiny,
force_overlay = true)
// Color the background on signal occurrences
bgcolor(up ? color.new(color_up, 90) : na, force_overlay = true, editable = false)
bgcolor(dn ? color.new(color_dn, 90) : na, force_overlay = true, editable = false)
// Color candles based on signals
candle_col = up ? color.new(color_up, 0) : dn ? color.new(color_dn, 0) : na
plotcandle(open, high, low, close, "",
candle_col,
candle_col,
bordercolor = candle_col,
force_overlay = true,
editable = false)
// Plot horizontal lines for visual reference
h = plot(75, display = display.none, editable = false)
m = plot(50, display = display.none, editable = false)
l = plot(25, display = display.none, editable = false)
// Fill areas between horizontal lines
fill(m, h, 120, 50, color_up, na, editable = false)
fill(m, l, 50, -20, na, color_dn, editable = false)
// ====================================================================================================================}
2025-05-03
441
글번호 190565
답변완료
NthHighest 관련 질문입니다.
안녕하세요.
NthHighest(N, Value, Length) 함수가 궁금한데 예시를 통해 질문 드립니다.
1) 첫번째 질문입니다.
지난 30일 동안 20일이동평균의 값 중 가장 큰 값부터 위에서 아래로 3번째로 큰 값을 찾고 싶습니다.
그러면, NthHighest(3, 20일이동평균, 30) 이렇게 사용하면 될까요?
2) 두번째 질문입니다.
만약에 1번이 맞다고하면, 말도 안되는 가정이지만 NthHighest(3, 20일이동평균, 30) 수식을 사용했을 때
30일 기간 중 20일이동평균의 값이 1과 2 딱 2가지 밖에 없다고 한다면, 그럼 그 결과 값은 어떤게 나오는 건가요?
3번째 큰 값이 없어서요..
늘 감사합니다
좋은 하루 보내세요.
2025-05-04
363
글번호 190564
답변완료
검색식 부탁드립니다
수식만 들어가면 에러가 나서 캡쳐해서 보냅니다
2025-05-02
359
글번호 190563
nams60 님에 의해서 삭제되었습니다.
2025-05-02
1
글번호 190562
답변완료
종목검색식 부탁드림니다.
항상 노고에 감사드림니다.
아래의 수식을 종목검색식으로 부탁드림니다.
A=Max(C, O);
B=Min(C, O);
B1=Highest(A, 60);
B2=Lowest(B, 60);
B3=(B1-B2)/B2*100;
최종=
B3(1)<30 &&
Crossup(C, B1(1)) &&
Highest(V, 60, 1)<V
2025-05-02
406
글번호 190553
답변완료
검색식 부탁 드립니다._(__)_
항상 도와주심에 감사드립니다. _(__)_
0봉전에서 20일선이 60일선을 골든 크로스를 한 시점의 20일선과 ..... 몇 봉전인지는 모르지만
20일선이 60일선을 데드크로스를 한 시점의 20일선의 값이 3.5프로이내인 종목 검색식을
부탁드립니다.
2025-05-02
379
글번호 190550
사공하늘 님에 의해서 삭제되었습니다.
2025-05-02
124
글번호 190549
답변완료
시작시간 문의
늘 감사합니다.
전일의 14시00분 부터 15시35분 사이에 최고점과 최저점을 수평선으로 연결해 주세요.
다음날 장으로 연결됩니다.
data2용으로 만들어 주세요.
감사합니다.
2025-05-02
313
글번호 190548
답변완료
수식변환 부탁드립니다.
안녕하세요
수식변환 부탁드립니다.
.// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// author © KivancOzbilgic
// developer © KivancOzbilgic
//@version=5
indicator('AlphaTrend', shorttitle='AT', overlay=true, format=format.price, precision=2, timeframe='')
coeff = input.float(1, 'Multiplier', step=0.1)
AP = input(14, 'Common Period')
ATR = ta.sma(ta.tr, AP)
src = input(close)
showsignalsk = input(title='Show Signals?', defval=true)
novolumedata = input(title='Change calculation (no volume data)?', defval=false)
upT = low - ATR * coeff
downT = high + ATR * coeff
AlphaTrend = 0.0
AlphaTrend := (novolumedata ? ta.rsi(src, AP) >= 50 : ta.mfi(hlc3, AP) >= 50) ? upT < nz(AlphaTrend[1]) ? nz(AlphaTrend[1]) : upT : downT > nz(AlphaTrend[1]) ? nz(AlphaTrend[1]) : downT
color1 = AlphaTrend > AlphaTrend[2] ? #00E60F : AlphaTrend < AlphaTrend[2] ? #80000B : AlphaTrend[1] > AlphaTrend[3] ? #00E60F : #80000B
k1 = plot(AlphaTrend, color=color.new(#0022FC, 0), linewidth=3)
k2 = plot(AlphaTrend[2], color=color.new(#FC0400, 0), linewidth=3)
fill(k1, k2, color=color1)
buySignalk = ta.crossover(AlphaTrend, AlphaTrend[2])
sellSignalk = ta.crossunder(AlphaTrend, AlphaTrend[2])
K1 = ta.barssince(buySignalk)
K2 = ta.barssince(sellSignalk)
O1 = ta.barssince(buySignalk[1])
O2 = ta.barssince(sellSignalk[1])
plotshape(buySignalk and showsignalsk and O1 > K2 ? AlphaTrend[2] * 0.9999 : na, title='BUY', text='BUY', location=location.absolute, style=shape.labelup, size=size.tiny, color=color.new(#0022FC, 0), textcolor=color.new(color.white, 0))
plotshape(sellSignalk and showsignalsk and O2 > K1 ? AlphaTrend[2] * 1.0001 : na, title='SELL', text='SELL', location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.new(color.maroon, 0), textcolor=color.new(color.white, 0))
alertcondition(buySignalk and O1 > K2, title='Potential BUY Alarm', message='BUY SIGNAL!')
alertcondition(sellSignalk and O2 > K1, title='Potential SELL Alarm', message='SELL SIGNAL!')
alertcondition(buySignalk[1] and O1[1] > K2, title='Confirmed BUY Alarm', message='BUY SIGNAL APPROVED!')
alertcondition(sellSignalk[1] and O2[1] > K1, title='Confirmed SELL Alarm', message='SELL SIGNAL APPROVED!')
alertcondition(ta.cross(close, AlphaTrend), title='Price Cross Alert', message='Price - AlphaTrend Crossing!')
alertcondition(ta.crossover(low, AlphaTrend), title='Candle CrossOver Alarm', message='LAST BAR is ABOVE ALPHATREND')
alertcondition(ta.crossunder(high, AlphaTrend), title='Candle CrossUnder Alarm', message='LAST BAR is BELOW ALPHATREND!')
alertcondition(ta.cross(close[1], AlphaTrend[1]), title='Price Cross Alert After Bar Close', message='Price - AlphaTrend Crossing!')
alertcondition(ta.crossover(low[1], AlphaTrend[1]), title='Candle CrossOver Alarm After Bar Close', message='LAST BAR is ABOVE ALPHATREND!')
alertcondition(ta.crossunder(high[1], AlphaTrend[1]), title='Candle CrossUnder Alarm After Bar Close', message='LAST BAR is BELOW ALPHATREND!')
2025-05-02
559
글번호 190547