Tambahkan secara bertahap ke strategi terobosan rata-rata bergerak


Tanggal Pembuatan: 2024-02-05 14:09:14 Akhirnya memodifikasi: 2024-02-05 14:09:14
menyalin: 0 Jumlah klik: 660
1
fokus pada
1617
Pengikut

Tambahkan secara bertahap ke strategi terobosan rata-rata bergerak

Ringkasan

Strategi ini menggunakan metode kenaikan posisi bertahap untuk menilai arah perdagangan berdasarkan perbandingan harga penutupan dengan harga penutupan hari sebelumnya. Ketika dinilai sebagai peluang bullish, akan dilakukan peningkatan posisi bertahap beberapa kali; Ketika dinilai sebagai peluang bearish, akan dilakukan peningkatan posisi bertahap beberapa kali. Jumlah kenaikan posisi dapat diatur melalui parameter.

Prinsip Strategi

  1. Perbandingan harga penutupan K-line saat ini dengan harga penutupan K-line sebelumnya[1], jika close > close[1], maka pertimbangkan untuk melihat peluang, set longCondition=1; jika close < close[1], yang dinilai sebagai peluang penurunan, set shortCondition=1。

  2. Dalam periode waktu yang diizinkan untuk berdagang, jika longCondition = 1, maka posisi akan meningkat secara bertahap; jika shortCondition = 1, maka posisi akan menurun secara bertahap.

  3. Jumlah kali pemasukan diatur oleh parameter pyramiding, dapat dipilih 1 sampai 5 kali pemasukan, default 4 kali.

  4. Setiap kali Anda melakukan penambahan, Anda juga akan mengatur kondisi perlindungan, dan Anda akan segera berhenti kehilangan jika situasi berubah.

  5. Opsional untuk mengekspor sinyal perdagangan ke berbagai antarmuka perdagangan, seperti toast, telegram, dll.

Strategi ini terutama mempertimbangkan keuntungan dari strategi breakout dan strategi linear, dengan mengambil langkah demi langkah ketika bullish atau bearish, untuk memantau tren dan mengendalikan risiko.

Analisis Keunggulan

  1. “Saya tidak tahu apa-apa tentang itu, tapi saya pikir itu adalah salah satu hal yang paling penting”.

  2. Fleksibilitas dalam penimbunan

  3. Pilihan antarmuka transaksi yang berbeda, tipe kuantitas yang luas

  4. Ada Stop Loss Mechanism, Ada Risiko yang Dapat Dikendalikan

  5. Fungsi penyaringan waktu untuk menghindari sinyal yang salah

Analisis risiko

  1. Parameter yang tidak tepat dapat menyebabkan peningkatan kerugian

  2. Masalah jaringan dapat menyebabkan kerusakan yang tidak dapat dihentikan secara tepat waktu.

  3. Parameter harus disesuaikan dengan varietas yang berbeda

  4. Stop loss yang tepat waktu untuk mengunci keuntungan

Solusi:

  1. Adaptasi jumlah penambahan posisi, default 4 kali

  2. Periksa koneksi jaringan

  3. Parameter disesuaikan dengan karakteristik varietas

  4. Tetapkan Stop Loss

Arah optimasi

  1. Menambahkan lebih banyak indikator dapat dipertimbangkan untuk menilai kekuatan sinyal.

  2. Dapat menguji efek optimasi parameter dari varietas yang berbeda

  3. Parameter optimasi algoritma pembelajaran mesin dapat dimasukkan

  4. Mengoptimalkan mekanisme manajemen risiko

Meringkaskan

Strategi ini menggabungkan keuntungan dari trend tracking dan pengendalian risiko. Strategi ini digunakan untuk melacak tren secara bertahap, dengan mengadaptasi frekuensi kenaikan untuk mengendalikan risiko. Strategi ini juga menggabungkan fitur seperti penyaringan periode waktu untuk mengendalikan sinyal yang salah.

Kode Sumber Strategi
/*backtest
start: 2024-01-05 00:00:00
end: 2024-02-04 00:00:00
period: 3h
basePeriod: 15m
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/
// © torresbitmex

//@version=5
strategy("torres_strategy_real_test_v1.0", process_orders_on_close=true, overlay=true, initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_value=0.03, calc_on_order_fills=false, pyramiding=4)

in_trade(int start_time, int end_time) =>    
    allowedToTrade = (time>=start_time) and (time<=end_time)
    if barstate.islastconfirmedhistory
        var myLine = line(na)
        line.delete(myLine)
        myLine := line.new(start_time, low, start_time, high, xloc=xloc.bar_time, color = color.rgb(255, 153, 0, 50), width = 3, extend = extend.both, style = line.style_dashed)
    allowedToTrade

// 매매시간세팅
start_time = input(timestamp("31 Jan 2024 00:00 +0900"), title="매매 시작", group='매매 시간세팅')
end_time = input(timestamp("31 Dec 2030 00:00 +0900"), title="매매 종료", group='매매 시간세팅')
start_trade = true
bgcolor(start_trade ? color.new(color.gray, 90)   : color(na))


var bool Alarm_TVExtbot = false
var bool Alarm_Alert = false

bot_mode = input.string(title='봇선택', defval = "POA", options = ["TVEXTBOT", "POA"], group = "봇선택", inline = '1')
if bot_mode == "TVEXTBOT"
    Alarm_TVExtbot := true
else if bot_mode == "POA"
    Alarm_Alert := true
else
    Alarm_TVExtbot := false
    Alarm_Alert := false

// 계정정보
account = input.string(title='계정', defval='아무거나입력', inline='1', group='계정정보')
token = input.string(title='TVExtBot 인증키', defval='', inline='1', group='계정정보')

mul_input = input.float(4, minval=1, maxval=5, step=1, title="분할진입수", group='진입 세팅', inline='1')
// 진입주문메세지입력
buyOrderid = input.string(title='롱 진입1', defval='', group='진입주문 메세지입력', inline='2')
buyOrderid2 = input.string(title='롱 진입2', defval='', group='진입주문 메세지입력', inline='3')
buyOrderid3 = input.string(title='롱 진입3', defval='', group='진입주문 메세지입력', inline='4')
buyOrderid4 = input.string(title='롱 진입4', defval='', group='진입주문 메세지입력', inline='5')
buyOrderid5 = input.string(title='롱 진입5', defval='', group='진입주문 메세지입력', inline='6')
sellOrderid = input.string(title='숏 진입1', defval='', group='진입주문 메세지입력', inline='2')
sellOrderid2 = input.string(title='숏 진입2', defval='', group='진입주문 메세지입력', inline='3')
sellOrderid3 = input.string(title='숏 진입3', defval='', group='진입주문 메세지입력', inline='4')
sellOrderid4 = input.string(title='숏 진입4', defval='', group='진입주문 메세지입력', inline='5')
sellOrderid5 = input.string(title='숏 진입5', defval='', group='진입주문 메세지입력', inline='6')

// 종료주문메세지입력
buycloseOrderid = input.string(title='롱 전체종료', defval='', group='종료주문 메세지입력', inline='1')
sellcloseOrderid = input.string(title='숏 전체종료', defval='', group='종료주문 메세지입력', inline='1')

longCondition = 0, shortCondition = 0

if(close[1] < close)
    longCondition := 1
else
    longCondition := 0
if(close[1] > close)
    shortCondition := 1
else
    shortCondition := 0

if start_trade
    if Alarm_Alert
        if strategy.position_size == 0
            if (longCondition == 1)
                strategy.entry("buy1", strategy.long, alert_message = buyOrderid)

            if (shortCondition == 1)
                strategy.entry("sell1", strategy.short, alert_message = sellOrderid)

        if strategy.position_size > 0
            if (longCondition == 1)
                if (strategy.opentrades == 1) and (mul_input == 2 or mul_input == 3 or mul_input == 4 or mul_input == 5)
                    strategy.entry("buy2", strategy.long, alert_message = buyOrderid2)  
                if (strategy.opentrades == 2) and (mul_input == 3 or mul_input == 4 or mul_input == 5)
                    strategy.entry("buy3", strategy.long, alert_message = buyOrderid3)  
                if (strategy.opentrades == 3) and (mul_input == 4 or mul_input == 5)
                    strategy.entry("buy4", strategy.long, alert_message = buyOrderid4)  
                if (strategy.opentrades == 4) and (mul_input == 5)
                    strategy.entry("buy5", strategy.long, alert_message = buyOrderid5)  

        if strategy.position_size < 0
            if (shortCondition == 1)
                if (strategy.opentrades == 1) and (mul_input == 2 or mul_input == 3 or mul_input == 4 or mul_input == 5)
                    strategy.entry("sell2", strategy.short, alert_message = sellOrderid2)  
                if (strategy.opentrades == 2) and (mul_input == 3 or mul_input == 4 or mul_input == 5)
                    strategy.entry("sell3", strategy.short, alert_message = sellOrderid3)  
                if (strategy.opentrades == 3) and (mul_input == 4 or mul_input == 5)
                    strategy.entry("sell4", strategy.short, alert_message = sellOrderid4)
                if (strategy.opentrades == 4) and (mul_input == 5)
                    strategy.entry("sell5", strategy.short, alert_message = sellOrderid5)

        if (longCondition == 1 and strategy.position_size > 0)
            if mul_input == 1 and strategy.opentrades == 1
                strategy.close_all(comment='롱전체종료', alert_message = buycloseOrderid)
            if mul_input == 2 and strategy.opentrades == 2
                strategy.close_all(comment='롱전체종료', alert_message = buycloseOrderid)
            if mul_input == 3 and strategy.opentrades == 3
                strategy.close_all(comment='롱전체종료', alert_message = buycloseOrderid)
            if mul_input == 4 and strategy.opentrades == 4
                strategy.close_all(comment='롱전체종료', alert_message = buycloseOrderid)
            if mul_input == 5 and strategy.opentrades == 5
                strategy.close_all(comment='롱전체종료', alert_message = buycloseOrderid)
        if (shortCondition == 1 and strategy.position_size < 0)
            if mul_input == 1 and strategy.opentrades == 1
                strategy.close_all(comment='숏전체종료', alert_message = sellcloseOrderid)
            if mul_input == 2 and strategy.opentrades == 2
                strategy.close_all(comment='숏전체종료', alert_message = sellcloseOrderid)
            if mul_input == 3 and strategy.opentrades == 3
                strategy.close_all(comment='숏전체종료', alert_message = sellcloseOrderid)
            if mul_input == 4 and strategy.opentrades == 4
                strategy.close_all(comment='숏전체종료', alert_message = sellcloseOrderid)
            if mul_input == 5 and strategy.opentrades == 5
                strategy.close_all(comment='숏전체종료', alert_message = sellcloseOrderid)
    else if Alarm_TVExtbot
        if strategy.position_size == 0
            if (longCondition == 1)
                strategy.entry("buy1", strategy.long, alert_message = '롱 1차 진입 📈📈 TVM:{"orderid":"' + buyOrderid + '","memo":"' + account + '","token":"' + token + '"}:MVT')

            if (shortCondition == 1)
                strategy.entry("sell1", strategy.short, alert_message = '숏 1차 진입 📉📉 TVM:{"orderid":"' + sellOrderid + '","memo":"' + account + '","token":"' + token + '"}:MVT')

        if strategy.position_size > 0
            if (longCondition == 1)
                if (strategy.opentrades == 1) and (mul_input == 2 or mul_input == 3 or mul_input == 4 or mul_input == 5)
                    strategy.entry("buy2", strategy.long, alert_message = '롱 2차 진입 📈📈 TVM:{"orderid":"' + buyOrderid2 + '","memo":"' + account + '","token":"' + token + '"}:MVT')  
                if (strategy.opentrades == 2) and (mul_input == 3 or mul_input == 4 or mul_input == 5)
                    strategy.entry("buy3", strategy.long, alert_message = '롱 3차 진입 📈📈 TVM:{"orderid":"' + buyOrderid3 + '","memo":"' + account + '","token":"' + token + '"}:MVT')  
                if (strategy.opentrades == 3) and (mul_input == 4 or mul_input == 5)
                    strategy.entry("buy4", strategy.long, alert_message = '롱 4차 진입 📈📈 TVM:{"orderid":"' + buyOrderid4 + '","memo":"' + account + '","token":"' + token + '"}:MVT')  
                if (strategy.opentrades == 4) and (mul_input == 5)
                    strategy.entry("buy5", strategy.long, alert_message = '롱 5차 진입 📈📈 TVM:{"orderid":"' + buyOrderid5 + '","memo":"' + account + '","token":"' + token + '"}:MVT') 

        if strategy.position_size < 0
            if (shortCondition == 1)
                if (strategy.opentrades == 1) and (mul_input == 2 or mul_input == 3 or mul_input == 4 or mul_input == 5)
                    strategy.entry("sell2", strategy.short, alert_message = '숏 2차 진입 📉📉 TVM:{"orderid":"' + sellOrderid2 + '","memo":"' + account + '","token":"' + token + '"}:MVT')  
                if (strategy.opentrades == 2) and (mul_input == 3 or mul_input == 4 or mul_input == 5)
                    strategy.entry("sell3", strategy.short, alert_message = '숏 3차 진입 📉📉 TVM:{"orderid":"' + sellOrderid3 + '","memo":"' + account + '","token":"' + token + '"}:MVT')  
                if (strategy.opentrades == 3) and (mul_input == 4 or mul_input == 5)
                    strategy.entry("sell4", strategy.short, alert_message = '숏 4차 진입 📉📉 TVM:{"orderid":"' + sellOrderid4 + '","memo":"' + account + '","token":"' + token + '"}:MVT')
                if (strategy.opentrades == 4) and (mul_input == 5)
                    strategy.entry("sell5", strategy.short, alert_message = '숏 5차 진입 📉📉 TVM:{"orderid":"' + sellOrderid5 + '","memo":"' + account + '","token":"' + token + '"}:MVT')
        
        if (longCondition == 1 and strategy.position_size > 0)
            if mul_input == 1 and strategy.opentrades == 1
                strategy.close_all(comment='롱전체종료', alert_message = '롱 종료 📈⛔TVM:{"orderid":"' + buycloseOrderid + '","memo":"' + account + '","token":"' + token + '"}:MVT')
            if mul_input == 2 and strategy.opentrades == 2
                strategy.close_all(comment='롱전체종료', alert_message = '롱 종료 📈⛔TVM:{"orderid":"' + buycloseOrderid + '","memo":"' + account + '","token":"' + token + '"}:MVT')
            if mul_input == 3 and strategy.opentrades == 3
                strategy.close_all(comment='롱전체종료', alert_message = '롱 종료 📈⛔TVM:{"orderid":"' + buycloseOrderid + '","memo":"' + account + '","token":"' + token + '"}:MVT')
            if mul_input == 4 and strategy.opentrades == 4
                strategy.close_all(comment='롱전체종료', alert_message = '롱 종료 📈⛔TVM:{"orderid":"' + buycloseOrderid + '","memo":"' + account + '","token":"' + token + '"}:MVT')
            if mul_input == 5 and strategy.opentrades == 5
                strategy.close_all(comment='롱전체종료', alert_message = '롱 종료 📈⛔TVM:{"orderid":"' + buycloseOrderid + '","memo":"' + account + '","token":"' + token + '"}:MVT')            
        if (shortCondition == 1 and strategy.position_size < 0)
            if mul_input == 1 and strategy.opentrades == 1
                strategy.close_all(comment='숏전체종료', alert_message = '숏 종료 📉⛔TVM:{"orderid":"' + sellcloseOrderid + '","memo":"' + account + '","token":"' + token + '"}:MVT')
            if mul_input == 2 and strategy.opentrades == 2
                strategy.close_all(comment='숏전체종료', alert_message = '숏 종료 📉⛔TVM:{"orderid":"' + sellcloseOrderid + '","memo":"' + account + '","token":"' + token + '"}:MVT')
            if mul_input == 3 and strategy.opentrades == 3
                strategy.close_all(comment='숏전체종료', alert_message = '숏 종료 📉⛔TVM:{"orderid":"' + sellcloseOrderid + '","memo":"' + account + '","token":"' + token + '"}:MVT')
            if mul_input == 4 and strategy.opentrades == 4
                strategy.close_all(comment='숏전체종료', alert_message = '숏 종료 📉⛔TVM:{"orderid":"' + sellcloseOrderid + '","memo":"' + account + '","token":"' + token + '"}:MVT')
            if mul_input == 5 and strategy.opentrades == 5
                strategy.close_all(comment='숏전체종료', alert_message = '숏 종료 📉⛔TVM:{"orderid":"' + sellcloseOrderid + '","memo":"' + account + '","token":"' + token + '"}:MVT')