- Quảng trường
- Brin đã thay đổi chiến lược của mình để ngăn chặn và Martin Gelder đã tăng
Brin đã thay đổi chiến lược của mình để ngăn chặn và Martin Gelder đã tăng
Tác giả:
Zer3192, Ngày: 2023-10-16 17:45:49
Tags:
//@version=4
strategy("Bollinger Bands %B Crossover", overlay=true,pyramiding = 5)
// Load Bollinger Bands %B indicator
source = input(close, title="Source")
length = input(20, minval=1, title="Length")
mult = input(2.0, minval=0.001, maxval=50, title="Multiplier")
basis = sma(source, length)
dev = mult * stdev(source, length)
upper = basis + dev
lower = basis - dev
bb = (source - lower) / (upper - lower)
// Define long and short conditions
longCondition = crossover(bb, 0)
shortCondition = crossunder(bb, 1)
// 马丁格尔策略参数
useMartin = input(true, title="使用马丁格尔倍投")
initialQty = input(0.001, title="初始仓位大小")
martinFactor = input(2, title="马丁格尔倍数")
// 止盈止损
profitTarget = input(1.5, title="止盈倍数")
stopLoss = input(0.95, title="止损倍数")
//定义触发加仓的百分比
dropPercentage=10
//计算当前持仓总成本
totalCost=strategy.position_avg_price*strategy.position_size
//计算当前持仓盈亏
profitLoss=(close-totalCost)/totalCost*100
// 买入条件满足时,产生买入信号,并设置止盈
if (longCondition)
strategy.entry("Buy", strategy.long)
if useMartin
//判断是否需要加仓
if profitLoss<=-dropPercentage and strategy.position_size >0
strategy.order("Buy1", "Buy",qty=strategy.position_size * martinFactor,when=strategy.long )
if strategy.position_size >0
strategy.exit("Take Profit/Stop Loss", "Buy", profit=strategy.position_avg_price *profitTarget )
// 卖出条件满足时,产生卖出信号,并设置止盈
if (shortCondition)
strategy.entry("Sell",strategy.short)
if useMartin
//判断是否需要加仓
if profitLoss<= -dropPercentage and strategy.position_size <0
strategy.order( "Sell2","Sell", qty=strategy.position_size * martinFactor,when=strategy.short)
if strategy.position_size <0
strategy.exit("Take Profit/Stop Loss", "Sell", profit=strategy.position_avg_price *stopLoss )
Thêm nữa