커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내

안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
프로필 이미지
예스스탁
2026-02-27
6822
글번호 230811
지표
답변완료

키움신호를 종목검색 변환 부탁드립니다.

안녕하세요, 최근에 예스트레이더를 사용하면서, 많은 도움을 받고 있습니다. 아래는 제가 키움에서 사용했던 신호 두개 입니다. 검색식으로 변환 부탁드립니다. 1. 주봉 A=RSI(12); M10=MA(C,10); M240=MA(C,240); LL=Lowestsince(1,crossdown(M10,M240),M10); D=LinearRegressionvalue(C,10,0)+ LinearRegressionSLope(C,10); (A<30 and A>A(1) and D>D(1)) or (C<LL and C>C(1)) 2. 일봉 A=RSI(12); Mtm1=C(1)-C; Mtm2=abs(Mtm1); TSI=MA(MA(Mtm1,12,지수),26,지수)/ MA(MA(Mtm2,12,지수),26,지수)*-100; R30=Valuewhen(1,Crossup(A,30),C); B=MA(C,10); D=LinearRegressionvalue(C,10,0)+ LinearRegressionSlope(C,10); TSI>EAVG(TSI,9) && (Crossup(D,R30) or Crossup(B,R30))
프로필 이미지
리버피닉스
2025-05-16
421
글번호 190885
종목검색

요타 님에 의해서 삭제되었습니다.

프로필 이미지
요타
2025-05-16
0
글번호 190881
지표
답변완료

매일 9시에 진입하기

다른 조건 없이 매일 9시에 양봉인 경우에 1개를 옵션 매수하고 15시에 청산하는 시스템을 만들어 주십시오. 감사합니다.
프로필 이미지
몸통공격
2025-05-16
382
글번호 190877
시스템
답변완료

문의 드립니다.

안녕하세요 아래의 신호 수식에 대한 종목 검색식 부탁 드립니다. M20 = ma(C, 20, 삼각); M60 = ma(C, 60, 삼각); LL = LowestSince(1, CrossDown(M20, M60), M20); A = if(M20 != LL && M20<M60, LL, 0); CROSSUP(C,A) AND A != 0 감사합니다.
프로필 이미지
ikksoo
2025-05-16
377
글번호 190873
검색

요타 님에 의해서 삭제되었습니다.

프로필 이미지
요타
2025-05-16
0
글번호 190869
지표
답변완료

검색할수잇도록 해주세요

A=BBandsUp(Period,D1); B=shift((highest(high,shortPeriod)+lowest(low,shortPeriod)+highest(high,midPeriod)+lowest(low,midPeriod))/4,midPeriod-1); crossup(A,B)
프로필 이미지
밤톨123
2025-05-16
314
글번호 190865
검색
답변완료

수식변환요청드립니다

수식을 검색식으로 부탁드립니다 bullc=close>=open(1) and close(1)<open(1); rv=rsi(14); rslos=rv<=30 and rv; rs=((rslos or rslos(1) or rslos(2)) and bullc)
프로필 이미지
달오
2025-05-16
348
글번호 190861
종목검색
답변완료

부탁드립니다 항상 감사합니다

var : cnt(0); Array: WO , WH , WL , WC ; // 배열 크기 및 초기값 지정 // 월요일이거나 차트 시작 지점인 경우 → 새로운 주 시작 if DayOfWeek(Date) = 1 or Index = 0 then Begin WO[0] = O; // 주 시가 WH[0] = H; // 주 고가 초기화 WL[0] = L; // 주 저가 초기화 // 과거 데이터 1칸씩 이동 (최신 → 뒤로 밀기) For cnt = 49 downto 1 Begin WO[cnt] = WO[cnt - 1]; WH[cnt] = WH[cnt - 1]; WL[cnt] = WL[cnt - 1]; WC[cnt] = WC[cnt - 1]; End; End; // 주중 고가 갱신 if WH[0] > 0 and H > WH[0] then WH[0] = H; // 주중 저가 갱신 if WL[0] > 0 and L < WL[0] then WL[0] = L; // 종가는 매일 갱신 WC[0] = C; // 시각화 출력 if WO[0] > 0 then Begin Plot1(WO[0], "주봉시가"); Plot2(WH[0], "주봉고가"); Plot3(WL[0], "주봉저가"); Plot 2.Input: 표시여부(True), 박스표시(True), 선표시(True), 텍스트표시(True), 연장일수(5); Var: cnt(0), vtl(0), BoxID(0), TxtID(0); Array: WO, WH, WL, WC; If (DayOfWeek(Date) = 1 Or Index = 0) And 표시여부 Then Begin WO[0] = O; WH[0] = H; WL[0] = L; For cnt = 49 Downto 1 Begin WO[cnt] = WO[cnt - 1]; WH[cnt] = WH[cnt - 1]; WL[cnt] = WL[cnt - 1]; WC[cnt] = WC[cnt - 1]; End; End; If WH[0] > 0 And H > WH[0] Then WH[0] = H; If WL[0] > 0 And L < WL[0] Then WL[0] = L; WC[0] = C; If WO[0] > 0 And 표시여부 Then Begin If 선표시 Then Begin vtl = TL_New(Date, Time, WO[0], Date + 연장일수, WO[0]); TL_SetColor(vtl, Cyan); vtl = TL_New(Date, Time, WH[0], Date + 연장일수, WH[0]); TL_SetColor(vtl, Red); vtl = TL_New(Date, Time, WL[0], Date + 연장일수, WL[0]); TL_SetColor(vtl, Blue); vtl = TL_New(Date, Time, WC[0], Date + 연장일수, WC[0]); TL_SetColor(vtl, Yellow); End; If 박스표시 Then Begin BoxID = Box_New(Date, Time, WH[0], Date + 연장일수, WL[0]); Box_SetFillColor(BoxID, PaleGreen); End; If 텍스트표시 Then Begin TxtID = Text_New(Date, Time, WH[0] + 1, "주 고가: " + NumToStr(WH[0], 2)); Text_SetColor(TxtID, Red); End; End; 3.Input: 표시여부(True), 박스표시(True), 선표시(True), 텍스트표시(True), 연장일수(5); Var: cnt(0), vtl(0), BoxID(0), TxtID(0); Array: WO, WH, WL, WC; If (DayOfWeek(Date) = 1 Or Index = 0) And 표시여부 Then Begin WO[0] = O; WH[0] = H; WL[0] = L; For cnt = 49 Downto 1 Begin WO[cnt] = WO[cnt - 1]; WH[cnt] = WH[cnt - 1]; WL[cnt] = WL[cnt - 1]; WC[cnt] = WC[cnt - 1]; End; End; If WH[0] > 0 And H > WH[0] Then WH[0] = H; If WL[0] > 0 And L < WL[0] Then WL[0] = L; WC[0] = C; If WO[0] > 0 And 표시여부 Then Begin If 선표시 Then Begin vtl = TL_New(Date, Time, WO[0], Date + 연장일수, WO[0]); TL_SetColor(vtl, Cyan); vtl = TL_New(Date, Time, WH[0], Date + 연장일수, WH[0]); TL_SetColor(vtl, Red); vtl = TL_New(Date, Time, WL[0], Date + 연장일수, WL[0]); TL_SetColor(vtl, Blue); vtl = TL_New(Date, Time, WC[0], Date + 연장일수, WC[0]); TL_SetColor(vtl, Yellow); End; If 박스표시 Then Begin BoxID = Box_New(Date, Time, WH[0], Date + 연장일수, WL[0]); Box_SetFillColor(BoxID, PaleGreen); End; If 텍스트표시 Then Begin TxtID = Text_New(Date, Time, WH[0] + 1, "주 고가: " + NumToStr(WH[0], 2)); Text_SetColor(TxtID, Red); End; End; 오류수정 부탁드립니다
프로필 이미지
윤호석
2025-05-16
561
글번호 190860
지표
답변완료

항상 감사한 마음입니다. 지표 변환 가능할까요

// This work is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International // https://creativecommons.org/licenses/by-nc-sa/4.0/ // &#169; BigBeluga //@version=6 indicator('Volumatic Variable Index Dynamic Average [BigBeluga]', 'Volumatic VIDYA [BigBeluga]', overlay = true, max_lines_count = 500, max_labels_count = 500) // INPUTS ――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――{ // Input parameters for length, momentum, and source data int vidya_length = input.int(10, 'VIDYA Length') // Length of the VIDYA calculation int vidya_momentum = input.int(20, 'VIDYA Momentum') // Momentum length for VIDYA float band_distance = input.float(2, 'Distance factor for upper/lower bands', step = 0.1) // Distance factor for upper/lower bands // Define pivot parameters int pivot_left_bars = 3 // Left side pivot bars int pivot_right_bars = pivot_left_bars // Right side pivot bars float source = input.source(close, 'Source') // Source for VIDYA calculation // Define colors for up and down trends color up_trend_color = input(#17dfad, '+', group = 'Color', inline = 'c') // Color for uptrend color down_trend_color = input(#dd326b, '-', group = 'Color', inline = 'c') // Color for downtrend bool shadow = input.bool(true, 'Shadow', group = 'Color', inline = 'c') // Initialize variables for line, volume, and trend state var line pivot_line = na // Variable for storing line references var float volume_value = na // Variable for storing volume data float smoothed_value = na // Smoothing variable for VIDYA trend levels var bool is_trend_up = false // Boolean variable for tracking trend direction // Initialize arrays for storing line and volume information var array<line> liquidity_lines_low = array.new<line>(500) // Array for storing lines for lows var array<line> liquidity_lines_high = array.new<line>(500) // Array for storing lines for highs var float up_trend_volume = na // Volume accumulated during uptrend var float down_trend_volume = na // Volume accumulated during downtrend // } // FUNCTIONS―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――{ // Define VIDYA (Variable Index Dynamic Average) function vidya_calc(src, vidya_length, vidya_momentum) => float momentum = ta.change(src) float sum_pos_momentum = math.sum(momentum >= 0 ? momentum : 0.0, vidya_momentum) float sum_neg_momentum = math.sum(momentum >= 0 ? 0.0 : -momentum, vidya_momentum) float abs_cmo = math.abs(100 * (sum_pos_momentum - sum_neg_momentum) / (sum_pos_momentum + sum_neg_momentum)) float alpha = 2 / (vidya_length + 1) var float vidya_value = 0.0 vidya_value := alpha * abs_cmo / 100 * src + (1 - alpha * abs_cmo / 100) * nz(vidya_value[1]) ta.sma(vidya_value, 15) // Method to extend lines and add labels for liquidity levels method extend_liquidity_lines(array<line> line_array, float price_level, bool is_cross, volume_val) => if line_array.size() > 0 and last_bar_index - bar_index < 5000 for i = 0 to line_array.size() - 1 by 1 if i < line_array.size() line liquidity_line = line_array.get(i) float current_line_level = line.get_y2(liquidity_line) bool price_cross = is_cross ? price_level < current_line_level and price_level[1] >= current_line_level : price_level > current_line_level and price_level[1] <= current_line_level bool is_short_line = bar_index - line.get_x1(liquidity_line) < 50 if price_cross and is_short_line line.set_x2(liquidity_line, bar_index) line_array.remove(i) // Add volume label to the liquidity zone label.new(bar_index - 1, price_level[1], str.tostring(volume_val, format.volume), color = color.rgb(0, 0, 0, 99), style = is_cross ? label.style_label_lower_left : label.style_label_upper_left, textcolor = chart.fg_color, size = size.small) // Add a circle label to represent liquidity zone label.new(bar_index - 1, price_level[1], text = '&#9673;', color = #00000003, textcolor = is_cross ? down_trend_color : up_trend_color, style = label.style_label_center, size = size.normal) // } // CALCULATIONS――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――{ // Calculate the Average True Range (ATR) float atr_value = ta.atr(200) // ATR calculation with length of 200 // Calculate the VIDYA (Variable Index Dynamic Average) vidya_value = vidya_calc(source, vidya_length, vidya_momentum) // Calculate upper and lower bands based on VIDYA and ATR float upper_band = vidya_value + atr_value * band_distance float lower_band = vidya_value - atr_value * band_distance // Detect trend direction using crossovers of source with bands if ta.crossover(source, upper_band) is_trend_up := true is_trend_up if ta.crossunder(source, lower_band) is_trend_up := false is_trend_up // Set trend-based smoothing variable if is_trend_up smoothed_value := lower_band smoothed_value if not is_trend_up smoothed_value := upper_band smoothed_value if ta.change(is_trend_up) smoothed_value := na smoothed_value // Calculate pivot highs and lows for price action bool pivot_high = not na(ta.pivothigh(pivot_left_bars, pivot_right_bars)) bool pivot_low = not na(ta.pivotlow(close, pivot_left_bars, pivot_right_bars)) // Create and store lines for pivot lows (support zones) if low[pivot_right_bars] > smoothed_value and pivot_low pivot_line := line.new(bar_index[pivot_right_bars], low[pivot_right_bars], bar_index[pivot_right_bars] + 5, low[pivot_right_bars], color = color.new(up_trend_color, 50)) liquidity_lines_low.push(pivot_line) volume_value := math.sum(volume, pivot_right_bars + pivot_left_bars) / (pivot_right_bars + pivot_left_bars) volume_value // Create and store lines for pivot highs (resistance zones) if high[pivot_right_bars] < smoothed_value and pivot_high pivot_line := line.new(bar_index[pivot_right_bars], high[pivot_right_bars], bar_index[pivot_right_bars] + 5, high[pivot_right_bars], color = color.new(down_trend_color, 50)) liquidity_lines_high.push(pivot_line) volume_value := math.sum(-volume, pivot_right_bars + pivot_left_bars) / (pivot_right_bars + pivot_left_bars) volume_value // Extend lines to track price movements liquidity_lines_high.extend_liquidity_lines(smoothed_value, true, volume_value) liquidity_lines_low.extend_liquidity_lines(smoothed_value, false, volume_value) // Detect changes in the trend direction bool trend_cross_up = not is_trend_up[1] and is_trend_up bool trend_cross_down = not is_trend_up and is_trend_up[1] // Reset volume counters when trend changes if ta.change(trend_cross_up) or ta.change(trend_cross_down) up_trend_volume := 0 down_trend_volume := 0 down_trend_volume // Accumulate volume during trends if not(ta.change(trend_cross_up) or ta.change(trend_cross_down)) up_trend_volume := up_trend_volume + (close > open ? volume : 0) down_trend_volume := down_trend_volume + (close < open ? volume : 0) down_trend_volume // Calculate average volume float avg_volume_delta = (up_trend_volume + down_trend_volume) / 2 // Determine the color of the trend color trend_color = is_trend_up ? up_trend_color : not is_trend_up ? down_trend_color : chart.fg_color // Calculate delta volume percentage string delta_volume = str.tostring((up_trend_volume - down_trend_volume) / avg_volume_delta * 100, format.percent) == 'NaN%' ? '0%' : str.tostring((up_trend_volume - down_trend_volume) / avg_volume_delta * 100, format.percent) // } // PLOT ――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――{ // Display labels for volume and trend statistics on the last bar if barstate.islast label.delete(label.new(bar_index, smoothed_value, 'Buy: ' + str.tostring(up_trend_volume, format.volume) + '₩n Sell: ' + str.tostring(down_trend_volume, format.volume) + '₩nDelta Volume: ' + delta_volume, color = color.new(trend_color, 90), style = is_trend_up ? label.style_label_upper_left : label.style_label_lower_left, textcolor = chart.fg_color)[1]) label.delete(label.new(bar_index, smoothed_value, text = '&#10026;', color = #00000003, textcolor = trend_color, style = label.style_label_center, size = size.large)[1]) // Plot the VIDYA trend line p1 = plot(smoothed_value, color = trend_color, linewidth = 2, style = plot.style_linebr) p2 = plot(hl2, display = display.none) // Fill between the plot and the VIDYA line fill(p1, p2, smoothed_value, hl2, color.new(trend_color, shadow ? 80 : 100), na) // Plot trend change markers (up and down arrows) plotshape(series = trend_cross_up[1] ? smoothed_value[0] : na, title = 'Trend Up', style = shape.labelup, location = location.absolute, color = color.new(up_trend_color, 50), text = '▲', textcolor = chart.fg_color) plotshape(series = trend_cross_down[1] ? smoothed_value[0] : na, title = 'Trend Down', style = shape.labeldown, location = location.absolute, color = color.new(down_trend_color, 50), text = '▼', textcolor = chart.fg_color) // }
프로필 이미지
갈랑교
2025-05-16
1623
글번호 190859
지표