
极化分形效率(Polarized Fractal Efficiency,PFE)交易策略通过应用分形几何和混沌理论的概念,测量价格运动的效率。价格运动越线性和高效,两个点之间的距离就越短,价格运动的效率也就越高。
PFE交易策略的核心指标是极化分形效率(PFE)。该指标基于下述公式计算:
PFE = sqrt(pow(close - close[Length], 2) + 100)
其中,Length为回看窗口期,该参数通过输入设置。PFE实际上是衡量价格在Length期间内运动的“长度”,它使用欧几里得距离(直线距离)来近似衡量。
为了评估价格运动的效率,我们需要一个用于对比的基准。这个基准是价格在Length期间内按照实际顺序连接而成路径的长度,称为C2C(Close to Close),计算公式如下:
C2C = sum(sqrt(pow((close - close[1]), 2) + 1), Length)
这样,我们就可以计算出价格运动的分形效率xFracEff:
xFracEff = iff(close - close[Length] > 0, round((PFE / C2C) * 100) , round(-(PFE / C2C) * 100))
如果价格上涨,分数为正值,如果下跌,则为负值。绝对值越大,表示运动越不效率。
为了产生交易信号,我们计算xEMA,即xFracEff的指数移动平均。并设定买入和卖出通道:
xEMA = ema(xFracEff, LengthEMA)
BuyBand = input(50)
SellBand = input(-50)
当xEMA上穿BuyBand generate买入信号;当xEMA下穿SellBand generate卖出信号。
PFE交易策略具有以下优势:
PFE交易策略也存在以下风险:
PFE交易策略可以从以下几个方面进行优化:
PFE交易策略立足于分形几何和混沌理论的角度,提出了一个新颖的方法来衡量价格运动的效率。相比常规技术指标,这种方法有其独特优势,但也面临一定程度的时间滞后,参数优化,信号质量方面的问题。通过不断测试与优化,PFE策略有望成为一个可靠的量化交易策略选择。
/*backtest
start: 2024-01-07 00:00:00
end: 2024-01-14 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 29/09/2017
// The Polarized Fractal Efficiency (PFE) indicator measures the efficiency
// of price movements by drawing on concepts from fractal geometry and chaos
// theory. The more linear and efficient the price movement, the shorter the
// distance the prices must travel between two points and thus the more efficient
// the price movement.
//
// You can change long to short in the Input Settings
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
strategy(title="PFE (Polarized Fractal Efficiency)", shorttitle="PFE (Polarized Fractal Efficiency)")
Length = input(9, minval=1)
LengthEMA = input(5, minval=1)
BuyBand = input(50, step = 0.1)
SellBand = input(-50, step = 0.1)
reverse = input(false, title="Trade reverse")
hline(BuyBand, color=green, linestyle=line, title = "TopBand")
hline(SellBand, color=red, linestyle=line, title = "LowBand")
PFE = sqrt(pow(close - close[Length], 2) + 100)
C2C = sum(sqrt(pow((close - close[1]), 2) + 1), Length)
xFracEff = iff(close - close[Length] > 0, round((PFE / C2C) * 100) , round(-(PFE / C2C) * 100))
xEMA = ema(xFracEff, LengthEMA)
pos = iff(xEMA < SellBand, -1,
iff(xEMA > BuyBand, 1, nz(pos[1], 0)))
possig = iff(reverse and pos == 1, -1,
iff(reverse and pos == -1, 1, pos))
if (possig == 1)
strategy.entry("Long", strategy.long)
if (possig == -1)
strategy.entry("Short", strategy.short)
barcolor(possig == -1 ? red: possig == 1 ? green : blue )
plot(xEMA, color=blue, title="PFE")