यह चलती औसत क्रॉसओवर संकेतों पर आधारित एक प्रवृत्ति-अनुसरण रणनीति है। जब तेजी से चलती औसत नीचे से धीमी गति से चलती औसत से ऊपर पार करती है, तो एक खरीद संकेत उत्पन्न होता है। जब तेजी से चलती औसत ऊपर से धीमी गति से चलती औसत से नीचे पार करती है, तो एक बिक्री संकेत उत्पन्न होता है।
यह रणनीति दो चलती औसत का उपयोग करती है, एक 20-अवधि सरल चलती औसत और एक 30-अवधि सरल चलती औसत। जब 20-अवधि एमए 30-अवधि एमए के ऊपर पार करता है, तो एक खरीद संकेत उत्पन्न होता है। जब 20-अवधि एमए 30-अवधि एमए के नीचे पार करता है, तो एक बिक्री संकेत ट्रिगर किया जाता है।
चलती औसत खुद प्रवृत्ति संकेतक के रूप में कार्य करते हैं, प्रभावी रूप से बाजार की प्रवृत्ति दिशा को चित्रित करते हैं। क्रॉसओवर सिद्धांत रणनीति को समय पर प्रवृत्ति उलट बिंदुओं को पकड़ने और व्यापार संकेत उत्पन्न करने की अनुमति देता है। 20 दिन और 30 दिन की अवधि को शोर के प्रति बहुत संवेदनशील होने के बिना बाजार की प्रवृत्ति को प्रतिबिंबित करने के लिए उपयुक्त रूप से सेट किया जाता है।
इस रणनीति के मुख्य लाभ इस प्रकार हैंः
इस रणनीति के मुख्य जोखिमों में निम्नलिखित शामिल हैंः
समाधान:
रणनीति को अनुकूलित करने के लिए मुख्य पहलूः
चलती औसत क्रॉसओवर प्रणाली एक सरल और प्रभावी प्रवृत्ति के बाद की रणनीति है। तर्क स्पष्ट और समझने में आसान है, शुरुआती लोगों के लिए सीखने के लिए बहुत उपयुक्त है। यह चलती औसत क्रॉसओवर और प्रवृत्ति के साथ व्यापार से लाभ के आधार पर व्यापार संकेत उत्पन्न करता है। रणनीति को अधिक स्थिर और कुशल बनने के लिए कई तरीकों से अनुकूलित किया जा सकता है।
/*backtest start: 2023-12-03 00:00:00 end: 2024-01-02 00:00:00 period: 1h 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/ // © gliese581d //@version=4 strategy(title="Moving Averages Testing", overlay=true, precision=2, calc_on_every_tick=false, max_bars_back=5000, pyramiding=2, default_qty_type=strategy.percent_of_equity, default_qty_value=50, commission_type=strategy.commission.percent, initial_capital=10000) //SETTINGS longs_on = input(title="Long Trades enabled", defval=true) shorts_on = input(title="Short Trades enabled", defval=true) long_cond = input(title="Buy/Long Crossover Condition", defval="price x MA1", options=["price x MA1", "price x MA2", "MA1 x MA2"]) short_cond = input(title="Sell/Short Crossunder Condition", defval="price x MA2", options=["price x MA1", "price x MA2", "MA1 x MA2"]) ma1_type = input(title="Moving Average 1 Type", defval="SMA", options=["SMA", "EMA"]) ma1_len = input(defval=20, title="Moving Average 1 Len", type=input.integer, minval=1, maxval=1000, step=1) ma2_type = input(title="Moving Average 2 Type", defval="SMA", options=["SMA", "EMA"]) ma2_len = input(defval=30, title="Moving Average 2 Len", type=input.integer, minval=1, maxval=1000, step=1) //MOVING AVERAGES ma_1 = ma1_type == "EMA" ? ema(close, ma1_len) : sma(close, ma1_len) ma_2 = ma2_type == "EMA" ? ema(close, ma2_len) : sma(close, ma2_len) //STRATEGY //trade entries long_entry = long_cond == "price x MA1" ? crossover(close, ma_1) : long_cond == "price x MA2" ? crossover(close, ma_2) : long_cond == "MA1 x MA2" ? crossover(ma_1, ma_2) : false short_entry = short_cond == "price x MA1" ? crossunder(close, ma_1) : short_cond == "price x MA2" ? crossunder(close, ma_2) : short_cond == "MA1 x MA2" ? crossunder(ma_1, ma_2) : false start_month = input(defval=4, title="Strategy Start Month", type=input.integer, minval=1, maxval=12, step=1) start_year = input(defval=2018, title="Strategy Start Year", type=input.integer, minval=2000, maxval=2025, step=1) end_month = input(defval=12, title="Strategy End Month", type=input.integer, minval=1, maxval=12, step=1) end_year = input(defval=2020, title="Strategy End Year", type=input.integer, minval=2000, maxval=2025, step=1) in_time =true strategy.entry("Long", strategy.long, when=longs_on and in_time and long_entry) strategy.close("Long", when=longs_on and not shorts_on and short_entry) strategy.entry("Short", strategy.short, when=shorts_on and in_time and short_entry) strategy.close("Short", when=shorts_on and not longs_on and long_entry) //PLOTTING //color background last_entry_was_long = nz(barssince(long_entry)[1], 5000) < nz(barssince(short_entry)[1], 5000) bgcol = (longs_on and last_entry_was_long) ? color.green : (shorts_on and not last_entry_was_long) ? color.red : na bgcolor(color=bgcol, transp=90) plot((long_cond == "price x MA1" or long_cond == "MA1 x MA2") or (short_cond == "price x MA1" or short_cond == "MA1 x MA2") ? ma_1 : na, color=color.blue) plot((long_cond == "price x MA2" or long_cond == "MA1 x MA2") or (short_cond == "price x MA2" or short_cond == "MA1 x MA2") ? ma_2 : na, color=color.black) plotshape(long_entry, style=shape.triangleup, location=location.belowbar, color=color.green) plotshape(short_entry, style=shape.triangledown, location=location.abovebar, color=color.red)