커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
3489
글번호 230811
답변완료
수식변환 부탁드립니다.
1.
study("NEW MACD", overlay=false)
// 폴MACD
lengthMA_MACD = input(34, title="NEW MACD Length") // 변수명 변경
lengthSignal = input(9, title="NEW MACD Signal Length")
calc_smma(src, len) =>
smma=na(smma[1]) ? sma(src, len) : (smma[1] * (len - 1) + src) / len
smma
calc_zlema(src, length) =>
ema1=ema(src, length)
ema2=ema(ema1, length)
d=ema1-ema2
ema1+d
src=hlc3
hi=calc_smma(high, lengthMA_MACD) // 수정된 변수명 적용
lo=calc_smma(low, lengthMA_MACD) // 수정된 변수명 적용
mi=calc_zlema(src, lengthMA_MACD) // 수정된 변수명 적용
md=(mi>hi)? (mi-hi) : (mi<lo) ? (mi - lo) : 0
sb=sma(md, lengthSignal)
mdc=src>mi?src>hi?blue:blue:src<lo?blue:blue
plot(0, color=gray, linewidth=1, title="MidLine")
// NEW MACD 선의 불투명도를 100% (transp=0)으로 설정
plot(md, color=mdc, linewidth=2, title="NEW MACD", style=line, transp=0)
// NEW MACDSignal 선의 불투명도를 100% (transp=0)으로 설정
plot(sb, color=orange, linewidth=2, title="NEW MACDSignal", transp=0)
// EMA Wave Indicator
alength=input(5, title="Wave A Length")
blength=input(25, title="Wave B Length")
clength=input(50, title="Wave C Length")
lengthMA_Trend=input(4, title="Wave SMA Length") // 변수명 변경
mse=input(false, title="Identify Trend/Exhaustions")
cutoff = input(10, title="Cutoff")
ebc=input(false, title="Color Bars on Trend/Exhaustions")
ma(s,l) => ema(s,l)
wa=sma(src-ma(src, alength), lengthMA_Trend) // 수정된 변수명 적용
wb=sma(src-ma(src, blength), lengthMA_Trend) // 수정된 변수명 적용
wc=sma(src-ma(src, clength), lengthMA_Trend) // 수정된 변수명 적용
wcf=(wb != 0) ? (wc/wb > cutoff) : false
wbf=(wa != 0) ? (wb/wa > cutoff) : false
// 컬럼 색상 변경: 0선 위 파랑, 0선 아래 빨강
plot(wc, color=wc > 0 ? aqua : red, style=columns, linewidth=3, title="WaveC", transp=80)
plot(mse and wcf?wc:na, color=fuchsia, style=columns, linewidth=3, title="Wave Trend", transp=70)
plot(wb, color=wb > 0 ? black : black, style=columns, linewidth=3, title="WaveB", transp=90)
plot(mse and wbf?wb:na, color=fuchsia, style=columns, linewidth=3, title="WaveB Trend", transp=70)
plot(wa, color=wa > 0 ? black : black, style=columns, linewidth=3, title="WaveA", transp=90)
2.
//@version=6
indicator('AWMA', overlay = true)
//inputs
_Period1 = input(3, 'WMA1 Period')
_Period2 = input(5, 'WMA2 Period')
_Period3 = input(8, 'WMA3 Period')
_Period4 = input(10, 'WMA4 Period')
_Period5 = input(12, 'WMA5 Period')
_Period6 = input(15, 'WMA6 Period')
_Period7 = input(30, 'WMA7 Period')
_Period8 = input(35, 'WMA8 Period')
_Period9 = input(40, 'WMA9 Period')
_Period10 = input(45, 'WMA10 Period')
_Period11 = input(50, 'WMA11 Period')
_Period12 = input(60, 'WMA12 Period')
//calculate wma
wma1 = ta.wma(close, _Period1)
wma2 = ta.wma(close, _Period2)
wma3 = ta.wma(close, _Period3)
wma4 = ta.wma(close, _Period4)
wma5 = ta.wma(close, _Period5)
wma6 = ta.wma(close, _Period6)
wma7 = ta.wma(close, _Period7)
wma8 = ta.wma(close, _Period8)
wma9 = ta.wma(close, _Period9)
wma10 = ta.wma(close, _Period10)
wma11 = ta.wma(close, _Period11)
wma12 = ta.wma(close, _Period12)
plot(wma1, color = color.new(#4fc3d2, 0), title = 'short1')
plot(wma2, color = color.new(#4fc3d2, 0), title = 'short2')
plot(wma3, color = color.new(#4fc3d2, 0), title = 'short3')
plot(wma4, color = color.new(#4fc3d2, 0), title = 'short4')
plot(wma5, color = color.new(#4fc3d2, 0), title = 'short5')
plot(wma6, color = color.new(#4fc3d2, 0), title = 'short6')
plot(wma7, color = color.new(#fe0d5f, 0), title = 'long1')
plot(wma8, color = color.new(#fe0d5f, 0), title = 'long2')
plot(wma9, color = color.new(#fe0d5f, 0), title = 'long3')
plot(wma10, color = color.new(#fe0d5f, 0), title = 'long4')
plot(wma11, color = color.new(#fe0d5f, 0), title = 'long5')
plot(wma12, color = color.new(#fe0d5f, 0), title = 'long6')
2025-06-16
528
글번호 191712
답변완료
수정부탁드립니다.
기존 수식에서 선의 색깔과 두께 그리고 선의모양을 그림과 같이 수정부탁드립니다.
분홍색 얇은점선 추가도 부탁드립니다.
선위에 행사가격이 표시되게도 부탁드리는데
봉과 숫자 사이에 간격이 있었으면 좋겠습니다.
항상 수고해주셔서 감사드립니다.
input : 간격(2.5);
var : cnt(0);
Array : HTL1[100](0),LTL1[100](0);
Array : HTL2[100](0),LTL2[100](0);
Array : HTL3[100](0),LTL3[100](0);
Array : HTL4[100](0),LTL4[100](0);
if Index == 1 or Bdate != Bdate[1] Then
{
var1 = Floor(DayOpen/간격)*간격;
For cnt = 0 to 99
{
TL_Delete(HTL1[cnt]);
TL_Delete(LTL1[cnt]);
TL_Delete(HTL2[cnt]);
TL_Delete(LTL2[cnt]);
TL_Delete(HTL3[cnt]);
TL_Delete(LTL3[cnt]);
TL_Delete(HTL4[cnt]);
TL_Delete(LTL4[cnt]);
value1 = var1+간격*cnt;
value2 = value1+(간격/4)*1;
value3 = value1+(간격/4)*2;
value4 = value1+(간격/4)*3;
HTL1[cnt] = TL_New(sDate,sTime,value1,NextBarSdate,NextBarStime,Value1);
HTL2[cnt] = TL_New(sDate,sTime,value2,NextBarSdate,NextBarStime,Value2);
HTL3[cnt] = TL_New(sDate,sTime,value3,NextBarSdate,NextBarStime,Value3);
HTL4[cnt] = TL_New(sDate,sTime,value4,NextBarSdate,NextBarStime,Value4);
TL_SetExtLeft(HTL1[cnt],true);
TL_SetExtLeft(HTL2[cnt],true);
TL_SetExtLeft(HTL3[cnt],true);
TL_SetExtLeft(HTL4[cnt],true);
TL_SetExtRight(HTL1[cnt],true);
TL_SetExtRight(HTL2[cnt],true);
TL_SetExtRight(HTL3[cnt],true);
TL_SetExtRight(HTL4[cnt],true);
TL_SetSize(HTL1[cnt],5);
TL_SetSize(HTL2[cnt],0);
TL_SetSize(HTL3[cnt],0.5);
TL_SetSize(HTL4[cnt],0);
TL_SetStyle(HTL1[cnt],0.5);
TL_SetStyle(HTL2[cnt],3);
TL_SetStyle(HTL3[cnt],0.5);
TL_SetStyle(HTL4[cnt],3);
if cnt >= 1 Then
{
value5 = var1-간격*cnt;
value6 = value5+(간격/4)*1;
value7 = value5+(간격/4)*2;
value8 = value5+(간격/4)*3;
LTL1[cnt] = TL_New(sDate,sTime,value5,NextBarSdate,NextBarStime,Value5);
LTL2[cnt] = TL_New(sDate,sTime,value6,NextBarSdate,NextBarStime,Value6);
LTL3[cnt] = TL_New(sDate,sTime,value7,NextBarSdate,NextBarStime,Value7);
LTL4[cnt] = TL_New(sDate,sTime,value8,NextBarSdate,NextBarStime,Value8);
TL_SetExtLeft(LTL1[cnt],true);
TL_SetExtLeft(LTL2[cnt],true);
TL_SetExtLeft(LTL3[cnt],true);
TL_SetExtLeft(LTL4[cnt],true);
TL_SetExtRight(LTL1[cnt],true);
TL_SetExtRight(LTL2[cnt],true);
TL_SetExtRight(LTL3[cnt],true);
TL_SetExtRight(LTL4[cnt],true);
TL_SetSize(LTL1[cnt],5);
TL_SetSize(LTL2[cnt],0);
TL_SetSize(LTL3[cnt],0.5);
TL_SetSize(LTL4[cnt],0);
TL_SetStyle(LTL1[cnt],0.5);
TL_SetStyle(LTL2[cnt],3);
TL_SetStyle(LTL3[cnt],0.5);
TL_SetStyle(LTL4[cnt],3);
}
}
}
2025-06-16
317
글번호 191711
답변완료
조건검색식 문의드립니다.
이동 = ma(C, 기간1);
이동1 = ma(C, 기간2);
조건 = CrossUp(이동, 이동1);
지표라인 = ValueWhen(1, 조건, (H + L) / 비율1);
돌파조건 = CrossUp(C, 지표라인);
지표변수
기간1 10
기간2 10
비율1 1
당일 장중에 30분봉상에서 위 신호가 한번이라도 뜬 모든 종목을 검출하고 싶습니다 (__)
감사합니다 :)
2025-06-13
277
글번호 191708
답변완료
종목검색식 부탁드림니다.
항상 노고에 감사드림니다.
아래의 수식을 종목검색식으로 부탁드림니다.
1)
거래량> avg(거래량, 기간)*배수 &&
거래량> 거래량(1)*배수
지표변수
기간 500
배수 5
2)
A=wavg(2*wavg(scr,len/2) - wavg(scr,len), floor(sqrt(len)));
A>A(1) && A(1)<A(2)
지표변수
scr 종가
len 49
2025-06-13
297
글번호 191696
답변완료
수식수정바랍니다
안녕하세요
아래3가지 수식은 선물옵션에서 사용중인데 주간장용입니다
복합장에서 주간장으로 사용하게끔 수정바랍니다
1.
input : 타주기분(30);
var : cnt(0),S1(0),D1(0),TM(0),TF(0);
Array : HH[100](0),LL[100](0);
if Bdate != Bdate[1] Then
{
S1 = TimeToMinutes(stime);
D1 = sdate;
}
if D1 > 0 then
{
if sdate == D1 Then
TM = TimeToMinutes(stime)-S1;
Else
TM = TimeToMinutes(stime)+1440-S1;
TF = TM%타주기분;
if Bdate != Bdate[1] or (Bdate == Bdate[1] and TF < TF[1]) Then
{
HH[0] = H;
LL[0] = L;
for cnt = 1 to 99
{
HH[cnt] = HH[cnt-1][1];
LL[cnt] = LL[cnt-1][1];
}
}
if H > HH[0] Then
HH[0] = H;
if L < LL[0] Then
LL[0] = L;
if HH[1] > 0 and LL[1] > 0 then
{
plot1(iff(stime>=091500,HH[1],0));
plot2(iff(stime>=091500,LL[1],0));
plot3(iff(stime>=091500,(HH[1]+LL[1])/2,0));
plot4((HH[1]-(HH[1]-LL[1])*0.382));
plot5((HH[1]-(HH[1]-LL[1])*0.618));
}
}
2.
input : 타주기분(30);
var : cnt(0),S1(0),D1(0),TM(0),TF(0);
Array : HH[100](0),LL[100](0);
if Bdate != Bdate[1] Then
{
S1 = TimeToMinutes(stime);
D1 = sdate;
}
if D1 > 0 then
{
if sdate == D1 Then
TM = TimeToMinutes(stime)-S1;
Else
TM = TimeToMinutes(stime)+1440-S1;
TF = TM%타주기분;
if Bdate != Bdate[1] or (Bdate == Bdate[1] and TF < TF[1]) Then
{
HH[0] =data2(H);
LL[0] =data2(L);
for cnt = 1 to 99
{
HH[cnt] = HH[cnt-1][1];
LL[cnt] = LL[cnt-1][1];
}
}
if data2(H) > HH[0] Then
HH[0] = data2(H);
if data2(L) < LL[0] Then
LL[0] = data2(L);
if HH[1] > 0 and LL[1] > 0 then
{
plot1(iff(stime>=091500,HH[1],0));
plot2(iff(stime>=091500,LL[1],0));
plot3(iff(stime>=091500,(HH[1]+LL[1])/2,0));
plot4((HH[1]-(HH[1]-LL[1])*0.382));
plot5((HH[1]-(HH[1]-LL[1])*0.618));
}
}
3.
Plot1(dayHigh(),"당고가");
Plot2(dayLow(), "당저가");
Plot3(dayHigh(1),"고가");
Plot4(dayLow(1), "저가");
Plot5(data2(HighD(1)), "전고가2");
Plot6(data2(Lowd(1)), "전저가2");
Plot7(data2(HighD(0)), "고가2");
Plot8(data2(Lowd(0)), "저가2");
Plot9(DayOpen(),"당시가");
Plot10(data2(OpenD(0)), "시가2");
수고하십시요.
2025-06-13
294
글번호 191695
답변완료
5분봉에서 사용하고 싶습니다. 수식 전환 부탁 드립니다.
5분봉에서 사용하고 싶습니다. 수식 전환 부탁 드립니다.
1.
Sv = sum(V);
V1 = valuewhen(1, date!=date(1), Sv(1));
V2 = valuewhen(2, date!=date(1), Sv(1));
당일 = Sv - V1;
전일 = V1 - V2;
tot = 당일/전일 * 100;
첫신호 = if(tot>150,tot,0);
cond = countsince(date!=date(1),첫신호);
cond == 1 && cond(1)==0
2.
YY = SUM(V);
ZZ = VALUEWHEN(1, DATE!=DATE(1), YY(1));
WW = YY-ZZ;
AA = (dayHigh()+dayLow()+dayClose())/3;
BB = AA * WW;
CC = BB/WW;
2025-06-13
319
글번호 191692
답변완료
수식 전환 부탁드립니다~
트레이드스테이션용 수식입니다. 제가 챗GPT이용해서 전환해서 예트 적용하니 오류가 넘 많네요 ㅠㅜ. 예트용으로 전환 부탁드립니다.
// === 이동 평균 계산 ===
AA = Average(Close, XX);
BB = Average(Close, XX * XXX);
// === 진입 로직 ===
If MarketPosition = 0 then begin
If AA[1] < BB[1] and AA > BB[1] then begin
Buy ("LongEntry") YYY shares next bar at market;
EntryLow = Lowest(Low, 10);
EntryHigh = Highest(High, 10);
end;
If AA[1] > BB[1] and AA < BB[1] then begin
SellShort ("ShortEntry") YYY shares next bar at market;
EntryLow = Lowest(Low, 10);
EntryHigh = Highest(High, 10);
end;
end;
// === 청산 로직 (이동 평균 크로스오버) ===
// If MarketPosition = 1 and AA[1] > BB[1] and AA < BB[1] then
// Sell ("LongExit") next bar at market;
// If MarketPosition = -1 and AA[1] < BB[1] and AA > BB[1] then
// BuyToCover ("ShortExit") next bar at market;
2025-06-13
513
글번호 191691
회원 님에 의해서 삭제되었습니다.
2025-06-13
51
글번호 191689
회원 님에 의해서 삭제되었습니다.
2025-06-13
55
글번호 191688