A estratégia de negociação de ponto de viragem de linha dupla é uma estratégia de negociação baseada no cruzamento de linha dupla. Ela usa duas médias móveis de diferentes parâmetros para determinar o momento de entrada e saída com base em suas voltas. A estratégia é simples, intuitiva e fácil de implementar e se aplica à negociação de linha média e longa.
A estratégia usa o preço como uma fonte de entrada de preço e calcula a média de dois parâmetros diferentes, SMA1 e SMA2. A estratégia usa o indicador de ROC para determinar o desvio da média. Quando o valor de ROC do SMA1 excede o limite positivo definido, considera-se que o SMA1 se move para cima e registra-se o sinal de SMA1 para cima. Quando o valor de ROC do SMA1 cai abaixo do limite negativo definido, considera-se que o SMA1 se move para baixo e registra-se o sinal de SMA1 para baixo.
Quando SMA1 gira para cima e a linha K SMA2 gira para baixo, gera um sinal de compra, fazendo mais; quando SMA1 gira para baixo e a linha K SMA2 gira para cima, gera um sinal de venda, fazendo vazio.
A estratégia usa dois equilíbrios para determinar a direção da negociação, um equilíbrio para confirmar o momento de entrada, e dois equilíbrios cruzados para garantir a mudança de tendência no momento de entrada, para filtrar efetivamente as brechas falsas.
O uso de duplo equilíbrio de cruzamento e de direção de julgamento pode filtrar efetivamente as falsas brechas e aumentar a precisão da entrada.
A rotação da linha média combinada com o indicador de ROC permite determinar com clareza o momento da rotação, evitando transações frequentes.
O uso de linhas médias e longas de linha dupla e média permite acompanhar a tendência principal e obter maiores lucros da tendência.
A lógica da estratégia é simples, clara e fácil de entender, adequada para iniciantes em negociação quantitativa.
Parâmetros personalizáveis, adaptam-se a diferentes ambientes de mercado, têm uma forte adaptabilidade.
O cruzamento de duas linhas equilíbrias pode produzir uma grande quantidade de falsos sinais em situações de choque, resultando em prejuízos.
Os parâmetros do ROC precisam ser otimizados com precisão, caso contrário, a mudança para a identificação terá erros e afetará o desempenho da estratégia.
Os grandes turbulências de mercado podem desencadear várias paradas e podem ser evitadas com a ampliação da amplitude de paradas.
A partir de um indicador baseado apenas na linha de equilíbrio, é difícil responder a eventos inesperados, como notícias importantes, que podem causar prejuízos.
Observe se os parâmetros são otimizados para problemas de sobre-ajuste, e o ciclo de teste deve ser longo o suficiente para incluir diferentes situações.
Optimizar os parâmetros de média móvel para encontrar a melhor combinação de períodos de média
Optimizar os parâmetros de ROC para aumentar a precisão de reconhecimento de rotação
Aumento do mecanismo de stop loss, que permite o uso de stop loss dinâmico para ultrapassar os níveis de preço personalizados
Adição de condições adicionais, como acionamento de indicadores de volume de transação, para evitar brechas falsas
Combinação com outros indicadores, como MACD, BOLL, etc., para melhorar a eficácia da decisão
Otimizar automaticamente os parâmetros usando métodos como aprendizado de máquina para se adaptar às mudanças do mercado
A estratégia de ponto de viragem de linha dupla é, em geral, uma estratégia de acompanhamento de tendências simples e práticas. Ela só requer indicadores básicos de linha dupla para ser implementada, a lógica é clara e fácil de entender, e é ideal para os iniciantes em negociação quantitativa aprenderem e praticarem.
The Dual Moving Average Turning Point strategy is a trend following strategy based on moving average crossovers. It uses two moving averages with different parameter settings and determines entry and exit points according to their turning directions. This strategy is simple and intuitive, easy to implement, and suitable for medium-to-long term trading.
The strategy uses Price as the price input source and calculates two moving averages, SMA1 and SMA2, with different parameters. It uses the ROC indicator to determine the turning directions of the moving averages. When SMA1’s ROC value exceeds the positive threshold, it is considered an upward turn of SMA1 and an upward signal is recorded. When SMA1’s ROC value breaks the negative threshold, it is considered a downward turn of SMA1 and a downward signal is recorded. The judgment logic for SMA2 is similar.
When SMA1 turns upward and the previous bar’s SMA2 turns downward, a buy signal is generated to go long. When SMA1 turns downward and the previous bar’s SMA2 turns upward, a sell signal is generated to go short.
The strategy uses the turning directions of two moving averages to determine the trading direction and the turning of one moving average to confirm entry timing. The dual moving average crossover ensures the trend has changed when entering the market, which helps avoid false breakouts.
Using dual moving average crossover and turning points can effectively filter out false breakouts and improve entry accuracy.
Combining moving average turning points with the ROC indicator can clearly identify turning points and avoid frequent trading.
Adopting medium-to-long-term dual moving averages can track the main trend and achieve sizable trend profits.
The strategy logic is simple and clear, easy to understand and implement, suitable for quant trading beginners.
Customizable parameters suit different market environments with strong adaptability.
Dual moving average crossovers may generate many false signals in ranging markets, leading to losses.
The ROC parameters need precise optimization, otherwise turn recognition will have errors, affecting strategy performance.
Large periodic ranging markets may trigger stop loss multiple times. Expanding stop loss range can avoid it.
Relying solely on moving averages, it’s hard to respond to sudden events like major news, which may lead to losses.
Note the overfitting problem in parameter optimization. Test period should be long enough to include different market conditions.
Optimize moving average parameters to find the best moving average period combination.
Optimize ROC parameters to improve turning point recognition accuracy.
Add stop loss mechanisms such as dynamic stop loss based on breaking customized price levels.
Add additional conditions like volume indicators to avoid false breakouts.
Incorporate other indicators like MACD, BOLL to improve decision making.
Use machine learning etc. to auto optimize parameters and adapt to market changes.
In summary, the Dual Moving Average Turning Point strategy is a simple and practical trend following strategy. It can be implemented with basic moving average indicators and has clear, easy-to-understand logic, making it very suitable for quant trading beginners to learn and practice. With parameter optimization and stop loss optimization, the strategy stability can be greatly improved. Combining with other auxiliary indicators can further enhance the strategy. The highly customizable strategy can be flexibly applied to different market environments and is a recommended dual moving average trading strategy.
[/trans]
/*backtest
start: 2023-09-23 00:00:00
end: 2023-10-23 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy("MA Turning Point Strategy", overlay=true)
src = input(close, title="Source")
price = request.security(syminfo.tickerid, timeframe.period, src)
ma1 = input(25, title="1st MA Length")
type1 = input("HMA", "1st MA Type", options=["SMA", "EMA", "HMA", "VWMA"])
f_hma(_src, _length)=>
_return = wma((2*wma(_src, _length/2))-wma(_src, _length), round(sqrt(_length)))
price1 = if (type1 == "SMA")
sma(price, ma1)
else
if (type1 == "EMA")
ema(price, ma1)
else
if (type1 == "VWMA")
vwma(price, ma1)
else
f_hma(price, ma1)
plot(series=price1, style=line, title="1st MA", color=blue, linewidth=2, transp=0)
lookback1 = input(1, "Lookback 1")
roc1 = roc(price1, lookback1)
ma1up = false
ma1down = false
ma2up = false
ma2down = false
ma1up := nz(ma1up[1])
ma1down := nz(ma1down[1])
ma2up := nz(ma2up[1])
ma2down := nz(ma2down[1])
trendStrength1 = input(2.5, title="Minimum slope magnitude * 100", type=float) * 0.01
if crossover(roc1, trendStrength1)
ma1up := true
ma1down := false
if crossunder(roc1, -trendStrength1)
ma1up := false
ma1down := true
longCondition = ma1up and ma1down[1]
if (longCondition)
strategy.entry("Long", strategy.long)
shortCondition = ma1down and ma1up[1]
if (shortCondition)
strategy.entry("Short", strategy.short)