Strategi keluar dari berbagai persentase keuntungan


Tanggal Pembuatan: 2023-12-01 15:22:29 Akhirnya memodifikasi: 2023-12-01 15:22:29
menyalin: 0 Jumlah klik: 639
1
fokus pada
1619
Pengikut

Strategi keluar dari berbagai persentase keuntungan

Ringkasan

Strategi ini memiliki fungsi untuk mengatur beberapa persentase stop loss exits. Strategi ini pertama-tama menilai kondisi panjang dan pendek, dan masuk dengan banyak waktu kosong. Kemudian mengubah persentase menjadi poin harga melalui fungsi percentAsPoints yang disesuaikan. Program ini mengatur 4 exit sesuai dengan persentase stop loss yang disetel sebesar 1%, 2%, 3% dan 4%, dan juga menetapkan 2% stop loss exit.

Prinsip Strategi

Strategi ini terutama dinilai melalui perpotongan multi-lubang dari sma rata-rata. Secara khusus, ketika garis cepat sma ((14) melewati garis lambat sma ((28) akan masuk lebih banyak; ketika garis cepat sma ((14) melewati garis lambat sma ((28) akan masuk kosong.

Jadi, bagaimana cara mengatur beberapa titik keluar dari persentase? Di sini, kita menggunakan fungsi percentAsPoints yang dapat kita gunakan untuk mengubah persentase menjadi titik harga, dengan logika sebagai berikut:

percentAsPoints(pcnt) => 
    strategy.position_size != 0 ? round(pcnt / 100 * strategy.position_avg_price / syminfo.mintick) : float(na)

Fungsi ini digunakan untuk mendapatkan poin harga dengan persentase perkalian dengan harga rata-rata kepemilikan dan kemudian dibagi dengan harga minimum yang dipindahkan jika jumlah kepemilikan tidak sama dengan 0. Jika kepemilikan adalah 0, maka akan dikembalikan na.

Dengan fungsi ini kita dapat dengan mudah mengubah persentase menjadi poin. Kemudian program akan mengikuti pengaturan 1%, 2%, 3% dan 4% stop, dan menetapkan 4 exit:

lossPnt = percentAsPoints(2)

strategy.exit("x1", qty_percent = 25, profit = percentAsPoints(1), loss = lossPnt)  

strategy.exit("x2", qty_percent = 25, profit = percentAsPoints(2), loss = lossPnt)

strategy.exit("x3", qty_percent = 25, profit = percentAsPoints(3), loss = lossPnt)

strategy.exit("x4", profit = percentAsPoints(4), loss = lossPnt)  

Pada saat yang sama, semua exit menggunakan stop loss 2% yang umum. Dengan demikian, beberapa persentase stop loss akan tercapai.

Analisis Keunggulan

Strategi ini memiliki beberapa keuntungan:

  1. Anda dapat melakukan penundaan sesuai dengan departemen dan menghindari kehilangan kesempatan untuk mendapatkan lebih banyak uang. Secara umum, semakin besar penundaan, semakin besar risikonya, strategi ini dapat menyeimbangkan risiko dan keuntungan.

  2. Batch stop loss dapat mengembalikan modal, mengurangi risiko. Misalnya, mengatur 25% dari batch, ketika keuntungan mencapai 1%, dapat mengambil kembali modal 14, posisi berikutnya adalah berdasarkan keuntungan operasi.

  3. Hal ini dilakukan untuk mencegah terjadinya kerugian akibat kondisi yang tidak biasa.

  4. Kode yang sederhana, jelas, mudah dipahami, mudah diubah dan dioptimalkan. Fungsi khusus mengubah persentase menjadi poin, dan beberapa baris kode dapat diatur dengan beberapa titik.

Analisis risiko

Strategi ini juga memiliki beberapa risiko:

  1. Stop loss persentase mudah terbentuk oscillasi lateral, harga bergoyang-goyang di sekitar harga stop loss. Ini sering memicu stop loss, meningkatkan frekuensi perdagangan dan beban biaya.

  2. Penghentian batch meningkatkan jumlah transaksi dan beban biaya. Jika biaya terlalu tinggi, maka sebagian dari keuntungan dari penghentian akan dikompensasi.

  3. Pengaturan titik tolak yang tidak tepat juga dapat mempengaruhi tingkat pengembalian. Jika pengaturan terlalu konservatif, sulit untuk mendapatkan keuntungan yang memuaskan; dan pengaturan terlalu radikal, risiko terlalu besar.

  4. Stop loss persentasenya tetap, tanpa mempertimbangkan volatilitas dan tren pasar. Stop loss harus diturunkan dalam kondisi goyah, dan stop loss harus ditingkatkan dalam kondisi tren.

Arah optimasi

Mengingat risiko yang disebutkan di atas, optimasi dapat dilakukan dalam beberapa hal berikut:

  1. Optimalkan strategi stop loss agar dapat menyesuaikan diri secara otomatis dengan fluktuasi dan tren pasar. Sebagai contoh, penambahan stop loss ATR, pengetatan stop loss pada saat getaran, pelepasan stop loss pada saat tren.

  2. Mengoptimalkan proporsi dan amplitudo batch-stop, untuk mencapai kombinasi optimal dari risiko dan keuntungan. Tambahkan fungsi optimasi parameter untuk menemukan parameter optimal.

  3. Kurangi jumlah stop loss dan hindari perdagangan yang terlalu sering. Misalnya, atur zona penanggulangan harga yang hanya akan berhenti setelah melampaui batas tertentu.

  4. Mempertimbangkan faktor biaya, atau mengoptimalkan stop-loss margin sesuai dengan biaya biaya.

  5. Menggunakan daftar daftar stop . Menggunakan daftar daftar stop . Menggunakan daftar stop . Menggunakan daftar stop .

Meringkaskan

Strategi ini mencapai efek dari beberapa persen stop loss, dengan pengaturan empat stop loss exits sebesar 1%, 2%, 3% dan 4%, yang dapat dihentikan pada setiap shift, sementara stop loss sebesar 2% untuk mencegah kerugian besar dalam situasi yang tidak normal. Strategi ini dapat menyeimbangkan risiko keuntungan dan mencegah kehilangan peluang untuk mendapatkan lebih banyak uang.

Kode Sumber Strategi
/*backtest
start: 2023-10-31 00:00:00
end: 2023-11-30 00:00:00
period: 3h
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/
// © adolgov

//@version=4
strategy("Multiple %% profit exits example", overlay=false, default_qty_value = 10)

longCondition = crossover(sma(close, 14), sma(close, 28))
if (longCondition)
    strategy.entry("My Long Entry Id", strategy.long)

shortCondition = crossunder(sma(close, 14), sma(close, 28))
if (shortCondition)
    strategy.entry("My Short Entry Id", strategy.short)

percentAsPoints(pcnt) =>
    strategy.position_size != 0 ? round(pcnt / 100 * strategy.position_avg_price / syminfo.mintick) : float(na)

lossPnt = percentAsPoints(2)

strategy.exit("x1", qty_percent = 25, profit = percentAsPoints(1), loss = lossPnt)
strategy.exit("x2", qty_percent = 25, profit = percentAsPoints(2), loss = lossPnt)
strategy.exit("x3", qty_percent = 25, profit = percentAsPoints(3), loss = lossPnt)
strategy.exit("x4", profit = percentAsPoints(4), loss = lossPnt)

profitPercent(price) =>
    posSign = strategy.position_size > 0 ? 1 : strategy.position_size < 0 ? -1 : 0
    (price - strategy.position_avg_price) / strategy.position_avg_price * posSign * 100

p1 = plot(profitPercent(high), style=plot.style_linebr, title = "open profit % upper bound")
p2 = plot(profitPercent(low), style=plot.style_linebr, title = "open profit % lower bound")
fill(p1, p2, color = color.red)