
A estratégia usa a linha média do EMA de dois períodos diferentes para determinar a reversão de tendência por meio de sua interseção, como sinal de entrada e saída. A estratégia é simples, fácil de entender e fácil de operar.
A estratégia usa a função ta.ema para calcular duas medianas EMA, uma com 10 e outra com 20 ciclos de comprimento, representando tendências de curto e longo prazo. O código julga o cruzamento de dois EMAs através de ta.crossover e ta.crossunder, fazendo mais quando o EMA de curto atravessa o EMA de longo prazo e deixando vazio quando o EMA de curto atravessa o EMA de longo prazo. Assim, usa o cruzamento de diferentes medianas EMA de ciclo para capturar o ponto de viragem da tendência.
A estratégia também usa a variável lastCrossTime para registrar o tempo do último cruzamento, para evitar que o cruzamento repetido produza transações inúteis. Cada vez que o cruzamento é efetivo, primeiro leve todas as posições atuais e, em seguida, abra a posição de acordo com a direção do cruzamento.
A estratégia é simples, clara, fácil de entender e de usar.
Usar a EMA para cruzar os pontos de reversão de tendência é uma estratégia de indicadores técnicos muito usada e eficaz.
O uso de EMAs de diferentes períodos garante a captura de grandes tendências e aumenta a sensibilidade a mudanças de curto prazo.
A configuração do Stop Loss permite controlar o risco e o lucro de uma única transação.
O uso da variável LastCrossTime para filtrar sinais duplicados evita transações inúteis.
O cruzamento da EMA é propenso a falsos sinais e existe um certo risco de erro de avaliação.
TP e SL fixos são difíceis de lidar com as mudanças do mercado e devem ser configurados com um stop loss dinâmico.
Os sistemas baseados apenas em EMAs cruzadas são propensos a causar prejuízos em situações de choque.
O impacto dos custos de transação não é considerado, mas os custos de transação, como o spread, devem ser considerados na operação.
A estratégia é aplicada principalmente em situações de tendência e pode não ser eficaz em situações de turbulência.
Pode ser melhorado por meio da otimização do stop loss, do aumento das condições de filtragem, da combinação de outros indicadores, etc. No disco rígido, o risco precisa ser rigorosamente controlado para evitar perdas individuais excessivas.
Os parâmetros de otimização do EMA podem ser testados para encontrar combinações de períodos mais adequadas.
Aumentar o julgamento de indicadores auxiliares como KDJ, MACD e outros.
Configure um stop loss dinâmico, como um stop marginal com a tendência.
Aumentar o julgamento sobre o volume de transações e considerar a admissão quando surgirem em grande quantidade.
Para julgar em combinação com outras formas gráficas, como a ruptura de pontos de resistência importantes.
Considerar o impacto de custo do disco e definir um limite razoável de stop loss.
A estratégia geral é simples e clara, usando a reversão de tendência de julgamento cruzado rápido e lento da linha de equilíbrio da EMA, em combinação com o stop loss para controlar o risco de ganhos. A estratégia é fácil de operar, mas há um certo risco de erro de julgamento no cruzamento da EMA, e é necessário otimizar ainda mais os parâmetros do indicador, e auxiliar com outros indicadores técnicos para reduzir o erro de julgamento.
/*backtest
start: 2023-10-30 00:00:00
end: 2023-11-06 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy('XXXquang', overlay=true)
// Sử dụng hàm input.int() và input.float() để tạo các trường nhập liệu với giới hạn giá trị
length1 = input.int(10, title="Length EMA Short", minval=1)
length2 = input.int(20, title="Length EMA Long", minval=1)
lotSize = input.int(1, title="Lot Size", minval=1)
takeProfitLevel = input.int(600, title="Take Profit Level", minval=1)
stopLossLevel = input.int(200, title="Stop Loss Level", minval=1)
ema1 = ta.ema(close, length1)
ema2 = ta.ema(close, length2)
var float lastCrossTime = na
if ta.crossover(ema1, ema2)
if na(lastCrossTime)
strategy.close_all()
strategy.entry('Buy Order', strategy.long, qty=lotSize)
strategy.exit('Exit Buy', 'Buy Order', profit=takeProfitLevel / syminfo.pointvalue, loss=stopLossLevel / syminfo.pointvalue)
lastCrossTime := timenow
if ta.crossunder(ema1, ema2)
if na(lastCrossTime)
strategy.close_all()
strategy.entry('Sell Order', strategy.short, qty=lotSize)
strategy.exit('Exit Sell', 'Sell Order', profit=takeProfitLevel / syminfo.pointvalue, loss=stopLossLevel / syminfo.pointvalue)
lastCrossTime := timenow
plot(ema1, title='EMA Short', color=color.new(color.blue, 0), linewidth=2)
plot(ema2, title='EMA Long', color=color.new(color.red, 0), linewidth=2)