커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
4382
글번호 230811
답변완료
종목검색식 부탁드림니다.
항상 노고에 감사드림니다.
아래의 수식을 종목검색식으로 부탁드림니다.
A1=Crossdown(RSI(21), 38);
cnt=Countsince(date!=date(1), A1);
cnt== 1&& cnt(1) == 0
2025-05-19
324
글번호 190979
답변완료
연결선물 구분
안녕하세요?
라이브캐틀 연결선물 차트는 거래량 기준으로 가장 많은 종목을 최근원물을 정의하고 최근원물끼리 연결하여 연속된 차트를 생성하고 있는 듯 싶습니다.
그 개별차트를 연결하여 연결차트로 그릴 때 원물이 바뀌는 시점에 가격차트상에 세로선을 긋고 싶습니다.
감사합니다.
2025-05-19
281
글번호 190978
답변완료
미장 OHLC
안녕하세요 미국 정규장 OHLC 가격을 나타내는 사용자 함수 부탁드립니다. 나중에 지표로 표시 해서 사용할 예정입니다
NQ랑 ES에만 적용할 예정입니다. 거래소 시간 09~30분 같은데…
차트에서 시간은 거래소 시간으로 설정할 예정입니다.
RealO, RealH, ReaL, RealC 이렇게 설정해 주세요
그리고 realO[1]로 적으면 어제 본장의 오픈 가격이 오늘 표시되게 해주세요.
2025-05-19
406
글번호 190977
답변완료
수식 검증 좀 부탁드립니다!
청산이 잘 안됩니다. 수식 검증 좀 부탁드립니다!!
// 진입 전략: 이평선 기준, long은 이평 크로스 업, short은 초단기로만
Var: aa(0), bb(0);
Input: ss(3), sss(4); //진입변수
Var: yyy(1); //진입수량
aa = Average(close, ss); // 단기 이평선
bb = Average(close, ss*sss); // 장기 이평선
if CrossUp(aa,bb[1]) Then Buy ("매수", AtMarket,Def,yyy); // 단기 이평선이 장기 이평선을 골든크로스 시 롱 진입
input: SL(10), PT(10);
SetStopTrailing(SL,PT,PercentStop);
input: ShortHoldDay(2), SL_time(10);
if MarketPosition <0 and BarsSinceEntry > ShortholdDay Then {
ExitLong("EL_time",AtMarket);
ExitShort("ES_time",AtMarket);}
if SL_time > 0 Then SetStopLoss ((SL_time/BigPointValue),PointStop);
2025-05-19
344
글번호 190976
답변완료
시간설정
늘 감사합니다.
차트에 시간지정 설정하기
8시45분을 기준으로 15시45분 까지 약17분간격으로 검은색 세로선 그리기.
종료시간 까지 총25개 선입니다.
색상변경, 굵기변경, 시간간격을 변경하면 갯수가 변할수 있으면 너무 좋아요.
감사함니다
2025-05-20
321
글번호 190975
답변완료
답변주신 내용중 공부상 질문
안녕하세요 아래에 같이 지난 요청에 수식을 작성해주셨는데요.
input : N(1);
var : x(0),y(0);
Array : VV[2,20](0),box[20](0);
For x = 19 DownTo 1
{
VV[0,x] = VV[0,x-1];
VV[1,x] = VV[1,x-1];
}
VV[0,0] = v;
VV[1,0] = Index;
var1 = Sort2DArray(VV,2,20,1);
For x = 0 to N-1
{
Box_Delete(box[x]);
var1 = H[index-vv[1,x]];
var2 = L[index-vv[1,x]];
box[x] = Box_New(sDate[index-vv[1,x]],sTime[index-vv[1,x]],var1,NextBarSdate,NextBarStime,var2);
Box_SetColor(box[x],Red);
Box_SetFill(box[x],true);
}
위 코드에서
var1 = Sort2DArray(VV,2,20,1); 부분과 for문 내부에서
var1 = H[index-vv[1,x]]; 를 사용하는 부분이 공부하는데 조금 어렵습니다.
동일한 변수명을 재사용한것과 배열을 정렬해서 배열이 아닌 변수에 값을 넘기는것이
이해가 잘 되지 않는 부분입니다.
공부를 위해서 설명과 코드에 자세한 주석을 달아주시길 부탁드립니다!!
항상 답변 감사드립니다.
2025-05-19
275
글번호 190974
답변완료
항상 감사합니다 지표 변환 부탁드립니다
// INPUTS ――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――{
tf = input.timeframe("D")
color_up = input.color(color.rgb(229, 148, 27), "", inline = "color")
color_dn = input.color(color.rgb(30, 142, 234), "", inline = "color")
var array_vals = array.new<float>()
var count = 0
// }
// CALCULATIONS――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――{
convert_tf(tf)=>
time_in = timeframe.in_seconds(tf) / 60 / 60
time_in >= 24 ? tf : time_in >= 1 ? str.tostring(time_in) + "h" : tf + "m"
current_tf_min = timeframe.in_seconds("")/60
user_tf_min = timeframe.in_seconds(tf)/60
bars_amount = int(user_tf_min / current_tf_min)
tf_change = timeframe.change(tf)
if tf_change
label.new(bar_index, array_vals.max(), str.tostring(array_vals.max(), "#,###.###"), style = label.style_label_left, color = color(na), textcolor = chart.fg_color)
label.new(bar_index, array_vals.min(), str.tostring(array_vals.min(), "#,###.###"), style = label.style_label_left, color = color(na), textcolor = chart.fg_color)
array_vals.clear()
count := 0
if not tf_change
count +=1
array_vals.push(high)
array_vals.push(low)
max = array_vals.max()
min = array_vals.min()
tf_trend = array_vals.avg()
color tf_col = tf_trend > tf_trend[1] ? color_up : color_dn
color time_color = color.from_gradient(count, 0, bars_amount, color.new(tf_col, 0), color.new(tf_col, 100))
// }
// PLOT ――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――{
plotshape(tf_change[1] ? tf_trend : na, "", shape.circle, location.absolute, color.new(chart.fg_color, 30), size = size.tiny)
plot(tf_trend, "HTF Trend", color = tf_change ? color(na) : tf_col, style = plot.style_linebr, linewidth = 1)
plot(tf_trend, "HTF Trend", color = tf_change ? color(na) : time_color, style = plot.style_linebr, linewidth = 5)
plot(max != max[1] ? na : max, "High Level", color = bar_index % 2 == 0 ? chart.fg_color : color(na), style = plot.style_steplinebr)
plot(min != min[1] ? na : min, "Low Level", color = bar_index % 2 == 0 ? chart.fg_color : color(na), style = plot.style_steplinebr)
bgcolor(tf_change ? color.new(chart.fg_color, 85) : na)
if barstate.islast
l1 = label.new(bar_index, array_vals.max(), str.tostring(array_vals.max(), "#,###.###"), style = label.style_label_left, color = color(na), textcolor = chart.fg_color)
l2 = label.new(bar_index, array_vals.min(), str.tostring(array_vals.min(), "#,###.###"), style = label.style_label_left, color = color(na), textcolor = chart.fg_color)
label.delete(l1[1])
label.delete(l2[1])
dash = table.new(position.top_right, 10, 10)
dash.cell(0, 0, "Timeframe: ", text_color = chart.fg_color)
dash.cell(1,0, convert_tf(tf), text_color = chart.fg_color)
dash.cell(0, 1, "Trend: ", text_color = chart.fg_color)
dash.cell(1, 1, tf_trend > tf_trend[1] ? "🢁" : "🢃", text_color = tf_col)
// }
2025-05-19
361
글번호 190973
남한산성 님에 의해서 삭제되었습니다.
2025-05-19
0
글번호 190972
답변완료
문의드립니다
안녕하세요 관리자님
아래 지표는 관리자님이 보내주신 지표인데요
실거래에서 사용준비중입니다
다름이 아니오라
아래 지표에서
muliplier1~3을 하나는 2
muliplier1~3을 하나는 3
으로 하여 지표를 겹치면 첨부한 그림과 같이 선이 각각 2개씩 나오텐데요
이를 하나의 지표로 만들어서 선과 선 사이에 색깔을 입힐려고 합니다
수정하려고 했는데 못하겠어요ㅜㅜ 도와주세요
-아 래-
input : period1(10),multiplier1(3);
input : period2(20),multiplier2(3);
input : period3(30),multiplier3(3);
var : src(0);
var : AtrV1(0),upperBand1(0),lowerBand1(0), prevLowerBand1(0), prevUpperBand1(0);
var : prevSuperTrend1(0), superTrend1(C), direction1(0),alpha1(0),source1(0);
var : AtrV2(0),upperBand2(0),lowerBand2(0), prevLowerBand2(0), prevUpperBand2(0);
var : prevSuperTrend2(0), superTrend2(C), direction2(0),alpha2(0),source2(0);
var : AtrV3(0),upperBand3(0),lowerBand3(0), prevLowerBand3(0), prevUpperBand3(0);
var : prevSuperTrend3(0), superTrend3(C), direction3(0),alpha3(0),source3(0);
src = (H+L)/2;
if CurrentBar > 1 Then
{
alpha1 = 1 / period1;
source1 = max(high - low, abs(high - close[1]), abs(low - close[1]));
ATrV1 = alpha1 * source1 + (1 - alpha1) * ATrV1[1]; //지수가중이평방식
//ATrV = ma(source,AtrPeriod); //단순이평방식
upperBand1 = src + multiplier1 * AtrV1;
lowerBand1 = src - multiplier1 * AtrV1;
prevLowerBand1 = lowerBand1[1];
prevUpperBand1 = upperBand1[1];
if lowerBand1 > prevLowerBand1 or close[1] < prevLowerBand1 Then
lowerBand1 = lowerBand1;
Else
lowerBand1 = prevLowerBand1;
if upperBand1 < prevUpperBand1 or close[1] > prevUpperBand1 Then
upperBand1 = upperBand1;
Else
upperBand1 = prevUpperBand1;
if C > UpperBand1 Then
direction1 = 1;
if C < LowerBand1 Then
direction1 = -1;
if direction1 == 1 Then
supertrend1 = lowerband1;
Else
supertrend1 = upperband1;
alpha2 = 1 / period2;
source2 = max(high - low, abs(high - close[1]), abs(low - close[1]));
ATrV2 = alpha2 * source2 + (1 - alpha2) * ATrV2[1]; //지수가중이평방식
//ATrV = ma(source,AtrPeriod); //단순이평방식
upperBand2 = src + multiplier2 * AtrV2;
lowerBand2 = src - multiplier2 * AtrV2;
prevLowerBand2 = lowerBand2[1];
prevUpperBand2 = upperBand2[1];
if lowerBand2 > prevLowerBand2 or close[1] < prevLowerBand2 Then
lowerBand2 = lowerBand2;
Else
lowerBand2 = prevLowerBand2;
if upperBand2 < prevUpperBand2 or close[1] > prevUpperBand2 Then
upperBand2 = upperBand2;
Else
upperBand2 = prevUpperBand2;
if C > UpperBand2 Then
direction2 = 1;
if C < LowerBand2 Then
direction2 = -1;
if direction2 == 1 Then
supertrend2 = lowerband2;
Else
supertrend2 = upperband2;
alpha3 = 1 / period3;
source3 = max(high - low, abs(high - close[1]), abs(low - close[1]));
ATrV3 = alpha3 * source3 + (1 - alpha3) * ATrV3[1]; //지수가중이평방식
//ATrV = ma(source,AtrPeriod); //단순이평방식
upperBand3 = src + multiplier3 * AtrV3;
lowerBand3 = src - multiplier3 * AtrV3;
prevLowerBand3 = lowerBand3[1];
prevUpperBand3 = upperBand3[1];
if lowerBand3 > prevLowerBand3 or close[1] < prevLowerBand3 Then
lowerBand3 = lowerBand3;
Else
lowerBand3 = prevLowerBand3;
if upperBand3 < prevUpperBand3 or close[1] > prevUpperBand3 Then
upperBand3 = upperBand3;
Else
upperBand3 = prevUpperBand3;
if C > UpperBand3 Then
direction3 = 1;
if C < LowerBand3 Then
direction3 = -1;
if direction3 == 1 Then
supertrend3 = lowerband3;
Else
supertrend3 = upperband3;
if C > superTrend1 Then
{
Plot1(superTrend1,"매수1", Yellow, 0, 1);
NoPlot(2);
}
Else
{
Plot2(superTrend1,"매도1", Indigo, 0, 1);
NoPlot(1);
}
}
2025-05-19
345
글번호 190971