커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

macd를 C가 아닌 다른 변수를 넣고 만들고 싶습니다.

안녕하세요? macd를 c가 아닌 다른 변수를 사용해서 만들고 싶습니다. 변수를 var1이라고 했을 때, var1을 이용해서 macd 12 26 9 를 만드는 수식을 부탁드립니다. 감사합니다.
프로필 이미지
매매신호
2025-05-05
254
글번호 190577
지표
답변완료

지표 변환 문의드립니다.

귀사의 무궁한 발전을 기원합니다 안녕하세요,수고 많으십니다 트레이딩뷰 지표를 예스트레이더로 변환해 주시면 대단히 감사하겠습니다. 주석이 좀 많네요. 챠트상에 봉그리기 비쥬얼은 구현하기 힘들면 넘어가시고, 매수,매도 신호만 ▲, ▼ 이런식으로 넣어 주시면 안될까요. 좋은 프로그램 만들어 주셔서 항상 잘 쓰고 있습니다.감사합니다. ++++++++++++++++++++++++++++++++++++++++++ // Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // &#169; QuantAlgo //@version=6 indicator(title="Zero Lag Signals For Loop [QuantAlgo]", overlay=true) // &#9556;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9559; // // &#9553; USER-DEFINED SETTINGS &#9553; // // &#9562;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9565; // // Input Groups var string zlag_settings = "&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552; Zero Lag Settings &#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;" var string loop_settings = "&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552; For Loop Settings &#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;" var string thresh_settings = "&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552; Threshold Settings &#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;" var string visual_settings = "&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552; Visualization Settings &#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;" // Tooltips tooltip_zl_length = "Length of the Zero Lag calculation period. Higher values create smoother signals." tooltip_vol_mult = "Multiplier for volatility in signal generation. Higher values make signals more conservative by requiring larger price movements." tooltip_loop_start = "Starting point for the loop analysis. Lower values analyze more recent price action." tooltip_loop_end = "Ending point for the loop analysis. Higher values analyze longer historical periods." tooltip_thresh_up = "Minimum score required to generate uptrend signals. Higher values create stricter conditions." tooltip_thresh_down = "Maximum score required to generate downtrend signals. Lower values create stricter conditions." tooltip_signals = "Enable/disable signal markers on the chart" tooltip_candles = "Enable/disable candle coloring based on trend direction" tooltip_bg_lines = "Enable/disable vertical lines on signal changes" // Zero Lag Settings length = input.int(50, "Zero Lag Length", minval=1, group=zlag_settings, tooltip=tooltip_zl_length) volatility_mult = input.float(1.5, "Volatility Multiplier", minval=0.1, group=zlag_settings, tooltip=tooltip_vol_mult) // Loop Settings loop_start = input.int(1, "Loop Start", minval=1, group=loop_settings, tooltip=tooltip_loop_start) loop_end = input.int(70, "Loop End", minval=1, group=loop_settings, tooltip=tooltip_loop_end) // Threshold Settings threshold_up = input.int(5, "Threshold Uptrend", group=thresh_settings, tooltip=tooltip_thresh_up) threshold_down = input.int(-5, "Threshold Downtrend", group=thresh_settings, tooltip=tooltip_thresh_down) // Visualization Settings bullcolor = input.color(#00ffaa, "Bullish Color", group=visual_settings) bearcolor = input.color(#ff0000, "Bearish Color", group=visual_settings) show_signals = input.bool(true, "Show Signal Markers", group=visual_settings, tooltip=tooltip_signals) paint_candles = input.bool(true, "Color Candles", group=visual_settings, tooltip=tooltip_candles) show_bg_lines = input.bool(false, "Signal Change Lines", group=visual_settings, tooltip=tooltip_bg_lines) // &#9556;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9559; // // &#9553; ZERO LAG CALCULATIONS &#9553; // // &#9562;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9565; // lag = math.floor((length - 1) / 2) zl_basis = ta.ema(close + (close - close[lag]), length) volatility = ta.highest(ta.atr(length), length*3) * volatility_mult // &#9556;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9559; // // &#9553; FOR LOOP ANALYSIS &#9553; // // &#9562;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9565; // forloop_analysis(basis_price) => sum = 0.0 for i = loop_start to loop_end by 1 sum += (basis_price > basis_price[i] ? 1 : -1) sum score = forloop_analysis(zl_basis) // &#9556;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9559; // // &#9553; SIGNAL GENERATION &#9553; // // &#9562;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9565; // // Long/Short conditions long_signal = score > threshold_up and close > zl_basis + volatility short_signal = score < threshold_down and close < zl_basis - volatility // Trend detection var trend = 0 if long_signal trend := 1 else if short_signal trend := -1 // Track trend changes var prev_trend = 0 trend_changed = trend != prev_trend prev_trend := trend // &#9556;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9559; // // &#9553; VISUALIZATION &#9553; // // &#9562;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9565; // // Current trend color trend_col = trend == 1 ? bullcolor : trend == -1 ? bearcolor : na // Plot Zero Lag line p_basis = plot(zl_basis, "Zero Lag Basis", color=trend_col, linewidth=3) p_price = plot(hl2, "Price", display=display.none, editable=false) // Fill between Zero Lag and price fill(p_basis, p_price, hl2, zl_basis, na, color.new(trend_col, 20)) // Plot trend shift labels plotshape(trend_changed and trend == 1 ? zl_basis : na, "Bullish Trend", shape.labelup, location.absolute, bullcolor, text="&#119923;", textcolor=#000000, size=size.small, force_overlay=true) plotshape(trend_changed and trend == -1 ? zl_basis : na, "Bearish Trend", shape.labeldown, location.absolute, bearcolor, text="&#119930;", textcolor=#ffffff, size=size.small, force_overlay=true) // Background signal lines bgcolor(show_bg_lines ? (ta.crossover(trend, 0) ? bullcolor : ta.crossunder(trend, 0) ? bearcolor : na) : na) // Color candles based on trend barcolor(paint_candles ? (trend == 1 ? bullcolor : trend == -1 ? bearcolor : na) : na) // &#9556;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9559; // // &#9553; ALERTS &#9553; // // &#9562;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9565; // alertcondition(ta.crossover(trend, 0), title="Zero Lag Signals Long", message="Zero Lag Signals Long {{exchange}}:{{ticker}}") alertcondition(ta.crossunder(trend, 0), title="Zero Lag Signals Short", message="Zero Lag Signals Short {{exchange}}:{{ticker}}") // &#9556;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9559; // // &#9553; CREATED BY &#9553; // // &#9562;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9565;
프로필 이미지
knoll
2025-05-08
404
글번호 190576
지표
답변완료

문의드립니다

당일용인데요 시가 대비 일정 크기만큼 상승하거나 하락하면 봉이 만들어지게 하고 싶은데요 봉으로 나오게 하는건 불가능할거 같아서.. 그냥 라인이나 박스형태로 또는 기타 모양으로 차트에 표시하게 하고 싶습니다 시가를 기준으로 일정크기 만큼 만들어지는데.. 위로 10 상승하면 양봉(빨간색라인) 아래로 10 하락하면 음봉(블루라인).. 일단 상승 또는 하락이던 봉이 만들어진후는 다음봉은 만들어진 전봉기준으로 일정크기 움직인 만큼 다시 다음 봉을 만듭니다 전봉대비 10 상승하면 빨강라인?(박스? 점?) 전봉 대비 10 하락하면 블루라인(박스? 점?) 10 만큼 상승/하락하면 양봉/음봉 이런식 개념으로 처음에는 시가를 기준으로... 그 다음 부터는 전봉대비 움직이는 크기만큼 양봉, 음봉을 만든다는 개념입니다 일정한 크기만큼 움직였을때 양봉이던 음봉이던 완성되게.. 분봉처럼 시간이 되야 봉이 완성되는게 아니라 움직인 크기가 충족되면 봉이 만들어지는 가장 최근것만 차트에 나오지 않고 .. 장시작후 계속 양봉/음봉을 그려간다는 개념으로 시가 부터 시작해 계속 표시되었으면 합니다 감사합니다
프로필 이미지
러블리
2025-05-06
280
글번호 190575
지표

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

프로필 이미지
요타
2025-05-04
2
글번호 190574
지표
답변완료

검색식 부탁드립니다

수식] A= (highest(high,shortPeriod)+lowest(low,shortPeriod))/2; B = MA(C, 기간, 지수); crossup(A,B) && C > O 지표변수] shortPeriod 9 기간 120 감사합니다
프로필 이미지
대응
2025-05-04
324
글번호 190573
종목검색
답변완료

종목검색식 요청드립니다.

아래 키움신호를 만족하는 종목검색식을 만들고 싶습니다. 도움 부탁드립니다. * 키움신호 (이평1-5, 이평2-20, 이평3-60) M5=Ma(c,이평1,가중); M20=Ma(c,이평2,가중); M60=Ma(c,이평3,가중); 조건=crossup(M5,M20); 조건1=crossup(M5,M60); A=Valuewhen(1,조건,M5); B=Valuewhen(1,조건1,M60); A=B and Crossup(C,A) and crossup(C,B) and C>M20
프로필 이미지
onlypsn
2025-05-04
364
글번호 190572
종목검색
답변완료

기존시스템에 진입수정 신고저에 의한 진입조건

안녕 하세요 항상 감사합니다 많이도움받고 있읍니다 기존에 시스템도움받아 테스트기간동안 에러같은거는 발생하지않고 신호는 잘나와 주고있어요 주문관련 -+10틱정도제공되고 주문지연이나 시간정정은 있으나 미체결 시간경과에대한 자동취소는 제공되지않는게 아쉽습니다 그래서 죄송하지만 한번더 도움 받고자합니다 아래시스템 수식은 타주기 지표조합으로 진입시간청산시간 손익절이 들어간 시스템식입니다 {수정사항은 타분봉 데이타2,3 macd 0선이상이하 골든데드크로스 유지에서 신호일치는 기존과 동일합니다 데이터2,3 조건일치후 진입분봉 타점 수정부탁드립니다. *추가사항 신고가(N일) 신저가(N일) 지표에는 이름이 이렇게 나옵니다 분봉으로 추가해보았는데 파일처럼 추가는 돼네요 (예시)로 1분봉상 100봉 신고가 추가해보왔어요 타분봉 데이타2,3이 매도조건이면 *진입봉에서 N(20)봉 기간동안 신고가 신호가 발생하였다면 macd선 0선하향돌파시 매도진입 입니다. 매수조건은 반대입니다. 기존방식 진입분봉 macd 0선 상하향돌파진입에서 N(20)봉 기간동안 신고가,신저가 추가 *청산조건 스탑로스 도달하거나 타주기 분봉데이타2 or 3 0선상관없이 macd선과 시그널 골든데드크로스시 청산합니다 ----------------------------------------------- input : short(12),long(26),sig(9); input : 진입시작시간(230000),당일청산시간(020000),손절틱(100),감시틱(70),되돌림틱(20); var : S1(0),D1(0),TM(0),EP1(0),EP2(0),EP3(0); var : macdv(0,Data1),macds(0,Data1); var : macdv1(0,Data2),macds1(0,Data2); var : macdv2(0,Data3),macds2(0,Data3); macdv = data1(macd(short,long)); macds = data1(Ema(macdv,sig)); macdv1 = data2(macd(short,long)); macds1 = data2(Ema(macdv1,sig)); macdv2 = data3(macd(short,long)); macds2 = data3(Ema(macdv2,sig)); if sDate != sDate[1] Then SetStopEndofday(당일청산시간); if Bdate != Bdate[1] Then SetStopEndofday(0); var : Tcond(False),OO(0),HH(0),LL(0),CC(0); if (sdate != sDate[1] and sTime >= 당일청산시간) or (sdate == sDate[1] and sTime >= 당일청산시간 and sTime[1] < 당일청산시간) Then Tcond = false; if (sdate != sDate[1] and sTime >= 진입시작시간) or (sdate == sDate[1] and sTime >= 진입시작시간 and sTime[1] < 진입시작시간) Then Tcond = true; if Tcond == true Then { if MarketPosition <= 0 and CrossUp(MACDV,0) and MACDV1 > 0 and MACDV2 > 0 and macdv > macds and macdv1 > macds1 and macdv2 > macds2 Then Buy(); if MarketPosition >= 0 and CrossDown(MACDV,0) and MACDV1 < 0 and MACDV2 < 0 and macdv < macds and macdv1 < macds1 and macdv2 < macds2 Then Sell(); if MarketPosition == 1 and CrossDown(MACDV,0) Then ExitLong(); if MarketPosition == -1 and CrossUp(MACDV,0) Then ExitShort(); if MarketPosition == 1 Then { if highest(H,BarsSinceEntry) >= EntryPrice+PriceScale*감시틱 Then ExitLong("bx",AtStop,highest(H,BarsSinceEntry)-PriceScale*되돌림틱); } if MarketPosition == -1 Then { if lowest(L,BarsSinceEntry) <= EntryPrice-PriceScale*감시틱 Then ExitShort("sx",AtStop,lowest(L,BarsSinceEntry)+PriceScale*되돌림틱); } } SetStopLoss(PriceScale*손절틱,PointStop); *감사합니다
프로필 이미지
주꼬보이
2025-05-04
355
글번호 190571
시스템
답변완료

종목검색식 부탁드립니다

A = supertrend(period, multiplier); CROSSUP(C,A) 지표변수 period 41 multiplier 3.5 안녕 하세요 위의 수식은 키움용 지표 수식입니다. 위 신호가 발생하는 종목을 검색식을 만들어 검색코저 합니다. 검색식 부탁 드려 봅니다^^
프로필 이미지
하이드로
2025-05-04
330
글번호 190570
검색
답변완료

질문 드리겠습니다

휴일 잘 쉬셨어요? 질문 몇 가지 부탁드리겠습니다 질문1) 아래 추세선 식에서 최근 3개는 나오지 않게 하려고 하는데 어떻게 수정해야 될까요? TL_SetExtRight(tttl1[12],False); tttl1[0]=tl_new(sd[2],st[2],aa[0],sd[0],st[0],aa[0]); TL_SetSize(tttl1[0],0); TL_SetDrawMode(tttl1[0],0); TL_Delete(tttl1[12]); TL_SetExtRight(tttl1[0],true); 질문2) 조건 추가에 대한 질문입니다 첨부된 수식에서 조건만족봉 사이 봉들의 평균값을 구해서 aa[] 배열에 넣었는데요, 조건만족봉 다음에 나오는 봉들을 봤을때 (다음 조건만족봉이 나오기 전까지 발생하는 봉들) aa[0] 를 돌파하는 경우를 찾아보려고 합니다 (돌파 조건은 봉의 L이 aa[0] 보다 작고 H가 aa[0] 보다 큼) , aa[0] 값을 "2번째 돌파하는 봉"이 발생했을때 var4에 그 봉의 H값을 저장, var5에는 그 두개 봉의 고가의 평균을 저장 한다는 하위 조건문을 만들 수 있을까요? 예를들어서 현재만족봉 이후에 나오는 봉 a1, a2 ,a3,a4..들을 aa[0]와 비교했을때 a2 와 a4가 돌파봉이라면 a4 봉의 고가값을 저장. 감사합니다 var : cnt(0), sum1(0), sumi1(0),summ(0),tt(0),hh(0),ll(0),tl(0),tl1(0),n(0); var: sum2(0),sumi2(0); var : t(0),StartBarIndex(0),dd(0),d1(0),d2(0),e1(0),e2(0); Array : ii[50](0),aa[50](0),cc[50](0),ee[50](0),ttl[30](0),tttl[40](0),tttl1[40](0),tttl2[40](0),sd[45](0),st[45](0); Var33=Money/100000000; if Bdate != Bdate[1] Then { DD = DD+1; } if (h>l*1.08) and (d1 == 0 or (d1 > 0 and dd >= d1+5)) and (hh == 0 or (hh > 0 and (h >= hh*1.1 or h <= hh*0.85))) Then { d1 = dd; hh = h; var1 = Index; Var2 = var1[1]; Var3 = Var2[1]; sum1=0; sumi1=0; sum2=0; sumi2=0; tl=TL_NEW(sDate,sTime,100,sDate,sTime,999999); TL_SetSize(tl,0); TL_SetColor(tl,Black); For cnt = 1 to (var1-Var2) { sum1=sum1+l[cnt]; sumi1=sumi1+1; } value1=sum1/sumi1; For cnt = 49 DownTo 1 { aa[cnt] = aa[cnt-1]; #ee[cnt]= ee[cnt-1]; } aa[0] = value1*1; }
프로필 이미지
yamu
2025-05-07
302
글번호 190569
지표
답변완료

부탁드립니다

S=sum(1); R=RSi(기간); U70=ValueWhen(1, CrossUp(R, 70), S); D30=ValueWhen(1, CrossDown(R, 30), S); 순번조건=U70 < D30; 조건= CountSince(순번조건 && !순번조건(1), CrossUp(R, 30))==1; ValueWhen(1, 조건 && !조건(1), O) 수고가 많으세요 지표 변환식과 종목검색식을 알고 싶습니다 바쁘신 와중에 부탁드립니다 감사합니다
프로필 이미지
조앤
2025-05-04
326
글번호 190568
지표