Strategi ini menggunakan persilangan dua purata bergerak untuk menentukan trend pasaran. Apabila purata bergerak jangka pendek melintasi di atas purata bergerak jangka panjang, ia membuka kedudukan panjang, dan sebaliknya untuk kedudukan pendek. Pada masa yang sama, strategi ini menggunakan pelbagai tahap keuntungan, sebahagian menutup kedudukan apabila harga mencapai tahap keuntungan yang telah ditetapkan, dengan itu memaksimumkan pulangan dan mengawal risiko.
Inti strategi ini adalah menggunakan purata bergerak dari tempoh yang berbeza untuk menangkap trend pasaran. Apabila purata bergerak jangka pendek melintasi di atas purata bergerak jangka panjang, ia menunjukkan bahawa pasaran mungkin memasuki trend menaik, dan kedudukan panjang dibuka. Sebaliknya, apabila purata bergerak jangka pendek melintasi di bawah purata bergerak jangka panjang, ia menunjukkan penurunan yang berpotensi, dan kedudukan pendek dibuka. Sementara itu, strategi menetapkan pelbagai tahap keuntungan, dan apabila harga mencapai tahap ini, ia menutup kedudukan dalam kumpulan mengikut nisbah kedudukan yang telah ditetapkan. Ini membolehkan keuntungan yang lebih besar apabila trend berterusan sambil juga menguruskan risiko.
Strategi Crossover Moving Average dengan Multiple Take Profits adalah strategi trend yang mudah dan berkesan yang dapat menangkap lebih banyak keuntungan dalam trend sambil menguruskan risiko melalui pengambilan keuntungan pelbagai peringkat. Walau bagaimanapun, strategi ini juga mempunyai beberapa batasan dan risiko, dan perlu dioptimumkan dan ditingkatkan berdasarkan keadaan pasaran tertentu dan keperluan pengguna. Secara keseluruhan, strategi ini boleh berfungsi sebagai alat perdagangan yang berkesan, tetapi tidak boleh dipercayai sepenuhnya dan perlu digabungkan dengan kaedah analisis lain dan langkah pengurusan risiko untuk hasil yang optimum.
/*backtest start: 2023-04-20 00:00:00 end: 2024-04-25 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © ValdesTradingBots //Follow Us for More Insights and Updates! //Join our community and be the first to know about our new releases and trading tips //Facebook Group: Join our vibrant community at https://www.facebook.com/groups/707469081464839/ //Twitter: Follow us for quick updates and insights at https://twitter.com/ValdesBots //We're excited to have you with us! //@version=5 strategy("Valdes Trading Bots MA Cross with Multiple Take Profits", overlay=true) shortPeriod = input(18, title="Short MA Period") longPeriod = input(32, title="Long MA Period") // Take Profit Settings tp1Enabled = input(true, title="Enable Take Profit 1") tp1Perc = input(15, title="Take Profit 1 (%)") / 100 tp1QtyPerc = input(25, title="Take Profit 1 Qty (%)") / 100 tp2Enabled = input(true, title="Enable Take Profit 2") tp2Perc = input(30, title="Take Profit 2 (%)") / 100 tp2QtyPerc = input(25, title="Take Profit 2 Qty (%)") / 100 tp3Enabled = input(true, title="Enable Take Profit 3") tp3Perc = input(45, title="Take Profit 3 (%)") / 100 tp3QtyPerc = input(25, title="Take Profit 3 Qty (%)") / 100 tp4Enabled = input(true, title="Enable Take Profit 4") tp4Perc = input(60, title="Take Profit 4 (%)") / 100 tp4QtyPerc = input(25, title="Take Profit 4 Qty (%)") / 100 shortMA = ta.sma(close, shortPeriod) longMA = ta.sma(close, longPeriod) // Determine the trend uptrend = shortMA > longMA downtrend = shortMA < longMA // Assign candle colors based on the trend candleColor = uptrend ? color.rgb(9, 112, 0) : downtrend ? color.rgb(255, 0, 0) : color.new(color.blue, 0) plot(shortMA, title="Short MA", color=color.rgb(9, 112, 0)) plot(longMA, title="Long MA", color=color.rgb(255, 0, 0)) // Create a cross signal longCross = ta.crossover(shortMA, longMA) shortCross = ta.crossunder(shortMA, longMA) // Strategy entry if (longCross) strategy.entry("Long", strategy.long) if (shortCross) strategy.entry("Short", strategy.short) // Strategy take profit if (tp1Enabled and strategy.position_size > 0) strategy.exit("TP1 Long", "Long", qty_percent=tp1QtyPerc, limit=strategy.position_avg_price * (1 + tp1Perc)) if (tp1Enabled and strategy.position_size < 0) strategy.exit("TP1 Short", "Short", qty_percent=tp1QtyPerc, limit=strategy.position_avg_price * (1 - tp1Perc)) if (tp2Enabled and strategy.position_size > 0) strategy.exit("TP2 Long", "Long", qty_percent=tp2QtyPerc, limit=strategy.position_avg_price * (1 + tp2Perc)) if (tp2Enabled and strategy.position_size < 0) strategy.exit("TP2 Short", "Short", qty_percent=tp2QtyPerc, limit=strategy.position_avg_price * (1 - tp2Perc)) if (tp3Enabled and strategy.position_size > 0) strategy.exit("TP3 Long", "Long", qty_percent=tp3QtyPerc, limit=strategy.position_avg_price * (1 + tp3Perc)) if (tp3Enabled and strategy.position_size < 0) strategy.exit("TP3 Short", "Short", qty_percent=tp3QtyPerc, limit=strategy.position_avg_price * (1 - tp3Perc)) if (tp4Enabled and strategy.position_size > 0) strategy.exit("TP4 Long", "Long", qty_percent=tp4QtyPerc, limit=strategy.position_avg_price * (1 + tp4Perc)) if (tp4Enabled and strategy.position_size < 0) strategy.exit("TP4 Short", "Short", qty_percent=tp4QtyPerc, limit=strategy.position_avg_price * (1 - tp4Perc)) // Plotting the signals on the chart plotshape(series=longCross, title="Long Cross", location=location.belowbar, color=color.rgb(9, 112, 0), style=shape.triangleup, size=size.small) plotshape(series=shortCross, title="Short Cross", location=location.abovebar, color=color.rgb(255, 0, 0), style=shape.triangledown, size=size.small) // Apply candle color barcolor(candleColor)