Strategi dagangan henti untung dan henti rugi dinamik berdasarkan tiga garis negatif berturut-turut dan purata bergerak

SMA EMA
Tarikh penciptaan: 2024-05-09 16:42:35 Akhirnya diubah suai: 2024-05-09 16:42:35
Salin: 0 Bilangan klik: 627
1
fokus pada
1617
Pengikut

Strategi dagangan henti untung dan henti rugi dinamik berdasarkan tiga garis negatif berturut-turut dan purata bergerak

Gambaran keseluruhan

Strategi perdagangan ini berdasarkan bentuk tiga garis negatif berturut-turut dan sistem garis rata untuk menilai isyarat perdagangan. Apabila harga berada di atas garis rata-rata 200 hari, dan bentuk tiga garis negatif berturut-turut muncul, membuat banyak kedudukan. Strategi ini menguruskan risiko perdagangan dengan cara berhenti dan berhenti secara dinamik, dan titik berhenti dan berhenti ditentukan berdasarkan kedudukan garis rata-rata jangka pendek dan peratusan perubahan harga.

Prinsip Strategi

  1. Mengira jumlah sinaran berturut-turut, apabila terdapat sinaran berturut-turut dengan jumlah yang ditetapkan ((default 3)), ia dianggap membentuk sinyal ganda.
  2. Menggunakan dua garis rata untuk membantu menilai trend dan masa perdagangan, secara lalai menggunakan garis rata-rata 10 hari dan garis rata-rata 200 hari. Hanya pertimbangkan untuk melakukan lebih banyak apabila harga berada di atas garis rata-rata 200 hari.
  3. Tetapkan titik hentian dinamik dan titik hentian kerugian. Titik hentian adalah peratusan tertentu di atas harga pembukaan kedudukan (default 1.5%) dan titik hentian kerugian adalah peratusan tertentu di bawah harga pembukaan kedudukan (default 1%).
  4. Satu lagi syarat kedudukan yang lemah adalah perubahan kedudukan harga terhadap garis purata 10 hari. Jika banyak orang memegang kedudukan, harga jatuh ke bawah dari atas garis purata, maka kedudukan yang lemah.
  5. Strategi hanya beroperasi dalam jangka masa yang ditetapkan, berdasarkan tarikh permulaan dan tarikh akhir.

Kelebihan Strategik

  1. Gabungan bentuk harga dan sistem garis rata dapat menangkap peluang yang lebih baik.
  2. Dengan berhenti dan hentikan dinamik, risiko dan keuntungan dapat dikendalikan secara fleksibel. Hentikan terus meningkat dengan kenaikan harga, membiarkan keuntungan berlari; Hentikan kerugian mengehadkan kerugian maksimum.
  3. Menggunakan perubahan kedudukan garis purata jangka pendek sebagai isyarat kedudukan rata-rata untuk bertindak balas dengan cepat terhadap perubahan harga yang tiba-tiba.
  4. Tentukan tempoh masa perdagangan, mengelakkan perdagangan pada masa-masa istimewa seperti penutupan pasaran atau percutian, mengurangkan risiko.

Risiko Strategik

  1. Bentuk sinis berturut-turut tidak dapat menentukan sepenuhnya pembalikan trend, dan mungkin berlaku apabila harga terus meningkat selepas sinis berturut-turut, menyebabkan strategi gagal.
  2. Peratusan yang tetap untuk titik berhenti dan kehilangan mungkin tidak dapat menangani turun naik yang kuat di pasaran. Apabila trendnya kuat, titik berhenti mungkin ditetapkan terlalu rendah, menyebabkan keluar lebih awal; apabila turun naik meningkat, titik berhenti dan kehilangan mungkin terlalu dekat, menyebabkan kerugian yang kerap.
  3. Keputusan mengenai kedudukan garis rata-rata jangka pendek mungkin terlewat, terutamanya apabila harga berubah dengan cepat, dan mungkin telah terlepas masa yang terbaik untuk meletakkan kedudukan.
  4. Strategi kekurangan langkah-langkah pengurusan kedudukan dan kawalan risiko, tempat masuk dan saiz kedudukan tetap, yang boleh menyebabkan risiko perdagangan tunggal yang terlalu besar.

Arah pengoptimuman strategi

  1. Lebih banyak petunjuk teknikal boleh diperkenalkan untuk membantu penilaian, seperti MACD, RSI dan lain-lain, meningkatkan kebolehpercayaan isyarat.
  2. Mengoptimumkan cara pengiraan titik berhenti dan berhenti, seperti menggunakan ATR atau kadar turun naik untuk menyesuaikan secara dinamik, atau menggabungkan titik rintangan sokongan untuk menetapkan.
  3. Untuk isyarat kedudukan kosong, anda boleh mempertimbangkan untuk menggunakan lebih banyak syarat pengesahan, seperti perubahan jumlah transaksi, peratusan memegang kedudukan kosong, dan lain-lain, untuk mengelakkan isyarat yang salah.
  4. Memperkenalkan langkah-langkah pengurusan kedudukan dan kawalan risiko, seperti menyesuaikan saiz kedudukan setiap perdagangan mengikut baki akaun dan tahap risiko, menetapkan had risiko keseluruhan, dan sebagainya.
  5. Untuk tetapan parameter, seperti bilangan sinaran berturut-turut, kitaran purata, dan lain-lain, ujian pengoptimuman boleh dilakukan untuk mencari kombinasi parameter yang terbaik.

ringkaskan

Strategi perdagangan ini menilai peluang perdagangan yang sedang tren melalui bentuk garis negatif berturut-turut dan sistem garis rata, sambil menggunakan stop loss dan perubahan kedudukan garis rata jangka pendek untuk mengawal risiko. Strategi ini jelas dan sesuai untuk pedagang yang memahami trend jangka panjang. Tetapi strategi ini juga mempunyai beberapa batasan, seperti kebolehpercayaan isyarat, penyetempatan titik stop loss, dan pengurusan kedudukan.

Kod sumber strategi
/*backtest
start: 2023-05-09 00:00:00
end: 2024-05-08 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Estrategia de Trading", overlay=true)

// Definir el número de cierres de velas decrecientes consecutivas
var int cierres_decrecientes_consecutivos = 0
num_cierres_decrecientes = input.int(3, title="Número de cierres decrecientes", minval=1)

// Definir el porcentaje de cambio para cerrar la operación
porcentaje_cierre_arriba = input.float(1.5, title="Porcentaje de cierre arriba (%)", step=0.1)
porcentaje_cierre_abajo = input.float(1.0, title="Porcentaje de cierre abajo (%)", step=0.1)

// Definir las medias móviles para el cierre de la operación
periodos_media_movil_cierre = input.int(10, title="Períodos de la media móvil para cierre")
periodos_media_movil_200 = input.int(200, title="Períodos de la media móvil de 200")

// Definir el rango de fechas para la simulación
start_date = timestamp(2024, 1, 1, 0, 0)
end_date = timestamp(2024, 12, 31, 23, 59)

// Calcular la media móvil para el cierre de la operación
sma_cierre = ta.sma(close, periodos_media_movil_cierre)
sma_200 = ta.sma(close, periodos_media_movil_200)

// Calcular si el precio está por encima o por debajo de la media móvil para el cierre de la operación
precio_por_encima_sma_cierre = close > sma_cierre
precio_por_debajo_sma_cierre = close < sma_cierre

// Calcular si se han producido num_cierres_decrecientes consecutivos
if (ta.change(close) < 0)
    cierres_decrecientes_consecutivos := cierres_decrecientes_consecutivos + 1
else
    cierres_decrecientes_consecutivos := 0

es_cierres_consecutivos = cierres_decrecientes_consecutivos >= num_cierres_decrecientes

// Definir condiciones de entrada y salida de la estrategia dentro del rango de fechas y con el precio por encima de la SMA de 200
condicion_entrada = es_cierres_consecutivos and close > sma_200
condicion_cierre_sma = (precio_por_encima_sma_cierre[1] and not precio_por_encima_sma_cierre) or (not precio_por_encima_sma_cierre[1] and precio_por_encima_sma_cierre)

// Calcular precios de salida basados en porcentajes
precio_salida_arriba = strategy.position_avg_price * (1 + porcentaje_cierre_arriba / 100)
precio_salida_abajo = strategy.position_avg_price * (1 - porcentaje_cierre_abajo / 100)

// Ejecutar operación en largo dentro del rango de fechas y con el precio por encima de la SMA de 200
if (condicion_entrada and strategy.opentrades == 0)
    strategy.entry("Long", strategy.long)

// Cerrar operación en largo si se cumple la condición de salida por cambio en el cruce de la media móvil dentro del rango de fechas
if (strategy.position_size > 0 and condicion_cierre_sma)
    strategy.close("Long")

// Cerrar operación en largo si el precio alcanza el porcentaje de cierre arriba o abajo dentro del rango de fechas
strategy.exit("Stop Loss", "Long", limit=precio_salida_arriba, stop=precio_salida_abajo)

// Plot para visualizar la media móvil para el cierre de la operación
plot(sma_cierre, color=color.red)

// Plot para visualizar la SMA de 200
plot(sma_200, color=color.blue)