커뮤니티
예스랭귀지 Q&A
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1359
글번호 230811
답변완료
89935글 수정 좀 부탁 드림니다.
지난번 주신 지표중 하단 부분 분홍색 별은 계속 바뀌고 있습니다.
하단별만 갱신안되도록 수정 좀 부탁 드림니다.
##========================================================
안녕하세요
예스스탁입니다.
현재수식은 값이 갱신되면
첫번째 최고/최저와 두번째 최고/최저만 표시하므로
새로운 최고/최저가 발생하면 표시를 이동하게 됩니다.
새로운 최고/최저가 발생하면 이동하지 않고 새로 그리게 하고
갱신이 없는 봉은 소리가 출력되게 수정해 드립니다.
Input : Period(14);
var : DMIv(0),DP(0),DM(0),TT7(0);
var : um1(0),um2(0),ud1(0),ut1(0),uv1(0),utx1(0),utx2(0);
var : dm1(0),dm2(0),dd1(0),dt1(0),dv1(0),dtx1(0),dtx2(0);
DMIv = DMI(Period);
DP = DIPlus(Period);
DM = DIMinus(Period);
if CrossUp(DP,DM) Then
{
TT7 = 1;
dm1 = 0;
dm2 = 0;
}
if CrossDown(DP,DM) Then
{
TT7 = -1;
um1 = 0;
um2 = 0;
}
if TT7 == 1 Then
{
if DMiv > dp Then
{
if DMiv-dp > dm1 Then
{
dd1 = sDate;
dt1 = sTime;
dv1 = h;
if dm1 == 0 Then
{
dtx1 = Text_New(dd1,dt1,dv1-PriceScale*10,"★");
Text_SetColor(dtx1,RgB(0,255,0) ) ;
Text_SetStyle(dtx1,2,1);
Text_SetSize(dtx1,40) ;
//PlaySound("C:CyberOrOWav3Start.wav");
}
Else
{
dtx1 = Text_New(dd1,dt1,dv1-PriceScale*10,"★");
Text_SetColor(dtx1,RgB(0,255,0) ) ;
Text_SetStyle(dtx1,2,1);
Text_SetSize(dtx1,40) ;
//Text_SetLocation(dtx1,dd1,dt1,dv1-PriceScale*10);
if dm1 > dm2 Then
{
if dm2 == 0 Then
{
dtx2 = Text_New(dd1[1],dt1[1],dv1[1]-PriceScale*10,"★");
Text_SetColor(dtx2,RgB(0,255,0) ) ;
Text_SetStyle(dtx2,2,1);
Text_SetSize(dtx2,40) ;
## PlaySound("C:KiwoomHero4soundsound11.wav");
}
Else
{
dtx2 = Text_New(dd1[1],dt1[1],dv1[1]-PriceScale*10,"★");
Text_SetColor(dtx2,RgB(0,255,0) ) ;
Text_SetStyle(dtx2,2,1);
Text_SetSize(dtx2,40) ;
## PlaySound("C:KiwoomHero4soundsound11.wav");
}
dm2 = dm1;
}
}
dm1 = DMiv-dp;
}
Else
{
if DMiv-dp > dm2 Then
{
if dm2 == 0 Then
{
dtx2 = Text_New(sDate,sTime,H,"★");
Text_SetColor(dtx2,RgB(0,255,0) ) ;
Text_SetStyle(dtx2,2,1);
Text_SetSize(dtx2,40) ;
## PlaySound("C:KiwoomHero4soundsound11.wav");
}
Else
{
dtx2 = Text_New(dd1[1],dt1[1],dv1[1]-PriceScale*10,"★");
Text_SetColor(dtx2,RgB(0,255,0) ) ;
Text_SetStyle(dtx2,2,1);
Text_SetSize(dtx2,40) ;
}
dm2 = DMiv-dp;
}
Else
PlaySound("C:KiwoomHero4soundsound11.wav");
}
}
}
##==========================================================================
if TT7 == -1 Then
{
if DMiv > dm Then
{
if DMiv-dm > um1 Then
{
ud1 = sDate;
ut1 = sTime;
uv1 = l;
if um1 == 0 Then
{
utx1 = Text_New(ud1,ut1,uv1+PriceScale*10,"★");
Text_SetColor(utx1,RgB(255,0,255) ) ;
Text_SetStyle(utx1,2,0);
Text_SetSize(utx1,40) ;
##PlaySound("C:KiwoomHero4soundsound1.wav");
}
Else
{
Text_SetLocation(utx1,ud1,ut1,uv1+PriceScale*10);
if um1 > um2 Then
{
if um2 == 0 Then
{
utx2 = Text_New(ud1[1],ut1[1],uv1[1]+PriceScale*10,"★");
Text_SetColor(utx2,RgB(255,0,255) ) ;
Text_SetStyle(utx2,2,0);
Text_SetSize(utx2,40) ;
## PlaySound("C:KiwoomHero4soundsound1.wav");
}
Else
{
Text_SetLocation(utx2,ud1[1],ut1[1],uv1[1]+PriceScale*10);
}
um2 = um1;
}
}
um1 = DMiv-dm;
}
Else
{
if DMiv-dm > um2 Then
{
if um2 == 0 Then
{
utx2 = Text_New(sDate,sTime,uv1+PriceScale*10,"★");
Text_SetColor(utx2,RgB(255,0,255) ) ;
Text_SetStyle(utx2,2,0);
Text_SetSize(utx2,40) ;
## PlaySound("C:KiwoomHero4soundsound1.wav");
}
Else
{
Text_SetLocation(utx2,sDate,sTime,l+PriceScale*10);
}
um2 = DMiv-dm;
}
Else
PlaySound("C:KiwoomHero4soundsound11.wav");
}
}
}
죄송합니다. 수고 하십시요.
2024-11-14
590
글번호 185248
답변완료
지표
볼린저밴드 3개을표현하고싶습니다
1,이평20일 상단 하단
2,이평12일 상단 하단
3,이평8일 상단 하단
수고하세요
2024-11-14
553
글번호 185247
답변완료
수고하십니다
항상 노고에 감사드립니다
변환 부탁드립니다
타임이 불가능하면 선과신호만 부탁드립니다
indicator("Zero Lag Trend Signals (MTF) [AlgoAlpha]", shorttitle="AlgoAlpha - 0️⃣Zero Lag Signals", overlay=true)
length = input.int(70, "Length", tooltip = "The Look-Back window for the Zero-Lag EMA calculations", group = "Main Calculations")
mult = input.float(1.2, "Band Multiplier", tooltip = "This value controls the thickness of the bands, a larger value makes the indicato less noisy", group = "Main Calculations")
t1 = input.timeframe("5", "Time frame 1", group = "Extra Timeframes")
t2 = input.timeframe("15", "Time frame 2", group = "Extra Timeframes")
t3 = input.timeframe("60", "Time frame 3", group = "Extra Timeframes")
t4 = input.timeframe("240", "Time frame 4", group = "Extra Timeframes")
t5 = input.timeframe("1D", "Time frame 5", group = "Extra Timeframes")
green = input.color(#00ffbb, "Bullish Color", group = "Appearance")
red = input.color(#ff1100, "Bearish Color", group = "Appearance")
src = close
lag = math.floor((length - 1) / 2)
zlema = ta.ema(src + (src - src[lag]), length)
volatility = ta.highest(ta.atr(length), length*3) * mult
var trend = 0
if ta.crossover(close, zlema+volatility)
trend := 1
if ta.crossunder(close, zlema-volatility)
trend := -1
zlemaColor = trend == 1 ? color.new(green, 70) : color.new(red, 70)
m = plot(zlema, title="Zero Lag Basis", linewidth=2, color=zlemaColor)
upper = plot(trend == -1 ? zlema+volatility : na, style = plot.style_linebr, color = color.new(red, 90), title = "Upper Deviation Band")
lower = plot(trend == 1 ? zlema-volatility : na, style = plot.style_linebr, color = color.new(green, 90), title = "Lower Deviation Band")
fill(m, upper, (open + close) / 2, zlema+volatility, color.new(red, 90), color.new(red, 70))
fill(m, lower, (open + close) / 2, zlema-volatility, color.new(green, 90), color.new(green, 70))
plotshape(ta.crossunder(trend, 0) ? zlema+volatility : na, "Bearish Trend", shape.labeldown, location.absolute, red, text = "▼", textcolor = chart.fg_color, size = size.small)
plotshape(ta.crossover(trend, 0) ? zlema-volatility : na, "Bullish Trend", shape.labelup, location.absolute, green, text = "▲", textcolor = chart.fg_color, size = size.small)
plotchar(ta.crossover(close, zlema) and trend == 1 and trend[1] == 1 ? zlema-volatility*1.5 : na, "Bullish Entry", "▲", location.absolute, green, size = size.tiny)
plotchar(ta.crossunder(close, zlema) and trend == -1 and trend[1] == -1 ? zlema+volatility*1.5 : na, "Bearish Entry", "▼", location.absolute, red, size = size.tiny)
s1 = request.security(syminfo.tickerid, t1, trend)
s2 = request.security(syminfo.tickerid, t2, trend)
s3 = request.security(syminfo.tickerid, t3, trend)
s4 = request.security(syminfo.tickerid, t4, trend)
s5 = request.security(syminfo.tickerid, t5, trend)
s1a = s1 == 1 ? "Bullish" : "Bearish"
s2a = s2 == 1 ? "Bullish" : "Bearish"
s3a = s3 == 1 ? "Bullish" : "Bearish"
s4a = s4 == 1 ? "Bullish" : "Bearish"
s5a = s5 == 1 ? "Bullish" : "Bearish"
if barstate.islast
var data_table = table.new(position=position.top_right, columns=2, rows=6, bgcolor=chart.bg_color, border_width=1, border_color=chart.fg_color, frame_color=chart.fg_color, frame_width=1)
table.cell(data_table, text_halign=text.align_center, column=0, row=0, text="Time Frame", text_color=chart.fg_color)
table.cell(data_table, text_halign=text.align_center, column=1, row=0, text="Signal", text_color=chart.fg_color)
table.cell(data_table, text_halign=text.align_center, column=0, row=1, text=t1, text_color=chart.fg_color)
table.cell(data_table, text_halign=text.align_center, column=1, row=1, text=s1a, text_color=chart.fg_color, bgcolor=s1a == "Bullish" ? color.new(green, 70) : color.new(red, 70))
table.cell(data_table, text_halign=text.align_center, column=0, row=2, text=t2, text_color=chart.fg_color)
table.cell(data_table, text_halign=text.align_center, column=1, row=2, text=s2a, text_color=chart.fg_color, bgcolor=s2a == "Bullish" ? color.new(green, 70) : color.new(red, 70))
table.cell(data_table, text_halign=text.align_center, column=0, row=3, text=t3, text_color=chart.fg_color)
table.cell(data_table, text_halign=text.align_center, column=1, row=3, text=s3a, text_color=chart.fg_color, bgcolor=s3a == "Bullish" ? color.new(green, 70) : color.new(red, 70))
table.cell(data_table, text_halign=text.align_center, column=0, row=4, text=t4, text_color=chart.fg_color)
table.cell(data_table, text_halign=text.align_center, column=1, row=4, text=s4a, text_color=chart.fg_color, bgcolor=s4a == "Bullish" ? color.new(green, 70) : color.new(red, 70))
table.cell(data_table, text_halign=text.align_center, column=0, row=5, text=t5, text_color=chart.fg_color)
table.cell(data_table, text_halign=text.align_center, column=1, row=5, text=s5a, text_color=chart.fg_color, bgcolor=s5a == "Bullish" ? color.new(green, 70) : color.new(red, 70))
/////////////////////////////////////////ALERTS
alertcondition(ta.crossover(trend, 0), "Bullish Trend")
alertcondition(ta.crossunder(trend, 0), "Bearish Trend")
alertcondition(ta.cross(trend, 0), "(Bullish or Bearish) Trend")
alertcondition(ta.crossover(s1, 0), "Bullish Trend Time Frame 1")
alertcondition(ta.crossunder(s1, 0), "Bearish Trend Time Frame 1")
alertcondition(ta.cross(s1, 0), "(Bullish or Bearish) Trend Time Frame 1")
alertcondition(ta.crossover(s2, 0), "Bullish Trend Time Frame 2")
alertcondition(ta.crossunder(s2, 0), "Bearish Trend Time Frame 2")
alertcondition(ta.cross(s2, 0), "(Bullish or Bearish) Trend Time Frame 2")
alertcondition(ta.crossover(s3, 0), "Bullish Trend Time Frame 3")
alertcondition(ta.crossunder(s3, 0), "Bearish Trend Time Frame 3")
alertcondition(ta.cross(s3, 0), "(Bullish or Bearish) Trend Time Frame 3")
alertcondition(ta.crossover(s4, 0), "Bullish Trend Time Frame 4")
alertcondition(ta.crossunder(s4, 0), "Bearish Trend Time Frame 4")
alertcondition(ta.cross(s4, 0), "(Bullish or Bearish) Trend Time Frame 4")
alertcondition(ta.crossover(s5, 0), "Bullish Trend Time Frame 5")
alertcondition(ta.crossunder(s5, 0), "Bearish Trend Time Frame 5")
alertcondition(ta.cross(s5, 0), "(Bullish or Bearish) Trend Time Frame 5")
2024-11-14
976
글번호 185246
답변완료
수식요청
일봉에서
아래와 같이 MACD가 급등하는 종목을 검색하고 싶습니다.
변환 요청드립니다.
C [일]1봉전 MACD(12,26) 0선 이하
D [일]1봉전 MACD(12,26,9) Signal 0선 이하
E [일]1봉전 MACD Osc(12,26,9) 0선 이하
F [일]0봉전 MACD Osc(12,26,9) 0선 이상
G [일]0봉전 MACD(12,26,9)가 Signal선 상향돌파
H [일]0봉전 RSI(20) 60 이상
I [일]1봉전 RSI(20) 59.9 이하
C and D and E and F and G and H and I
2024-11-14
718
글번호 185245
답변완료
키움수식을 파워종목 검색식 부탁드립니다
PRICE CHANNEL 상한돌파
A=highest(H, 26, 1);
B=PREDAYHIGH() - PREDAYLOW();
B1=DAYOPEN()+B*0.5;
CROSSUP(C,A) AND C>=B1
종목 검색식 수식 부탁드립니다
2024-11-13
623
글번호 185244
답변완료
시스템 수식변환 요청드립니다.
안녕하세요. 트레이딩뷰에서 'Squeeze Momentum Indicator' (https://kr.tradingview.com/v/nqQ1DT5a/)를 예스랭귀지 시스템 수식으로 변환부탁드립니다.
비트코인 거래위한 매수시점은 위 사진의 회색선이 연두색 막대그래프와 만나는 지점으로 하고, 청산시점(매도)은 연두색 막대그래프가 검은색 선과 만나는 지점으로 하는 수식으로 해주세요.
아래는 수식입니다.
//
// @author LazyBear
// List of all my indicators: https://www.tradingview.com/v/4IneGo8h/
//
study(shorttitle = "SQZMOM_LB", title="Squeeze Momentum Indicator [LazyBear]", overlay=false)
length = input(20, title="BB Length")
mult = input(2.0,title="BB MultFactor")
lengthKC=input(20, title="KC Length")
multKC = input(1.5, title="KC MultFactor")
useTrueRange = input(true, title="Use TrueRange (KC)", type=bool)
// Calculate BB
source = close
basis = sma(source, length)
dev = multKC * stdev(source, length)
upperBB = basis + dev
lowerBB = basis - dev
// Calculate KC
ma = sma(source, lengthKC)
range = useTrueRange ? tr : (high - low)
rangema = sma(range, lengthKC)
upperKC = ma + rangema * multKC
lowerKC = ma - rangema * multKC
sqzOn = (lowerBB > lowerKC) and (upperBB < upperKC)
sqzOff = (lowerBB < lowerKC) and (upperBB > upperKC)
noSqz = (sqzOn == false) and (sqzOff == false)
val = linreg(source - avg(avg(highest(high, lengthKC), lowest(low, lengthKC)),sma(close,lengthKC)),
lengthKC,0)
bcolor = iff( val > 0,
iff( val > nz(val[1]), lime, green),
iff( val < nz(val[1]), red, maroon))
scolor = noSqz ? blue : sqzOn ? black : gray
plot(val, color=bcolor, style=histogram, linewidth=4)
plot(0, color=scolor, style=cross, linewidth=2)
2024-11-13
1201
글번호 185243
답변완료
부탁드립니다
(30분봉종가(2)-30분봉시가(1)+2*30분봉시가(0))/2 를
1분봉 챠트에 지표로 나타내고 싶습니다
아래 로직으로는 다르게 나타나는 것 같습니다
input : 분(30);
var : S1(0),D1(0),TM(0),TF(0),cnt(0),Result(0);
Array : HH[50](0),LL[50](0),OO[50](0), cc[50](0);
if Bdate != Bdate[1] Then
{
S1 = TimeToMinutes(stime);
D1 = sdate;
}
if D1 > 0 then
{
if sdate == D1 Then
TM = TimeToMinutes(stime)-S1;
Else
TM = TimeToMinutes(stime)+1440-S1;
TF = TimeToMinutes(stime)%분;
if Bdate != Bdate[1] or
(Bdate == Bdate[1] and 분 > 1 and TF < TF[1]) or
(Bdate == Bdate[1] and 분 > 1 and TM >= TM[1]+분) or
(Bdate == Bdate[1] and 분 == 1 and TM > TM[1]) Then
{
for cnt = 49 downto 1
{
OO[cnt] = OO[cnt-1];
HH[cnt] = HH[cnt-1];
LL[cnt] = LL[cnt-1];
cc[cnt] = cc[cnt-1];
}
OO[0] = O;
HH[0] = H;
LL[0] = L;
cc[0] = C;
}
if H > HH[0] Then
HH[0] = H;
if L < LL[0] Then
LL[0] = L;
// 추가: 공식을 계산하여 플롯
if cc[2] > 0 and OO[1] > 0 Then
{
value1 = (cc[2] - OO[1] + 2 * OO[0]) / 2;
}
}
2024-11-14
705
글번호 185242
답변완료
질문 드립니다.
안녕하세요! 오늘도 질문드립니다.
아래는 일전에 예스스탁에서 질문에 대한 답으로 써주셨던 구문 중 일부입니다.(https://www.yesstock.com/Board/View.asp?db=board100036&Ext=0&startpage=1&pageno=1&num=185283&ref=185261&Sort=&KeyField=Content&KeyWord=%BE%C6%C4%A7%BD%C4&SystemName=)
다름이 아니라, 독해를 해보던 중, 첫번째줄부터 헷갈려서 글을 씁니다.
첫번째 줄의 "if (sdate != sdate[1] and stime >= StartTime1)"는 분봉기준으로 날짜가 넘어갔음을 의미하는 한편(sdate != sdate[1]), 현재 시간이 특정 시간을 넘어섰는지 확인하는 부분입니다. 이해가 가지 않는 점은, 분봉기준에서 날짜가 넘어갔다면 다음날의 09시 00분일텐데, 외부변수인 StartTime1(140000)보다 현재시간이 큰지를 확인하는 목적입니다. 두 조건이 'or' 조건으로 묶여있다면 의미가 있겠지만 'and'조건이라면 해당 부분의 의미자체가 없지 않나 싶어서요. 혹시 해당 구문의 의미를 알려주실 수 있으실까요..? 매번 답답한 질문만하여 정말 죄송합니다......
- 아 래 -
1)input : StartTime1(140000),EndTime1(150000);
input : StartTime2(90000),EndTime2(120000);
var : Tcond1(False),Tcond2(False);
var : HH1(0),preHH1(0),HH2(0);
if (sdate != sdate[1] and stime >= StartTime1) or
(sdate == sdate[1] and stime >= StartTime1 and stime[1] < StartTime1) Then
.... 이하생략
2024-11-13
695
글번호 185241
답변완료
문의 드립니다
편집기 input에서 셋팅 값을 변경하면
시스템 트레이딩 설정 창의 변수 값이 당초 셋팅 값이 그대로 있습니다
편집기에서 셋팅 값을 저장하고 변경하면 시스템트레이딩 설정 창이 자동으로 변경하는 방법을 알려주세요
즉 편집기 셋팅 값 정장 변경하면 편집기 셋팅 값이 동일하게 하는 방법이 따로 있나요.
감사합니다.
2024-11-13
776
글번호 185240