답변완료
HA RSI
var : haC(0),haO(0),haH(0),haL(0);var : mav(0),sdv(0),B(0);var : A(0),A1(0);#Heiken Ashi 시고저종if index == 0 then{ haC = (O+H+L+C)/4; haO = open; haH = MaxList( high, haO, haC); haL = MinList( low, haO,haC); }else{ haC = (O+H+L+C)/4; haO = (haO [1] + haC [1])/2 ; haH = MaxList(High, haO, haC) ; haL = MinList(Low, haO, haC) ; }Inputs: Length(20);Var : Counter(0), DownAmt(0), UpAmt(0), UpSum(0), DownSum(0), UpAvg(0), DownAvg(0),haRSI(0);If Index == Length Then Begin UpSum = 0; DownSum = 0; For Counter = 0 To Length - 1 Begin UpAmt = haC[Counter] - haC[Counter+1]; If UpAmt >= 0 Then DownAmt = 0; Else Begin DownAmt = -UpAmt; UpAmt = 0; End; UpSum = UpSum + UpAmt; DownSum = DownSum + DownAmt; End; UpAvg = UpSum / Length; DownAvg = DownSum / Length;EndElse If Index > length AND Length > 0 Then Begin UpAmt = haC[0] - haC[1]; If UpAmt >= 0 Then DownAmt = 0; Else Begin DownAmt = -UpAmt; UpAmt = 0; End; UpAvg = (UpAvg[1] * (Length - 1) + UpAmt) / Length; DownAvg = (DownAvg[1] * (Length - 1) + DownAmt) / Length; End;If UpAvg + DownAvg <> 0 Then haRSI = 100 * UpAvg / (UpAvg + DownAvg);Else haRSI = 0;if Index >345 and (CrossUp(harsi,60) and CountIf(harsi<=59.9,5)[1] == 5) and haC>haC[1]*1.02 then Find(1);============================================================== 위 수식은 하이킨아시에서 상장 345일이상 종목 중, 전 5봉의 RSI(20)값은 59.9이하 후 전봉대비 금일 2%이상 상승으로 60돌파하는데 여기에 haC가 200EMA를 당일돌파하거나 LRL(50)>TEWMA>200EMA인 종목의 검색을 위해 if~ 이하부분을 해봤는데 아래 TEWMA수식과 LRL(50)을 어떻게 넣어야할지 몰라 문의드립니다. ============================================================== input : len(50),multi(1.75);var : wma1(0),ema1_1(0),ema1_2(0),ema1_3(0),TEWMA1(0);var : len2(0),wma2(0),ema2_1(0),ema2_2(0),ema2_3(0),TEWMA2(0);var : TEWMA(0);wma1 = WMA(C, len);// TEMA 계산ema1_1 = Ema(wma1, len);ema1_2 = Ema(ema1_1, len); ema1_3 = Ema(ema1_2, len);TEWMA1 = 3 * ema1_1 - 3 * ema1_2 + ema1_3;len2 = len * multi;wma2 = WMA(C, len2);ema2_1 = Ema(wma2, len2);ema2_2 = Ema(ema2_1, len2);ema2_3 = ema(ema2_2, len2);TEWMA2 = 3 * ema2_1 - 3 * ema2_2 + ema2_3;TEWMA = (TEWMA1 + TEWMA2) / 2;var1 = Ema(c,200);var2 = LRL(c,50);
헤이킨아쉬
헤이킨아쉬RSI
헤이킨아쉬EMA
헤이킨아쉬TEWMA
헤이킨아쉬LRL
2025-10-24
132
글번호 227259
종목검색
답변완료
문의 드립니다.
안녕하세요.수고 많으십니다. ~RSI(5)가 70 이상일 때, 아래의 1 라인이 2 라인을 돌파 ( 또는 1, 2 라인이 만났을때, 현재 가격이 그 2개라인을 돌파 ) 하는 종목의 검색식을 부탁 드립니다.a 라인A=avg(c,17);ATR=avg(max(max(h-L,abs(c(1)-h)),abs(c(1)-L)),17);B=ATR*2;D=A+B;E=Bbandsup(17,2);e1=crossup(E,D);e2=crossdown(E,D);e3=crossdown(c,E);valuewhen(1,e1 or e2 or e3,o) b 라인A=avg(c,17);ATR=avg(max(max(h-L,abs(c(1)-h)),abs(c(1)-L)),17);B=ATR;D=A+B; 감사합니다.
2025-10-23
106
글번호 227256
종목검색
답변완료
질문 있습니다.
안녕하세요!답변 덕분에 해결이 되었지만특정 시간대 진입 거래만 누적 손익 계산이 잘 안되서 도움 요청합니다. ㅠㅠ제가 원하는 것은예를 들어서 특정 시간대(예: 7시~21시)에 진입한 거래의 누적 손익만 별도로 계산하고 싶습니다.=== 현재 시도한 방법 ===Input : StartHour(7), EndHour(21);var : TradingPL(0), InTimeEntry(0), SignalHour(0);// 신호 발생 시 시간 기록if 매수신호 Then { SignalHour = CurrentHour; if SignalHour >= StartHour and SignalHour < EndHour Then InTimeEntry = 1; Else InTimeEntry = 0;}// 진입 (다음 봉)if 신호[1] == 1 Then { Buy();}// 청산 시 누적if TotalTrades > TotalTrades[1] Then { if InTimeEntry[1] == 1 Then { TradingPL = TradingPL[1] + (NetProfit - NetProfit[1]) / PriceScale; }}// 22시 누적수익 표시 (EndHour + 1)if CurrentHour == 22 and CurrentHour != CurrentHour[1] Then { Text_New(sDate, sTime, H + 2.0, NumToStr(TradingPL, 0) + "T");}// 영업일 변경if Bdate != Bdate[1] Then { TradingPL = 0;}=== 문제 상황 ===실제 거래 (7시~21시 진입):- 9시 진입 → 11시 청산 +25틱- 13시 진입 → 15시 청산 -18틱 - 17시 진입 → 19시 청산 +67틱- 20시 진입 → 22시 청산 -12틱합계: +62틱하지만 22시 표시 결과: 3틱 또는 부정확한 값!! (이것 때문에 미치겠습니다. ㅠㅠ)=== 질문 ===1. 변수 InTimeEntry가 청산 시점까지 제대로 유지되나요? (신호 → 진입 → 청산 과정에서 [1] 참조의 타이밍 문제?)2. TradingPL 누적 방식이 올바른가요? 매 봉마다 TradingPL = TradingPL[1]로 상태 유지가 필요한가요?3. 특정 시간대 진입 거래만 필터링하여 누적 손익을 계산하는 표준적인 방법이 있을까요?바쁘신데 감사합니다. ㅠㅠ
답변완료
검색식 요청 드립니다.
안녕하세요항상 빠른 답변 감사 드립니다.아래 식을 종목 검색식으로 요청 드립니다.그럼 좋은 하루 되세요// This work is licensed under a Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0) https://creativecommons.org/licenses/by-nc-sa/4.0/// © LuxAlgo//@version=5indicator("Range Detector [LuxAlgo]", "LuxAlgo - Range Detector", overlay = true, max_boxes_count = 500, max_lines_count = 500)//------------------------------------------------------------------------------//Settings//-----------------------------------------------------------------------------{length = input.int(20, 'Minimum Range Length', minval = 2)mult = input.float(1., 'Range Width', minval = 0, step = 0.1)atrLen = input.int(500, 'ATR Length', minval = 1)//StyleupCss = input(#089981, 'Broken Upward', group = 'Style')dnCss = input(#f23645, 'Broken Downward', group = 'Style')unbrokenCss = input(#2157f3, 'Unbroken', group = 'Style')//-----------------------------------------------------------------------------}//Detect and highlight ranges//-----------------------------------------------------------------------------{//Ranges drawingsvar box bx = navar line lvl = na//Extensionsvar float max = navar float min = navar os = 0color detect_css = nan = bar_indexatr = ta.atr(atrLen) * multma = ta.sma(close, length)count = 0for i = 0 to length-1 count += math.abs(close[i] - ma) > atr ? 1 : 0if count == 0 and count[1] != count //Test for overlap and change coordinates if n[length] <= bx.get_right() max := math.max(ma + atr, bx.get_top()) min := math.min(ma - atr, bx.get_bottom()) //Box new coordinates bx.set_top(max) bx.set_rightbottom(n, min) bx.set_bgcolor(color.new(unbrokenCss, 80)) //Line new coordinates avg = math.avg(max, min) lvl.set_y1(avg) lvl.set_xy2(n, avg) lvl.set_color(unbrokenCss) else max := ma + atr min := ma - atr //Set new box and level bx := box.new(n[length], ma + atr, n, ma - atr, na , bgcolor = color.new(unbrokenCss, 80)) lvl := line.new(n[length], ma, n, ma , color = unbrokenCss , style = line.style_dotted) detect_css := color.new(color.gray, 80) os := 0else if count == 0 bx.set_right(n) lvl.set_x2(n)//Set colorif close > bx.get_top() bx.set_bgcolor(color.new(upCss, 80)) lvl.set_color(upCss) os := 1else if close < bx.get_bottom() bx.set_bgcolor(color.new(dnCss, 80)) lvl.set_color(dnCss) os := -1//-----------------------------------------------------------------------------}//Plots//-----------------------------------------------------------------------------{//Range detection bgcolorbgcolor(detect_css)plot(max, 'Range Top' , max != max[1] ? na : os == 0 ? unbrokenCss : os == 1 ? upCss : dnCss)plot(min, 'Range Bottom' , min != min[1] ? na : os == 0 ? unbrokenCss : os == 1 ? upCss : dnCss)//-----------------------------------------------------------------------------}