커뮤니티
예스랭귀지 Q&A
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1316
글번호 230811
답변완료
종목 검색 부탁드립니다.
1. 캔들의 모양이 윗꼬리가 달린 양봉 캔들 종목 검색식 부탁드려요
2. 캔들모양이 윗꼬리가 있고, 아랫꼬리가 캔들몸통의 3/1 이하인 양봉 캔들 종목 검색식
3. 캔들의 모양이 도지 인 양봉 음봉 캔들 검색식
2025-05-28
301
글번호 191238
살빼고싶다 님에 의해서 삭제되었습니다.
2025-05-28
21
글번호 191235
답변완료
수식수정
안녕하세요
아래수식에서 당일 시가선을
전일종가나 전일 정산가 기준으로
변경해 주세요
input : Period(20),dv(2);
var : BBup(0),BBmd(0),BBdn(0),T(0);
BBup = BollBandUp(Period,dv);
BBmd = ma(c,Period);
BBdn = BollBandDown(Period,dv);
if CrossUp(c,bbup) Then
T = 3;
if CrossDown(c,bbup) Then
T = -3;
if CrossUp(c,bbmd) Then
T = 2;
if CrossDown(c,bbmd) Then
T = -2;
if CrossUp(c,bbdn) Then
T = 1;
if CrossDown(c,bbdn) Then
T = -1;
if C <= DayOpen-PriceScale*100 and
T != T[1] and T == 2 and T[1] == 1 Then
Buy();
if MarketPosition == 1 and T != T[1] and T == -1 Then
ExitLong();
if C >= DayOpen+PriceScale*100 and
T != T[1] and T == 3 and T[1] == -3 Then
Sell();
if MarketPosition == 1 and CrossUp(C,bbmd) Then
ExitShort(
2025-05-28
213
글번호 191234
답변완료
문의드립니다.
음봉이 연속(2봉이상)되어 있을 때 음봉들 중 최고고가를 "상단",
연속된 음봉들 중 최저 저가를 "하단"으로 했을 때
상단대비 하단이 -20% 이하인 종목의 검색식을 부탁드립니다.
하단/상단 <= 0.80
* 수정, 보완을 해야 해서 주석도 같이 부탁드립니다.
2025-05-28
257
글번호 191233
답변완료
지표식 부탁드립니다
지표식 변환 부탁합니다. 미리 감사드립니다.
//@version=6
indicator('Trendlines with Breaks', overlay = true)
length = input.int(14)
k = input.float(1., 'Slope', minval = 0, step = .1)
method = input.string('Atr', 'Slope Calculation Method', options = ['Atr', 'Stdev', 'Linreg'])
show = input(false, 'Show Only Confirmed Breakouts')
//----
upper = 0.
lower = 0.
slope_ph = 0.
slope_pl = 0.
src = close
n = bar_index
//----
ph = ta.pivothigh(length, length)
pl = ta.pivotlow(length, length)
slope = switch method
'Atr' => ta.atr(length) / length * k
'Stdev' => ta.stdev(src, length) / length * k
'Linreg' => math.abs(ta.sma(src * bar_index, length) - ta.sma(src, length) * ta.sma(bar_index, length)) / ta.variance(n, length) / 2 * k
slope_ph := bool(ph) ? slope : slope_ph[1]
slope_pl := bool(pl) ? slope : slope_pl[1]
upper := bool(ph) ? ph : upper[1] - slope_ph
lower := bool(pl) ? pl : lower[1] + slope_pl
//----
single_upper = 0
single_lower = 0
single_upper := src[length] > upper ? 0 : bool(ph) ? 1 : single_upper[1]
single_lower := src[length] < lower ? 0 : bool(pl) ? 1 : single_lower[1]
//upper_breakout = single_upper[1]==1 and src[length] > upper and (show ? src > src[length] : 1)
//lower_breakout = single_lower[1]==1 and src[length] < lower and (show ? src < src[length] : 1)
upper_breakout = bool(single_upper[1]) and src[length] > upper and (show ? src > src[length] : true) // my modify
lower_breakout = bool(single_lower[1]) and src[length] < lower and (show ? src < src[length] : true) // my modify
plotshape(upper_breakout ? low[length] : na, 'Upper Break', shape.labelup, location.absolute, #ef5350, -length, text = 'B↑', textcolor = color.white, size = size.tiny)
plotshape(lower_breakout ? high[length] : na, 'Lower Break', shape.labeldown, location.absolute, #26a69a, -length, text = 'B↓', textcolor = color.white, size = size.tiny)
//----
var line up_l = na
var line dn_l = na
var label recent_up_break = na
var label recent_dn_break = na
if bool(ph[1]) // my modify
line.delete(up_l[1])
label.delete(recent_up_break[1])
up_l := line.new(n - length - 1, ph[1], n - length, upper, color = #ef5350, extend = extend.right, style = line.style_dashed)
up_l
if bool(pl[1]) // my modify
line.delete(dn_l[1])
label.delete(recent_dn_break[1])
dn_l := line.new(n - length - 1, pl[1], n - length, lower, color = #26a69a, extend = extend.right, style = line.style_dashed)
dn_l
if ta.crossover(src, upper - slope_ph * length)
label.delete(recent_up_break[1])
recent_up_break := label.new(n, low, 'B', color = #ef5350, textcolor = color.white, style = label.style_label_up, size = size.small)
recent_up_break
if ta.crossunder(src, lower + slope_pl * length)
label.delete(recent_dn_break[1])
recent_dn_break := label.new(n, high, 'B', color = #26a69a, textcolor = color.white, style = label.style_label_down, size = size.small)
recent_dn_break
//----
plot(upper, 'Upper', color = bool(ph) ? na : #ef5350, offset = -length)
plot(lower, 'Lower', color = bool(pl) ? na : #26a69a, offset = -length)
alertcondition(ta.crossover(src, upper - slope_ph * length), 'Upper Breakout', 'Price broke upper trendline')
alertcondition(ta.crossunder(src, lower + slope_pl * length), 'Lower Breakout', 'Price broke lower trendline')
2025-05-28
329
글번호 191232
답변완료
차트 설치 오류
차트 설치하는데 오류가납니다..
포맷하고 다시 설치하는건데 ㅠㅠ
2025-05-27
261
글번호 191231
답변완료
yes global 틱차트 지수이평선 수치 오류
yes global 틱차트 지수 이평선 적용시 수치값이 맞지 않습니다.
분봉은 타사와 지수 이평선 값이 동일 하나 틱차트만 수치값이 전혀 다르게 나옵니다.차이가
상당합니다 이평선 모양과 위치가 다를 정도의 차이
다른 여러곳의 틱차트 이평선의 값은 동일한데 yes global만 다르게 나올 수 있는지 분봉의 지수이평선 값은 다른곳과 같은데 틱차트만 이처럼 상당한 차이가 나는 것 같은데 보정이 필요합니다. 아니면 다른 문제가 있는것인지 알려주세요
2025-05-27
241
글번호 191230
답변완료
수식 부탁드립니다
지표식 부탁드립니다.
1.
//@version=5
indicator("DC", shorttitle="DC", overlay=true)
length = input.int(10, title="Donchian Period", minval=1)
offset = input.int(5, title="Offset")
// Lvels
upper = ta.highest(high, length)
lower = ta.lowest(low, length)
basis = (upper + lower) / 2
// Plot channels
plot(basis, "Basis", color=color.orange, offset=offset)
p1 = plot(upper, "Upper", color=color.blue, offset=offset)
p2 = plot(lower, "Lower", color=color.blue, offset=offset)
// Trend logic
var int trend = 0
trend := close > upper[1] ? 1 : close < lower[1] ? -1 : trend[1]
trendChangeUp = trend == 1 and trend[1] != 1
trendChangeDown = trend == -1 and trend[1] != -1
// Plot breakout arrows
plotshape(trendChangeUp, title="Breakout Up", location=location.belowbar, color=color.green, style=shape.labelup, size=size.tiny, text="BUY", textcolor=color.new(color.white, 0))
plotshape(trendChangeDown, title="Breakout Down", location=location.abovebar, color=color.red, style=shape.labeldown, size=size.tiny, text="SELL", textcolor=color.new(color.white, 0))
// Fill between upper and lower with trend-based color
fillColor = trend == 1 ? color.new(color.green, 85) : trend == -1 ? color.new(color.red, 85) : color.new(color.gray, 90)
fill(p1, p2, color=fillColor, title="Trend Fill")
2.
//@version=4
study("BOX", overlay=true, shorttitle="BOX")
// 사용자 입력: 박스 길이 설정
boxp = input(5, "BOX LENGTH")
// 박스 상단 및 하단 계산
LL = lowest(low, boxp)
k1 = highest(high, boxp)
k2 = highest(high, boxp - 1)
k3 = highest(high, boxp - 2)
NH = valuewhen(high > k1[1], high, 0)
box1 = k3 < k2
TopBox = valuewhen(barssince(high > k1[1]) == boxp - 2 and box1, NH, 0)
BottomBox = valuewhen(barssince(high > k1[1]) == boxp - 2 and box1, LL, 0)
// 박스 상단 및 하단 플로팅
topPlot = plot(TopBox, linewidth=3, color=color.green, title="Top Box")
bottomPlot = plot(BottomBox, linewidth=3, color=color.red, title="Bottom Box")
// 박스 내부 영역 채우기
fill(topPlot, bottomPlot, color=color.new(color.blue, 90), title="Box Fill")
// 봉의 위치에 따른 색상 지정
insideBox = close >= BottomBox and close <= TopBox
aboveBox = close > TopBox
belowBox = close < BottomBox
barcolor(insideBox ? color.gray : na)
barcolor(aboveBox ? color.green : na)
barcolor(belowBox ? color.red : na)
2025-05-28
307
글번호 191229
답변완료
검색식 부탁드립니다. 항상 감사드립니다
A=MA(C,5,지수);
EMA1 = eavg(close, 5);
EMA2 = eavg(EMA1, 5);
EMA3 = eavg(EMA2, 5);
TEMA = 3*EMA1-3*EMA2+EMA3;
Crossup(TEMA,A)
해당 신호로 검색식 부탁드립니다.
항상 감사합니다.
2025-05-27
280
글번호 191217