Простая стратегия держателя

Автор:Чао Чжан, Дата: 2024-01-08 17:05:10
Тэги:

img

Обзор

Стратегия простого держателя - это стратегия, которая периодически покупает криптовалюты и удерживает их для достижения повышения стоимости активов.

Принцип стратегии

Основная логика стратегии заключается в следующем:

  1. Отправьте сигнал покупки в начале, чтобы совершить первую покупку.

  2. Посылать сигнал покупки каждое определенное количество свечей для покупки большей базовой валюты с использованием валюты котировки.

  3. Когда количество свечей достигнет заданного значения, отправьте приказ на закрытие позиции.

  4. Когда наступит время выхода, отправьте сигнал, чтобы остановить стратегию и закрыть все позиции.

Благодаря повторной покупке и хранению криптовалют можно достичь эффектов средней стоимости и непрерывного увеличения позиций.

Анализ преимуществ

Преимущества этой стратегии:

  1. Может периодически покупать криптовалюты, чтобы уменьшить риски покупки.

  2. Может снизить среднюю стоимость хранения криптовалют путем повторной покупки.

  3. Может получить рост прибыли портфеля путем непрерывного увеличения позиций.

  4. Настраиваемое время покупки и выхода позволяет автоматизировать.

  5. Легко управлять и легко овладеть.

Анализ рисков

Риски этой стратегии включают:

  1. Систематический риск на рынке криптовалют с потенциально огромными колебаниями цен.

  2. Неправильное время выхода может не остановить потерю своевременно.

  3. Недостаточное управление капиталом также может привести к неспособности нести убытки.

Советы по оптимизации

Следующие аспекты стратегии могут быть оптимизированы:

  1. Динамически корректировать сумму покупки и интервалы в соответствии с рыночными условиями.

  2. Добавить сигналы стоп-лосса для закрытия позиций, когда цена опускается ниже уровня поддержки.

  3. Включите больше факторов для определения оптимального времени входа и выхода.

Резюме

Стратегия Simple Holder достигает эффекта средней стоимости и роста портфеля через периодическую покупку и хранение криптовалют. Это относительно простая количественная стратегия после освоения использования.


/*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")



Больше