
A idéia central desta estratégia é usar o valor de parada de perda de entrada para definir um número razoável de pontos de parada de perda e gerenciar o risco e o lucro de cada transação.
A estratégia primeiro configura um sinal de entrada aleatório, fazendo mais quando o SMA14 passa pelo SMA28 e fazendo zero quando o SMA14 passa pelo SMA28.
Após a entrada, a estratégia usa a função moneyToSLPoints para calcular o número de pontos de parada correspondente de acordo com o montante de perda de entrada, e também o número de pontos de parada. Assim, é possível definir o limite de parada de perda baseado no valor em dólares.
Por exemplo, se a entrada for feita em mais 100 mãos, cada ponto vale 10 dólares e o stop loss é de 100 dólares, então o ponto de stop loss é 100/10/100 = 0,1 ponto.
Finalmente, use a estratégia.exit para definir o ponto de saída do stop loss. Desenhe o gráfico da linha de stop loss e da linha de stop stop como referência de inicialização.
Esta estratégia baseada no preço de parada de perda, a maior vantagem é que o parâmetro de configuração é intuitivo, pode ver intuitivamente a relação entre risco e ganho, para a seleção de parâmetros.
Além disso, em comparação com os pontos de parada, o stop loss em dólares permite um melhor controle da abertura de risco real. Quando a volatilidade do mercado aumenta, o stop loss em dólares protege melhor os fundos.
A estratégia de stop loss também traz riscos:
Se o ponto de parada é muito largo, é fácil de ser bloqueado. Se a distância de parada for muito longa, a probabilidade de reversão da linha curta é maior. É fácil de ser bloqueada e não pode ser bloqueada.
É difícil lucrar se o ponto de paragem estiver muito próximo. Se o ponto de paragem estiver muito próximo, a operação unilateral normal não pode ser alcançada, é difícil lucrar.
É necessário escolher um contrato com um valor razoável. Se for escolhido um contrato com um valor de ponto muito grande, como o petróleo, então o mesmo dólar é interrompido, o número de pontos correspondente será muito pequeno e será facilmente extraído na flutuação do mercado. Isso requer uma escolha razoável do valor do ponto.
A estratégia pode ser otimizada em vários aspectos:
Os sinais de entrada podem ser otimizados, por exemplo, com opções de combinação de tendências, volatilidade e estacionalidade para um melhor momento de entrada.
Pode-se escolher a percentagem de stop loss adequada de acordo com a variedade. Por exemplo, as mercadorias podem ter um stop loss mais flexível.
Pode ser combinado com a taxa de flutuação, com a liberação apropriada do stop loss quando a flutuação aumenta; com o aperto apropriado do stop loss quando a flutuação diminui.
Pode-se escolher uma estratégia de stop loss diferente de acordo com o horário do dia de negociação. Por exemplo, o tempo de negociação dos EUA é restrito ao stop loss, reduzindo a probabilidade de ser colocado.
Esta estratégia tem como parâmetro o valor em dólares, e permite um intuitivo função de parada de perda. A vantagem da estratégia é que a escolha de parâmetros e o controle de fundos são intuitivos, a desvantagem é que é fácil de ser manipulado e difícil de lucrar. Podemos melhorar o tempo de entrada, a otimização dos parâmetros de parada de perda, a escolha de contratos, etc., para tornar a estratégia mais rentá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)