Strategi ini menggunakan kemiringan regresi linier untuk mengidentifikasi kondisi pasar yang berbeda (positif atau negatif). Strategi ini dapat mengukur arah dan intensitas tren pasar dengan menghitung kemiringan regresi linier dari harga penutupan dalam jangka waktu tertentu. Ketika kemiringan lebih besar dari suatu titik terendah, pasar dianggap bullish, strategi memasuki posisi multihead; Ketika kemiringan kurang dari titik terendah negatif, pasar dianggap bullish, strategi memasuki posisi kosong.
Prinsip inti dari strategi ini adalah menggunakan kemiringan regresi linier untuk mengidentifikasi keadaan pasar. Dengan melakukan regresi linier terhadap harga penutupan dalam jangka waktu tertentu, garis yang paling sesuai dapat diperoleh. Keliringan garis ini mencerminkan arah dan kekuatan tren harga secara keseluruhan dalam jangka waktu tersebut. Keliringan positif menunjukkan bahwa harga sedang dalam tren naik, semakin besar kemiringan, semakin kuat tren naiknya; Keliringan negatif menunjukkan bahwa harga sedang dalam tren turun, semakin kecil kemiringan, semakin kuat tren turunnya.
Strategi identifikasi status pasar dinamis berdasarkan kemiringan kemiringan linier untuk menilai kondisi pasar dengan menghitung kemiringan linier harga dan kemudian membuat keputusan perdagangan yang sesuai. Strategi ini logisnya jelas, perhitungannya sederhana, dan dapat secara efektif menangkap tren utama pasar. Namun, dalam pasar yang bergolak mungkin terjadi perdagangan yang sering terjadi, dan lebih sensitif terhadap pilihan parameter.
/*backtest
start: 2023-05-22 00:00:00
end: 2024-05-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"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/
// © tmalvao
//@version=5
strategy("Minha estratégia", overlay=true, margin_long=100, margin_short=100)
// Função para calcular o slope (inclinação) com base na média móvel simples (SMA)
slope_length = input(20, title="Slope Length")
sma_length = input(50, title="SMA Length")
slope_threshold = input.float(0.1, title="Slope Threshold")
sma = ta.sma(close, sma_length)
// Calculando o slope (inclinação)
var float slope = na
if (not na(close[slope_length - 1]))
slope := (close - close[slope_length]) / slope_length
// Identificação dos regimes de mercado com base no slope
bullish_market = slope > slope_threshold
bearish_market = slope < -slope_threshold
// Condições de entrada e saída para mercados bullish e bearish
if (bullish_market)
strategy.entry("Long", strategy.long)
if (bearish_market)
strategy.entry("Short", strategy.short)
// Saída das posições
exit_condition = ta.crossover(close, sma) or ta.crossunder(close, sma)
if (exit_condition)
strategy.close("Long")
strategy.close("Short")
// Exibir a inclinação em uma janela separada
slope_plot = plot(slope, title="Slope", color=color.blue)
hline(0, "Zero Line", color=color.gray)