커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
8106
글번호 230811
답변완료
수식 수정요청
아래 수식의 신호가 "지수이평이 120>240일인 경우"에만 나올 수 있게
수정(조건추가) 부탁드립니다.
₩₩₩₩₩₩₩₩₩₩₩₩₩₩₩₩₩₩₩₩₩₩₩₩₩₩₩₩₩₩₩₩₩₩₩₩₩₩₩₩₩₩
Input : shortPeriod(5), longPeriod(20),기간1(50);
var : M1(0),M2(0),a(0),a1(0),eq(0),ZL(0),B(0),B1(0),B2(0),PB(0);
M1 = ma(C, shortPeriod);
M2 = ma(C, longPeriod);
A = LRL(C,기간1);
A1 = LRL(A,기간1);
eq= A-A1;
ZL =A+eq;
PB=SAR(0.02,0.2);
if C>=O && C>=M1 && M1>M1[1] && M1[1]<=M1[2] && C>=M2 && M2>M2[1] && M2[1]<=M2[2] && C>=ZL && ZL>ZL[1] && ZL[1]<=ZL[2] && PB<=C Then
Find(1);
2024-01-21
1275
글번호 175945
답변완료
종목검색 수식요청드립니다..
안녕하세요.
영웅문에서의 수식인데 이것을 예스랭귀지로의 변경이 필요해서 문의드립니다.
1,2번이 기본검색식(영웅문 검색식)
3번이 응용검색식입니다..가능하다면 셋 다 구현해주시면 감사하겠습니다.
3번의 조건이 너무 조잡하여 구현이 안되면
1번,2번만이라도 잘 부탁드리겠습니다.. 꾸벅..
1.지수이동평균선240(M240)을 상향돌파 이후 이평선을 '한번'도 하향 이탈하지 않고
상향돌파 이후 최소 '20'봉 이상 진행 후
( 지수이동평균선240을 상향돌파 한 후의) 전고점 상향 돌파 시
(N번째신호) 표시
2.지수이동평균선240(M240)을 상향돌파 이후 이평선을 '한번'도 하향 이탈하지 않고
상향돌파 이후 최소 '20'봉 이상 진행 후
( 지수이동평균선240을 상향돌파 한 후의) 전고점 상향 돌파 시
(첫번째신호) 표시
3.1번의 조건에서 몇가지 수정하겠습니다..
지수이동평균선240을 이탈한 후
25일이 초과되면 돌파를 초기화한다.
(즉, 25일내로 회복하면 하나의 돌파로 간주한다.)
지수이동평균선240(M240)을 상향돌파 이후
이평선을 '2번'까지는 하향 이탈해도 괜찮다.
(단, 이탈했을시 각 이탈 시 '25'일 내로 다시 이동평균선240 위로 올라와야한다.
(예) 2번이탈시, 첫번째 이탈 시 20일후 회복, 2번째이탈 시 15일 후
회복 총합은 35일이 넘었지만, 각각 25일 이내면 가능함
(이탈 전 '첫' )상향돌파 이후 최소 '20'봉 이상 진행 후
(이탈하더라도 20봉의 갯수는 계속 카운트 된다. 첫 상향돌파 후 20봉이므로)
(이탈 전 '첫' 지수이동평균선240을 상향돌파 한 후의) 전고점 상향 돌파 시
(첫신호 or 2번째신호 or 3번째신호) 표시
영웅문 수식1:
M= ma(c, 240, 종류); //종류:지수
HH= Highestsince(1, crossup(c,m), H);
Bs= barssince(crossup(c,M))+1;
cnt= countsince(crossup(c,m), C>M);
Bs == cnt and crossup(c, hh(1)) and
Bs > 지연일 //지연일:20일
영웅문 수식2:
M= ma(c, 240, 종류); //종류:지수
HH= Highestsince(1, crossup(c,m), H);
Bs= barssince(crossup(c,M))+1;
cnt= countsince(crossup(c,m), C>M);
조건=
Bs == cnt and crossup(c, hh(1)) and
Bs > 지연일; //지연일:20일
첫신호= countsince(crossup(c,m), 조건);
첫신호==1 and 첫신호(1)==0
2024-01-22
1153
글번호 175944
답변완료
문의
안녕하세요
예스스탁입니다.
var : cnt(0);
Array : WeekH[10](0),WeekL[10](0),WeeKC[10](0);
if DayOfWeek(Bdate) < DayOfWeek(Bdate[1]) Then
{
For cnt = 9 DownTo 1
{
WeekH[cnt] = WeekH[cnt-1];
WeekL[cnt] = WeekL[cnt-1];
WeekC[cnt] = WeekC[cnt-1];
}
WeekH[0] = H;
WeekL[0] = L;
}
if WeekH[0] > 0 and H > WeekH[0] Then
WeekH[0] = H;
if WeekL[0] > 0 and L < WeekL[0] Then
WeekL[0] = L;
WeekC[0] = c;
if WeekH[1] > 0 and WeekL[1] > 0 Then
{
Plot1(WeekH[1],"전주고가");
Plot2(WeekL[1],"전주저가");
Plot3(WeekC[1],"전주종가");
}
if WeekH[0] > 0 and WeekL[0] > 0 Then
{
Plot4(WeekH[1],"이번주고가");
Plot5(WeekL[1],"이번주저가");
}
여기에서 이번주 시가를 외부변수로 해서 밤11시반으로 나타나게 부탁드립니다
2024-01-21
1277
글번호 175943
답변완료
수식 도움 요청드립니다
수고에 늘 감사드립니다.
아래 수식을 예스랭귀지로 변환하고자 도움을 요청 드립니다.
매번 수고에 거듭 감사드립니다.
//@version=5
indicator(title='Super trend B', overlay=true)
length = input.int(20, minval=1)
src = close
mult1 = input.float(0.5, minval=0.001, maxval=50, title=" multiflier")
basis = ta.sma(src, length)
upper1 = basis + mult1 * ta.stdev(src, length)
lower1 = basis - mult1 * ta.stdev(src, length)
plot(basis, "Basis", color=#FF6D00)
plot(upper1, "Upper 1", color=#2962FF)
plot(lower1, "Lower 1", color=#2962FF)
// INPUTS //
st_mult = input.float(3, title='SuperTrend Multiplier', minval=0, maxval=100, step=0.01)
st_period = input.int(7, title='SuperTrend Period', minval=1)
// CALCULATIONS //
up_lev = upper1 - st_mult * ta.atr(st_period)
dn_lev = lower1 + st_mult * ta.atr(st_period)
up_trend = 0.0
up_trend := close > up_trend ? math.max(up_lev, up_trend) : up_lev
down_trend = 0.0
down_trend := close < down_trend ? math.min(dn_lev, down_trend) : dn_lev
// Calculate trend var
trend = 0
trend := close > down_trend ? 1 : close < up_trend ? -1 : nz(trend, 1)
// Calculate SuperTrend Line
st_line = trend == 1 ? up_trend : down_trend
// Plotting
//plot(st_line[1], color=trend == 1 ? color.green : color.red, style=plot.style_cross, linewidth=2, title='SuperTrend')
buy = ta.crossover(close, st_line)
sell = ta.crossunder(close, st_line)
//plotshape(crossover( close, st_line), location = location.belowbar, color = color.green,size=size.tiny)
//plotshape(crossunder(close, st_line), location = location.abovebar, color = color.red,size=size.tiny)
//plotshape(buy, title='buy', text='Buy', color=color.new(color.green, 0), style=shape.labelup, location=location.belowbar, size=size.small, textcolor=color.new(color.white, 0)) //plot for buy icon
plotshape(sell, title='sell', text='Sell', color=color.new(color.red, 0), style=shape.labeldown, location=location.abovebar, size=size.small, textcolor=color.new(color.white, 0)) //plot for sell icon
//
multiplier = input.float(title='DEV', defval=2, minval=1)
src5 = close
len5 = input.int(title='Linear length', defval=150, minval=1)
offset = 0
calcSlope(src5, len5) =>
sumX = 0.0
sumY = 0.0
sumXSqr = 0.0
sumXY = 0.0
for i = 1 to len5 by 1
val = src5[len5 - i]
per = i + 1.0
sumX += per
sumY += val
sumXSqr += per * per
sumXY += val * per
sumXY
slope = (len5 * sumXY - sumX * sumY) / (len5 * sumXSqr - sumX * sumX)
average = sumY / len5
intercept = average - slope * sumX / len5 + slope
[slope, average, intercept]
var float tmp = na
[s, a, i] = calcSlope(src5, len5)
vwap1 = i + s * (len5 - offset)
sdev = ta.stdev(close, len5)
dev = multiplier * sdev
top = vwap1 + dev
bott = vwap1 - dev
//
z1 = vwap1 + dev
x1 = vwap1 - dev
low1 = ta.crossover(close, x1)
high1 = ta.crossunder(close, z1)
plotshape(low1, title='b', text='BUY', color=color.new(color.green, 0), style=shape.labelup, location=location.belowbar, size=size.small, textcolor=color.new(color.white, 0)) //plot for buy icon
//plotshape(high1, title='high', text='HIGH', color=color.new(color.green, 0), style=shape.labeldown, location=location.abovebar, size=size.small, textcolor=color.new(color.white, 0)) //plot for sell icon
/////// Alerts /////
//alertcondition(buy, title='buy')
alertcondition(sell, title='sell')
alertcondition(low1, title='buy')
//alertcondition(high1, title='buy tp')
2024-01-21
1438
글번호 175942
답변완료
부탁좀 드립니다.
상승 하는 20일선을
15일 기간안에서 (5일도 좋고, 7일도 좋고..)
20선을 돌파 했다가, 이탈 하고
재 돌파한 종목을 찾을 수 있을까요?
부탁 드립니다.
2024-01-21
1305
글번호 175941
답변완료
수식요청
안녕하세요
수식부탁드립니다
이평60선
볼밴과 이평폭 +- 10틱이내
매수식
가격이 이평 60선을 하락이나 상승후
이평 60선이 볼밴 하한선과의 폭이 +- 10틱이내인 상태에서
가격이 이평 60선을 터치나 하락후 상승시
첫봉에서 매수
매도식
가격이 이평60선을 상승이나 하락후
이평 60선이 볼밴 상한선과의 폭이 -+10틱이내
가격이 이평60선을 터치나상승후 하락시 첫봉에서 매도
2024-01-21
1228
글번호 175940
고래상어의꿈 님에 의해서 삭제되었습니다.
2024-01-21
3
글번호 175939
답변완료
질문드려요
두가지 신호를 동시에 만족시키는 종목을 검색하고 싶어요
부탁드립니다.
신호1
a=avg(c,5);
b=avg(c,20);
d=avg(c,60);
D1=(A+B+D)/3;
A1=(highest(high,9)+lowest(low,9))/2;
B1=(highest(high,26)+lowest(low,26))/2;
B2=(A1+B1)/2;
A3=RSI(9)-50;
B3=CMO(12)*0.5;
B4=A3+B3;
B5=eavg(C,120);
(crossup(B2,D1) or crossup(D1,B5) or crossup(B2,B5))
신호2
Bu=BBandsUp(20,2);
CrossUp(C, Bu(25))
2024-01-21
1202
글번호 175938
답변완료
질문드려요
신호수식인데 이신호로 종목검색하고 싶어요
부탁드립니다.
M= ma(C, 240, 삼각);
HH = HighestSince(1, CrossUp(C, M), H);
Bs = BarsSince(CrossUp(C, M))+1;
cnt = CountSince(CrossUp(C, M), C>M);
조건=
Bs == cnt &&
CrossUp(C, HH(1)) &&
Bs>20;
첫신호 = CountSince(CrossUp(C, M), 조건);
첫신호 ==1 && 첫신호(1)==0
2024-01-21
1252
글번호 175937