커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1536
글번호 230811
와글이 님에 의해서 삭제되었습니다.
2025-07-09
26
글번호 192384
답변완료
거래수를 줄이는 방법
더운 날씨에 수고가 많으십니다.
기본적인 질문을 드리고 싶습니다.
이동평균으로 매수타이밍을 찾다보니 너무 거래가 많아서 중간에 랜덤으로
Buy("B", OnClose,def,0 ) 이나 Sell("S", OnClose,def,0 )과 같이
계약수를 0로 해서 거래수를 줄여보려고 합니다
이렇게 해도 가능한지요?
다시 한번 감사드립니다.
2025-07-09
252
글번호 192383
답변완료
종목 검색 부탁드립니다.
1. 아래 수식을 참고하여 , 수식5 ) 가중이격도가 기준선 100 돌파시 ,
종목 검색식 부탁드려요
수식1) 기본
baseDis = (C / avg(C,Per))*100
수식2) RSI 계산
rsiUp = avg(max(C - C(1),0),rsiPer);
rsiDown = avg(max(C(1) - C ,0),rsiPer);
rsiVal = 100 - (100 / (1+rsiUp / rsiDown))
수식3) RSI 가중치
rsiWeight = if(rsiVal <= 50,
0.5 + (rsiVal * 0.01), // 50 이하일때
0.5 + ((rsiVal -50)* 0.03)) // 50 초과일때
수식4) 거래량가중치
volAvg = avg(V,volPer);
volWeight = if(volAvg! = 0,V / volAvg, 1.0
수식5) 가중이격도
rsiVolWeight = if(rsiVal < 30 and volWeight > 1.2, 0.8,
if(rsiVal > 70 and volWeight > 1.2, 1.3, 1.0));
weightedDis = baseDis * rsiWeight * volWeight * rsiVolWeight;
smoothedWeightedDis = avg(weightedDis, 3)
---------------
지표변수
Per 50
volPer 50
rsiPer 20
---------------
기준선 100
2025-07-09
218
글번호 192381
답변완료
종목검색식으로 바꿔 주세요
건강하세요 30분봉에서 사용 할깨요
input : length_low(72);
input : length_high(36);
input : refit_interval(50);
input : vol_period(20);
input : vol_smooth_len(5);
input : bull_col(BluE);
input : bear_col(red);
// ───── CCI-based Oscillator with Clipping ─────
var : raw1(0),clipped1(0),osc_low(0);
var : raw2(0),clipped2(0),osc_high(0);
raw1 = cci(length_low);
clipped1 = max(min(raw1, 100), -100);
osc_low = clipped1 / 200 + 0.5;
raw2 = cci(length_high);
clipped2 = max(min(raw2, 100), -100);
osc_high = clipped2 / 200 + 0.5;
// ───── Volatility Calculations ─────
var : returns(0),vol_current_raw(0),vol_current_smoothed(0);
returns = close / close[1] - 1;
vol_current_raw = std(returns, vol_period);
vol_current_smoothed = ma(vol_current_raw, vol_smooth_len);
// ───── Volatility History Management ─────
var : i(0),ii(0);
Array : vola[150](Nan);
if IsNan(vol_current_raw) == False Then
{
ii = 0;
For i = 149 DownTo 1
{
vola[i] = vola[i-1];
if IsNan(vola[i]) == true Then
ii = i;
}
vola[0] = vol_current_raw;
}
var : c1(Nan),c2(Nan),val(0),temp(0);
var : median(0),sum_low(0),count_low(0),sum_high(0),count_high(0);
if ii < 10 Then
{
c1 = Nan;
c2 = Nan;
}
Else
{
median = MedianArray(vola,ii);
sum_low = 0.0;
count_low = 0;
sum_high = 0.0;
count_high = 0;
for i = 0 to ii - 1
{
val = vola[i];
if val < median Then
{
sum_low = sum_low + val;
count_low = count_low + 1;
}
else
{
sum_high = sum_high + val;
count_high = count_high + 1;
}
}
c1 = iff(count_low > 0 , sum_low / count_low , Nan);
c2 = iff(count_high > 0 , sum_high / count_high , Nan);
}
// ───── Volatility Regime Variables (with type) ─────
var : cluster_1(Nan),cluster_2(Nan),last_refit_bar(Nan),vol_regime(Nan);
if index - last_refit_bar >= refit_interval and ii >= 149 Then
{
if IsNan(c1) == False and IsNan(c2) == False Then
{
cluster_1 = iff(IsNan(cluster_1) == true , c1 , cluster_1 + 0.1 * (c1 - cluster_1));
cluster_2 = iff(IsNan(cluster_2) == true , c2 , cluster_2 + 0.1 * (c2 - cluster_2));
last_refit_bar = index;
}
if cluster_1 > cluster_2 Then
{
temp = cluster_1;
cluster_1 = cluster_2;
cluster_2 = temp;
}
}
var : mid(0),relevant_osc(0),trend_regime(Nan);
if IsNan(vol_current_smoothed) == False and IsNan(cluster_1) == False and IsNan(cluster_2) == False Then
{
mid = (cluster_1 + cluster_2) / 2;
vol_regime = iff(vol_current_smoothed < mid , 0 , 1);
}
// ───── Oscillator S e l e c t i o n ─────
relevant_osc = iff(vol_regime == 1 , osc_high , osc_low);
// ───── Trend Regime Detection ─────
trend_regime = iff(relevant_osc > 0.75 , 1 , iff(relevant_osc < 0.25 , -1 , 0));
// ───── Plots ─────
PlotBaseLine1(0.5, "Mid", gray);
PlotBaseLine2(-0.2,"-0.2", Gray);
PlotBaseLine3(1.2,"1.2",Gray);
plot1(osc_low, "Slow CCI", iff(osc_low >= 0.5 , bull_col , bear_col));
plot2(osc_high, "Fast CCI", iff(osc_high >= 0.5 , bull_col , bear_col));
var : tx(0),box(0);
if trend_regime == 1 Then
{
if trend_regime[1] != 1 Then
{
tx = Text_New_Self(sDate,sTime,1.2,"▲▲▲");
Text_SetStyle(tx,2,0);
Text_SetColor(tx,bull_col);
box = Box_New_Self(sDate,sTime,1.2,NextBarSdate,NextBarStime,-0.2);
Box_SetColor(box,bull_col);
Box_SetFill(box,true);
}
Else
Box_SetEnd(box,NextBarSdate,NextBarStime,-0.2);
}
if trend_regime == -1 Then
{
if trend_regime[1] != -1 Then
{
tx = Text_New_Self(sDate,sTime,-0.2,"▼▼▼");
Text_SetStyle(tx,2,1);
Text_SetColor(tx,bear_col);
box = Box_New_Self(sDate,sTime,1.2,NextBarSdate,NextBarStime,-0.2);
Box_SetColor(box,bear_col);
Box_SetFill(box,true);
}
Else
Box_SetEnd(box,NextBarSdate,NextBarStime,-0.2);
}
2025-07-09
266
글번호 192373
답변완료
93381 수식 재문의
더운 날씨 고생 많으십니다.
이전에 한번 문의 드렸던 내용인데 시스템에 잘 적용이 않되는것 같습니다.
나름 고쳐보려고 했는데 안됩니다;
ADX는 제외하고 청산조건(5개)도 변수로 지정 가능하게 검토 부탁 드립니다.
수고하세요.
------------------------------------------------------------------------------------
안녕하세요
예스스탁입니다.
Input : Period(5),간격(1),smaPeriod(0),adxPeriod(14);
var : updn(0),A(0);
value1 = ma(c,smaPeriod);
var1 = Ema(C,Period+간격*0);
var2 = Ema(C,Period+간격*1);
var3 = Ema(C,Period+간격*2);
var4 = Ema(C,Period+간격*3);
var5 = Ema(C,Period+간격*4);
var6 = Ema(C,Period+간격*5);
var7 = Ema(C,Period+간격*6);
var8 = Ema(C,Period+간격*7);
var9 = Ema(C,Period+간격*8);
var10 = Ema(C,Period+간격*9);
updn = 0;
updn = updn + IFf(var1 > var1[1],1,-1);
updn = updn + IFf(var2 > var2[1],1,-1);
updn = updn + IFf(var3 > var3[1],1,-1);
updn = updn + IFf(var4 > var4[1],1,-1);
updn = updn + IFf(var5 > var5[1],1,-1);
updn = updn + IFf(var6 > var6[1],1,-1);
updn = updn + IFf(var7 > var7[1],1,-1);
updn = updn + IFf(var8 > var8[1],1,-1);
updn = updn + IFf(var9 > var9[1],1,-1);
updn = updn + IFf(var10 > var10[1],1,-1);
A = adx(adxPeriod);
if value1 > value1[1] and
updn >= 10 and
A >= 20 Then
Buy();
if updn <= 0 Then
ExitLong();
if value1 < value1[1] and
updn <= -10 and
A >= 20 Then
Buy();
if updn >= 0 Then
ExitShort();
즐거운 하루되세요
> 나도부자1 님이 쓴 글입니다.
> 제목 : 수식문의
> 수고많으십니다.
항상 감사드립니다.
그물망 차트를 이용하여 시스템을 만들어 보려합니다.
1. 매수진입
1-1 매수진입 조건
- 이동평균선(ex:단순 20)이 상승추세 일 것.
- 그물망 이평이 모두 상승추세 일 것.
- ADX지표값이 20 이상 일 것.
1-2 매수청산 조건
- 그물망 10개중 5개가 상승에서 하락으로 추세전환 일 것
2. 매도진입
1-1 매도진입 조건
- 단순 이동평균선(ex:단순 20)이 하락추세 일 것.
- 그물망 이평이 모두 하락 추세 일 것.
- ADX지표값이 20 이상 일 것.
1-2 매수청산 조건
- 그물망 10개중 5개가 하락에서 상승으로 추세전환 일 것
지표값은 모두 변경 가능하게 변수값으로 부탁드립니다.
* 첨부한 그림의 그물망은 아래의 수식을 이용한 것입니다
Input : Period(5),간격(1);
var : tx(0);
var1 = Ema(C,Period+간격*0);//5
var2 = Ema(C,Period+간격*1);
var3 = Ema(C,Period+간격*2);
var4 = Ema(C,Period+간격*3);
var5 = Ema(C,Period+간격*4);
var6 = Ema(C,Period+간격*5);//10
var7 = Ema(C,Period+간격*6);
var8 = Ema(C,Period+간격*7);
var9 = Ema(C,Period+간격*8);
var10 = Ema(C,Period+간격*9);
var11 = Ema(C,Period+간격*10);//15
var12 = Ema(C,Period+간격*11);
var13 = Ema(C,Period+간격*12);
var14 = Ema(C,Period+간격*13);
var15 = Ema(C,Period+간격*14);
var16 = Ema(C,Period+간격*15);
Plot1(var1,"지수이평0",IFf(var1>var1[1],RED,BLUE));//5
Plot2(var2,"지수이평1",IFf(var2>var2[1],RED,BLUE));
Plot3(var3,"지수이평2",IFf(var3>var3[1],RED,BLUE));
Plot4(var4,"지수이평3",IFf(var4>var4[1],RED,BLUE));
Plot5(var5,"지수이평4",IFf(var5>var5[1],RED,BLUE));
Plot6(var6,"지수이평5",IFf(var6>var6[1],RED,BLUE));//10
Plot7(var7,"지수이평6",IFf(var7>var7[1],RED,BLUE));
Plot8(var8,"지수이평7",IFf(var8>var8[1],RED,BLUE));
Plot9(var9,"지수이평8",IFf(var9>var9[1],RED,BLUE));
Plot10(var10,"지수이평9",IFf(var10>var10[1],RED,BLUE));
Plot11(var11,"지수이평10",IFf(var11>var11[1],RED,BLUE));//15
Plot12(var12,"지수이평11",IFf(var12>var12[1],RED,BLUE));
Plot13(var13,"지수이평12",IFf(var13>var13[1],RED,BLUE));
Plot14(var14,"지수이평13",IFf(var14>var14[1],RED,BLUE));
Plot15(var15,"지수이평14",IFf(var15>var15[1],RED,BLUE));
Plot16(var16,"지수이평15",IFf(var16>var16[1],RED,BLUE));//20
if CrossUp(C,var1) Then
{
tx = Text_New(sDate,sTime,H,"U");
Text_SetStyle(tx,3,1);
}
if CrossDown(c,var1) Then
{
tx = Text_New(sDate,sTime,H,"D");
Text_SetStyle(tx,3,1);
}
미리 감사드립니다
2025-07-09
230
글번호 192367
사공하늘 님에 의해서 삭제되었습니다.
2025-07-09
122
글번호 192362
답변완료
수식문의
하이킨아시 일봉이 일목균형표 26일기준선을 돌파하면서 RSI(20)이 50선을 돌파하는 종목
검색식을 만들려는데 도움부탁드립니다.
2025-07-09
321
글번호 192361
답변완료
수식 부탁합니다
93462 지표식중 두번째 지표식이 나타나지 않습니다. 수정 부탁합니다.
2025-07-08
223
글번호 192360
답변완료
수식문의
수고많으십니다.
항상 빠른 답변 갑사드립니다.
제가 실력이 없어서 다른 수식을 짜집기 한 것인데 차트와 잘 맞지 않습니다.
잘못된 곳이 있으면 수정 부탁드립니다.
저의 의도는 TEMA이평이
1. 2봉 연속 상승 시 매수진입
2. 2봉 연속 하락시 매수청산/ 매도진입 입니다.
3. 수정시 연속봉수도 변수 가능하게 부탁드립니다.
그리고 단순 이평으로도 수식 부탁드립니다.
//장 운용시간: 09:00~15:10 이후 진입금지/ 15:30 강제청산
//2봉 연속 상승시 매수/2봉 연속 하락시 매수청산
//2봉 연속 하락시 매도/2봉 연속 상승시 매도청산
input : StartTime(90000),EndTime(151000),LENGTH(5);
var : Tcond(false),TEMA(0),T(0);
TEMA = (3 * Ema(c,LENGTH)) - (3 * Ema(Ema(c,LENGTH),LENGTH)) +
(Ema(Ema(Ema(c,LENGTH),LENGTH),LENGTH));
if (sdate != sdate[1] and stime >= StartTime) or
(sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then
{
Tcond = true;
}
if (sdate != sdate[1] and stime >= EndTime) or
(sdate == sdate[1] and stime >= EndTime and stime[1] < EndTime) Then
{
Tcond = False;
}
//SetStopTrailing(1,3,PointStop,0); //최소 3 포인트 수익 이후에 1 포인트 수익 감소하면 청산
//SetStoploss(2,PointStop); // 2 point 손실 시 청산
TEMA = ma(c,LENGTH);
if TEMA > TEMA[1] Then
T = 1;
if TEMA < TEMA[1] Then
T = -1;
if Tcond == true Then
{
if MarketPosition <= 0 and
CountIf(T == 1,2) == 2 Then
Buy("b");
if MarketPosition >= 0 and
CountIf(T == -1,2) == 2 Then
Sell("s");
if MarketPosition == 1 and CountIf(T == -1,2) == 2 Then
ExitLong("bx");
if MarketPosition == -1 and CountIf(T == 1,2) == 2 Then
ExitShort("sx");
}
SetStopEndofday(153000);
수고하세요
2025-07-08
221
글번호 192351