커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
6197
글번호 230811
답변완료
수식부탁드립니다.
If (CrossDown(value, 80)and 20<value ) and CrossDown(value, 50) and
CrossDown(value1, value2)
Then
{
Sell("s",OnClose,Def,1);
}
첨부파일처럼 3가지 조건을 한꺼번에 만족하는 봉만이 아닌 순차적으로 만족하는 봉까지 찾는 식 좀 부탁드립니다(3가지 전부 만족하는 봉은 마지막 빨간색 화살표가 가르키는 봉에서 진입하는 조건입니다.
. 아마도 위의 식은 3가지가 한번에 동시에 만족하는 봉에 진입하는 식인 듯 합니다.
2025-02-24
462
글번호 188500
답변완료
문의
예스로 부탁드립니다.
uodate가 금지어라고 해서 뛰어쓰기 했습니다
indicator("Kalman Trend Levels [BigBeluga]", overlay = true, max_labels_count = 500, max_boxes_count = 500)
// INPUTS ――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――{
int short_len = input.int(50)
int long_len = input.int(150)
bool retest_sig = input.bool(false, "Retest Signals")
bool candle_color = input.bool(true, "Candle Color")
color upper_col = input.color(#13bd6e, "up", inline = "colors")
color lower_col = input.color(#af0d4b, "dn", inline = "colors")
// }
// CALCULATIONS――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――{
float atr = ta.atr(200) *0.5
var lower_box = box(na)
var upper_box = box(na)
// Kalman filter function
kalman_filter(src, length, R = 0.01, Q = 0.1) =>
// Initialize variables
var float estimate = na
var float error_est = 1.0
var float error_meas = R * (length)
var float kalman_gain = 0.0
var float prediction = na
// Initialize the estimate with the first value of the source
if na(estimate)
estimate := src[1]
// Prediction step
prediction := estimate
// Up date Kalman gain
kalman_gain := error_est / (error_est + error_meas)
// Up date estimate with measurement correction
estimate := prediction + kalman_gain * (src - prediction)
// Up date error estimates
error_est := (1 - kalman_gain) * error_est + Q / (length) // Adjust process noise based on length
estimate
float short_kalman = kalman_filter(close, short_len)
float long_kalman = kalman_filter(close, long_len)
bool trend_up = short_kalman > long_kalman
color trend_col = trend_up ? upper_col : lower_col
color trend_col1 = short_kalman > short_kalman[2] ? upper_col : lower_col
color candle_col = candle_color ? (trend_up and short_kalman > short_kalman[2] ? upper_col : not trend_up and short_kalman < short_kalman[2] ? lower_col : color.gray) : na
// }
// PLOT ――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――{
if trend_up and not trend_up[1]
label.new(bar_index, short_kalman, "🡹₩n" + str.tostring(math.round(close,1)), color = color(na), textcolor = upper_col, style = label.style_label_up, size = size.normal)
lower_box := box.new(bar_index, low+atr, bar_index, low, border_color = na, bgcolor = color.new(upper_col, 60))
if not ta.change(trend_up)
lower_box.set_right(bar_index)
if trend_up[1] and not trend_up
label.new(bar_index, short_kalman, str.tostring(math.round(close,1))+"₩n🢃", color = color(na), textcolor = lower_col, style = label.style_label_down, size = size.normal)
upper_box := box.new(bar_index, high, bar_index, high-atr, border_color = na, bgcolor = color.new(lower_col, 60))
if not ta.change(trend_up)
upper_box.set_right(bar_index)
if retest_sig
if high < upper_box.get_bottom() and high[1]>= upper_box.get_bottom() //or high < lower_box.get_bottom() and high[1]>= lower_box.get_bottom()
label.new(bar_index-1, high[1], "x", color = color(na), textcolor = lower_col, style = label.style_label_down, size = size.normal)
if low > lower_box.get_top() and low[1]<= lower_box.get_top()
label.new(bar_index-1, low[1], "+", color = color(na), textcolor = upper_col, style = label.style_label_up, size = size.normal)
p1 = plot(short_kalman, "Short Kalman", color = trend_col1)
p2 = plot(long_kalman, "Long Kalman", linewidth = 2, color = trend_col)
fill(p1, p2, short_kalman, long_kalman, na, color.new(trend_col, 80))
plotcandle(open, high, low, close, title='Title', color = candle_col, wickcolor=candle_col, bordercolor = candle_col)
// }
2025-02-24
716
글번호 188489
답변완료
수정 부탁드립니다.
input : pd(22),bbl(20),mult(2.0),lb(50),ph(0.85),기간1(10),기간2(20);
var : wvf(0),sDev(0), midLine(0), upperBand(0), rangeHigh(0),overSold(0);
var : ap(0), esa(0), d(0), ci(0), wt1(0), wt2(0);
# williams vix fix
wvf = ((highest(close,pd) - low) / (highest(close,pd))) *100;
sDev = mult *std(wvf,bbl);
midLine = ma(wvf,bbl);
upperBand = midLine + sDev
rangeHigh = (highest(wvf, lb)) * ph;
#wt
ap = (HIGH+LOW+CLOSE)/3;
esa = Ema(ap, 기간1);
d = Ema(abs(ap-esa), 기간1);
ci = (ap - esa) / (0.015*d);
wt1 = Ema(ci,기간2);
wt2 = ma(wt1,4);
if wt1[1]<=-53 && (wvf>= upperBand or wvf >= RangeHigh or wvf[1] >= upperBand or wvf[1] >= RangeHigh) &&
wvf[1]>wvf &&CrossUp(wt1,wt2)
Then
Find(1);
문법에러,잘못된토큰,Name,올수 있는것 이렇게 문구가 뜹니다
2025-02-24
607
글번호 188479
답변완료
종목검색식 요청드립니다.
아래 키움신호가 발생한 종목검색식을 만들고 싶습니다. 도움 부탁드립니다.
* 키움수식(short-10, long-20, sinnal-9)
a = MACD(short, long);
b = eavg(MACD(short, long),signal);
crossup(a,b)
감사합니다.
2025-02-24
473
글번호 188478
답변완료
시그널메이커 수식 변환 부탁드립니다.
항상 수고가 많으십니다. 계속 귀찮게 해드려서 죄송합니다.
아래 수식은 시그널메이커 수식인데 예스랭기지로 변환 부탁드리겠습니다.
Params:
Profit_Target(160), // 익절 ( 단위 : 틱 )
Stop_Loss(80); // 손절 ( 단위 : 틱 )
Var:
Ma_150(0),
Ma_200(0),
TickSize(0),
LongEntryPrice(0),
ShortEntryPrice(0),
v11(0),
v22(0);
// 이평선 계산
Ma_150 = Ma(C, 150);
Ma_200 = Ma(C, 200);
TickSize = OneTick * PriceScale; // 호가 단위
// 돌파한 캔들의 시가와 종가의 갭 계산
If (CurrentBar > 1)
// 숏 진입 조건 Then Begin
// 롱 진입 조건
If CrossUp(C[1], Ma_150[1]) Then Begin
LongEntryPrice = O[1] + 160 * TickSize;
End;
If CrossDown(C[1], Ma_200[1]) Then Begin
ShortEntryPrice = O[1] - 160 * TickSize;
End;
// 롱 진입 체크
If LongEntryPrice <> 0 And C >= LongEntryPrice Then Begin
If CurrentContracts = 0 Then Buy("LONG", AtLimit, LongEntryPrice,1);
LongEntryPrice = 0;
End;
// 숏 진입 체크
If ShortEntryPrice <> 0 And C <= ShortEntryPrice Then Begin
If CurrentContracts = 0 Then Sell("SHORT", AtLimit, ShortEntryPrice,1);
ShortEntryPrice = 0;
End;
End;
// 익절과 손절 설정
If CurrentContracts <> 0 Then Begin
SetStopProfitTarget(Profit_Target * TickSize * CurrentContracts);
SetStopLoss(Stop_Loss * TickSize * CurrentContracts);
End Else Begin
SetStopProfitTarget(0);
SetStopLoss(0);
End;
2025-02-24
579
글번호 188477
답변완료
종목검색식 요청드립니다.
아래 키움수식이 3분봉에서 신호가 발생했던 모든 종목을 검색하는 검색식을 만들고 싶습니다. n일전 검색도 가능하게 부탁드립니다.(1일전 2일전 3일전 등)으로 검색가능하게 부탁드립니다. 항상 감사합니다.
* 키움신호
a = bbandsup(20,1);
b = (a(0)/c) - (a(1)/c);
b>0.03
2025-02-24
506
글번호 188474
답변완료
현재시간의 전일 data(c) 를 호출할수 있나요?
현재시간의 전일 daat 를 이용하여 지표식을 작성할수 있는지요?
회신 미리 감사합니다.
2025-02-24
509
글번호 188468
답변완료
경보 메시지 관련 문의
항상 수고 많으십니다.
아래 수식에서 경보 사항중 "매도진입신호 와 발생 시간"을 표시하고 싶습니다.
--------------------아래-----------------------------------------------------
(중략)
If Var3>=Var5 Then
{
Var7=Var3;
Alert("매도");
PlaySound("C:₩예스트레이더₩data₩Sound₩alert.wav");
}
(중략)
----------------------------------------------------------------------------------
2025-02-24
492
글번호 188463
답변완료
수고하십니다.
기간 평균 체결강도가 100을 돌파한 종목을 검색해주세요
기간=60일
체결강도 100 돌파 검색식이 어렵다면 100 이상인 종목으로 검색 해쥬세요
항상 감사드립니다.
2025-02-24
504
글번호 188462