커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
3412
글번호 230811
답변완료
종목검색식을 만들고 싶습니다.
안녕하세요.
1. 10일 안에 최저가가 볼랜저밴드(20, 2)값 하단선을 이탈했다가 현재는 하단선 위에 있는 종목
2. 현재 전일 종가보다 3% 이상 양봉
3. 시가총액 1,000 억이 넘는 종목
이렇게 검색식을 만들고 싶습니다.
부탁드립니다.
수고하세요
2025-09-15
228
글번호 194022
답변완료
94278번 수정요청
오전에 답변주신 94278번 수정요청 드립니다.
봉의 중간에 세로 라인이 하나 생기는데 세로라인을 없애주시면 감사하겠습니다.
그리고 94279번 양봉에는 표기가 되는데 음봉에는 봉길이가 표기되지 않습니다
이것도 수정 부탁드립니다.
빠른 답변 갑사 드립니다.
2025-09-15
224
글번호 194017
답변완료
지표문의
1.지표문의
INPUT: Lookback(500), // 최근 분석할 봉 수
RowSize(200), // 가격 구간 개수 (최대 500)
BarWidth(2);
VAR: priceMin(9999999),
priceMax(0),
priceStep(0),
i(0), j(0),
lower(0), upper(0),
level(0),
maxVol(0),
rowCount(0);
ARRAY: volArr[500](0) ; // 최대 500 구간 거래량 저장
// 1) 입력값 제한
rowCount = RowSize;
IF rowCount > 500 THEN rowCount = 500;
// 2) 최소/최대 가격 찾기
priceMin = 9999999;
priceMax = 0;
FOR i = 0 TO Lookback-1 BEGIN
IF HIGH[i] > priceMax THEN priceMax = HIGH[i];
IF LOW[i] < priceMin THEN priceMin = LOW[i];
END;
// 3) 구간 폭 계산
priceStep = (priceMax - priceMin) / rowCount;
IF priceStep <= 0 THEN priceStep = 1;
// 4) 구간별 거래량 초기화
FOR j = 0 TO rowCount-1 BEGIN
volArr[j] = 0;
END;
// 5) 각 봉의 거래량을 해당 가격구간에 누적
FOR i = 0 TO Lookback-1 BEGIN
FOR j = 0 TO rowCount-1 BEGIN
lower = priceMin + priceStep * j;
upper = priceMin + priceStep * (j + 1);
IF (HIGH[i] >= lower) AND (LOW[i] <= upper) THEN
volArr[j] = volArr[j] + VOLUME[i];
END;
END;
// 6) POC(최대 거래량) 찾기
maxVol = 0;
FOR j = 0 TO rowCount-1 BEGIN
IF volArr[j] > maxVol THEN maxVol = volArr[j];
END;
// 7) 히스토그램 출력 (현재봉만)
FOR j = 0 TO rowCount-1 BEGIN
level = priceMin + priceStep * j + priceStep / 2;
IF CURRENTBAR = 0 THEN
PLOT(j, volArr[j], "V"+NUMTOSTR(j,0));
END;
// 8) POC 출력
FOR j = 0 TO rowCount-1 BEGIN
IF volArr[j] = maxVol THEN BEGIN
level = priceMin + priceStep * j + priceStep / 2;
IF CURRENTBAR = 0 THEN
PLOT(rowCount+1, level, "POC");
END;
END;
CURRENTBAR 를 값을 대입할수있는 변수로 수정 좀해주세요
검증이 안됨
2.그럼 수고하세요
2025-09-15
339
글번호 194014
답변완료
종목검색입니다
금일 저가가 20캔들 천정 포함 8캔들 최저가 인 종목 검색
감사합니다
2025-09-15
182
글번호 194009
답변완료
추가 문의
> 수고 많으십니다.
var1 = IFf(C>O,1,-1);
위 var1은 '현재가가 시가 위면 1, 아래면 -1'을 표시한 것인데 여기에 '시가가 전일 종가보다 높고'라는 조건을 추가하여, 즉 '시가가 전일 종가보다 높고, 현재가가 시가보다 위이면1, 아래면 -1'을 표시하는 식 부탁드립니다.
2025-09-15
226
글번호 193999
답변완료
수식 문의
안녕하세요?
input: n1(10), n2(20), n3(50);
n(10)봉 전의 봉과 n2(20)봉 전의 봉과 n3(50)봉 전의 봉을 표시하고 싶습니다.
1) 지표식: 10봉 전과 20봉 전, 50봉 전에는 1 값을 갖고, 나머지 봉들에서는 0 값을 갖는 지표.
2) 강조식?: 10봉 전의 봉과 20봉 전의 봉, 50봉 전의 봉에 뭔가 표시를 하는 식.
그런데, 강조식의 똥그래미가 너무 작은 거 같은데, 좀 더 크게 하는 방법이 있으면 알려주시기 바랍니다. 뭔가 크기를 조절할 수 있는 똥그래미를 봉의 위나 아래에 그릴 수 있으면 좋겠습니다. 강조식이 아니어도 좋습니다.
3) 배경색 바꾸기: 이건 지표식인가요? 10봉 전의 봉부터 20봉 전의 봉까지를 예컨대 노란 배경색으로 칠하고, 20봉전 ~ 50봉 전까지는 다른 배경색으로 칠하기
감사합니다.
2025-09-15
260
글번호 193995
답변완료
수식문의입니다
input : R기간(14),과매도율(25),과매수율(75));
var : A(0),BD(False),BU(False),FU(False),FD(False);
A=RSI(R기간);
BD=CrossDown(A,과매도율);
BU=CrossUp(A,과매도율;
FU=CrossUp(A,과매수율);
FD=CrossDown(A,과매수율);
수식1)
RSI선이 기준선(과매도율)선을 하향이탈하거나, 상향돌파할때의 종가를 표시하는 라인
수식2)
RSI선이 기준선(과매수율)선을 상향돌파하거나, 하향이탈할때의 종가를 표시하는 라인
if BD == true Then
BBD = C;
상기처럼 한개씩은 수식이 가능한데 BD이거나 BU이거나 할때의 수식은 잘 안되네요.
부탁드립니다
2025-09-15
224
글번호 193994
답변완료
수식 문의
안녕하세요.
키움증권의 수식인 Valuewhen 을 돌파하는 종목을 검색하고자 하는데
예스랭귀지의 Valuewhen 을 돌파하는 종목 검색의 로직이 궁금합니다.
다음 두 가지 예를 들어 주시면 고맙겠습니다.
(1) 박스라인 돌파
A=Lowest(L(1),기간);
B=Highest(H(1), 기간);
Valuewhen(1,BarsSince(L<A(1))==(기간-P),B)
[기간: 20 / P: 3]
(2) 최저 거래량 라인 돌파
A1 = V<lowest(V(1), Period);
Valuewhen(1, A1, C)
[period: 120]
2025-09-14
242
글번호 193993
답변완료
부탁합니다.
아래 지표로 시스템식을 부탁합니다.
기본사항
: 투자금액을 100% 로 잡았을때 30%를 3회까지 분할매수
( 예: 1천만원일때 1회 3백만원씩 신호나올때마다 3회까지 매수 )
매수
1. 밴드의 중심선이 상승일때 and
2. 저점이 밴드 하단밖에 있을때 양봉이면 매수
청산
1. 시가가 밴드안에서 시작해서 양봉으로 상단밴드밖에서 종가일때 or
2. 익절 1% ~ (변수로 부탁합니다) or
3. 종가기준 3% 손절 ( 변수로 부탁합니다.) or
4. 매수후 중심선이 하락으로 바뀌면 본절청산
input : HalfLength(60);
input : PriceType(5);#1: Close, 2:Open, 3:High, 4:Low, 5:Median, 6:Typical, 7:Weighted, 8:Average
input : AtrPeriod(60);
input : AtrMultiplier(4);
input : TMAangle(2);
input : crossUpInput(false);
input : crossDownInput(false);
input : comingBackInput(false);
input : onArrowDownInput(false);
input : onArrowUpInput(false);
input : colorDOWN(red);
input : colorUP(green);
input : colorBands(Gray);
input : cautionInput(true);
Array : TX1[100](0),TX2[100](0),TX3[100](0);
var : cnt(0),price(0),colorBuffer(Nan);
var : asum(0),ATR(0),i(0),j(0);
var : sum(0),sumw(0),k(0),tmac(0),tmau(0),tmad(0);
var : pastTmac(nan),pastTmau(nan),pastTmad(Nan);
var : tmau_temp(nan),tmac_temp(Nan),tmad_temp(nan);
var : point(0),reboundD(0),reboundU(0),caution(0),last(False);
For cnt = 0 to 99
{
Text_Delete(TX1[cnt]);
Text_Delete(TX2[cnt]);
Text_Delete(TX3[cnt]);
}
if PriceType == 1 Then
Price = close;
Else if PriceType == 2 Then
Price = open;
Else if PriceType == 3 Then
Price = high;
Else if PriceType == 4 Then
Price = low;
Else if PriceType == 5 Then
Price = (high + low) / 2;
Else if PriceType == 6 Then
Price = (high + low + close) / 3;
Else if PriceType == 7 Then
Price = (high + low + close + close) / 4;
Else
Price = (high + low + close + open)/ 4;
//MAIN
for i = HalfLength downto 0
{
//ATR
asum = 0.0;
for j = 0 to AtrPeriod - 1
{
asum = asum + max(high[i + j + 10], close[i + j + 11]) - min(low[i + j + 10], close[i + j + 11]);
}
atr = asum/AtrPeriod;
//BANDS
sum = (HalfLength + 1) * Price[i];
sumw = (HalfLength + 1);
k = HalfLength;
for j = 1 to HalfLength
{
sum = sum + k * Price[i + j];
sumw = sumw + k;
if (j <= i) Then
{
sum = sum + k * Price[i - j];
sumw = sumw + k;
}
k = k -1;
}
tmac = sum/sumw;
tmau = tmac+AtrMultiplier*atr;
tmad = tmac-AtrMultiplier*atr;
//CHANGE TREND COLOR
if pastTmac != 0.0 Then
{
if tmac > pastTmac Then
colorBuffer = colorUP;
if tmac < pastTmac then
colorBuffer = colorDOWN;
}
//SIGNALS
reboundD = 0.0;
reboundU = 0.0;
caution = 0.0;
if pastTmac != 0.0 Then
{
if (high[i + 1] > pastTmau and close[i + 1] > open[i + 1] and close[i] < open[i]) Then
{
reboundD = high[i] + AtrMultiplier * atr / 2;
if (tmac - pastTmac > TMAangle * point) Then
{
caution = reboundD + 10 * point;
}
}
if (low[i + 1] < pastTmad and close[i + 1] < open[i + 1] and close[i] > open[i]) Then
{
reboundU = low[i] - AtrMultiplier * atr / 2;
if (pastTmac - tmac > TMAangle * point) then
{
caution = reboundU - 10 * point;
}
}
}
//LAST REAL
if i == HalfLength Then
{
last = true;
tmau_temp = tmau;
tmac_temp = tmac;
tmad_temp = tmad;
}
//DRAW HANDICAPPED BANDS
if i < HalfLength Then
{
TX1[i] = Text_New(NextBarSdate[i],NextBarStime[i],Tmau,"-");
Text_SetColor(TX1[i],colorBands);
Text_SetStyle(TX1[i],2,2);
TX2[i] = Text_New(NextBarSdate[i],NextBarStime[i],Tmac,"-");
Text_SetColor(TX2[i],colorBuffer);
Text_SetStyle(TX2[i],2,2);
TX3[i] = Text_New(NextBarSdate[i],NextBarStime[i],Tmad,"-");
Text_SetColor(TX3[i],colorBands);
Text_SetStyle(TX3[i],2,2);
}
}
//DRAW REAL BANDS
plot1(iff(last , tmau_temp , tmau), "TMA Up", colorBands);
plot2(iff(last , tmac_temp , tmac), "TMA Mid", colorBuffer);
plot3(iff(last , tmad_temp , tmad), "TMA Down", colorBands);
FixPlotShift(1,-HalfLength);
FixPlotShift(2,-HalfLength);
FixPlotShift(3,-HalfLength);
2025-09-14
387
글번호 193992