커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
3478
글번호 230811
답변완료
문의 드립니다.
안녕하세요
본 시스템으로 시뮬레이션을 해보니
손절만 일어나고 익절 거래가 이루어 지지 않습니다.
검토 부탁드립니다.
*일봉기준
1. 매수진입: 첫매수는 RSI(14) 55이하일때, 2회차부터는 RSI 55이하, 평균단가 이하일때, 전일보다 하락했을때만 매수, 총 40회차 매수 (원금대비 1/40씩 매수)
2. 청산: 손절 40회차 모두 매수 후 평균 단가에서 -10% 시 손절
익절: 40회차 모두 매수 후 평균 단가에서 +10% 시 익절
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 문의 드립니다.
>
안녕하세요
예스스탁입니다.
input : 총매수금(100000000);
input : 최대누적진입횟수(40);
input : 익절(10),손절(-10);
var1 = rsi(14);
if C < C[1] and var1 <= 55 Then
{
if MarketPosition == 0 or (MarketPosition == 1 and MaxEntries < 최대누적진입횟수 and C < AvgEntryPrice) Then
Buy("b",OnClose,Def,Floor((총매수금/40)/c));
}
if MarketPosition == 1 and MaxEntries == 최대누적진입횟수 Then
{
ExitLong("익절",AtLimit,AvgEntryPrice*(1+익절/100));
ExitLong("손절",AtLimit,AvgEntryPrice*(1+손절/100));
}
즐거운 하루되세요
2025-06-27
351
글번호 192155
답변완료
문의드립니다,
문의드립니다.
아래수식에 추가해주세요.
1.data2 이동평균선매수신호진입한이후 3시5분 data1매수식
if data2(crossup(ma(c,5),ma(c,20))) Then
buy();
if data2(crossdown(ma(c,5),ma(c,20))) Then
sell();
늘감사드립니다
2025-06-27
270
글번호 192150
답변완료
문의 드립니다.
안녕하세요
항상 감사합니다.
아래의 서식에서
40회차까지 모두 매수를 한 후에 손절과 익절이 실행될 수 있도록
수정 부탁드립니다.
40회 모두 매수 전까지누 손절, 익절 금지입니다.
감사합니다
input : 총매수금(100000000);
input : 익절(10),손절(-10);
var1 = rsi(14);
if C < C[1] and var1 <= 55 Then
{
if MarketPosition == 0 or (MarketPosition == 1 and MaxEntries < 40 and C < AvgEntryPrice) Then
Buy("b",OnClose,Def,Floor((총매수금/40)/c));
}
if MarketPosition == 1 Then
{
ExitLong("익절",AtLimit,AvgEntryPrice*(1+익절/100));
ExitLong("손절",AtLimit,AvgEntryPrice*(1+손절/100));
}
2025-06-27
304
글번호 192147
답변완료
호가잔량 표시
안녕하세요
선물잔량수치을 차트에표시할려구합니다 잔량수치을 천단위로 표시부탁합니다
2025-06-27
294
글번호 192143
오말리 님에 의해서 삭제되었습니다.
2025-06-27
0
글번호 192138
답변완료
종목검색 부탁드립니다.
안녕하세요?
아래의 수식의 종목검색부탁드립니다.
감사합니다.
CrossUp(h,BBandsUp(40, D1)) and c >= SAR(af,maxAF)
and V > avg(V, 40) * Multiple
&&
V > V(1) * Multiple
and
avg(c,MA1) >= (avg(c,MA2) or avg(c, MA3))
and
Disparity(Period1) <= Percent
percent 109
D1 2
af 0.007
MaxAF 0.1
Period1 224
Multiple 1.5
MA1 1
MA2 224
MA3 112
2025-06-27
353
글번호 192137
답변완료
문의 드립니다.
추세는 호가잔량 이평 오실레이터 0선 기준으로 하고
호가잔량 이평 오실레이터 0선 위이고 20이평선을 주가가 아래서 위로 돌파시 매수진입
매수 후 20이평선을 위에서 아래로 이탈 시 매도 청산 완료
호가잔량 이평 오실레이터 0선 아래이고 20이평선을 주가가 위에서 아래로 돌파시 매도진입
매도 후 20이평선을 아래에서 위로 돌파 시 매수 청산 완료
부탁드립니다.
2025-06-27
266
글번호 192135
답변완료
수식전환 요청드립니다.
안녕하세요. 운영자님
다음 지표수식을 예스트레이더에서 작동될 수 있도록 전환을 부탁드립니다.
감사합니다.
//@version=6
indicator("High Volume Node - ML", overlay = true, max_boxes_count = 500, max_lines_count = 500)
// INPUTS ――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――{
len = input.int(300, "len")
bins = input.int(100, "bins")
prf_col = input.color(color.rgb(0, 187, 212, 60), "Profile")
poc_col = input.color(color.blue, "High Volume Node")
delta_col1 = input.color(color.aqua, "Output+", inline = "1")
delta_col2 = input.color(color.red, "Output-", inline = "1")
profile1 = input.bool(true, "VP1", inline = "vp")
profile2 = input.bool(true, "VP2", inline = "vp")
profile3 = input.bool(true, "VP3", inline = "vp")
profile4 = input.bool(true, "VP4", inline = "vp")
// }
// CALCULATIONS――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――{
profile(length, bins, poc_mult, style = true)=>
values = array.new<float>()
vol_bins = array.new<float>(bins)
tot_vol = array.new<float>()
delta_vol = array.new<float>()
max_val = float(na)
min_val = float(na)
step = float(na)
var bin_levels = array.new<line>()
var bin_labels = array.new<label>()
poly = array.new<chart.point>()
if barstate.islast
for i = 0 to length - 1
values.push(high[i])
values.push(low[i])
max_val := values.max()
min_val := values.min()
step := (max_val-min_val)/bins
if barstate.islast
for i = 0 to bins - 1
vol_bins.set(i, 0)
for i = 0 to length - 1
c_top = math.max(close[i], open[i])
c_low = math.min(close[i], open[i])
c = close[i]
o = open[i]
vol = volume[i]
tot_vol.push(vol)
delta_vol.push(c > o ? vol : -vol)
for j = 0 to bins - 1
lower = min_val + step * j
upper = lower + step
mid = math.avg(lower, upper)
if c <= upper + step*1.5 and c >= lower - step*1.5
vol_bins.set(j, vol_bins.get(j) + vol)
if barstate.islast
check = false
if bin_levels.size() > 0
for k = 0 to bin_levels.size() - 1
line.delete(bin_levels.get(k))
if bin_labels.size() > 0
for k = 0 to bin_labels.size() - 1
label.delete(bin_labels.get(k))
for i = 0 to bins - 1
lower = min_val + step * i
upper = lower + step
mid = math.avg(upper, lower)
vol = int(vol_bins.get(i) / vol_bins.max() * 25)
start = bar_index - length
end = start +vol
var midd = float(na)
poly.push(chart.point.from_index(i == 0 ? start : i == bins - 1 ? start : end+1, mid))
if vol_bins.get(i) == vol_bins.max() and not check
check := true
bin_labels.push(label.new(start, mid, str.tostring(vol_bins.get(i), format.volume), style = label.style_label_right, color = color.new(poc_col, 25), force_overlay = true))
bin_levels.push(line.new(start, mid, start + int(length/poc_mult), mid, color = poc_col, force_overlay = true, width = 3))
bin_levels.push(line.new(start, max_val, bar_index, max_val, color = chart.fg_color, style = style ? line.style_solid : line.style_dashed))
bin_levels.push(line.new(start, min_val, bar_index, min_val, color = chart.fg_color, style = style ? line.style_solid : line.style_dashed))
bin_levels.push(line.new(start, max_val, start, min_val, color = chart.fg_color, style = line.style_solid))
bin_levels.push(line.new(start, max_val, start, min_val, color = chart.fg_color, style = line.style_solid))
bin_labels.push(label.new(start, max_val, "Total₩n" + str.tostring(tot_vol.sum(), format.volume), style = label.style_label_down, text_font_family = font.family_monospace, size = size.small, tooltip = "Total Volume over VolumeProfile period", color = color.blue))
bin_labels.push(label.new(start, min_val, str.tostring(delta_vol.sum(), format.volume) + "₩nOutput", style = label.style_label_up, text_font_family = font.family_monospace, size = size.small, tooltip = "Output Volume over VolumeProfile period", color = delta_vol.sum() < 0 ? delta_col2 : delta_col1))
polyline.delete( polyline.new(poly, line_color = #00e67700, fill_color = prf_col)[1] )
if profile1
profile(len, bins, 2)
if profile2
profile(int(len/2), bins, 2, false)
if profile3
profile(int(len/4), bins, 2, false)
if profile4
profile(int(len/8), bins, 1, false)
// }
2025-06-27
352
글번호 192134
답변완료
수식 부탁드립니다
자표식 부탁 드립니다. 시작 시간이 00시 날짜가 아니라 07시 전자거래시간(ETH) 기준입니다.
study(title="Opening-Range", shorttitle="Opening-Range", overlay=true)
up60on = input(true, title="60 Minute Opening Range High")
down60on = input(true, title="60 Minute Opening Range Low")
is_newbar(res) => change(time(res)) != 0
adopt(r, s) => security(tickerid, r, s)
high_range = valuewhen(is_newbar('D'),high,0)
low_range = valuewhen(is_newbar('D'),low,0)
up = plot(up60on ? adopt('60', high_range):na, color = lime, style=circles, linewidth=4)
down = plot(down60on ? adopt('60', low_range): na, color = #DC143C, style=circles, linewidth=4)
trans60 = up60on ? 75 : 100
fill(up, down, color = white, transp=trans60)
2025-06-27
285
글번호 192131