
Strategi simplistik memegang adalah strategi untuk membeli cryptocurrency secara berkala untuk menambah nilai aset dengan membeli dan memegang cryptocurrency berulang kali. Strategi ini terdiri daripada tiga komponen utama: isyarat membeli secara berkala, isyarat memegang, dan isyarat keluar.
Logik asas strategi ini adalah:
Pada permulaan, isyarat pembelian dihantar untuk pembelian pertama.
Setiap kali nombor tertentu dipetik, isyarat pembelian dihantar untuk membeli lebih banyak mata wang Base dengan mata wang Kuot.
Apabila kiraan tong mencapai nilai yang ditetapkan, arahan keluar dihantar, dan kedudukan kosong diletakkan.
Apabila tiba masa untuk keluar, hantar isyarat keluar, hentikan strategi, tutup semua kedudukan.
Dengan membeli dan memegang mata wang kripto berulang kali, kesan purata kos dan peningkatan pemegang berterusan dapat dicapai.
Strategi ini mempunyai kelebihan berikut:
Anda boleh membeli mata wang kripto secara berkala, mengurangkan risiko pembelian.
Dengan membeli berulang kali, kos purata untuk memegang cryptocurrency dapat dikurangkan.
Dengan terus meningkatkan kedudukan, anda boleh memperoleh keuntungan pertumbuhan portfolio.
Anda boleh menyesuaikan masa untuk membeli dan keluar, dan ia boleh dilakukan secara automatik.
Ia mudah digunakan dan mudah difahami.
Strategi ini juga mempunyai risiko:
Risiko sistemik dalam pasaran mata wang kripto, harga mungkin turun naik secara besar-besaran.
Keluar pada masa yang tidak tepat boleh menyebabkan kerosakan yang tidak dapat dihentikan pada masa yang tepat.
Pengurusan wang yang tidak betul juga boleh menyebabkan kerugian yang tidak dapat ditanggung.
Strategi ini boleh dioptimumkan dalam beberapa aspek:
Bergantung kepada keadaan pasaran, dinamika menyesuaikan selang masa dan jumlah pembelian.
Menambah isyarat hentian untuk menghentikan kerugian apabila harga jatuh di bawah paras sokongan.
Menggabungkan lebih banyak faktor untuk menilai keadaan pasaran, pilih masa masuk dan keluar yang terbaik.
Strategi kepemilikan yang sederhana ini mencapai kesan purata kos dan nilai tambah portfolio dengan cara membeli dan memegang cryptocurrency secara berkala. Strategi kuantitatif yang agak mudah, dengan syarat menguasai kaedah penggunaannya. Dengan memperkenalkan lebih banyak pengoptimuman, strategi ini dapat dibuat lebih pintar dan menyesuaikan diri dengan perubahan persekitaran pasaran.
/*backtest
start: 2023-01-01 00:00:00
end: 2024-01-07 00:00:00
period: 1d
basePeriod: 1h
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/
// © Merdoc390
//@version=5
// The idea with this script is to use 3commas DCA bot to keep buying crypto, but not 'close the deal' which sells the crypto.
// Basic idea is to keep adding funds, which increases the buy.
// When you cancel the sale, you keep the crypto, thus HODL.
// I use this to build my positions that I short sale on Coinbase.com, so I need to cancel the deal after several candles so I can
// trade them.
// 3commas HODL DCA Bot article:
// https://3commas.io/blog/3commas-hodl-dca-bot-strategy
// This article includes the bot setup on 3Commas:
// Basicially you start the trade, then add funds to the trade, buying more crypto, then eventually cancel the deal.
// When you create the bot, you set the take profit really high, like 999%. Since it is unlikey to hit the value, it will never sell
// Credit to Irakli Gun as inspriation
// https://3commas.io/blog/3commas-hodl-dca-bot-strategy
strategy(title='HODL Simple v1', shorttitle="HODL'er",
calc_on_every_tick=false, calc_on_order_fills=true, process_orders_on_close =true,
format=format.price, precision=4, overlay=true, pyramiding=365,
currency=currency.USD, default_qty_value=10, default_qty_type=strategy.cash , initial_capital=3650,
commission_type=strategy.commission.percent, commission_value=0.1)
var startFirstDeal = true
var done = false
var dealCount = 0
var totalDealCount = 0
i_closeCount = input.int(defval=7,title="Close at Candle Count:",tooltip="How many buy candles to convert to a buy, otherwise it will remain open until end of timeframe.",group="Trade Range")
Start_date = input(defval=timestamp('2023-09-21 16:30'),title="Start Date/Time",group="Trade Range")
Finish_date = input(defval=timestamp('2023-09-21 23:05'),title="End Date/Time",group="Trade Range")
i_startBotAndDealMessage = input(defval="paste your message here",title="Message to start bot and deal", tooltip="Message for 'start bot and deal", group="3Commas",display=display.all)
i_addFundsMessage = input(defval="paste your message here",title="Message for deal add funds signal in the quote currency", tooltip="Using the quote (such as USD), to purchase more.",group="3Commas",display=display.all)
i_cancelTheDealMessage = input(defval="paste your message here",title="Message to cancel the deal",tooltip="If you paste only cancel the deal, the bot will wait until next candle to add funds.\nOption is to also paste the add funds message to also add a buy position.", group="3Commas",display=display.all)
i_cancelAndStopMessage = input(defval="paste your message here",title="Message to cancel all bot deals and stop the bot",tooltip="Paste 3c bot messagage for Cancel all and Stop Bot", group="3Commas",display=display.all)
time_cond = true
// check exit first
if not startFirstDeal and not done and dealCount < i_closeCount
strategy.close("Long")
alert(i_cancelAndStopMessage)
// log.info("Time expired, stopping bot, Total Deal Count:{0}",totalDealCount)
done := true
// check if add funds after first deal
else if time_cond and not startFirstDeal and dealCount < i_closeCount
strategy.entry("Long", strategy.long)
alert(i_addFundsMessage)
// log.info("Deal Count:{0}, totalDeals:{1}",dealCount,totalDealCount)
dealCount := dealCount + 1
totalDealCount := totalDealCount + 1
else if time_cond and startFirstDeal and dealCount <= i_closeCount
strategy.entry("Long", strategy.long)
// log.info("Start deal message, startFirst")
alert(i_startBotAndDealMessage)
startFirstDeal := false
else if time_cond and dealCount >= i_closeCount
strategy.close("Long")
alert(i_cancelTheDealMessage)
// log.info("Over Trades limit of {1}, resetting. Canceling. DealCount: {0}", dealCount, i_closeCount)
dealCount := 0
startFirstDeal := true
else if time_cond
log.error("case not covered")