커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1521
글번호 230811
놀이터 님에 의해서 삭제되었습니다.
2025-09-26
125
글번호 194285
답변완료
부탁드립니다 항상 감사합니다
매 1시간봉이 시작되는 시점을 분봉에 표시하고싶습니다 1분봉 5분봉 10분봉 30분봉
부탁드립니다
2025-09-26
252
글번호 194284
답변완료
부탁드립니다 항상 감사합니다
input : 타주기분(60);
input : P(20), Dv(2);
var : S1(0), D1(0), TM(0), TF(0), prevTF(0), isNew(false);
var : cnt(0), SumSqrt(0), Stdv(0), sum(0), BBmd(0), BBup(0), BBdn(0);
var : lastPriceInBlock(0), isFirst(true);
Array : CC;
{ 기준 시각/날짜 초기화 }
if Bdate <> Bdate[1] then begin
S1 = TimeToMinutes(stime);
D1 = sdate;
end;
if D1 > 0 then begin
if sdate = D1 then
TM = TimeToMinutes(stime) - S1
else
TM = TimeToMinutes(stime) + 1440 - S1;
TF = TM % 타주기분;
prevTF = TF[1];
{ 새 블럭 판단: 날짜 변경 or 나머지 되감김 or 충분히 경과 }
isNew = (Bdate <> Bdate[1]) or (TF < prevTF) or (TM >= TM[1] + 타주기분);
{ 각 틱에서 현재 블럭의 마지막 가격을 트래킹 }
lastPriceInBlock = C;
if isNew and (isFirst = false) then begin
{ 직전 블럭 종료 시점 가격을 밀어넣기 }
for cnt = 99 downto 1 begin
CC[cnt] = CC[cnt-1];
end;
CC[0] = C[1]; { 직전 틱(=직전 블럭 끝)의 종가를 기록 }
end;
if isFirst then begin
{ 초기 1회 세팅: 현재가로 CC[0] 채우기 }
CC[0] = C;
isFirst = false;
end;
{ 충분히 쌓였으면 볼밴 계산 }
if P <= 99 and CC[P-1] > 0 then begin
sum = 0;
for cnt = 0 to P-1 begin
sum = sum + CC[cnt];
end;
BBmd = sum / P;
SumSqrt = 0;
for cnt = 0 to P-1 begin
SumSqrt = SumSqrt + (CC[cnt] - BBmd)*(CC[cnt] - BBmd);
end;
Stdv = SquareRoot(SumSqrt / P);
BBup = BBmd + (Dv * Stdv);
BBdn = BBmd - (Dv * Stdv);
Plot1(BBup, "상단");
Plot2(BBmd, "중단");
Plot3(BBdn, "하단");
end;
end;
예스트레이더 해외선물에 적용할수있게끔 부탁드립니다
2025-09-26
254
글번호 194283
답변완료
문의 드립니다.
//@version=5
indicator(
title="DEMA Adjusted Average True Range [BackQuant]",
shorttitle = "DEMA ATR [BackQuant]",
overlay=true,
timeframe="",
timeframe_gaps=true
)
// Define User Inputs
simple bool showAtr = input.bool(true, "Plot Dema Atr on Chart?")
simple bool haCandles = input.bool(false, "Use HA Candles?")
simple int periodDema = input.int(7, "Dema Period", group = "Dema Atr")
series float sourceDema = input.source(close, "Calculation Source", group = "Dema Atr")
simple int periodAtr = input.int(14, "Period", group = "Dema Atr")
simple float factorAtr = input.float(1.7, "Factor", step = 0.01, group = "Dema Atr")
simple bool paintCandles = input.bool(false, "Paint Candles According to trend?")
simple bool showMA = input.bool(false, "Show Atr Moving Average as Confluence?",group = "Confluence")
string movingAverageType = input.string("Ema", title="MA Type", options=["SMA", "Hull", "Ema", "Wma", "Dema"],group = "Confluence")
simple int movingAveragePeriod = input.int(50, "Moving Average Period", group = "Confluence")
simple color longColour = #00ff00
simple color shortColour = #ff0000
/////////////////////////////////////////////////////////////// © BackQuant ///////////////////////////////////////////////////////////////
// Use HA Candles?
heikinashi_close = request.security(
symbol = ticker.heikinashi(syminfo.tickerid),
timeframe = timeframe.period,
expression = close,
gaps = barmerge.gaps_off,
lookahead = barmerge.lookahead_off
)
var series float source = close
if haCandles == true
source := heikinashi_close
if haCandles == false
source := sourceDema
/////////////////////////////////////////////////////////////// © BackQuant ///////////////////////////////////////////////////////////////
// Function
DemaAtrWithBands(periodDema, source, lookback, atrFactor)=>
ema1 = ta.ema(source, periodDema)
ema2 = ta.ema(ema1, periodDema)
demaOut = 2 * ema1 - ema2
atr = ta.atr(lookback)
trueRange = atr * atrFactor
DemaAtr = demaOut
DemaAtr := nz(DemaAtr[1], DemaAtr)
trueRangeUpper = demaOut + trueRange
trueRangeLower = demaOut - trueRange
if trueRangeLower > DemaAtr
DemaAtr := trueRangeLower
if trueRangeUpper < DemaAtr
DemaAtr := trueRangeUpper
DemaAtr
// Function Out
DemaAtr = DemaAtrWithBands(periodDema, source, periodAtr, factorAtr)
/////////////////////////////////////////////////////////////// © BackQuant ///////////////////////////////////////////////////////////////
// Moving Average Switch Type
movingAverage(source, length, type) =>
switch type
"SMA" => ta.sma(source, length)
"Hull" => ta.hma(source, length)
"Ema" => ta.ema(source, length)
"Wma" => ta.wma(source, length)
"Dema" => ta.dema(source, length)
maOut = movingAverage(DemaAtr, movingAveragePeriod, movingAverageType)
/////////////////////////////////////////////////////////////// © BackQuant ///////////////////////////////////////////////////////////////
// Conditions
DemaAtrLong = ta.crossover(DemaAtr, DemaAtr[1])
DemaAtrShort = ta.crossunder(DemaAtr, DemaAtr[1])
// Colour Condtions
var color Trend = #ffffff
if DemaAtrLong
Trend := longColour
if DemaAtrShort
Trend := shortColour
// Plotting
plot(
showAtr ? DemaAtr : na,
"ATR",
color=Trend,
linewidth = 2
)
barcolor(paintCandles ? Trend : na)
plot(showMA ? maOut : na, "Moving Average", color.white, 2, plot.style_line)
/////////////////////////////////////////////////////////////// © BackQuant ///////////////////////////////////////////////////////////////
// Alerts
alertcondition(
DemaAtrLong,
title="Dema ATR Trend Up",
message="Dema ATR Trend Up - {{ticker}} - {{interval}}"
)
alertcondition(
DemaAtrShort,
title="Dema ATR Trend Down",
message="Dema ATR Trend Down - {{ticker}} - {{interval}}"
)
트레이딩뷰 수식인데 여기서 DEMA 선의 색이 바뀌면 매수/매도 신호가 나오게 해주세요.
2025-09-26
302
글번호 194282
답변완료
지표 문의드립니다.
거래대금
500~1000억 봉에 : 주황색
1000억 이상 봉에 : 빨강색
강조표시 되도록 부탁드리겠습니다.
금액은 수정가능하게 해주세요!
2025-09-26
232
글번호 194281
답변완료
수식 부탁 드립니다
안녕하세요
궁금한 지표식은
주간 복합 야간 3분차트에
30분 이동평균선 ( 5 . 10 . 20 .60 )을 나타내고 싶습니다
기존에 있던 선들이 틀리게 나오네요
1 , 주간 30분 이동평균선
2 , 복합 30분 이동평균선
3 , 야간 30분 이동평균선
미리 감사 드립니다
2025-09-26
242
글번호 194280
답변완료
수정요청
아래 수식은 각기 다른 수식의 if ~ 부분입니다.
각각을 1봉전에 발생하는 것으로 변경해보았는데 잘 안되어 요청드립니다.
------------------------------------------------------------------------------
if CROSSUP(haH,A) && cumulative_volume_delta>0 && ema_volume_strength_wave>ema_volume_strength_wave[1] && haC>haO && Var3 > 60 &&
CountIf(Var3 < 59.9,5)[1] == 5 Then
Find(1);
-------------------------------------------------------------------------------
if haC[2] < HaO[2] and HaC[1] > HaO[1] and HaC > HaO and
((haRSI[2] < 30 and haRSI > 30) or haRSI>60) and
haL[2] < B[2] then
Find(1);
2025-09-26
189
글번호 194279
답변완료
사용자함수 리턴값 사용 문의
먼저 항상 친절한 답변 감사 드립니다^^ 환절기에 몸조리 잘 하시길 바라겠습니다.
다름이 아니라 체결시점보유수량을 확인하는 사용자함수를 개발하여
시스템함수안에서 각 체결 시 매수체결상태코드라는 리턴값을 가지고 사용을 하려고 합니다.
1) 예를 들어 리턴값 매수체결상태코드 "11" 이나 "21" 을 가져왔을 때
substring을 사용하여 첫번째 숫자를 판단하려고 합니다.
매수체결상태코드.substring(0,1) == "1" 이나 매수체결상태코드.substring(0,1) == "2" 로
사용하면 될까요..?
2) 그리고 한가지만 더 문의 드립니다.
리턴값을 예를 들어 1,2,3,4 로 숫자형으로 가져왔을때 시스템함수에서 split(자르기)할 수 있는 예시 코드를 주시면 정말 감사 드리겠습니다.
감사합니다!
2025-09-25
213
글번호 194278
답변완료
종목 검색 변환 요청드립니다
안녕하세요?
아래 키움 신호 검색 수식을 예스랭귀지 종목 검색 수식으로 변환 부탁드립니다.
선행1 = shift((highest(high,5) + lowest(low,5) + highest(high, 20) + lowest(low,20)) / 4, 20-1);
선행2 = shift((highest(high,60) + lowest(low,60))/2, 20-1);
라인 = Valuewhen(1, Crossup(선행1, 선행2) or Crossdown(선행1, 선행2), min(L,L(1)));
Crossup(C, 라인)
Valuewhen 사용자함수는 별도로 정의하였습니다.
2025-09-25
229
글번호 194277