커뮤니티
예스랭귀지 Q&A
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1353
글번호 230811
답변완료
수식전환 요청드립니다.
안녕하세요.
아래의 트레이딩뷰 지표수식을 예스트레이더 형식으로 변환을 요청드립니다.
감사합니다. (첨부파일 참조해 주십시오)
showSignal = input(title="Show Signal ?", type=input.bool, defval=true)
signalType = input(title="Signal Smoothing Type", defval="SMA", options=["EMA", "SMA"])
signalLength = input(title="Signal Smoothing Length", type=input.integer, defval=21)
src = input(title="Source", type=input.source, defval=close)
highlightCrossovers = input(title="Highlight Crossovers ?", type=input.bool, defval=false)
applyFilling = input(title="Apply Ribbon Filling ?", type=input.bool, defval=true)
signal = signalType == "EMA" ? ema(pvt, signalLength) : sma(pvt, signalLength)
trendColor = pvt > signal ? #0ebb23 : color.red
pvtColor = applyFilling ? trendColor : #0094ff
signalColor = applyFilling ? trendColor : #ff6a00
pvtPlot = plot(pvt, title="PVT", linewidth=2, color=pvtColor, transp=0)
signalPlot = plot(showSignal ? signal : na, title="Signal", color=signalColor, transp=0)
transparent = color.new(color.white, 100)
fillColor = applyFilling ? trendColor : transparent
fill(pvtPlot, signalPlot, color=fillColor, transp=70)
buyAlert = crossover(pvt, signal)
sellAlert = crossunder(pvt, signal)
plotshape(buyAlert and highlightCrossovers ? pvt : na, title="Crossover", location=location.absolute, style=shape.circle, size=size.tiny, color=color.green, transp=0)
plotshape(sellAlert and highlightCrossovers ? pvt : na, title="Crossunder", location=location.absolute, style=shape.circle, size=size.tiny, color=color.red, transp=0)
alertcondition(buyAlert, title="Alert: Buy", message="Buy
Symbol: {{exchange}}:{{ticker}}
Price: {{close}}")
alertcondition(sellAlert, title="Alert: Sell", message="Sell
Symbol: {{exchange}}:{{ticker}}
Price: {{close}}")
2024-12-06
645
글번호 186004
답변완료
수식전환 요청드립니다.
안녕하세요.
아래 트레이딩뷰 지표를 예스트레이더 형식으로 전환 부탁드립니다.
감사합니다.
//@version=3
study("Better RSI")
cycler = na
myPeriod = input(defval = 14, type=integer, title="Period")
src = input(close, type=source)
showCycler = input(true,'Show cycler?')
lvl = input(50, 'Cycler level on plot')
myRSI = rsi(src, myPeriod)
firstcolor = color(white,10)
secondcolor = color(orange,50)
thirdcolor = gray
h30 = hline(30,color=firstcolor,linestyle=dashed,title='Low')
h70 = hline(70,color=firstcolor,linestyle=dashed,title = 'High')
h20 = hline(20, color=secondcolor,linestyle = solid,title='Second low')
h80 = hline(80, color=secondcolor,linestyle=solid,title='Second high')
//h50 = hline(50, color=orange, title= 'Mid line')
h40 = hline(40, color = thirdcolor, linestyle = dashed,title = '40 line')
h60 = hline(60, color = thirdcolor, linestyle = dashed, title = '60 line')
//fill(h30,h20,red,transp=80, title='Oversold color')
//fill(h80,h70,red,transp=80, title='Overbought color')
fill(h30,h70,fuchsia,transp=90, title= 'Background color')
//cond =? red:white
RSIplot = plot(myRSI,color=white,linewidth=2,transp=0,title="RSI")
plot(myRSI >= 70 or myRSI<= 30? myRSI:na,style = linebr,linewidth=3,color=red,transp = 0, title = 'Oversold color')
//cycler
cycler := if myRSI > 69 or myRSI< 31
a = if myRSI > 69
1 // bullish
else
2 // bearish
a
else
b = if (nz(cycler[1]) == 1 and myRSI < 39) or (nz(cycler[1]) == 2 and myRSI > 61)
0
else
nz(cycler[1])
b
mycolor = if cycler == 0
white
else
c = if cycler == 1
lime
else
red
c
plot(showCycler? lvl:na, style = line, color = mycolor, transp = 30, linewidth=2, title = 'Cycler colors')
2024-12-06
683
글번호 186003
살빼고싶다 님에 의해서 삭제되었습니다.
2024-12-06
37
글번호 186002
답변완료
종목검색 조건 변환 요청합니다.
S=sum(1);
M=ma(c,기간);
MH=valuewhen(1,M>M(1),M);
HH=HighestSince(1,CrossUp(S,전체봉수-표시봉수),MH);
CrossUP(C,HH) &&
HH=HH(1) &&HH(1)==HH(2)
===========
전체봉수 600, 기간 73, 표시봉수 120
이상입니다. 감사합니다.
2024-12-06
726
글번호 186001
답변완료
질문 부탁드리겠습니다
지난번 단기과열/투경 예고 관련 질문 답변 주셔서 감사드립니다
먼저 여쭤보고 싶은건
분봉상에서 dayclose (일간 종가)를 플롯하면 분봉에서 매봉의 종가가 나오는데요
일봉에서 최종 종가를 표현하려면 작성을 어떻게 해야될까요??
일단 if nextbarbdate != bdate then plot11(dayclose));
이렇게 작성하니 분봉에서 당일 마지막 봉에만 종가가 표시되는 형식으로 나오는데 이게 맞나요???
맞다면 nextbarbdate!= bdate 이게 의미하는 바와 마지막 봉에만 표시가 되는 원리를 잘 모르겠습니다
질문2)
지난번에 단기과열 관련해서 여쭤볼때 키움수식을 올렸었는데요
일단 단기과열 예고 지정 조건은 :
3가지 복수조건 (아래수식에서 A에 해당) 모두 해당 - 최초 적출된 날
적출된 날 익일 부터 10거래일 이내에 동일 요건 재적출
이렇게 되고 키움수식은
A = sum(avg(c, 40, 1) * 1.3 <= C
and avg(money/C, 40, 1) * 6 <= avg(money/C, 2)
and avg(((h-l)/((h+l)/2)), 40, 1) * 1.5 <= avg(((h-l)/((h+l)/2)), 2)
and C(1) < C);
B = valuewhen(1, A(1) != A, C);
if(A(1) - A(11) >= 1, B(1) < C and A(1) != A, 0)
인데요,
B는 해석하면 A(1) != A 일때 C값을 가져오라는건데
A(1) != A 가 의미하는 바와 ( A와 이전 만족A가 같지 않다?)
IF 문에 따르면 A(1) - A(11) >= 1 이면 B(1) < C and A(1) != A 를 나타내라는건데
여기서도 해석이 잘 안됩니다
변환을 해주셨는데 원본에서부터가 잘 해석이 안되네요
알려주신 수식도 간단한 주석을 부탁드립니다
1,2 번 표시해논 부분이 잘 이해가 안갑니다, 수식 전문은 맨 마지막에 첨부했습니다
1. if Bdate != Bdate[1] Then DD = DD+1;
2. if X > 0 and DD <= X[1]+11 and B < C and Condition1 Then
PlotPaintBar(H,L,"강조");
if NextBarBdate != Bdate Then
{
if Condition1 == true Then
{
B = C;
X = DD;
}
}
수식 전문:
var : A(0),B(0),cnt(0),DD(0),X(0);
Array : cond[50](False);
if Bdate != Bdate[1] Then
DD = DD+1;
var1 = 0;
var2 = 0;
var3 = 0;
for cnt = 1 to 40
{
var1 = var1 + DayClose(cnt);
var2 = var2 + (DayMoney(cnt)/DayClose(cnt));
var3 = var3 + (DayHigh(cnt)-DayLow(cnt))/((DayHigh(cnt)+DayLow(cnt))/2);
}
value1 = var1/40;
value2 = var2/40;
Value3 = var3/40;
var4 = 0;
var5 = 0;
for cnt = 0 to 1
{
var4 = var4 + (DayMoney(cnt)/DayClose(cnt));
var5 = var5 + (DayHigh(cnt)-DayLow(cnt))/((DayHigh(cnt)+DayLow(cnt))/2);
}
value4 = var4/2;
value5 = var5/2;
Condition1 = value1[1] * 1.3 <= C and Value2[1] * 6 <= Value4 and
Value3[1] * 1.5 <= Value5 and DayClose(1) < C;
if X > 0 and DD <= X[1]+11 and B < C and Condition1 Then
PlotPaintBar(H,L,"강조");
if NextBarBdate != Bdate Then
{
if Condition1 == true Then
{
B = C;
X = DD;
}
}
2024-12-06
844
글번호 186000
답변완료
문의합니다
안녕하세요 아래 조건으로 수식이 가능한 형태가 있을까요?
condition1= "매수조건1" 을 만족하면 +2
condition2= "매수조건2" 를 만족하면 -2
condition3="매수조건3" 을 만족하면 +3
condition4= "매수조건4" 를 만족하면 +4
이렇게 각 condition을 만족했을 경우 + - 숫자를 매겨서
그 숫자의 합이 5 이상이면 매수진입으로 할 수 있는 방법이 있을까요?
예를 들어
condition2 == true....만족시 +3
condition4== true....만족시 +4
두 조건 만족으로 합이 +7(합이 5 이상)이라서
"매수진입"
2024-12-05
498
글번호 185999
답변완료
종목 검색식 부탁드립니다
친절하고 자세한 답변에 머리숙여 감사드립니다
다음 신호수식에 대한 예스트레이더 종목검색식을 부탁드립니다.
1.
Max(avg(C,5), avg(C,20), avg(C,60)) <
Min(avg(C,5), avg(C,20), avg(C,60)) * (1+5/100) &&
C > Highest(H(1),5) && C(1) <= Highest(H(2),5)
2.
Disparity(60) >= 73 
and Disparity(60) <= 80
3.
A=(Highest(H, 33)+Lowest(L,33))/2;
CrossUp(A, avg(C, 33))
4.
A=(Dayclose()+nPredayclose(1)+nPredayclose(2)+nPredayclose(3)+nPredayclose(4))/5;
B=A+A*8/100;
CrossUp(C, B)
5.
Sum(if(CrossUp(C, avg(C, 224)), 1, 0), 5) = 1
and C(1)*1.05 <= C
6.
Ref(Trendup(),eavg(C,3)) and
C>O and V>eavg(V,20) and eavg(C,7)>O&&eavg(C,7)<=((O+C)/2))
7.
A= (Highest(H, 9)+Lowest(L,9)+Highest(H, 26)+Lowest(L,26))/4;
B=(C-A(25))/A(25)*100;
B >= -5 and B <= 5
8.
B= (Highest(H, 52)+Lowest(L,52))/2;
B1=(C-B(25))/B(25)*100;
B1 >= -5 and B1 <= 5
9.
A=Min(BbandsUp(20,2), BbandsUp(30,2), BbandsUp(40,2));
B=Max(BbandsUp(20,2), BbandsUp(30,2), BbandsUp(40,2));
O < A and C > B
10.
A=Min(nPredaylow(1), nPredaylow(2), nPredaylow(3), nPredaylow(4), nPredaylow(5), nPredaylow(6), nPredaylow(7), nPredaylow(8), nPredaylow(9), nPredaylow(10), nPredaylow(11), nPredaylow(12), nPredaylow(13), nPredaylow(14), nPredaylow(15), nPredaylow(16), nPredaylow(17), nPredaylow(18), nPredaylow(19), nPredaylow(20));
CrossUp(C, A)
2024-12-05
687
글번호 185998
답변완료
수식 수정 부탁드립니다.
input : 익절(3),손절(1),거래횟수(3);
var : entry(0);
if Bdate != Bdate[1] Then
entry = 0;
if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or
(MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades) Then
entry = entry+1;
if MarketPosition == 0 and entry < 거래횟수 and C > O and c > H[1] Then
Buy();
SetStopProfittarget(익절,PercentStop);
SetStopLoss(손절,PercentStop);
SetStopEndofday(151500);
매수
1. 현재 캔들이 양봉이고,
2. 직전(전일)캔들 고가 돌파
1,2번 조건이 모두 만족하면 매수
매도.
1. -1% 매도(손절)
2. +3% 매도
3. 오후 3시 15분 매도
위 조건으로 작성하여 주셨는데, 매수조건 전달이 잘못된거 같아 다시 부탁드립니다.
*수정
매수
1. 금일 현재가가 전일 고가를 돌파하고,
2. 금일 캔들이 양봉일 경우
1,2번 조건이 모두 만족하면 매수
매도.
1. -1% 매도(손절)
2. +3% 매도
3. 오후 3시 15분 매도
잘부탁드립니다.
2024-12-05
645
글번호 185997
답변완료
안녕하세요, 수식 부탁드립니다
안녕하세요
수식 부탁드립니다
ㄱ,
10개의 봉(Candle) 이내에서 10Ma 이동평균선보다
현재의 10Ma 이동평균선이 0.5P 더 크면 매수
ㄴ,
10개의 봉(Candle) 이내에서 StochasticsK 값보다
현재의 StochasticsK값이 30 더 크면 매수
감사합니다
2024-12-05
538
글번호 185996