안녕하세요, 상인 여러분
또 다른 독창적인 아이디어가 있습니다. 사실 저는 이것이 여러 개의 피보트 포인트 평균을 사용하는 브레이크아웃 전략이라고 말할 수 있습니다.
어떻게 작동하죠? - 피보트 포인트를 찾습니다, 당신은 당신이 원하는 길이 설정할 수 있습니다 - 그것은 피보트 최고와 피보트 최저의 평균을 얻습니다, 당신은 포함 될 피보트 포인트의 수를 설정할 수 있습니다 - 현재 종료 가격을 피브트 최고값과 피브트 최저값의 평균값과 비교합니다. - 양쪽 모두 양성 또는 음성이라면, 추세가 변합니다.
두 가지 선택지가 있습니다. - 피보트 포인트 기간 => 피보트 포인트를 찾기 위해 사용되는 길이입니다. 그것은 피보트 포인트 (4 기본으로) 인 경우 왼쪽/오른 바를 확인합니다. - 확인하는 PP의 수 => 스크립트가 평균을 찾고 계산하는 피보트 포인트의 수입니다.
백테스트
/*backtest start: 2022-04-30 00:00:00 end: 2022-05-29 23:59:00 period: 30m basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © LonesomeTheBlue //@version=4 study("Pivot Trend", precision = 2, explicit_plot_zorder = true) prd = input(defval = 4, title="Pivot Point Period", minval = 1, maxval = 30) pnum = input(defval = 3, title="number of PP to check", minval = 1, maxval = 30) colup = input(defval = color.blue, title = "Colors", inline = "col") coldn = input(defval = color.orange, title = "", inline = "col") float ph = pivothigh(prd, prd) float pl = pivotlow(prd, prd) var ph_lev = array.new_float(pnum, na) var pl_lev = array.new_float(pnum, na) if ph array.unshift(ph_lev, ph) array.pop(ph_lev) if pl array.unshift(pl_lev, pl) array.pop(pl_lev) float lrate = 0.0 for i = 0 to array.size(pl_lev) - 1 float rate = (close - array.get(pl_lev, i)) / array.get(pl_lev, i) lrate += (rate / pnum) float hrate = 0.0 for i = 1 to array.size(ph_lev) - 1 float rate = (close - array.get(ph_lev, i)) / array.get(ph_lev, i) hrate += (rate / pnum) hline(0.) hln = plot(hrate, color = color.red, linewidth = 2) lln = plot(lrate, color = color.lime, linewidth = 2) trend = 0 trend := hrate > 0 and lrate > 0 ? 1 : hrate < 0 and lrate < 0 ? -1 : nz(trend[1]) tcolor = trend == 1 ? color.new(colup, 40) : color.new(coldn, 40) fill(hln, lln, color = tcolor) mid = sma((hrate + lrate) / 2, 9) plot(mid, color = mid >= 0 ? mid >= mid[1] ? color.blue : color.navy : mid <= mid[1] ? color.red : color.orange, linewidth = 2) alertcondition(change(trend) > 0, title='Pivot Trend UP', message='Pivot Trend UP') alertcondition(change(trend) < 0, title='Pivot Trend DOWN', message='Pivot Trend DOWN') if change(trend) > 0 strategy.entry("Enter Long", strategy.long) else if change(trend) < 0 strategy.entry("Enter Short", strategy.short)