A ideia central desta estratégia é usar os valores de stop loss e take profit de entrada para definir níveis razoáveis de stop loss e take profit tick, para gerenciar o risco e a recompensa de cada negociação.
A estratégia define primeiro sinais de entrada aleatórios, indo longo quando o SMA14 cruza o SMA28 e indo curto quando o SMA14 cruza o SMA28.
Após a entrada, a estratégia usa a função moneyToSLPoints para calcular o nível do tick de stop loss com base na entrada do valor do stop loss em dólares. Da mesma forma, também calcula o nível do tick de take profit. Isso implementa o stop loss e take profit com base nos valores em dólares.
Por exemplo, se for longo 100 contratos com cada tick no valor de US $ 10, e a perda de parada é definida em US $ 100, então o nível de tick de parada de perda seria calculado como 100/10/100 = 0,1 ticks.
Finalmente.strategy.exitA linha de stop loss e take profit também é traçada para fins de depuração.
A maior vantagem desta estratégia de stop loss e take profit baseada no preço é que os parâmetros são intuitivos.
Além disso, as paradas de valor em dólares podem controlar melhor a exposição ao risco real em comparação com as paradas fixas quando a volatilidade do mercado muda.
Há alguns riscos com esta estratégia de stop loss e take profit:
Se a distância de parada for muito grande, as reversões de curto prazo se tornam prováveis e podem atrapalhar o comércio.
Se a distância de lucro for muito pequena, seria difícil para as tendências unilaterais normais alcançá-la, tornando os lucros improváveis.
Se um contrato de alto valor de tique como o petróleo bruto for usado, o mesmo dólar stop loss se traduziria em tiques muito pequenos, que podem ser facilmente interrompidos pelo ruído.
Algumas formas de melhorar esta estratégia:
O sinal de entrada pode ser reforçado combinando melhor a tendência, a volatilidade, a sazonalidade, etc., com as entradas de tempo.
As percentagens de stop/profit adequadas podem ser escolhidas com base em diferentes produtos.
As paradas podem adaptar-se à volatilidade, ampliando-se quando a volatilidade aumenta e apertando-se quando a volatilidade cai.
Diferentes abordagens de stop/profit podem ser usadas para diferentes sessões de negociação.
Esta estratégia implementa stop loss intuitivo e take profit com base em quantias em dólares. Suas vantagens são parâmetros intuitivos e controle de capital. As desvantagens são a facilidade de ser pego em reversões e perdendo lucros. Pode ser melhorado por melhorar as entradas, otimizar paradas / alvos, escolher melhores produtos, etc. para torná-lo mais estável.
/*backtest start: 2023-11-15 00:00:00 end: 2023-11-22 00:00:00 period: 10m basePeriod: 1m 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/ // © adolgov // @description // //@version=4 strategy("Stop loss and Take Profit in $$ example", overlay=true) // random entry condition longCondition = crossover(sma(close, 14), sma(close, 28)) if (longCondition) strategy.entry("My Long Entry Id", strategy.long) shortCondition = crossunder(sma(close, 14), sma(close, 28)) if (shortCondition) strategy.entry("My Short Entry Id", strategy.short) moneyToSLPoints(money) => strategy.position_size !=0 ? (money / syminfo.pointvalue / abs(strategy.position_size)) / syminfo.mintick : na p = moneyToSLPoints(input(200, title = "Take Profit $$")) l = moneyToSLPoints(input(100, title = "Stop Loss $$")) strategy.exit("x", profit = p, loss = l) // debug plots for visualize SL & TP levels pointsToPrice(pp) => na(pp) ? na : strategy.position_avg_price + pp * sign(strategy.position_size) * syminfo.mintick pp = plot(pointsToPrice(p), style = plot.style_linebr ) lp = plot(pointsToPrice(-l), style = plot.style_linebr ) avg = plot( strategy.position_avg_price, style = plot.style_linebr ) fill(pp, avg, color = color.green) fill(avg, lp, color = color.red)