マウス・ミニアム・リバーション・ストラテジーは,非常にシンプルなトレンド・トレーディング・ストラテジーである.その基本的なアイデアは,短期移動平均が一定パーセントで長期移動平均を下回り,短期移動平均が長期移動平均を超えるとポジションを閉じる.この戦略は,まず短期および長期移動平均を計算し,その後,2つの移動平均の関係に基づいて取引信号を生成する.
この戦略は主に2つの移動平均値,一つは短期的,もう1つは長期的に依存している.短期移動平均パラメータはsmallMAPeriodであり,長期移動平均パラメータはbigMAPeriodである.この戦略はまずこれらの2つの移動平均値を計算し,その後それらの間のサイズ関係を比較する.
短期移動平均が上から落ちて,長期移動平均の一定パーセント (percentBelowToBuyパラメータによって設定) を破ると,買い信号が生成され,ロングになる.短期移動平均が上昇して長期移動平均を超えると,セール信号が生成され,ポジションを閉じます.
戦略は,短期間の移動平均値と長期間の移動平均値の間の平均逆転機会を把握する.短期間の移動平均値が一定程度に長期移動平均値を下回ると,資産が過大評価され,平均値に戻るチャンスがあることを意味します.
マウスの平均逆転戦略には以下の利点があります
この戦略は,単純なパラメータ最適化によって良い結果を得ることができます.移動平均値と譲渡パーセントパラメータを調整することで,最適なパラメータ組み合わせをスクリーニングするために,株式,フォレックス,暗号通貨などの異なる市場資産でバックテストを行うことができます.
逆転戦略にはリスクもあります
リスク軽減には以下の方法が用いられる.
マウスの平均逆転戦略は,次の側面から最適化することができます:
マウスの平均逆転戦略は,短期間の価格が短期間の移動平均と長期間の移動平均を比較することによって長期的トレンドから逸脱した後の平均逆転機会を捕捉する.この戦略は理解し実行しやすいシンプルな論理を持っています.パラメータ最適化によって良い結果を達成することができます.しかし,より少ない信号や欠落した逆転のようなリスクはまだ存在しており,戦略のリターンを最大化するためにパラメータとフィルターのテストと最適化が必要です.
/*backtest start: 2023-02-20 00:00:00 end: 2024-02-26 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // @version=4 // // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // // @author Sunil Halai // // This very simple strategy is an implementation of PJ Sutherlands' Jaws Mean reversion algorithm. It simply buys when a small moving average period (e.g. 2) is below // a longer moving average period (e.g. 5) by a certain percentage, and closes when the small period average crosses over the longer moving average. // // If you are going to use this, you may wish to apply this to a range of investment assets, as the amount signals is low. Alternatively you may wish to tweak the settings to provide more // signals. strategy("Jaws Mean Reversion [Strategy]", overlay = true) //Strategy inputs source = input(title = "Source", defval = close) smallMAPeriod = input(title = "Small Moving Average", defval = 2) bigMAPeriod = input(title = "Big Moving Average", defval = 5) percentBelowToBuy = input(title = "Percent below to buy %", defval = 3) //Strategy calculation smallMA = sma(source, smallMAPeriod) bigMA = sma(source, bigMAPeriod) buyMA = ((100 - percentBelowToBuy) / 100) * sma(source, bigMAPeriod)[0] if(crossunder(smallMA, buyMA)) strategy.entry("BUY", strategy.long) if(crossover(smallMA, bigMA)) strategy.close("BUY")