커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1541
글번호 230811
답변완료
문의 드립니다
if mav7200 < mav4800 and mav2400 > mav1200 and crossuP(mav80,mav300) 일때 매수진입
진입청산 식
if mav2400 < mav1200 and 일때 50캔들 진행 이후에
첫번째로 crossuP(mav80,mav300) 발생 이후에
crossDown(mav80,mav300) 진입청산 식을 표현하고자 합니다.
질문 진입청산 수식을 부탁합니다.
2025-06-24
244
글번호 192053
답변완료
지표 변환 부탁드립니다.
// This work is licensed under a Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0) https://creativecommons.org/licenses/by-nc-sa/4.0/
// © LuxAlgo
//@version=5
indicator("FVG Trailing Stop [LuxAlgo]", shorttitle = "LuxAlgo - FVG Trailing Stop", overlay = true)
//---------------------------------------------------------------------------------------------------------------------}
//User Inputs
//---------------------------------------------------------------------------------------------------------------------{
fvgLen = input.int(5, minval = 1, title = "Unmitigated FVG Lookback")
smoothLen = input.int(9, minval = 1, title = "Smoothing Length")
ts2Tog = input.bool(false, title = "Reset on Cross")
bullColor = input.color(#089981, title = " Bullish Color", inline = "bull", group = "Style")
bearColor = input.color(#f23645, title = "Bearish Color", inline = "bear", group = "Style")
bullFillColor = input.color(color.new(#089981, 80), title = "", inline = "bull", group = "Style")
bearFillColor = input.color(color.new(#f23645, 80), title = "", inline = "bear", group = "Style")
//---------------------------------------------------------------------------------------------------------------------}
//Functions
//---------------------------------------------------------------------------------------------------------------------{
fz(_val,_standin) => _val > 0 ? _val : _standin
//---------------------------------------------------------------------------------------------------------------------}
//FVG Level Arrays
//---------------------------------------------------------------------------------------------------------------------{
var bull_lvls = array.new<float>(0)
var bear_lvls = array.new<float>(0)
//---------------------------------------------------------------------------------------------------------------------}
//Calculations
//---------------------------------------------------------------------------------------------------------------------{
//FVG Detection
if low > high[2] and close[1] > high[2]
bull_lvls.push(high[2])
if high < low[2] and close[1] < low[2]
bear_lvls.push(low[2])
//Array Size Management
if bull_lvls.size() > fvgLen
bull_lvls.shift()
if bear_lvls.size() > fvgLen
bear_lvls.shift()
//FVG Mitigation Detection
if bull_lvls.size() > 0
for i = bull_lvls.size()-1 to 0
if close < bull_lvls.get(i)
bull_lvls.remove(i)
if bear_lvls.size() > 0
for i = bear_lvls.size()-1 to 0
if close > bear_lvls.get(i)
bear_lvls.remove(i)
//Bars to calc SMAs
bull_bs = fz(ta.barssince(not na(bull_lvls.avg())),1)
bear_bs = fz(ta.barssince(not na(bear_lvls.avg())),1)
//Progressive SMAs
csum = ta.cum(close)
//Calc starts at 1 when FVG array is empty and Maxes out at Smoothing Length
bull_sma = (csum - csum[math.min(bull_bs,smoothLen)]) / math.min(bull_bs,smoothLen)
bear_sma = (csum - csum[math.min(bear_bs,smoothLen)]) / math.min(bear_bs,smoothLen)
//Displayed Extreme Values
bull_disp = ta.sma(nz(bull_lvls.avg(),bull_sma),smoothLen)
bear_disp = ta.sma(nz(bear_lvls.avg(),bear_sma),smoothLen)
var int dir = 0
if close > bear_disp
dir := -1
if close < bull_disp
dir := 1
//Actual TS
var int os = na
var float ts = na
float sr_crossings = na
os := close > bear_disp ? 1 : close < bull_disp ? -1 : os
ts := os > os[1] ? bull_disp : os < os[1] ? bear_disp : os == 1 ? math.max(bull_disp, ts) : math.min(bear_disp, ts)
if ts2Tog
if os == 1
if close < ts
sr_crossings := ts, ts := na
else if close > bear_disp and na(ts)
ts := bull_disp
else if os == -1
if close > ts
sr_crossings := ts, ts := na
else if close < bull_disp and na(ts)
ts := bear_disp
//---------------------------------------------------------------------------------------------------------------------}
//Display
//---------------------------------------------------------------------------------------------------------------------{
ts_color = os != os[1] ? na : os == 1 ? bullColor : bearColor
plot_upper = plot((not na(ts) or not na(ts[1])) and os == -1 ? bear_disp : na, 'Upper'
, color.new(bearColor, 50)
, style = plot.style_linebr)
plot_lower = plot((not na(ts) or not na(ts[1])) and os == 1 ? bull_disp : na, 'Lower'
, color.new(bullColor, 50)
, style = plot.style_linebr)
plot_upper_ts = plot((not na(ts) or not na(ts[1])) and os == -1 ? nz(ts,ts[1]) : na, 'Upper Trailing Stop'
, color = bearColor
, style = plot.style_linebr)
plot_lower_ts = plot((not na(ts) or not na(ts[1])) and os == 1 ? nz(ts,ts[1]) : na, 'Lower Trailing Stop'
, color = bullColor
, style = plot.style_linebr)
plot(os != os[1] ? ts : na, 'Trend Changes'
, color = os == 1 ? bullColor : bearColor
, style = plot.style_circles
, linewidth = 1)
plot(sr_crossings, 'Crossings'
, color = ts_color
, style = plot.style_circles
, linewidth = 3)
fill(plot_lower_ts, plot_lower
, (not na(ts) or not na(ts[1])) and os == 1 ? nz(ts,ts[1]) : na
, bull_disp
, bullFillColor
, color.new(chart.bg_color, 100))
fill(plot_upper, plot_upper_ts
, bear_disp
, (not na(ts) or not na(ts[1])) and os == -1 ? nz(ts,ts[1]) : na
, color.new(chart.bg_color, 100)
, bearFillColor)
//---------------------------------------------------------------------------------------------------------------------}
2025-06-24
461
글번호 192052
답변완료
부탁드립니다.
아래 지표에서 signal 70통과시 분홍색 30통과시 파랑색으로 70과 30사이는 그냥 하얀바탕으로 강세약세 지표 부탁드립니다.
input : length(14);
input : smoType1(3); #1:EMA, 2:SMA, 3:RMA, 4TMA
input : arsiCss(silver);
input : autoCss(true);
//Signal Line
input : smooth(14);
input : smoType2(1);#1EMA, 2SMA, 3RMA, 4TMA
input : signalCss(Orange);
//OB/OS Style
input : obValue(75);
input : obCss(Green);
input : obAreaCss(LightGreen);
input : osValue(25);
input : osCss(Red);
input : osAreaCss(LightRed);
var : src(0);
var : upper(0),lower(0),r(0);
var : d(0),diff(0),alpha(0),num(0),den(0),arsi(0),signal(0),a(0),tx(0);
src = close;
upper = highest(src, length);
lower = lowest(src, length);
r = upper - lower;
d = src - src[1];
diff = iff(upper > upper[1] , r , iff(lower < lower[1] , -r , d));
if smoType1 == 1 Then
{
num = ema(diff, length);
den = ema(abs(diff), length);
}
if smoType1 == 2 Then
{
num = ma(diff, length);
den = ma(abs(diff), length);
}
if smoType1 == 3 Then
{
alpha = 1/length;
num = iff(isnan(num[1]) == true, ma(diff, length) , alpha * diff + (1 - alpha) * iff(isnan(num[1])==true,0,num[1]));
den = iff(isnan(den[1]) == true, ma(abs(diff), length) , alpha * abs(diff) + (1 - alpha) * iff(isnan(den[1])==true,0,den[1]));
}
if smoType1 == 4 Then
{
num = ma(ma(diff, length),length);
den = ma(ma(abs(diff), length), length);
}
arsi = num / den * 50 + 50;
if smoType2 == 1 Then
{
signal = ema(arsi, smooth);
}
if smoType2 == 2 Then
{
signal = ma(arsi, smooth);
}
if smoType2 == 3 Then
{
a = 1/smooth;
signal = iff(isnan(signal[1]) == true, ma(arsi, length) , a * arsi + (1 - a) * iff(isnan(signal[1])==true,0,signal[1]));
}
if smoType2 == 4 Then
{
signal = ma(arsi, smooth);
}
plot1(arsi, "Ultimate RSI",IFf(arsi > obValue , obCss , IFF(arsi < osValue , osCss ,IFf( autoCss , Black , arsiCss))));
plot2(signal, "Signal Line", signalCss);
PlotBaseLine1(obValue, "Overbought");
PlotBaseLine2(50, "Midline");
PlotBaseLine3(osValue, "Oversold");
PlotBaseLine4(25, "25",Gray);
PlotBaseLine5(30, "30",Gray);
PlotBaseLine6(35, "35",Gray);
PlotBaseLine7(40, "40",Gray);
PlotBaseLine8(45, "45",Gray);
PlotBaseLine9(55, "55",Gray);
PlotBaseLine10(60, "60",Gray);
PlotBaseLine11(65, "65",Gray);
PlotBaseLine12(70, "70",Gray);
PlotBaseLine13(75, "75",Gray);
var : tx1(0),tx2(0);
var : tl1(0),tl2(0),box1(0);
var : tl3(0),tl4(0),box2(0);
if CrossUp(signal,50) Then
{
tx1 = Text_New(sDate,sTime,L,"●");
Text_SetColor(tx1,rgb(255, 0, 127));
Text_SetStyle(tx1,2,0);
Text_SetSize(tx1,30);
tx2 = Text_New_Self(sDate,sTime,50,"●");
Text_SetColor(tx2,rgb(255, 0, 127));
Text_SetStyle(tx2,2,0);
Text_SetSize(tx2,16);
TL_Delete(tl1);
TL_Delete(tl2);
var1 = l;
var2 = c;
tl1 = TL_New(sDate,sTime,var1,NextBarSdate,NextBarStime,var1);
tl2 = TL_New(sDate,sTime,var2,NextBarSdate,NextBarStime,var2);
TL_SetColor(tl1,LightGray);
TL_SetColor(tl2,LightGray);
Box_Delete(box1);
box1 = Box_new(sDate,sTime,var1,NextBarSdate,NextBarStime,var2);
Box_SetColor(box1,Red);
Box_SetFill(box1,true);
}
Else
{
TL_SetEnd(tl1,NextBarSdate,NextBarStime,var1);
TL_SetEnd(tl2,NextBarSdate,NextBarStime,var2);
box_SetEnd(box1,NextBarSdate,NextBarStime,var2);
}
if CrossDown(signal,50) Then
{
tx1 = Text_New(sDate,sTime,H,"●");
Text_SetColor(tx1,rgb(0, 145, 255));
Text_SetStyle(tx1,2,1);
Text_SetSize(tx1,30);
tx2 = Text_New_Self(sDate,sTime,50,"●");
Text_SetColor(tx2,rgb(0, 145, 255));
Text_SetStyle(tx2,2,1);
Text_SetSize(tx2,16);
TL_Delete(tl3);
TL_Delete(tl4);
var3 = h;
var4 = c;
tl3 = TL_New(sDate,sTime,var3,NextBarSdate,NextBarStime,var3);
tl4 = TL_New(sDate,sTime,var4,NextBarSdate,NextBarStime,var4);
TL_SetColor(tl3,LightGray);
TL_SetColor(tl4,LightGray);
Box_Delete(box2);
box2 = Box_new(sDate,sTime,var3,NextBarSdate,NextBarStime,var4);
Box_SetColor(box2,rgb(0, 255, 255));
Box_SetFill(box2,true);
}
Else
{
TL_SetEnd(tl3,NextBarSdate,NextBarStime,var3);
TL_SetEnd(tl4,NextBarSdate,NextBarStime,var4);
box_SetEnd(box2,NextBarSdate,NextBarStime,var4);
}
if CrossUp(signal,75) Then
{
tx1 = Text_New(sDate,sTime,L,"◈");
Text_SetColor(tx1,Red);
Text_SetStyle(tx1,2,0);
Text_SetSize(tx1,25);
tx2 = Text_New_Self(sDate,sTime,50,"◈");
Text_SetColor(tx2,Red);
Text_SetStyle(tx2,2,0);
Text_SetSize(tx2,20);
}
if CrossDown(signal,25) Then
{
tx1 = Text_New(sDate,sTime,H,"◈");
Text_SetColor(tx1,rgb(34, 0, 204));
Text_SetStyle(tx1,2,1);
Text_SetSize(tx1,25);
tx2 = Text_New_Self(sDate,sTime,50,"◈");
Text_SetColor(tx2,Blue);
Text_SetStyle(tx2,2,1);
Text_SetSize(tx2,20);
}
if CrossUp(signal,70) Then
{
tx1 = Text_New(sDate,sTime,L,"◈");
Text_SetColor(tx1,Red);
Text_SetStyle(tx1,2,0);
Text_SetSize(tx1,25);
tx2 = Text_New_Self(sDate,sTime,50,"◈");
Text_SetColor(tx2,Red);
Text_SetStyle(tx2,2,0);
Text_SetSize(tx2,20);
}
if CrossDown(signal,30) Then
{
tx1 = Text_New(sDate,sTime,H,"◈");
Text_SetColor(tx1,rgb(34, 0, 204));
Text_SetStyle(tx1,2,1);
Text_SetSize(tx1,25);
tx2 = Text_New_Self(sDate,sTime,50,"◈");
Text_SetColor(tx2,Blue);
Text_SetStyle(tx2,2,1);
Text_SetSize(tx2,20);
}
var : slv(0),sld(0),slt(0),slv1(0),sld1(0),slt1(0);
var : plv(0),pld(0),plt(0),plv1(0),pld1(0),plt1(0);
var : dtl1(0),dtl2(0);
if CrossDown(signal,20) Then
{
slv = signal;
sld = sDate;
slt = sTime;
slv1 = slv[1];
sld1 = sld[1];
slt1 = slt[1];
plv = l;
pld = sDate;
plt = sTime;
plv1 = plv[1];
pld1 = pld[1];
plt1 = plt[1];
}
0선 기준으로 통과시 화살표 표시 ↑ ↓ 부탁드립니다.
input : short(10),long(100);
var : macdv(0),tx(0);
macdv = macd(short,long);
Plot1(macdv);
PlotBaseLine1(0);
if CrossUp(macdv,0) Then
{
tx = Text_New(sDate,sTime,macdv,"▲");
Text_SetColor(tx,Red);
Text_SetSize(tx,20);
}
2025-06-24
362
글번호 192049
답변완료
검토부탁드립니다.
1분봉에서 종가상승통계를 보는데
마지막 최고값과 최저값이 나오지 않고 0 으로 표시됩니다.
최고값과 최저값을 나올수 있도록 검토부탁드립니다.
감사합니다.
var : 종가상승통계(0); 종가상승통계= CountIF(c>c[1], 20); plot1(종가상승통계, "종가상승통계", red);
var : 종가상승통계2(0); 종가상승통계2= CountIF(c>c[2], 30); plot2(종가상승통계2, "종가상승통계2", red);
var : 종가상승통계3(0); 종가상승통계3= CountIF(c>c[3], 40); plot3(종가상승통계3, "종가상승통계3", red);
var : 종가상승통계4(0); 종가상승통계4= CountIF(c>c[4], 60); plot4(종가상승통계4, "종가상승통계4", red);
var : 종가상승통계5(0); 종가상승통계5= CountIF(c>c[5], 80); plot5(종가상승통계5, "종가상승통계5", red);
var : 종가상승통계6(0); 종가상승통계6= CountIF(c>c[6], 120); plot6(종가상승통계6, "종가상승통계6", red);
var : 종가상승통계7(0); 종가상승통계7= CountIF(c>c[7], 160); plot7(종가상승통계7, "종가상승통계7", red);
var : 종가상승통계8(0); 종가상승통계8= CountIF(c>c[8], 200); plot8(종가상승통계8, "종가상승통계8", red);
var : 종가상승통계9(0); 종가상승통계9= CountIF(c>c[9], 240); plot9(종가상승통계9, "종가상승통계9", red);
var : 종가상승통계10(0); 종가상승통계10= CountIF(c>c[10], 300); plot10(종가상승통계10, "종가상승통계10", red);
var : 최고값(0);max(종가상승통계,종가상승통계2,종가상승통계3,종가상승통계4,종가상승통계5,종가상승통계6,종가상승통계7,종가상승통계8,종가상승통계9,종가상승통계10); plot11(최고값, "최고값", yellow);
var : 최저값(0);min(종가상승통계,종가상승통계2,종가상승통계3,종가상승통계4,종가상승통계5,종가상승통계6,종가상승통계7,종가상승통계8,종가상승통계9,종가상승통계10); plot12(최저값, "최저값", black);
2025-06-24
261
글번호 192048
답변완료
질문
1. 색상이 바뀔때 , 지표data1 차트에 문자표시및텍스트 작성되게 가능할까요?
if dayindex+1 < 이평봉수 Then 이평값 = dayindex+1;
else 이평값 = 이평봉수;
이평 = Ma(지표, 이평값);
//
if 이평[1] <=이평 then 지표색 = RGB(255, 166, 255);// 연핑 <= 상승색
if 이평[1] > 이평 then 지표색 = RGB(132, 193, 255);// 연청 <= 하락색
//===== 지표의 출력
if 당일분만출력이면1 == 1 Then {
if CurrentDate == sdate Then {
plot11(이평, "지표선", 지표색, DEF, 굵기);
If 이평 > -5 and 이평 < 10 Then
plot51(0, "0선", GRAY, DEF, 0);
}
}
Else {
plot11(이평, "지표선", 지표색, DEF, 굵기);
If 이평 > -5 and 이평 < 10 Then
plot51(0, "0선", GRAY, DEF, 0);
}
2025-06-24
253
글번호 192041
답변완료
수식 부탁합니다
6/24일 HMM 3분봉 차트에 나타난 지표 9시 45분 발생한 빨강 원형 마크
종목검색식 수식 부탁합니다
지표식은 아래와 같고 첨부파일로 HMM 오늘 분봉 차트 보냅니다.
input : zlmaSource(close),zlmaFastLength(8),zlmaSlowLength(21);
var : zema1(0),zema2(0),c1(0),c2(0),zema3(0),zema4(0),zlemaFast(0),zlemaSlow(0);
// Fast ZeroLag EMA
zema1 = ema(zlmaSource, zlmaFastLength);
zema2 = ema(zema1, zlmaFastLength);
c1=zema1-zema2;
zlemaFast=zema1+c1;
// Slow ZeroLag EMA
zema3=ema(zlmaSource, zlmaSlowLength);
zema4=ema(zema3, zlmaSlowLength);
c2=zema3-zema4;
zlemaSlow=zema3+c2;
plot1(zlemaFast, "Fast ZeroLag EMA",Yellow,Def,2);
plot2(zlemaSlow, "Slow ZeroLag EMA",Green,Def,3);
input : per(34);
var : src(0),lmean(0),smean(0),gma(0);
src = close;
lmean = log(src);
smean = AccumN(lmean,per);
gma = exp(smean/per);
plot3(gma,"GMA",Blue);
if CrossUp(zlemaFast,zlemaSlow) Then plot4(zlemaFast);
if CrossDown (zlemaFast,zlemaSlow) Then plot5(zlemaFast);
if zlemaSlow > zlemaSlow[1] Then
plot2(zlemaSlow,"Slow ZeroLag EmA",Red,Def,7);
2025-06-24
304
글번호 192039
답변완료
부틱드립니다
수고하십니다
1.미국 공휴일로 미니 나스닥선물 조기마감하면 조기종료 분봉종가선과 07:00시작되는 분봉 시가선 각각두선을 수평선 수식 부탁드립니다
2.미니 나스닥선물000000 ~ 013000 시간 사이에최고점과 최저점 각각두선을 수평선 수식 부탁드립니다
2025-06-24
326
글번호 192038
답변완료
참조데이터를 겹쳐보고 싶습니다
kp 외국인순매수금액과 외국인선물순매수수량 을 1분봉에서 겹쳐서 보고싶습니다.
2025-06-24
267
글번호 192037
답변완료
부탁드립니다
아래 예스트레이더 종목 검색식 부탁드립니다.
C > ma(C,20) && C(1) <= ma(C(1),20) && C(2) > ma(C(2),20) &&
sum(if(C(3) > ma(C(1),20),1,0),10)==10
2025-06-23
252
글번호 192036