커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
6057
글번호 230811
답변완료
지표수식 변환 요청드립니다
트레이딩뷰 Chandelier Exit 지표를 예스수식으로 변환부탁드립니다.
신호발생(buy,sell )은 검색식(혹은 지표식)으로 하면서 그림과 같이 선만 나오면 될 듯합니다.
종가를 사용하는 경우와 그렇지 않은 경우를 선택할 수 있으면 좋겠습니다.
===========
//@version=4
// Copyright (c) 2019-present, Alex Orekhov (everget)
license.
study("Chandelier Exit", shorttitle="CE", overlay=true)
length = input(title="ATR Period", type=input.integer, defval=22)
mult = input(title="ATR Multiplier", type=input.float, step=0.1, defval=3.0)
showLabels = input(title="Show Buy/Sell Labels ?", type=input.bool, defval=true)
useClose = input(title="Use Close Price for Extremums ?", type=input.bool, defval=true)
highlightState = input(title="Highlight State ?", type=input.bool, defval=true)
atr = mult * atr(length)
longStop = (useClose ? highest(close, length) : highest(length)) - atr
longStopPrev = nz(longStop[1], longStop)
longStop := close[1] > longStopPrev ? max(longStop, longStopPrev) : longStop
shortStop = (useClose ? lowest(close, length) : lowest(length)) + atr
shortStopPrev = nz(shortStop[1], shortStop)
shortStop := close[1] < shortStopPrev ? min(shortStop, shortStopPrev) : shortStop
var int dir = 1
dir := close > shortStopPrev ? 1 : close < longStopPrev ? -1 : dir
var color longColor = color.green
var color shortColor = color.red
longStopPlot = plot(dir == 1 ? longStop : na, title="Long Stop", style=plot.style_linebr, linewidth=2, color=longColor)
buySignal = dir == 1 and dir[1] == -1
plotshape(buySignal ? longStop : na, title="Long Stop Start", location=location.absolute, style=shape.circle, size=size.tiny, color=longColor, transp=0)
plotshape(buySignal and showLabels ? longStop : na, title="Buy Label", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=longColor, textcolor=color.white, transp=0)
shortStopPlot = plot(dir == 1 ? na : shortStop, title="Short Stop", style=plot.style_linebr, linewidth=2, color=shortColor)
sellSignal = dir == -1 and dir[1] == 1
plotshape(sellSignal ? shortStop : na, title="Short Stop Start", location=location.absolute, style=shape.circle, size=size.tiny, color=shortColor, transp=0)
plotshape(sellSignal and showLabels ? shortStop : na, title="Sell Label", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=shortColor, textcolor=color.white, transp=0)
midPricePlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=0, display=display.none, editable=false)
longFillColor = highlightState ? (dir == 1 ? longColor : na) : na
shortFillColor = highlightState ? (dir == -1 ? shortColor : na) : na
fill(midPricePlot, longStopPlot, title="Long State Filling", color=longFillColor)
fill(midPricePlot, shortStopPlot, title="Short State Filling", color=shortFillColor)
changeCond = dir != dir[1]
alertcondition(changeCond, title="Alert: CE Direction Change", message="Chandelier Exit has changed direction!")
alertcondition(buySignal, title="Alert: CE Buy", message="Chandelier Exit Buy!")
alertcondition(sellSignal, title="Alert: CE Sell", message="Chandelier Exit Sell!")
2022-11-23
1364
글번호 164036
답변완료
수정 부탁합니다
오픈소스 활용해 보려합니다^^
파동의 정의를 바꿔보고 싶습니다
5일선과 10일선이 역배열 되는 시점에서 최근10봉(외부변수)중 최고점을 최종고가로
5일선과10일선이 정배열 되는 시점에서 최근10봉중 최저점을 최종저가로
수정 부탁합니다
그리고
(종가 and 5일선and 10일선)이 최근최종고가를 돌파하면
돌파된 최종고가선을 핑크색 선으로 바꾸고 변수로 지정해주세요
(종가and 5일선and 10일선)이 최근최종저가를 붕괴하면
붕괴된 최종저가선을 브라운색선으로 바꾸고 변수로지정해주세요
감사합니다!
input:length(6);
Var:j(0),jj(0),HH(0),LL(0),최종고가(0),최종저가(0),최종꼭지점(""),처리구분(""),
TL1(0),Text1(0),TL2(0),TL3(0),TL4(0),TL5(0),TL12(0),TL13(0),TL14(0),TL15(0),T(0);
Array:고[10,4](0),저[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime
var : TL24(0),TL25(0);
#==========================================#
HH = IFF(0==1,C,H);
LL = IFF(0==1,C,L);
If Index == 0 Then
{
고[1,1] = HH;
저[1,1] = LL;
}
Condition1 = Highest(HH,length) == HH and 최종고가 <> HH;
Condition2 = Lowest (LL,length) == LL and 최종저가 <> LL;
처리구분 = "";
If Condition1 and Condition2 Then // 기간고점과 기간저점 동시 발생
{
If 최종꼭지점 == "저점" Then
{
If 저[1,1] > LL Then 처리구분 = "저점처리";
Else 처리구분 = "고점처리";
}
Else If 최종꼭지점 == "고점" Then
{
If 고[1,1] < HH Then 처리구분 = "고점처리";
Else 처리구분 = "저점처리";
}
}
Else If Condition1 Then 처리구분 = "고점처리";
Else If Condition2 Then 처리구분 = "저점처리";
#==========================================#
If 처리구분 == "고점처리" Then
{
T = 1;
최종고가 = HH; // 신규고점을 체크하기 위해 저장
If 최종꼭지점 == "저점" Then
{
For j = 10 DownTo 2
{
For jj = 1 To 4
{
고[j,jj] = 고[j-1,jj];
}
}
고[1,1] = HH;
고[1,2] = Index;
고[1,3] = sDate;
고[1,4] = sTime;
TL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]);
If 1 == 1 Then
{
Text1 = Text_New(고[1,3],고[1,4],고[1,1],NumToStr(고[1,1],2));
Text_SetStyle(Text1, 0, 1);
Text_SetColor(Text1,WHITE);
}
TL_SetSize(TL1,1);
TL_SetColor(TL1,WHITE);
}
Else If 고[1,1] < HH Then // 1번 고점보다 높은 고가 출현
{
고[1,1] = HH;
고[1,2] = Index;
고[1,3] = sDate;
고[1,4] = sTime;
TL_SetEnd(TL1,고[1,3],고[1,4],고[1,1]);
// 시작점은 변동없고 끝점의 위치가 현재 봉으로 연장된 것임
If 1 == 1 Then
{
Text_SetLocation(Text1,고[1,3],고[1,4],고[1,1]);
Text_SetString(Text1,NumToStr(고[1,1],2));
}
}
최종꼭지점 = "고점";
}
#==========================================#
If 처리구분 == "저점처리" Then
{
T = -1;
최종저가 = LL;
If 최종꼭지점 == "고점" then
{
For j = 10 DownTo 2
{
For jj = 1 To 4
{
저[j,jj] = 저[j-1,jj];
}
}
저[1,1] = LL;
저[1,2] = Index;
저[1,3] = sDate;
저[1,4] = sTime;
TL1 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]);
If 1 == 1 Then
{
Text1 = Text_New(저[1,3],저[1,4],저[1,1],NumToStr(저[1,1],2));
Text_SetStyle(Text1, 0, 0);
Text_SetColor(Text1,WHITE);
}
TL_SetSize(TL1,1);
TL_SetColor(TL1,WHITE);
}
Else If 저[1,1] > LL then
{
저[1,1] = LL;
저[1,2] = Index;
저[1,3] = sDate;
저[1,4] = sTime;
TL_SetEnd(TL1,저[1,3],저[1,4],저[1,1]);
If 1 == 1 Then
{
Text_SetLocation(Text1,저[1,3],저[1,4],저[1,1]);
Text_SetString(Text1,NumToStr(저[1,1],2));
}
}
최종꼭지점 = "저점";
}
if T == -1 and T[1] != -1 Then
{
TL2 = TL_New(고[2,3],고[2,4],고[2,1],sdate,stime,고[2,1]);
TL_Delete(TL3);
TL3 = TL_New(고[1,3],고[1,4],고[1,1],sdate,stime,고[1,1]);
TL_SetExtRight(TL3,true);
TL_SetSize(TL2,3);
TL_SetColor(TL2,RED);
TL_SetSize(TL3,3);
TL_SetColor(TL3,RED);
TL12 = TL_New(고[2,3],고[2,4],고[2,1],sdate,stime,고[2,1]);
TL_Delete(TL13);
TL13 = TL_New(고[1,3],고[1,4],고[1,1],sdate,stime,고[1,1]);
TL_SetExtRight(TL13,true);
TL_SetSize(TL12,1);
TL_SetColor(TL12,RED);
TL_SetSize(TL13,1);
TL_SetColor(TL13,RED);
TL_Delete(TL24);
TL_Delete(TL25);
TL24 = TL_New(고[1,3],고[1,4],고[1,1]-abs(고[2,1]-저[2,1]),sdate,stime,고[1,1]-abs(고[2,1]-저[2,1]));
TL25 = TL_New(고[1,3],고[1,4],고[1,1]-abs(고[3,1]-저[3,1]),sdate,stime,고[1,1]-abs(고[3,1]-저[3,1]));
TL_SetExtRight(TL24,true);
TL_SetExtRight(TL25,true);
TL_SetSize(TL24,0);
TL_SetStyle(TL24,3);
TL_SetColor(TL24,blue);
TL_SetSize(TL25,0);
TL_SetStyle(TL25,3);
TL_SetColor(TL25,blue);
}
if T == 1 and T[1] != 1 Then
{
TL4= TL_New(저[2,3],저[2,4],저[2,1],sdate,stime,저[2,1]);
TL_Delete(TL5);
TL5= TL_New(저[1,3],저[1,4],저[1,1],sdate,stime,저[1,1]);
TL_SetExtRight(TL5,true);
TL_SetSize(TL4,3);
TL_SetColor(TL4,blue);
TL_SetSize(TL5,3);
TL_SetColor(TL5,blue);
TL14= TL_New(저[2,3],저[2,4],저[2,1],sdate,stime,저[2,1]);
TL_Delete(TL15);
TL15= TL_New(저[1,3],저[1,4],저[1,1],sdate,stime,저[1,1]);
TL_SetExtRight(TL15,true);
TL_SetSize(TL14,1);
TL_SetColor(TL14,blue);
TL_SetSize(TL15,1);
TL_SetColor(TL15,blue);
TL_Delete(TL24);
TL_Delete(TL25);
TL24 = TL_New(저[1,3],저[1,4],저[1,1]+abs(고[2,1]-저[2,1]),sdate,stime,저[1,1]+abs(고[2,1]-저[2,1]));
TL25 = TL_New(저[1,3],저[1,4],저[1,1]+abs(고[3,1]-저[3,1]),sdate,stime,저[1,1]+abs(고[3,1]-저[3,1]));
TL_SetExtRight(TL24,true);
TL_SetExtRight(TL25,true);
TL_SetSize(TL24,0);
TL_SetStyle(TL24,3);
TL_SetColor(TL24,Red);
TL_SetSize(TL25,0);
TL_SetStyle(TL25,3);
TL_SetColor(TL25,Red);
}
2022-11-23
1062
글번호 164035
답변완료
수식 문의
수식 문의 드립니다.
일봉주기 1봉전 거래량대비, 오늘 현재 0봉전 10분동안 거래량이 50%이상 발생된
종목검색 수식을 문의드립니다.
2022-11-22
1010
글번호 164034
회원 님에 의해서 삭제되었습니다.
2022-11-22
44
글번호 164033
답변완료
수식 부탁드립니다.
inputs:
gam( numericseries );
variables:
L0(0),
L1(0),
L2(0),
L3(0),
CU(0),
CD(0),
LRSI(0);
L0 = (1 - gam)*Close + gam*L0[1];
L1 = - gam *L0 + L0[1] + gam *L1[1];
L2 = - gam *L1 + L1[1] + gam *L2[1];
L3 = - gam *L2 + L2[1] + gam *L3[1];
CU = 0;
CD = 0;
If L0 >= L1 then CU = L0 - L1 Else CD = L1 - L0;
If L1 >= L2 then CU = CU + L1 - L2 Else CD = CD + L2 - L1;
If L2 >= L3 then CU = CU + L2 - L3 Else CD = CD + L3 - L2;
If CU + CD <> 0 then LaguerreRSI = CU / (CU + CD);
EasyLanguage로 수식은 위와 같습니다.
실제로 예스스탁에 바로 넣어도 에러도 없고 직관적으로도 이해가 되는데 막상 작동을 안하네요.
수정부탁드립니다.
2022-11-22
809
글번호 164032
회원 님에 의해서 삭제되었습니다.
2022-11-22
1
글번호 164031
회원 님에 의해서 삭제되었습니다.
2022-11-22
8
글번호 164030
파워 님에 의해서 삭제되었습니다.
2022-11-22
852
글번호 164029
답변완료
지표 질문입니다
월간 차트의 9개월 중심선(A)과 10개월 중심선(B)를 일간 차트에 표시한다
월간 차트의 26개월 중심선(C)과 27개월 중심선(D)를 일간 차트에 표시한다
A와 B 값이 일치하다가 A가 B보다 작게 되는 캔들 고가(E)와 저가(F)를 표시한다
C와 D 값이 일치하다가 C가 D보다 작게 되는 캔들 고가(G)와 저가(H)를 표시한다
A,B,C,D,E,F,G,H 가 모두 표출되도록 부탁합니다
감사합니다
--------------------------------------------------------------------------------
지난번에 답변해주신 79652 번 수식입니다
1.
월간 차트의 9개월 중심선(A)과 10개월 중심선(B)를 표시한다
A와 B 값이 일치하다가 A가 B보다 크게 되는 캔들 고가(C)와 저가(D)를 표시한다
A와 B 값이 일치하다가 A가 B보다 작게 되는 캔들 고가(E)와 저가(F)를 표시한다
안녕하세요
예스스탁입니다.
1
A가 B보다 큰 경우는 없습니다.
수식에는 추가해 드립니다.
input : P1(9),P2(10);
var : cnt(0),h1(0),l1(0),m1(0),h2(0),l2(0),m2(0);
Array : HH[100](0),LL[100](0);
if Bdate > Bdate[1]+30 Then
{
For cnt = 1 to 99
{
HH[cnt] = HH[cnt-1][1];
LL[cnt] = LL[cnt-1][1];
}
HH[0] = H;
LL[0] = L;
}
if HH[0] > 0 and H > HH[0] Then
HH[0] = H;
if LL[0] > 0 and L < LL[0] Then
LL[0] = L;
if HH[p2] > 0 Then
{
h1 = 0;
l1 = 0;
h2 = 0;
l2 = 0;
For cnt = 0 to max(P1,P2)-1
{
if cnt < P1 Then
{
if h1 == 0 or (h1 > 0 and hh[cnt] > h1) Then
h1 = hh[cnt];
if l1 == 0 or (l1 > 0 and ll[cnt] > l1) Then
l1 = ll[cnt];
}
if cnt < P2 Then
{
if h2 == 0 or (h2 > 0 and hh[cnt] > h2) Then
h2 = hh[cnt];
if l2 == 0 or (l2 > 0 and ll[cnt] > l2) Then
l2 = ll[cnt];
}
}
m1 = (h1+l1)/2;
m2 = (h2+l2)/2;
if m1 > m2 and m1[1] == m2[1] Then
{
var1 = h;
Var2 = l;
}
if m1 < m2 and m1[1] == m2[1] Then
{
var3 = h;
Var4 = l;
}
if var1 > 0 Then
{
Plot1(var1);
Plot2(var2);
}
if var3 > 0 Then
{
Plot3(var3);
Plot4(var4);
}
}
2022-11-23
1006
글번호 164028