Les ressources ont été chargées... Je charge...

Stratégie dynamique d'équilibrage avec 50% de fonds et 50% de positions

Auteur:ChaoZhang est là., Date: 2023-12-25 14:12:30 Je vous en prie.
Les étiquettes:

img

Vue d'ensemble de la stratégie

Cette stratégie équilibre dynamiquement entre 50% de fonds et 50% de positions pour contrôler le risque.

La logique de la stratégie

  1. Commencez le capital à 1 million, divisé en 50% de fonds et 50% de positions.

  2. Au cours de la période de négociation, si les fonds restants dépassent de 1,05 fois le bénéfice/perte non réalisé à chaque ouverture, utiliser 2,5% des fonds restants pour ajouter des positions.

  3. Si les bénéfices/pertes non réalisés dépassent de 1,05 fois les fonds restants, vendre des positions partielles pour rétablir le solde.

  4. Fermer toutes les positions à la fin de la période de négociation.

Les avantages

  1. Contrôle efficace des risques en équilibrant dynamiquement les fonds et les positions, en évitant d'énormes pertes dans des conditions de marché extrêmes.

  2. Facile à utiliser pour les investisseurs occupés, il suffit d'ajuster les ratios fonds/position.

  3. Paramètres personnalisables pour répondre à différents appétits de risque.

Les risques

  1. Incapable de capitaliser sur les fluctuations à court terme, potentiel de profit limité.

  2. Une longue course unilatérale peut entraîner une taille de position insuffisante.

  3. Un ajustement inapproprié des paramètres conduit à un renversement excessif des positions ou à une faible utilisation du capital.

Des possibilités d'amélioration

  1. Introduire plus de paramètres pour un contrôle plus précis des fonds/positions.

  2. Pour les positions plus importantes, il convient d'inclure la prise de stop-loss/profit.

  3. Tester différents paramètres de période de négociation pour améliorer l'adaptabilité.

Conclusion

Cette stratégie permet de contrôler les risques en équilibrant dynamiquement les fonds et les positions. Simple à mettre en œuvre par rapport aux autres stratégies. Peut être améliorée en introduisant des paramètres plus réglables et en les combinant avec d'autres concepts de stratégie.


/*backtest
start: 2023-12-17 00:00:00
end: 2023-12-18 19:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("00631L Trading Simulation", shorttitle="Sim", overlay=true, initial_capital = 1000000)

// 设置本金
capital = 1000000

// 设置购买和出售日期范围
start_date = timestamp(2020, 11, 4)
next_date = timestamp(2020, 11, 5)
sell_date = timestamp(2023, 10, 24)
end_date = timestamp(2023, 10, 25)  // 结束日期改为2023年10月25日

// 判断是否在交易期间
in_trade_period = true
// 实现的盈亏
realized_profit_loss = strategy.netprofit
plot(realized_profit_loss, title="realized_profit_loss", color=color.blue)
// 未实现的盈亏
open_profit_loss = strategy.position_size * open
plot(open_profit_loss, title="open_profit_loss", color=color.red)
// 剩余资金
remaining_funds = capital  + realized_profit_loss - (strategy.position_size * strategy.position_avg_price)
plot(remaining_funds, title="remaining_funds", color=color.yellow)
// 總權益
total_price = remaining_funds + open_profit_loss
plot(total_price, title="remaining_funds", color=color.white)
// 购买逻辑:在交易期间的每个交易日买入 daily_investment 金额的产品
first_buy = time >= start_date and time <= next_date
buy_condition = in_trade_period and dayofmonth != dayofmonth[1]
// 出售邏輯 : 在交易期间的截止日出售所有商品。
sell_all = time >= sell_date

// 在交易期間的第一日買入50%本金
if first_buy
    strategy.order("First", strategy.long, qty = capital/2/open)
// 在每个K线的开盘时进行买入

// 加碼邏輯 : 剩余资金 > 未实现的盈亏 * 1.05
add_logic = remaining_funds > open_profit_loss * 1.05
if buy_condition
    strategy.order("Buy", strategy.long, when = add_logic, qty = remaining_funds * 0.025 / open)
//

// 減碼邏輯 : 剩余资金 > 未实现的盈亏 * 1.05
sub_logic = open_profit_loss > remaining_funds * 1.05
if buy_condition
    strategy.order("Sell", strategy.short, when = sub_logic, qty = open_profit_loss * 0.025/open)
//

strategy.order("Sell_all",  strategy.short, when = sell_all, qty = strategy.position_size)

// 绘制交易期间的矩形区域
bgcolor(in_trade_period ? color.green : na, transp=90)



Plus de