基于市场促进指数的交易策略


创建日期: 2023-09-19 15:56:29 最后修改: 2023-09-19 15:56:29
复制: 0 点击次数: 480
avatar of ChaoZhang ChaoZhang
1
关注
1259
关注者

概述

该策略运用市场促进指数(MFI)来判断市场的趋势化程度,以及是否可能出现趋势反转。它通过计算价格范围与交易量的关系,来评估价格运动的效率,从而产生交易信号。

策略原理

  1. 计算市场促进指数,公式为:(最高价-最低价)/成交量*10000

  2. 设置买入和卖出阈值,如MFI大于1时产生买入信号,小于0.8时产生卖出信号

  3. 当MFI上穿买入阈值时做多,下穿卖出阈值时做空

  4. 根据信号对K线设置不同颜色,直观显示市场状况

  5. 可选择反转交易信号的方向

优势分析

  1. 评估市场趋势化和价格运动效率的能力强

  2. 参数设置简单,阈值容易确定

  3. 交易信号明确,易于判断和执行

  4. 直观的K线着色 visually 展示市场状况

  5. 可根据需要选择做多或做空

风险分析

  1. 无法判断趋势的力度,存在获利不足的风险

  2. 无法区分正常波动和趋势反转

  3. 容易被突发事件影响,产生错误信号

  4. 存在一定的滞后,可能错过最佳入场点

  5. 无法建立止损机制,无法控制单笔损失

优化方向

  1. 测试不同的参数阈值设定

  2. 增加量价相关指标进行确认

  3. 结合移动均线等指标判断趋势方向

  4. 建立止损策略,控制风险

  5. 设定仓位管理规则,根据市场调整仓位

  6. 测试在不同品种和周期的实盘效果

总结

该策略通过MFI指标判断市场趋势化程度,给出简单的交易信号。需要进一步优化参数设定、建立止损机制等来严格控制风险。但整体思路清晰可行,可作为趋势跟踪策略的组成部分,具有实用价值。

策略源码
/*backtest
start: 2023-08-19 00:00:00
end: 2023-09-18 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 12/09/2018
// The Market Facilitation Index is an indicator that relates price range to 
// volume and measures the efficency of price movement. Use the indicator to 
// determine if the market is trending. If the Market Facilitation Index increased, 
// then the market is facilitating trade and is more efficient, implying that the 
// market is trending. If the Market Facilitation Index decreased, then the market 
// is becoming less efficient, which may indicate a trading range is developing that 
// may be a trend reversal.
//
// You can change long to short in the Input Settings
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
strategy(title="Market Facilitation Index (MFI) Backtest", shorttitle="MFI")
SellZone = input(6.2, minval=0.01, step = 0.01)
BuyZone = input(1, minval=0.01, step = 0.01)
reverse = input(false, title="Trade reverse")
hline(BuyZone, color=green, linestyle=line)
hline(SellZone, color=red, linestyle=line)
xmyVol = volume
xmyhigh = high
xmylow = low
nRes = (xmyhigh - xmylow) / xmyVol * 10000
pos = iff(nRes > BuyZone, 1,
       iff(nRes < SellZone, -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(nRes, color=green, title="MFI", style = histogram)