커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
4355
글번호 230811
답변완료
Text_GetString
즐거운 하루가 안되네요. ^^
답변주신 그대로를 적용해봐도
프로그램이 죽어버리네요.
-----------------------------------------
안녕하세요
예스스탁입니다.
MessageLog의 첫번째 매개변수에는
출력값의 이름과 타입을 지정하셔야 합니다.
아래와 같이 지정하시면 됩니다.
var : str(" "),text4(0);
Text4 = Text_New(sDate, sTime, H, "시험");
Text_SetStyle(Text4, 2, 0);
Text_SetBold(Text4,1);
Text_SetSize(Text4,24);
Text_SetColor(Text4,Red);
str = Text_GetString(Text4); // 리턴값은 문자형 변수
MessageLog("> TEST : [%s]",str);
즐거운 하루되세요
2025-08-13
369
글번호 193228
답변완료
수식수정바랍니다
안녕하세요
vwap 수식인데(선물)복합장에서 주간장용으로 부탁합니다
8시45분부터주간장마감까지
var : sum(0),VWAP(0),PreVWAP(0);
if date != date[1] Then{
sum = 0;
PreVWAP = VWAP;
}
sum = sum+((H+L+C)/3*v);
VWAP = sum/DayVolume;
plot1(VWAP,"Volume-Weighted Average Price");
plot2(PreVWAP,"전일");
2025-08-13
290
글번호 193227
답변완료
종목 검색부탁드립니다.
1. 아래 수식을 참조하여,
수식1) 이 기준선 0 을 돌파할때 종목 검색식 부탁드립니다.
2. 수식1) 이 기준선0 위에 있는 종목중 전일보다 상승한 종목 검색식 부탁드립니다
-------아래-------
수식1)
xClose = close;
xOpen = open;
xVolume = volume;
nVolAccum = SUM(if(xClose > xOpen, xVolume, if(xClose < xOpen, -xVolume, 0)) ,AvgLen);
nRes = nVolAccum / AvgLen;
IF(nRes>0,nRes,0)
수식2)
IF(nRes<0,nRes,0)
---
지표조건
AvgLen 17
기준선 0
2025-08-13
266
글번호 193221
답변완료
종목 검색부탁드립니다.
1. 수식4)가 기준선0 을 돌파할때 종목 검색식
2. 수식4)에서 기준선0 위에 있는 종목중 전일보다 수식4)가 상승한(많은) 종옥 검색식 부탁드립니다
---------------------------------
수식1)
// 캔들 구성 요소 계산
upper_wick = if(C>O, H-C, H-O);
lower_wick = if(C>O, O-L, C-L);
spread = H-L;
body_length = spread - (upper_wick + lower_wick);
// 비율 계산
percent_upper_wick = upper_wick/spread;
percent_lower_wick = lower_wick/spread;
percent_body_length = body_length/spread;
// 매수 거래량
buying_volume = if(C>O, (percent_body_length + (percent_upper_wick + percent_lower_wick)/2)*V, ((percent_upper_wick + percent_lower_wick)/2)*V);
// 누적 매수 거래량
eavg(buying_volume, cumulation_length)
수식2)
// 기본 계산 (수식1과 동일)
upper_wick = if(C>O, H-C, H-O);
lower_wick = if(C>O, O-L, C-L);
spread = H-L;
body_length = spread - (upper_wick + lower_wick);
percent_upper_wick = upper_wick/spread;
percent_lower_wick = lower_wick/spread;
percent_body_length = body_length/spread;
// 매도 거래량
selling_volume = if(C<O, (percent_body_length + (percent_upper_wick + percent_lower_wick)/2)*V, ((percent_upper_wick + percent_lower_wick)/2)*V);
// 누적 매도 거래량
eavg(selling_volume, cumulation_length)
수식3)
// 누적 거래량 계산
cumulative_buying = eavg(if(C>O, (((H-L)-(if(C>O,H-C,H-O)+if(C>O,O-L,C-L)))/(H-L) + ((if(C>O,H-C,H-O)+if(C>O,O-L,C-L))/2)/(H-L))*V, (((if(C>O,H-C,H-O)+if(C>O,O-L,C-L))/2)/(H-L))*V), cumulation_length);
cumulative_selling = eavg(if(C<O, (((H-L)-(if(C>O,H-C,H-O)+if(C>O,O-L,C-L)))/(H-L) + ((if(C>O,H-C,H-O)+if(C>O,O-L,C-L))/2)/(H-L))*V, (((if(C>O,H-C,H-O)+if(C>O,O-L,C-L))/2)/(H-L))*V), cumulation_length);
// 거래량 강도 파동의 EMA
volume_strength = if(cumulative_buying > cumulative_selling, cumulative_buying, cumulative_selling);
eavg(volume_strength, cumulation_length)
수식4)
// 매수/매도 거래량 재계산
buying_vol = eavg(if(C>O, (((H-L)-(if(C>O,H-C,H-O)+if(C>O,O-L,C-L)))/(H-L) + ((if(C>O,H-C,H-O)+if(C>O,O-L,C-L))/2)/(H-L))*V, (((if(C>O,H-C,H-O)+if(C>O,O-L,C-L))/2)/(H-L))*V), cumulation_length);
selling_vol = eavg(if(C<O, (((H-L)-(if(C>O,H-C,H-O)+if(C>O,O-L,C-L)))/(H-L) + ((if(C>O,H-C,H-O)+if(C>O,O-L,C-L))/2)/(H-L))*V, (((if(C>O,H-C,H-O)+if(C>O,O-L,C-L))/2)/(H-L))*V), cumulation_length);
// 델타 계산
buying_vol - selling_vol
-------
지표조건
cumulation_leng 28
기준선 0
2025-08-13
250
글번호 193218
답변완료
수평선
안녕하세요 항상 감사합니다.
50일전의 종가를 시작으로 현재일까지 수평선을 긋고 싶습니다.
현재일 기준으로 수평선이 한개만 나오게 하고 싶습니다.
2025-08-13
259
글번호 193212
2wnwn 님에 의해서 삭제되었습니다.
2025-08-13
12
글번호 193210
답변완료
data2 에서의 dayindex 문의
주간장에서 data2 를 사용할때
선물장은 8시 45분에 시작하는데
data2 의 자료는 9시부터 시작하는 경우
data2( ma(c,dayindex+1) > 100 ) 이라는 수식에서 dayindex는
data2 의 시작시점인 9시부터 계산되는 건가요 ?
아니면 선물 주기인 8시 45분부터 계산되는 건가요?
2025-08-13
238
글번호 193209
답변완료
수식 부탁드립니다
지표식 부탁 드립니다.
//@version=5
indicator("HL Optimized Trend Tracker", overlay=true)
// === inputs
length = input.int(2, "Period", minval=1)
percent = input.float(1.5, "Optimization Coeff", step=0.1, minval=0)
hllength = input.int(20, "Highest and Lowest Length", minval=1)
// === highest / lowest series used as VAR source
src = ta.highest(high, hllength)
srcl = ta.lowest(low, hllength)
// === VAR moving-average function (fixed VAR type)
Var_Func(src, length) =>
valpha = 2 / (length + 1)
vud1 = src > src[1] ? src - src[1] : 0
vdd1 = src < src[1] ? src[1] - src : 0
vUD = math.sum(vud1, 9)
vDD = math.sum(vdd1, 9)
vCMO = nz((vUD - vDD) / (vUD + vDD))
VAR = 0.0
VAR := nz(valpha * math.abs(vCMO) * src) + (1 - valpha * math.abs(vCMO)) * nz(VAR[1])
VAR
// === compute VAR-based MAs (top & low)
MAvg = Var_Func(src, length)
MAvgl = Var_Func(srcl, length)
// === HOTT (top) logic
fark = MAvg * percent * 0.01
longStop = MAvg - fark
longStopPrev = nz(longStop[1], longStop)
longStop := MAvg > longStopPrev ? math.max(longStop, longStopPrev) : longStop
shortStop = MAvg + fark
shortStopPrev = nz(shortStop[1], shortStop)
shortStop := MAvg < shortStopPrev ? math.min(shortStop, shortStopPrev) : shortStop
dir = 1
dir := nz(dir[1], dir)
dir := dir == -1 and MAvg > shortStopPrev ? 1 : dir == 1 and MAvg < longStopPrev ? -1 : dir
MT = dir == 1 ? longStop : shortStop
HOTT = MAvg > MT ? MT * (200 + percent) / 200 : MT * (200 - percent) / 200
// === LOTT (low) logic (mirror)
farkl = MAvgl * percent * 0.01
longStopl = MAvgl - farkl
longStopPrevl = nz(longStopl[1], longStopl)
longStopl := MAvgl > longStopPrevl ? math.max(longStopl, longStopPrevl) : longStopl
shortStopl = MAvgl + farkl
shortStopPrevl = nz(shortStopl[1], shortStopl)
shortStopl := MAvgl < shortStopPrevl ? math.min(shortStopl, shortStopPrevl) : shortStopl
dirl = 1
dirl := nz(dirl[1], dirl)
dirl := dirl == -1 and MAvgl > shortStopPrevl ? 1 : dirl == 1 and MAvgl < longStopPrevl ? -1 : dirl
MTl = dirl == 1 ? longStopl : shortStopl
LOTT = MAvgl > MTl ? MTl * (200 + percent) / 200 : MTl * (200 - percent) / 200
// === Plot only HOTT & LOTT
plot(nz(HOTT[2]), title="HOTT", color=color.blue, linewidth=2)
plot(nz(LOTT[2]), title="LOTT", color=color.red, linewidth=2)
2025-08-13
410
글번호 193208
답변완료
수식 부탁드립니다.
조건: 분봉에서 2개봉 이상 매수볼륨이 매도볼륨보다 40%많은 종목을 검색이 조건값인데
파워종목검색을 돌려보면
결과값에는 40%미만인 종목과 매도볼륨이 더 많은 종목 등이 검색 되네요
조건값이 제대로 나오게 코드 수정 가능할까요?
Variables: total_range(0), candle_body_length(0), upper_wick_length(0), lower_wick_length(0),
percent_body_length(0), percent_upper_wick(0), percent_lower_wick(0),
buying_volume(0), selling_volume(0), buying_dominant(false),
consec_buying_dominant_bars(0);
if Volume > 0 and High > Low then
begin
total_range = High - Low;
candle_body_length = AbsValue(Close - Open);
upper_wick_length = High - MaxList(Open, Close);
lower_wick_length = MinList(Open, Close) - Low;
if total_range > 0 then
begin
percent_body_length = candle_body_length / total_range;
percent_upper_wick = upper_wick_length / total_range;
percent_lower_wick = lower_wick_length / total_range;
// IFF 함수 사용한 볼륨 계산
buying_volume = iff(Close > Open,
(percent_body_length + (percent_upper_wick + percent_lower_wick)/2) * Volume,
((percent_upper_wick + percent_lower_wick)/2) * Volume);
selling_volume = iff(Close < Open,
(percent_body_length + (percent_upper_wick + percent_lower_wick)/2) * Volume,
((percent_upper_wick + percent_lower_wick)/2) * Volume);
// 매수우위 판단
if selling_volume > 0 then
begin
buying_dominant = buying_volume >= selling_volume * 1.4;
end
else
begin
buying_dominant = false;
end;
// 연속 봉 계산
if buying_dominant then
begin
consec_buying_dominant_bars = consec_buying_dominant_bars[1] + 1;
end
else
begin
consec_buying_dominant_bars = 0;
end;
end;
end;
// 최종 조건
if consec_buying_dominant_bars >= 2 then
begin
Find(1);
end;
2025-08-13
264
글번호 193207