커뮤니티
예스랭귀지 Q&A
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1317
글번호 230811
답변완료
청산 부분 요청사항
넘버, 92581문의 답변주신 내용중 진입부분적용은 정상적으로 적용은 됐읍니다
청산 부분이 이전로직과같은 진입봉으로 되었읍니다
청산은 스탑로스와 data봉으로 청산은 하려합니다
data2,3 중에 macd지표상에 0선 상관없이 macd와 시그널선이 골든데드크로스 발생시
매수 및 매도청산으로 수정이 미반영돼었읍니다 수정부탁드립니다
파일 첨부합니다 감사합니다
2025-05-07
340
글번호 190632
답변완료
문의 드립니다!
안녕하세요!
아래 수식은 며칠전 92556번 질문에 대해 주신 답변수식입니다
이 수식을 적용해보니 상승세로선은 연장선까지도 잘 발생이되나 하락세로선이 연장선이 발생되지않고 있습니다
수고스러우시겠지만 한번더 검토 부탁드립니다
감사합니다
---------------------------------------------------------------------------------
Input : short(12), long(26), signal(9),굵기(5);
input : 텍스트출력(0),선굵기(5),상승세로선색(cyan),하락세로선색(green),세로선굵기(4);
Var : MACDV(0) , MACDS(0),T(0),vtl(0);
var : HIV(0),HID(0),HIT(0),HIV1(0),HID1(0),HIT1(0);
var : HPV(0),HPD(0),HPT(0),HPV1(0),HPD1(0),HPT1(0);
var : LIV(0),LID(0),LIT(0),LIV1(0),LID1(0),LIT1(0);
var : LPV(0),LPD(0),LPT(0),LPV1(0),LPD1(0),LPT1(0);
var : TL1(0),TL2(0);
MACDV = MACD(short, long);
MACDS = ema(MACDV,signal);
if crossup(MACDV,MACDS) Then
{
T = 1;
HIV = MACDV;
HID = sdate;
HIT = stime;
HIV1 = HIV[1];
HID1 = HID[1];
HIT1 = HIT[1];
HPV = L;
HPD = sdate;
HPT = stime;
HPV1 = HPV[1];
HPD1 = HPD[1];
HPT1 = HPT[1];
Condition1 = false;
}
if CrossDown(MACDV,MACDS) Then
{
T = -1;
LIV = MACDV;
LID = sdate;
LIT = stime;
LIV1 = LIV[1];
LID1 = LID[1];
LIT1 = LIT[1];
LPV = L;
LPD = sdate;
LPT = stime;
LPV1 = LPV[1];
LPD1 = LPD[1];
LPT1 = LPT[1];
Condition2 = false;
}
if T == 1 Then
{
if MACDV > HIV Then
{
HIV = MACDV;
HID = sdate;
HIT = stime;
}
if H > HPV Then
{
HPV = H;
HPD = sdate;
HPT = stime;
}
if Condition1 == false and HPV1 > 0 and HPV > HPV1 and HIV < HIV1 Then
{
TL1 = TL_New(HPD1,HPT1,HPV1,HPD,HPT,HPV);
TL2 = TL_New_Self(HID1,HIT1,HIV1,HID,HIT,HIV);
TL_SetColor(TL1,blue);
TL_SetColor(TL2,red);
TL_SetSize(TL1,굵기);
TL_SetSize(TL2,굵기);
Condition1 = true;
PlaySound("C:₩예스트레이더(X64)₩data₩Sound₩.wav");
vtl = TL_New(sDate,sTime,0,sdate,sTime,999999999);
TL_SetColor(vtl,하락세로선색);
TL_SetSize(vtl,세로선굵기);
}
if Condition1 == true then
{
if HPV > HPV1 and HIV < HIV1 then
{
TL_SetEnd(TL1,HPD,HPT,HPV);
TL_SetEnd(TL2,HID,HIT,HIV);
TL_SetBegin(vtl,LPD,LPT,0);
TL_SetEnd(vtl,LPD,LPT,999999999);
PlaySound("C:₩예스트레이더(X64)₩data₩Sound₩.wav");
}
Else
{
TL_Delete(TL1);
TL_Delete(TL2);
TL_Delete(Vtl);
}
}
}
if T == -1 Then
{
if MACDV < LIV Then
{
LIV = MACDV;
LID = sdate;
LIT = stime;
}
if L < LPV Then
{
LPV = L;
LPD = sdate;
LPT = stime;
}
if Condition2 == false and LPV1 > 0 and LPV < LPV1 and LIV > LIV1 Then
{
TL1 = TL_New(LPD1,LPT1,LPV1,LPD,LPT,LPV);
TL2 = TL_New_Self(LID1,LIT1,LIV1,LID,LIT,LIV);
TL_SetColor(TL1,red);
TL_SetColor(TL2,blue);
TL_SetSize(TL1,굵기);
TL_SetSize(TL2,굵기);
PlaySound("C:₩예스트레이더(X64)₩data₩Sound₩.wav");
vtl = TL_New(sDate,sTime,0,sdate,sTime,999999999);
TL_SetColor(vtl,상승세로선색);
TL_SetSize(vtl,세로선굵기);
Condition2 = true;
}
if Condition2 == true then
{
if LPV < LPV1 and LIV > LIV1 then
{
TL_SetEnd(TL1,LPD,LPT,LPV);
TL_SetEnd(TL2,LID,LIT,LIV);
TL_SetBegin(vtl,LPD,LPT,0);
TL_SetEnd(vtl,LPD,LPT,999999999);
PlaySound("C:₩예스트레이더(X64)₩data₩Sound₩.wav");
}
Else
{
TL_Delete(TL1);
TL_Delete(TL2);
TL_Delete(Vtl);
}
}
}
plot1(MACDV);
plot2(MACDS);
2025-05-07
295
글번호 190631
답변완료
92588 답글좀 봐주세요
안녕하세요.
답변주셔서 감사합니다. 하지만 작성해주신 수식이 첨부한 그림처럼 나타납니다.
첨부한 그림1의 동그라미 친부분처럼 박스가 출력되길 원하는데
첨부한 그림2처럼 출력됩니다. 수정부탁드립니다.
바쁘신데 감사드립니다.
진입가부분의 표기와 박스생성을 2가지 색상으로 진입가 ~ TP영역, 진입가 ~ SL영역
으로 표기될수있도록 수정해주세요
추가로 하향 돌파했을때도 나타날수 있게 해주세요
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 박스출력 수식작성 부탁드려요
>
안녕하세요
예스스탁입니다.
input : P(20);
var : mav(0),hm(0),hh(0),lm(0),ll(0);
var : EP(0),TP(0),SL(0),TL1(0),TL2(0),TX1(0),TX2(0);
mav = ma(c,P);
#당일 이평 최고/최저일때 고가/저가
if Bdate != Bdate[1] Then
{
hm = mav;
hh = h;
lm = mav;
ll = l;
}
Else
{
if mav > hm Then
{
hm = mav;
hh = h;
}
if mav < lm Then
{
lm = mav;
ll = l;
}
}
Plot1(mav);
#상향돌파
if CrossUp(c,mav) Then
{
TL_Delete(TL1);
TL_Delete(TL2);
#진입가
EP = C;
#돌파시 당일20이평 최고값
TP = hh;
#돌파시 당일20이평 최저값
SL = ll;
TL1 = TL_New(sDate,sTime,TP,NextBarSdate,NextBarStime,TP);
TL2 = TL_New(sDate,sTime,SL,NextBarSdate,NextBarStime,SL);
TL_SetExtRight(TL1,true);
TL_SetExtRight(TL2,true);
TL_SetSize(TL1,1);
TL_SetSize(TL2,1);
Text_Delete(TX1);
Text_Delete(TX2);
TX1 = Text_New(NextBarSdate,NextBarStime,TP,"TP:"+NumToStr(TP,2)+" ("+NumToStr((TP-EP)/EP*100,1)+"%)");
TX2 = Text_New(NextBarSdate,NextBarStime,SL,"SL:"+NumToStr(SL,2)+" ("+NumToStr((SL-EP)/EP*100,1)+"%)");
Text_SetStyle(TX1,1,1);
Text_SetStyle(TX2,1,0);
}
즐거운 하루되세요
> oni 님이 쓴 글입니다.
> 제목 : 박스출력 수식작성 부탁드려요
> 안녕하세요
첨부한 사진처럼
TP와 SL을 표기하고 싶습니다.
그림과 상관없이 조건은 20이평 돌파시 당일20이평이 최고일때의 고가를 tp로 표기하고
sl은 당일20이평이 최저일때의 처가로 sl을 표기하고 싶습니다.
첨부한 그림처럼 텍스트로 sl값이 얼마인지 몇%의 손절인지 그리고 tp인 익절값이 얼마인지
진입가 대비 몇%인지를 표기할 수 있도록 부탁드립니다.
진입가는 20이평 돌파시의 종가로 해주시면 될것 같습니다.
사진처럼 박스의 컬러가 2가지로 표현되도록 부탁드립니다.
2025-05-08
326
글번호 190630
답변완료
부탁드립니다.
안녕하세요.
외국인거래량(data7)을 0선을 기준으로 색깔을 넣은 지표로 만들어 주세요.
오른쪽 끝에는 거래량 움직임에 따른 숫자 표시도 부탁드립니다.
검은선은 기관계 거래량의 선으로
분홍선은 개인 거래량의 선으로 해주세요
2025-05-07
328
글번호 190629
답변완료
수식 의뢰 드립니다.
안녕하세요!
수식의뢰를 드립니다.
시간대는 상관없이 현재봉을 기준으로 지난봉 30개까지 고점과 저점을 잇는 노랑박스가 생성되는 수식을 부탁드립니다.
2025-05-07
304
글번호 190628
답변완료
질문 드립니다.
질문1.
A.
if sDate!=sDate[1] Then {
vola=0;
For i=1 to 5 Begin
vola=vola+data3(highd(i))-data3(lowd(i));
end;
}
B.
if sDate!=sDate[1] Then {
vola= ((data3(highd(5))-data3(lowd(5)))+(data3(highd(4))-data3(lowd(4)))+(data3(highd(3))-data3(lowd(3)))+(data3(highd(2))-data3(lowd(2)))+(data3(highd(1))-data3(lowd(1))));
}
지료로 만들어보니 A와 B에 차이가 있는데 제가 어떤 부분을 캐치못한 걸까요?
그리고 위와 같이 날짜가 바뀌는 봉에 한정해서 변수를 설정하면 그렇지 않은 경우와 비교하여 메모리가 절약이 되나요?
질문2.
data2에 있는 미국시장의 일봉의 전일 종가(전 거래일의 새벽 종가)를 추출하고 싶습니다.
일반적으로는 data2(Closed(1))이 되겠으나 공휴일인 경우에는 다르니깐요.
항상 감사드립니다.
2025-05-08
287
글번호 190627
답변완료
지표 변환 부탁드립니다.
키움에서 쓰던 신호 지표이며, 일전에 한 번 도움을 청한 적 있는 지표입니다.
다름이 아니라, 당일 포착 포함 5일이내 포착 된 적 있으면 검색을 할 수 있는 검색식 부탁드립니다.
A=bbandsup(17,2);
B=bbandsup(40,2);
M=EnvelopeUp(20,2);
IF((c>ma(h,5) and CrossUp(A,M)) or
(c>ma(h,5) and B>M and CrossUp(A,B))
or (A>B and B>M and CrossUP(C,A))
or (CrossUP(C,A) and CrossUP(C,B) and CrossUP(C,M)),1,0)
2025-05-07
350
글번호 190625
답변완료
부탁드립니다.
indicator("K's Reversal Indicator I", overlay = true)
fast = input(defval = 12, title = 'Fast')
slow = input(defval = 26, title = 'Slow')
signal = input(defval = 9, title = 'Signal')
length = input(defval = 100, title = 'Bollinger Lookback')
multiplier = input(defval = 2, title = 'Multiplier')
// MACD
macd_line = ta.ema(close, fast) - ta.ema(close, slow)
signal_line = ta.ema(macd_line, signal)
// Bollinger
lower_boll = ta.sma(close, length) - (multiplier * ta.stdev(close, length))
upper_boll = ta.sma(close, length) + (multiplier * ta.stdev(close, length))
mid_line = ta.sma(close, length)
// Signal
buy_signal = math.min(open[1], close[1]) <= lower_boll[1] and math.max(open[1], close[1]) <= mid_line and macd_line[1] > signal_line[1] and macd_line[2] < signal_line[2]
sell_signal = math.max(open[1], close[1]) >= upper_boll[1] and math.min(open[1], close[1]) >= mid_line and macd_line[1] < signal_line[1] and macd_line[2] > signal_line[2]
// Plotting
plotshape(buy_signal, style = shape.triangleup, color = color.green, location = location.belowbar, size = size.small)
plotshape(sell_signal, style = shape.triangledown, color = color.red, location = location.abovebar, size = size.small)
bar_size = timeframe.multiplier * (timeframe.isdaily?1440:timeframe.isweekly?7*1440:timeframe.ismonthly?30*1440:1) * 60*1000
if buy_signal == true
line.new(time, low[1] - (high[1] - low[1]) * 2, time + bar_size * 20, low[1] - (high[1] - low[1]) * 2, xloc.bar_time, color = color.green, width = 2)
line.new(time, open, time + bar_size * 20, open, xloc.bar_time, color = color.blue, width = 2)
if sell_signal == true
line.new(time, high[1] + (high[1] - low[1]) * 2, time + bar_size * 20, high[1] + (high[1] - low[1]) * 2, xloc.bar_time, color = color.red, width = 2)
line.new(time, open, time + bar_size * 20, open, xloc.bar_time, color = color.blue, width = 2)
2025-05-07
293
글번호 190624
답변완료
92585번 재문의드려요
박스의 시가를 표시하고 싶습니다
가능할까요?
아래처럼 분봉시가를 표시하듯이
Text_Delete(tx);
tx = Text_New(NextBarSdate,NextBarStime,NextBarOpen,NumToStr(NextBarOpen,2));
Text_SetStyle(tx,0,0);
2025-05-07
289
글번호 190623