0bps

Strategy vault / Mean reversion

Trading Strategy Based on Market Facilitation Index

This strategy uses the Market Facilitation Index (MFI) to judge the market's trending condition and possibility of trend reversal. It generates trading signals by calculating the relationship between price range and…

Author
ChaoZhang
Complexity
Starter · 44 lines
Parameters
3
Backtest bar
1h · intraday
Tested on
BTC/USDT · futures

Overview

This strategy uses the Market Facilitation Index (MFI) to judge the market's trending condition and possibility of trend reversal. It generates trading signals by calculating the relationship between price range and volume to evaluate the efficiency of price movement.

Strategy Logic

  1. Calculate MFI, formula: (Highest - Lowest) / Volume * 10000

  2. Set buy and sell thresholds, such as buy when MFI > 1 and sell when MFI < 0.8

  3. Go long when MFI crosses above buy threshold, go short when crossing below sell threshold

  4. Color code bars based on signals for visual representation

  5. Option to reverse signal directions

Advantage Analysis

  1. Strong ability to evaluate market trending and price movement efficiency

  2. Simple parameter setup, easy to determine thresholds

  3. Clear trading signals, easy to interpret and execute

  4. Visual bar colors intuitively display market conditions

  5. Flexibility to go long or short as needed

Risk Analysis

  1. Unable to determine trend strength, risks insufficient profit

  2. Cannot differentiate normal fluctuations or real reversals

  3. Prone to false signals from sudden events

  4. Has some lag, may miss best entry points

  5. No stop loss mechanism, unable to control single loss

Optimization Directions

  1. Test different parameter threshold values

  2. Add volume-price indicators for confirmation

  3. Incorporate moving averages to determine trend direction

  4. Establish stop loss strategies for risk control

  5. Define position sizing rules to adjust with markets

  6. Test performance in live markets across different instruments and timeframes

Summary

This strategy uses MFI to judge market trending conditions and provide simple trade signals. Further improvements in parameter optimization, stop losses etc. are needed for strict risk control. But the logic is clear and feasible to serve as part of a trend following strategy, thus having practical value.

Parameters

NameDefaultWhat it controls
v_input_16.2SellZone
v_input_2trueBuyZone
v_input_3falseTrade reverse

Source Pine Script

/*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)

Published by ChaoZhang on the FMZ strategy square · last modified 2023-09-19. Collected in the Quant Trading Vault. Unvalidated research: re-test with your own data and costs before trusting it.

Build this with AgenKit

A spec is not a trading system. Paste this into your coding agent and AgenKit runs a specialist team — architecture, test-first build, risk gates, review — with paper trading on by default.

in Claude Code, Cursor, Codex & 4 more
/agenkit build a production-grade trading bot with a backtest engine, risk controls and paper trading by default from strategies/Trading-Strategy-Based-on-Market-Facilitation-Index.md
  1. npx agenkit install engineering-kit in your project
  2. Paste the command into your agent and approve each phase
  3. Get tests, backtest, risk controls and a paper-trading switch

Understand it first

Before you run this, read the lesson behind the idea and how to backtest it honestly. Specs like this one are the survivors of an unknown number of trials; deflate their results accordingly.

Related specs

esc

Try , , or .

↑↓ move↵ open