커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
8023
글번호 230811
답변완료
종목검색식 부탁드림니다.
항상 노고에 감사드림니다.
체결강도 5일선이 20일선 골든크로스될때 검색되는 종목검색식 부탁드림니다.
2025-07-13
429
글번호 192463
답변완료
수식전환
수고하십니다 아래수식을 예스수식으로 변혼부탁드립니다
a=avg(c,120);
ㄱ=valuewhen(1,crossup(c,a)&&o<c,H);
ㄴ=valuewhen(1,crossup(c,a)&&o<c,a);
ㄱ+(ㄱ-ㄴ)
a=avg(c,120);
ㄱ=valuewhen(1,crossup(c,a)&&o<c,H);
ㄴ=valuewhen(1,crossup(c,a)&&o<c,a);
ㄱ+(ㄱ-ㄴ)*2
2025-07-13
387
글번호 192462
답변완료
부탁드립니다.
도움에 감사 드립니다.
아래의 즉 일자가 바뀌면 새로 계산하는것을
주(week)가 바뀌면 새로 계산 하는것으로 수정 부탁 드립니다.
미리 감사 드립니다.
If bdate != bdate[1] Then //break on session에 해당, 즉 일자가 바뀌면 새로 계산
{
수식)
input:renkoSize(0.5),length(10), NumATRs(1.5);
var:j(0),k(0),renkoCnt(0),gubun(0),Sum(0),mav(0);
array:OO[50](0),HH[50](0),LL[50](0),CC[50](0); //이평선
If bdate != bdate[1] Then //break on session에 해당, 즉 일자가 바뀌면 새로 계산
{
gubun = 0; //방향을 초기화한다. 이후 형성되는 가격에 의해 방향이 계산
For j = 49 DownTo 1 //금일 시가봉을 신규 추가
{
OO[j] = OO[j-1];
HH[j] = HH[j-1];
LL[j] = LL[j-1];
CC[j] = CC[j-1];
}
OO[0] = C; //분봉의 종가를 기반으로 계산하기 때문에 당일 시초가 아니다
HH[0] = C;
LL[0] = C;
CC[0] = C;
}
Else
{
If gubun == 0 and CC[0] > 0 Then //일 첫봉이 완성되지 않은 시점
{
If OO[0] - renkoSize >= C Then
{
gubun = -1; //하락 방향
CC[0] = OO[0] - renkoSize; //음봉
HH[0] = OO[0];
LL[0] = CC[0];
j = 0;
}
Else If OO[0] + renkoSize <= C Then
{
gubun = 1; //상승 방향
CC[0] = OO[0] + renkoSize; //양봉
HH[0] = CC[0];
LL[0] = OO[0];
j = 0;
}
}
If LL[0] - renkoSize >= C Then
{
gubun = -1;
renkoCnt = Int(Round((LL[0]-C)/renkoSize,9));
if renkoCnt > 49 then renkoCnt = 49;
For j = 49 DownTo renkoCnt
{
OO[j] = OO[j-renkoCnt];
HH[j] = HH[j-renkoCnt];
LL[j] = LL[j-renkoCnt];
CC[j] = CC[j-renkoCnt];
}
For j = renkoCnt-1 DownTo 0
{
OO[j] = LL[j+1];
CC[j] = LL[j+1] - renkoSize;
HH[j] = OO[j];
LL[j] = CC[j];
}
}
Else If HH[0] + renkoSize <= C Then
{
gubun = 1;
renkoCnt = Int(Round((C-HH[0])/renkoSize,9));
if renkoCnt > 49 then renkoCnt = 49;
For j = 49 DownTo renkoCnt
{
OO[j] = OO[j-renkoCnt];
HH[j] = HH[j-renkoCnt];
LL[j] = LL[j-renkoCnt];
CC[j] = CC[j-renkoCnt];
}
For j = renkoCnt-1 DownTo 0
{
OO[j] = HH[j+1];
CC[j] = HH[j+1] + renkoSize;
HH[j] = CC[j];
LL[j] = OO[j];
}
}
Else If (sdate != sdate[1] and nextbarStime >= 070000) or
(sdate == sdate[1] and nextbarStime >= 070000 and stime < 070000) Then { //당일 종가봉에서
For j = 49 DownTo 1
{
OO[j] = OO[j-1];
HH[j] = HH[j-1];
LL[j] = LL[j-1];
CC[j] = CC[j-1];
}
If LL[1] > C Then { //종가가 이전 봉보다 아래 형성
OO[0] = LL[1];
CC[0] = C;
HH[0] = OO[0];
LL[0] = CC[0];
} Else If HH[1] < C Then { //종가가 이전 봉보다 위에 형성
OO[0] = HH[1];
CC[0] = C;
HH[0] = CC[0];
LL[0] = OO[0];
} Else { //종가가 이전 봉의 중간에 형성
OO[0] = C;
CC[0] = C;
HH[0] = C;
LL[0] = C;
}
j = 0; //채널 값을 새로이 계산
}
}
if CC[length] > 0 then
{
sum = 0 ;
for j = 0 to length - 1
{
sum = sum + CC[j];
}
mav = sum/length;
plot5(maV,"MidLine");
}
2025-07-13
536
글번호 192461
답변완료
OpenPositionProfit
수고하십니다.
OpenPositionProfit은 원화인가요? 포인트인가요?
원화로 생각하고 계산하니..자꾸 오작동해서요. 포인트로 생각하니 정상 작동하고..
포인트 값인가요?
2025-07-12
403
글번호 192460
답변완료
문의드립니다
if data1(sTime >= StartTime) Then
{
if D1 > D2 Then Buy("b");
if D1 < D2 Then ExitLong("bx");
}
SetStopEndofday(150000);
----------------------
위식에서 3시 이후에는 신호가 안나오게 하려면 뭘 추가해줘야 하나요?
당일청산 3시에 했는데도 신호요건이 충족되면 또 신호가 나옵니다
감사합니다
2025-07-12
366
글번호 192459
답변완료
문의
늘 감사 드립니다
아래 수식에서 당일최고와 당일중심, 당일최저 3등분선을
5등분으로 만들고 싶습니다.
최고와 중심선 사이에 2/1선을 넣고
중심선과 최저 사이에 또 2/1선을 넣을 수 있게
중심선을 기준으로 위로 2칸, 아래로 2칸 부탁드립니다.
감사합니다.
Input : Period(1);
Var : value(0);
value = ma(bids,period)-ma(asks,period);#호가잔량이동평균오실레이터
if date != date[1] Then{
value1 = value;
value2 = value;
}
if value > value1 Then
value1 = value;
if value < value2 Then
value2 = value;
If value > value[35] Then
Plot1(value, "호가잔량이평오실레이터",RED);
Else
Plot1(value, "호가잔량이평오실레이터",BLUE);
plot2(value1,"당일최고");
plot3(value2,"당일최저");
plot4((value1+value2)/2,"당일중심");
PlotBaseLine1(0,"기준선");
2025-07-12
440
글번호 192458
답변완료
예스종목검색으로 요청합니다..
요즘 많이 더운데 수고가 많으세요...
((종목 검색 조건))
200일 신저가 발생하고 일목균형표 음운구름대 관통하는 장대양봉 캔들을 찾고
싶어요...
부탁드립니다...
2025-07-12
357
글번호 192457
답변완료
부틱드립니다
수고하심니다
아래수식을 예스로 부탁드립니다
// 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("Inversion Fair Value Gaps (IFVG) [LuxAlgo]", "LuxAlgo - Inversion Fair Value Gaps (IFVG)", overlay = true, max_boxes_count = 500, max_lines_count = 500, max_labels_count = 500)
//---------------------------------------------------------------------------------------------------------------------}
//Settings
//---------------------------------------------------------------------------------------------------------------------{
disp_num = input.int(5, maxval = 100, minval = 1, title = "Show Last", tooltip = "Specifies the amount of most recent inversion FVG to display in Bullish/Bearish pairs, starting at the current and looking back.")
signal_pref = input.string("Close", title = "Signal Preference", options = ["Close","Wick"], tooltip = "Choose to send signals based on Wicks or Close Price.")
wt = signal_pref == "Wick"
atr_multi = input.float(0.25, step = 0.25,minval = 0, title = "ATR Multiplier", tooltip = "Filters FVGs based on ATR Width, Only displays Inversions that are Greater-Than the ATR*Multiplier.")
//Colors
green = input.color(color.new(#089981, 80), title = "Bull Color", group = "Colors")
red = input.color(color.new(#f23645, 80), title = "Bear Color", group = "Colors")
gray = input.color(#787b86, title = "Midline Color", group = "Colors")
invis = color.rgb(0,0,0,100)
//---------------------------------------------------------------------------------------------------------------------}
//UDT's
//---------------------------------------------------------------------------------------------------------------------{
type lab //Contains Necessary Label Data to Send to Label Function
int x
float y
int dir
type fvg //Contains Necessary FVG Data to Send to Chart.
int left = na
float top = na
int right = na
float bot = na
float mid = na
int dir = na
int state = na
array<lab> labs = na
int x_val = na
//---------------------------------------------------------------------------------------------------------------------}
//Functions
//---------------------------------------------------------------------------------------------------------------------{
//Basic Calcs
buffer = 100 //How many FVGs to keep in memory.
c_top = math.max(open,close)
c_bot = math.min(open,close)
label_maker(_x,_y,_dir) => //Used for making Labels
switch
_dir == 1 => label.new(_x,_y,"₩n▲", style = label.style_text_outline, color = invis, textcolor = color.new(green,0), size = size.small, xloc = xloc.bar_time)
_dir == -1 => label.new(_x,_y, "▼₩n", style = label.style_text_outline, color = invis, textcolor = color.new(red,0), size = size.small, xloc = xloc.bar_time)
fvg_manage(_ary,_inv_ary) => //First step filtering of FVG data, Not all FVGs will be displayed, only inversions.
if _ary.size() >= buffer
_ary.shift()
if _ary.size() > 0
for i = _ary.size()-1 to 0
value = _ary.get(i)
_dir = value.dir
if _dir == 1 and (c_bot < value.bot)
value.x_val := time
_inv_ary.push(_ary.remove(i))
if _dir == -1 and (c_top > value.top)
value.x_val := time
_inv_ary.push(_ary.remove(i))
inv_manage(_ary) => //All inversions will be displayed.
fire = false
if _ary.size() >= buffer
_ary.shift()
if _ary.size() > 0
for i = _ary.size()-1 to 0
value = _ary.get(i)
bx_top = value.top
bx_bot = value.bot
_dir = value.dir
st = value.state
if (st == 0 and _dir == 1)
value.state := 1
value.dir := -1
if (_dir == -1 and st == 0)
value.state := 1
value.dir := 1
if st >= 1
value.right := time
if (_dir == -1 and st == 1 and close < bx_bot and (wt?high:close[1]) >= bx_bot and (wt?high:close[1]) < bx_top)
value.labs.push(lab.new(time,bx_top,-1))
fire := true
if (_dir == 1 and st == 1 and close > bx_top and (wt?low:close[1]) <= bx_top and (wt?low:close[1]) > bx_bot)
value.labs.push(lab.new(time,bx_bot,1))
fire := true
if st >= 1 and ((_dir == -1 and c_top > bx_top) or (_dir == 1 and c_bot < bx_bot))
_ary.remove(i)
fire
send_it(_ary) => // Draws Everything on the Chart
last_index = _ary.size()-1
for [index,value] in _ary
bx_top = value.top
bx_bot = value.bot
bx_left = value.left
xval = value.x_val
mid = value.mid
col = value.dir == -1 ? green : red
o_col = value.dir == -1 ? red : green
if index > last_index - disp_num
box.new(bx_left,bx_top,xval,bx_bot,bgcolor = col, border_color = invis, xloc = xloc.bar_time)
box.new(xval,bx_top,time,bx_bot, bgcolor = o_col, border_color = invis, xloc = xloc.bar_time)
line.new(bx_left,mid,time,mid, color = gray, style = line.style_dashed, xloc = xloc.bar_time)
box.new(bar_index,bx_top,bar_index+50,bx_bot, bgcolor = o_col, border_color = invis)
line.new(bar_index,mid,bar_index+50,mid, color = gray, style = line.style_dashed)
for stuff in value.labs
label_maker(stuff.x,stuff.y,stuff.dir)
//---------------------------------------------------------------------------------------------------------------------}
//Delete drawings
//---------------------------------------------------------------------------------------------------------------------{
for boxes in box.all
box.delete(boxes)
for lines in line.all
line.delete(lines)
for labels in label.all
label.delete(labels)
//---------------------------------------------------------------------------------------------------------------------}
//Data Arrays
//---------------------------------------------------------------------------------------------------------------------{
var bull_fvg_ary = array.new<fvg>(na) // FVG Data, Not all will be Drawn
var bear_fvg_ary = array.new<fvg>(na)
var bull_inv_ary = array.new<fvg>(na) // Inversion Data, All will be Drawn
var bear_inv_ary = array.new<fvg>(na)
//---------------------------------------------------------------------------------------------------------------------}
//FVG Detection
//---------------------------------------------------------------------------------------------------------------------{
atr = nz(ta.atr(200)*atr_multi, ta.cum(high - low) / (bar_index+1))
fvg_up = (low > high[2]) and (close[1] > high[2])
fvg_down = (high < low[2]) and (close[1] < low[2])
if fvg_up and math.abs(low-high[2]) > atr
array.push(bull_fvg_ary,fvg.new(time[1], low, time, high[2], math.avg(low,high[2]), 1, 0,array.new<lab>(na),na))
if fvg_down and math.abs(low[2]-high) > atr
array.push(bear_fvg_ary,fvg.new(time[1], low[2], time, high, math.avg(high,low[2]),-1 ,0,array.new<lab>(na),na))
//---------------------------------------------------------------------------------------------------------------------}
//Running Functions
//---------------------------------------------------------------------------------------------------------------------{
// FVG_Data -> Inversion_Data -> Chart
fvg_manage(bull_fvg_ary,bull_inv_ary)
fvg_manage(bear_fvg_ary,bear_inv_ary)
bear_signal = inv_manage(bull_inv_ary)
bull_signal = inv_manage(bear_inv_ary)
if barstate.islast
send_it(bull_inv_ary)
send_it(bear_inv_ary)
//Alert Options
alertcondition(bull_signal, "Bullish Signal")
alertcondition(bear_signal, "Bearish Signal")
//---------------------------------------------------------------------------------------------------------------------}
2025-07-12
1621
글번호 192456
답변완료
검색식 부탁드립니다. _(_ _)_
항상 도와주심에 감사드립니다._(__)_
모든 이동평균선(5,20,60,120,240,480)이 20프로이내에 모여 있고 배열은 상관없지만 단 최상단 이평선이 480선인 상태에서 480선을 돌파한 종목검색식과
역시 20프로 이내구간과 단 최하단이평선이 240 ,최상단이평선 480상태에서 480선을 돌파하는 종목 검색식을 부탁드립니다
2025-07-12
376
글번호 192455