
Esta estratégia baseia-se no indicador MACD para projetar uma estratégia de negociação de longo prazo que controle o risco de cada transação. Em comparação com a estratégia tradicional de flip-flop de forex, esta estratégia tem mais atenção ao controle de risco de cada transação. A estratégia limita a perda máxima possível de cada transação, calculando o preço de parada e o preço de parada alvo, definindo um tamanho razoável de posição. Isso pode controlar efetivamente a retirada e obter ganhos estáveis a longo prazo.
Esta estratégia começa por calcular a linha macd e a linha sinal do indicador MACD. Quando a linha macd quebra a linha sinal de baixo para cima, é considerado um sinal de compra. Para filtrar a falsa quebra, a estratégia requer barssince ((crossover ((macd_line, signal_line)) <= 5, ou seja, a quebra ocorreu dentro das 5 linhas K mais recentes.
Para cada transação, a estratégia calcula um preço de parada e um preço de parada razoáveis. O preço de parada é definido como o preço mais baixo das 3 linhas K mais recentes. O preço de parada é definido como o preço de compra mais o preço de parada quatro vezes a distância entre o preço de compra.
A estratégia calcula o valor de cada posição em função do risco aceitável. A estratégia define a perda máxima aceitável de cada transação como uma porcentagem do capital total, usando o parâmetro capital_risk. Em seguida, calcula o tamanho da posição em dólares com base na margem de parada.
O risco de cada transação é controlado dentro de 1% do capital total, o que permite um controle efetivo da retração. Ao mesmo tempo, a posição de parada maior permite um maior retorno.
Considere:
Esta estratégia baseia-se no indicador MACD para determinar a direção da tendência, controlar o risco em primeiro lugar, calcular posições razoáveis para negociar. A chave está no controle de risco e otimização de posições, que podem obter ganhos estáveis a longo prazo.
/*backtest
start: 2022-10-19 00:00:00
end: 2023-10-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy( "McDonalds ", shorttitle="Ur Lovin' It", initial_capital=10000, default_qty_type=strategy.cash, currency=currency.USD )
capital_risk = input( 1.0, "% capital risk per trade" ) / 100
r_exit = input( 4.0, "Take Profit in 'R'" )
wma_length = input( 150, 'WMA Bias Length' )
[macd_line, signal_line, hist ] = macd(close, 12, 26, 9)
w_line = wma( close, wma_length )
golong = barssince(crossover(macd_line, signal_line)) <= 5 and ( macd_line < 0 and signal_line < 0 ) and ( close > w_line ) and strategy.opentrades == 0
float stop = na
float tp = na
// For a stop, use a recent low
stop := golong ? lowest(low, 3)[1] : stop[1]
range = abs(close - stop)
tp := golong ? close + (r_exit * range) : tp[1]
// This is the bit that calculates how much size to use so we only lose 1% of the `strategy.equity`
how_much_willing_to_lose = strategy.equity * capital_risk
// Spread the risk across the stop range
position_size_in_usd = how_much_willing_to_lose / (range / close)
// Sized specified in base contract
position_size_in_contracts = position_size_in_usd / close
// Enter the position
if golong
strategy.entry("long", strategy.long, qty=position_size_in_contracts)
strategy.exit("long exit","long", stop=stop, limit=tp)
// experimental exit strategy
// hist_strength = hist >= 0 ? ( hist[1] < hist ? 'strong' : 'weak') : ( hist[1] < hist ? 'weak' : 'strong' )
// if hist < 0 and hist_strength == 'strong' and falling( hist, 8 )
// strategy.close("long")
plot( strategy.equity, color=strategy.equity > 10000 ? color.green : color.red, linewidth=2 )