커뮤니티
예스랭귀지 Q&A
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1335
글번호 230811
답변완료
보조지표 Y축 스케일
안녕하세요?
아래 Heikin-Ashi RSI를 커뮤니티에 있어서 적용시켜볼려고 보조지표로 추가하니 Y축 값이 높아지거나 낮아질때 스케일이 변경되지 않아 윗부분과 아래부분의 지표막대가 잘 보이지 않아요.
차트창 속성에서 "차트 확대 축소시 간격 자동조절"에도 체크되어 있는데, 높고 낮은 부분에는 잘 보이지 않습니다.
다른 보조 지표들은 스케일이 자동조절됩니다.
수정 부탁드립니다.
input : i_lenHARSI(14),i_smoothing(7),i_lenRSI(7);
var : i_colUp(0),i_colDown(0),i_colWick(0),i_source(0);
var : _closeRSI(0),_openRSI(0),_highRSI_raw(0),_lowRSI_raw(0);
var : _highRSI(0),_lowRSI(0),_close(0),_open(0),_high(0),_low(0);
Var : cnt(0), DownAmt1(0), UpAmt1(0), UpSum1(0), DownSum1(0), UpAvg1(0), DownAvg1(0),RSIV1(0);
Var : DownAmt2(0), UpAmt2(0), UpSum2(0), DownSum2(0), UpAvg2(0), DownAvg2(0),RSIV2(0);
var : bodyColour(0),wickColour(0);
i_colUp = Teal;
i_colDown = Red;
i_colWick = gray;
i_source = (o+h+l+c)/4;
_closeRSI = rsi(i_lenHARSI)-50;
_openRSI = IFF(IsNaN(_closeRSI[1]) == False, _closeRSI[1], _closeRSI);
If CurrentBar == 1 AND i_lenHARSI > 0 Then Begin
UpSum1 = 0;
DownSum1 = 0;
For cnt = 0 To i_lenHARSI - 1 Begin
UpAmt1 = H[cnt] - H[cnt+1];
If UpAmt1 >= 0 Then
DownAmt1 = 0;
Else Begin
DownAmt1 = -UpAmt1;
UpAmt1 = 0;
End;
UpSum1 = UpSum1 + UpAmt1;
DownSum1 = DownSum1 + DownAmt1;
End;
UpAvg1 = UpSum1 / i_lenHARSI;
DownAvg1 = DownSum1 / i_lenHARSI;
End
Else
If CurrentBar > 1 AND i_lenHARSI > 0 Then Begin
UpAmt1 = H[0] - H[1];
If UpAmt1 >= 0 Then
DownAmt1 = 0;
Else Begin
DownAmt1 = -UpAmt1;
UpAmt1 = 0;
End;
UpAvg1 = (UpAvg1[1] * (i_lenHARSI - 1) + UpAmt1) / i_lenHARSI;
DownAvg1 = (DownAvg1[1] * (i_lenHARSI - 1) + DownAmt1) / i_lenHARSI;
End;
If UpAvg1 + DownAvg1 <> 0 Then
RSIV1 = 100 * UpAvg1 / (UpAvg1 + DownAvg1);
Else
RSIV1 = 0;
If CurrentBar == 1 AND i_lenHARSI > 0 Then Begin
UpSum2 = 0;
DownSum2 = 0;
For cnt = 0 To i_lenHARSI - 1 Begin
UpAmt2 = L[cnt] - L[cnt+1];
If UpAmt2 >= 0 Then
DownAmt2 = 0;
Else Begin
DownAmt2 = -UpAmt2;
UpAmt2 = 0;
End;
UpSum2 = UpSum2 + UpAmt2;
DownSum2 = DownSum2 + DownAmt2;
End;
UpAvg2 = UpSum2 / i_lenHARSI;
DownAvg2 = DownSum2 / i_lenHARSI;
End
Else
If CurrentBar > 2 AND i_lenHARSI > 0 Then Begin
UpAmt2 = L[0] - L[1];
If UpAmt2 >= 0 Then
DownAmt2 = 0;
Else Begin
DownAmt2 = -UpAmt2;
UpAmt2 = 0;
End;
UpAvg2 = (UpAvg2[1] * (i_lenHARSI - 1) + UpAmt2) / i_lenHARSI;
DownAvg2 = (DownAvg2[1] * (i_lenHARSI - 1) + DownAmt2) / i_lenHARSI;
End;
If UpAvg2 + DownAvg2 <> 0 Then
RSIV2 = 100 * UpAvg2 / (UpAvg2 + DownAvg2);
Else
RSIV2 = 0;
_highRSI_raw = RSIV1-50;
_lowRSI_raw = RSIV2-50;
_highRSI = max(_highRSI_raw, _lowRSI_raw);
_lowRSI = min(_highRSI_raw, _lowRSI_raw);
_close = (_openRSI + _highRSI + _lowRSI + _closeRSI) / 4;
_open = iff(isnan(_open[i_smoothing]) == true, (_openRSI + _closeRSI) / 2 , (_open[1] * i_smoothing + _close[1]) / (i_smoothing + 1));
_high = max(_highRSI, max(_open, _close));
_low = min(_lowRSI, min(_open, _close));
bodyColour = iff(_close > _open , i_colUp , i_colDown);
wickColour = i_colWick;
var1 = TL_New_Self(sDate,sTime,_open,sDate,sTime,_close);
var2 = TL_New_Self(sDate,sTime,_high,sDate,sTime,max(_open,_close));
var3 = TL_New_Self(sDate,sTime,_Low,sDate,sTime,min(_open,_close));
TL_SetColor(var1,bodyColour);
TL_SetColor(var2,i_colWick);
TL_SetColor(var3,i_colWick);
TL_SetSize(var1,6);
TL_SetSize(var2,1);
TL_SetSize(var3,1);
2025-02-28
407
글번호 188677
답변완료
파라볼릭 크기
Input : af(0.02), maxAF(0.2);
var : T(0),B(0),S(0),tx(0),txx(0),TL(0),box(0);
var : HH(0),LL(0),B1(0),B2(0),B3(0),B4(0),S1(0),S2(0),S3(0),S4(0),H1(0),H2(0),H3(0),H4(0),L1(0),L2(0),L3(0),L4(0);
var1 = CSar(af,maxAF);
if CrossUp(C,var1) Then
{
T = 1;
B = var1;
B1 = B[1];
B2 = B1[1];
B3 = B2[1];
B4 = B3[1];
HH = H;
H1 = HH[1];
H2 = H1[1];
H3 = H2[1];
H4 = H3[1];
if abs(S-LL) < 0.7 Then
Text_Delete(tx);
tx = Text_New(sDate,sTime,HH,NumToStr(abs(HH-B),2));
Text_SetColor(tx,Red);
Text_SetSize(tx,25);
Text_SetStyle(tx,1,1);
Text_SetBold(tx,1);
box = Box_New(sDate,sTime,B,NextBarSdate,NextBarStime,HH);
Condition1 = False;
Condition3 = False;
Condition5 = False;
}
if CrossDown(C,var1) Then
{
T = -1;
S = var1;
S1 = S[1];
S2 = S1[1];
S3 = S2[1];
S4 = S3[1];
LL = L;
L1 = LL[1];
L2 = L1[1];
L3 = L2[1];
L4 = L3[1];
if abs(B-HH) < 0.7 Then
Text_Delete(tx);
tx = Text_New(sDate,sTime,LL,NumToStr(abs(LL-S),2));
Text_SetColor(tx,Blue);
Text_SetSize(tx,25);
Text_SetStyle(tx,1,0);
Text_SetBold(tx,1);
box = Box_New(sDate,sTime,S,NextBarSdate,NextBarStime,LL);
Condition2 = False;
Condition4 = False;
Condition6 = False;
}
Else
{
if T == 1 Then
{
if H > HH Then
HH = H;
Text_SetString(tx,NumToStr(abs(HH-B),2));
Text_SetLocation(tx,sDate,sTime,HH);
Box_SetEnd(box,NextBarSdate,NextBarStime,hh);
if HH < B+0.4 Then
{
Box_SetColor(box,Magenta);
Box_SetFill(box,true,90);
}
Else if HH >= B+0.4 and HH < B+0.5 Then
{
Box_SetColor(box,Gold);
Box_SetFill(box,true,150);
}
Else if HH >= B+0.5 and HH < B+0.65 Then
{
Box_SetColor(box,Orange);
Box_SetFill(box,true,100);
}
Else if HH >= B+0.65 and HH < B+0.8 Then
{
Box_SetColor(box,Pink);
Box_SetFill(box,true,120);
}
Else if HH >= B+0.8 and HH < B+1.2 Then
{
Box_SetColor(box,Magenta);
Box_SetFill(box,true,50);
}
Else if HH >= B+1.2 and HH < B+1.9 Then
{
Box_SetColor(box,Gray);
Box_SetFill(box,true,60);
}
Else
{
Box_SetColor(box,Pink);
Box_SetFill(box,true,90);
}
if B1 > 0 and B3 > B4 and H > H1 and H1 > H2 and H2 > H3 and H3 > H4 and Condition3 == False Then
{
Condition3 = true;
Buy();
txx = Text_New(sdate,sTime,H-0.7,"■");
Text_SetStyle(txx,2,2);
Text_SetColor(txx,Green);
Text_SetSize(txx,40);
}
if B1 > 0 and B >= B1 and H > H1 and B1 > B2 and H1 > H2 and Condition1 == False Then
{
Condition1 = true;
Buy();
txx = Text_New(sdate,sTime,H-0.7,"●");
Text_SetStyle(txx,2,2);
Text_SetColor(txx,Blue);
Text_SetSize(txx,35);
}
if Condition5 == False and var1 >= B+1.9 Then
{
Condition5 = true;
TL_New(sDate,sTime,0,sDate,sTime,999999999);
}
}
if T == -1 Then
{
if L < LL Then
LL = L;
Text_SetString(tx,NumToStr(abs(LL-S),2));
Text_SetLocation(tx,sDate,sTime,LL);
Box_SetEnd(box,NextBarSdate,NextBarStime,LL);
if LL > S-0.4 Then
{
Box_SetColor(box,Lime);
Box_SetFill(box,true,120);
}
Else if LL <= S-0.4 and ll > S-0.5 Then
{
Box_SetColor(box,Cyan);
Box_SetFill(box,true,150);
}
Else if LL <= S-0.5 and ll > S-0.65 Then
{
Box_SetColor(box,Blue);
Box_SetFill(box,true,50);
}
Else if LL <= S-0.65 and ll > S-0.8 Then
{
Box_SetColor(box,Yellow);
Box_SetFill(box,true,100);
}
Else if LL <= S-0.8 and ll > S-1.2 Then
{
Box_SetColor(box,Lime);
Box_SetFill(box,true,100);
}
Else if LL <= S-1.2 and ll > S-1.6 Then
{
Box_SetColor(box,Cyan);
Box_SetFill(box,true,100);
}
Else if LL <= S-1.6 and ll > S-1.9 Then
{
Box_SetColor(box,Blue);
Box_SetFill(box,true,30);
}
Else
{
Box_SetColor(box,Yellow);
Box_SetFill(box,true,100);
}
if S1 > 0 and S3 < S4 and L < L1 and L1 < L2 and L2 < L3 and L3 < L4 and Condition4 == False Then
{
Condition4 = true;
Buy();
txx = Text_New(sdate,sTime,L+0.7,"■");
Text_SetStyle(txx,2,2);
Text_SetColor(txx,Black);
Text_SetSize(txx,40);
}
if S1 > 0 and S <= S1 and L < L1 and S1 < S2 and L1 < L2 and Condition2 == False Then
{
Condition2 = true;
Buy();
txx = Text_New(sdate,sTime,L+0.7,"●");
Text_SetStyle(txx,2,2);
Text_SetColor(txx,Red);
Text_SetSize(txx,35);
}
if Condition6 == False and var1 <= B-1.9 Then
{
Condition6 = true;
TL_New(sDate,sTime,0,sDate,sTime,999999999);
}
}
}
if MarketPosition == 1 and BarsSinceEntry == 1 Then ExitLong();
if MarketPosition == -1 and BarsSinceEntry == 1 Then ExitShort();
하락은 노란색박스, 상승은 핑크색 박스에서 세로선이 모두 표시되어야 하는데 안나옵니다.
파라볼릭 크기가 1.9p 되는 지점에서만 세로선. 확인 부탁드립니다.
2025-02-28
416
글번호 188676
답변완료
수식 작성 부탁드립니다.
안녕하세요. 늘 도움을 주셔서 감사드립니다.
DPO(Detrended Price Osc) 지표를 활용한 수식 작성을 아래와 같이 요청드립니다.
<정의>
DPO값이 양수일 때는 '매수구간', 음수일 때는 '매도구간'이라 부르겠습니다.
그리고 '매수구간'을 통해 만들어진 선을 '매수선'이라고 부르고 '매도구간'을 통해 만들어진 선을 '매도선'이라고 부르겠습니다.
<수식 작성 요청>
1. 매수구간 동안 DPO값이 최고일 때의 캔들 고가를 저장해 놨다가 매수구간이 끝나고 매도구간이 시작될 때부터 저장된 캔들의 고가를 선으로 그립니다.(매수선) 이 매수선은 다음 매수구간이 시작해서 끝날 때까지, 즉 새로운 매수구간이 완성되어 다음 매수선이 만들어지기 전까지 그려집니다.
2. 매도구간 동안 DPO값이 최저일 때의 캔들 저가를 저장해 놨다가 매도구간이 끝나고 매수구간이 시작될 때부터 저장된 캔들의 저가를 선으로 그립니다.(매도선) 이 매도선은 다음 매도구간이 시작해서 끝날 때까지, 즉 새로운 매도구간이 와넝되어 다음 매도선이 만들어지기 전까지 그려집니다.
이렇게 두개의 선이 연속적으로 나타나는 선을 요청드립니다.
수고해 주심에 미리 감사드립니다.
2025-02-28
410
글번호 188674
님이랑 님에 의해서 삭제되었습니다.
2025-02-28
7
글번호 188673
답변완료
종목 검색식 부탁 드립니다.
수고가 많으십니다.
아래 내용으로 종목을 검색하고자 합니다.
A=wavg(2*wavg(scr,len/2)-wavg(scr,len),floor(sqrt(len)));
A>A(1) && A(1)<A(2)
지표변수
scr : 종가
len : 49
부탁 드립니다.
감사합니다.
2025-02-28
312
글번호 188672
답변완료
수식 변환좀 부탁드립니다.
만들어 주신 강조 수식을 신호가 발생시 소리가 나올수 있게 시스템 수식으로 변환좀 요청드립니다.
매번 감사드립니다.^^
input : a(1);
input : ATRP(10);
input : ha(false);
var : xATR(0),nLoss(0);
var : xClose(0),xHigh(0),xLow(0),xOpen(0),src(0);
var : xATRTrailingStop(0),ps(0),xcolor(0);
xATR = atr(ATRP);
nLoss = a * xATR;
if index == 0 then
{
xClose = (O+H+L+C)/4;
xOpen = open;
xHigh = MaxList( high, xOpen, xClose);
xLow = MinList( low, xOpen,xClose);
}
else
{
xClose = (O+H+L+C)/4;
xOpen = (xOpen [1] + xClose [1])/2 ;
xHigh = MaxList(High, xOpen, xClose) ;
xLow = MinList(Low, xOpen, xClose) ;
}
if ha == False Then
src = close;
Else
src = xClose;
var1 = IFf(IsNan(xATRTrailingStop[1]) ==true,0,xATRTrailingStop[1]);
xATRTrailingStop =iff(src > var1 and src[1] > var1, max(var1, src - nLoss),
iff(src < var1 and src[1] < var1, min(var1, src + nLoss),
iff(src > var1, src - nLoss, src + nLoss)));
ps = iff(src[1] < var1 and src > var1, 1,
iff(src[1] > var1 and src < var1, -1, IFf(IsNaN(ps[1])==true,0,ps[1])));
xcolor = iff(ps == -1 , red, IFf(ps == 1 , green , blue));
var : emv(0),above(False),below(False);
var : b(False),s(False),barbuy(False),barsell(False),tx(0);
emv = ema(src,1);
above = CrossUp(emv, xATRTrailingStop);
below = CrossUp(xATRTrailingStop, emv);
b = src > xATRTrailingStop and above;
s = src < xATRTrailingStop and below;
barbuy = src > xATRTrailingStop;
barsell = src < xATRTrailingStop ;
if b == true Then
{
tx = Text_New(sDate,sTime,L,"▲");
Text_SetStyle(tx,2,0);
Text_SetColor(tx,Green);
}
if s == true Then
{
tx = Text_New(sDate,sTime,H,"▼");
Text_SetStyle(tx,2,1);
Text_SetColor(tx,Red);
}
if barbuy == true Then
PlotPaintBar(H,L,"강조",Green);
if barsell == true Then
PlotPaintBar(H,L,"강조",Red);
2025-02-28
369
글번호 188663
답변완료
신용 비율
종목별로 일별 신용 비율은 어디서 확인하나요
일별로 제공안된다면 현재 신용비율은 어떻게 확인하나요
2025-02-28
317
글번호 188659
님이랑 님에 의해서 삭제되었습니다.
2025-02-28
6
글번호 188657
살빼고싶다 님에 의해서 삭제되었습니다.
2025-02-28
14
글번호 188650