
A estratégia de negociação de rastreamento de força é uma estratégia de negociação automatizada baseada na tendência de rastrear a força do mercado, combinando vários indicadores técnicos como julgamento auxiliar. A estratégia analisa a informação da linha K, julga a direção e a intensidade do capital dominante no mercado atual e, em seguida, emite um sinal de negociação em combinação com indicadores técnicos, como indicadores de preço de volume e médias móveis.
Em geral, a estratégia é adequada para a negociação de tendências de linha média e longa, capaz de capturar efetivamente as tendências do mercado, reduzir a frequência de negociação e buscar maiores lucros individuais. Além disso, após otimizar os parâmetros da estratégia, também pode ser usada para negociações de linha curta.
O núcleo da estratégia de rastreamento de força está em julgar a direção dos fundos dominantes do mercado. A estratégia monitora a volatilidade do mercado em tempo real através da computação do indicador ATR. Quando a volatilidade aumenta, a força dominante está sendo acumulada ou distribuída, a estratégia sai temporariamente do mercado, evitando o período de tempo em que a força dominante opera.
Quando a oscilação diminui, representando a acumulação ou distribuição de força dominante, a estratégia volta a entrar em jogo e julga a direção específica da força dominante. O julgamento é feito calculando a posição de pressão de suporte do mercado para ver se há sinais de ruptura. Se houver uma clara ruptura, confirma que a força dominante escolheu a direção.
Depois de determinar a direção da força principal, a estratégia também introduz vários indicadores técnicos auxiliares para verificação novamente, para evitar erros de julgamento. Em particular, os indicadores MACD, KDJ e outros são calculados para determinar se eles estão de acordo com a direção da força principal.
A estratégia só abre uma posição quando a direção principal e os indicadores auxiliares emitem sinais de equilíbrio. Isso controla efetivamente a frequência de negociação e só entra em ações com alta probabilidade.
Após a construção da posição, a estratégia de rastreamento de força acompanha a mudança de preço em tempo real e usa a expansão do valor do ATR como um sinal de parada. Isso significa que o mercado entra novamente na fase de operação de força principal e deve sair imediatamente para o dinheiro, para evitar ser encaixado.
Além disso, se o preço operar acima de um determinado intervalo, a reversão também será interrompida. Esta é uma reversão técnica normal e o controle de risco deve ser interrompido imediatamente.
A maior vantagem da estratégia de rastreamento de força reside na alta sistematização e normatização. A lógica de negociação é clara, há princípios e regras claros para cada entrada e saída, e não há transações aleatórias.
Isso torna a estratégia muito replicável, permitindo que o usuário configure aplicativos de longo prazo sem a necessidade de intervenção humana.
As estratégias incorporam mecanismos de controle de risco em vários níveis, como julgamento de força principal, verificação auxiliar e definição de linha de parada, que podem controlar eficazmente os riscos não-sistêmicos.
Concretamente, a estratégia é abrir posições apenas em situações de alta probabilidade e definir um stop loss científico, evitando, na medida do possível, a expansão dos prejuízos. Isso garante um crescimento estável do capital.
Em comparação com as estratégias de curta linha, as estratégias de rastreamento de força possuem um ciclo de posse mais longo e um lucro mais alto em cada retorno. Isso faz com que o lucro geral da estratégia seja mais estável e sustentável.
Além disso, a estratégia de acompanhar as tendências de linha média e longa capta a volatilidade das tendências, o que é particularmente evidente nas grandes tendências.
A estratégia de rastreamento de força envolve vários parâmetros, como o parâmetro ATR, o parâmetro de ruptura, o parâmetro de parada, etc. Há uma certa correlação entre esses parâmetros e é necessário testar repetidamente para encontrar a combinação ideal de parâmetros.
Se os parâmetros não forem configurados corretamente, é muito provável que isso cause problemas de frequência de negociação excessiva ou controle de risco insuficiente. Isso requer que o usuário tenha uma certa experiência em otimização de estratégias.
A estratégia de julgar a dominância e os sinais de indicador dependem da ruptura do preço para confirmar. No entanto, as operações de ruptura são propensas a ocorrência de falsas rupturas, o que pode levar a uma maior probabilidade de posição em risco.
Se uma ruptura crucial não for alcançada, pode ocorrer um grande prejuízo. Esta é a fraqueza interna da estratégia.
Algoritmos de aprendizado de máquina podem detectar automaticamente a correlação entre os parâmetros para encontrar a combinação ideal de parâmetros. Isso é muito mais eficiente do que o teste manual.
Concretamente, pode-se usar o algoritmo EnvironmentError, baseado em aprendizado de reforço de parâmetros iterativos, para maximizar os ganhos da estratégia.
Pode-se introduzir mais filtros auxiliares, como indicadores de volume de transação, indicadores de fluxo de capital, etc., com base nos indicadores existentes, para verificar três ou quatro vezes o sinal de ruptura, com maior confiabilidade.
Mas muitos filtros também podem levar a oportunidades perdidas, e é necessário equilibrar a intensidade de filtragem. Além disso, o próprio filtro também deve evitar a correlação.
Usando a estratégia de rastreamento de força em combinação com outras estratégias, pode-se aproveitar os benefícios das diferentes estratégias para alcançar o positivismo e melhorar a estabilidade geral.
Por exemplo, a fusão de estratégias de reversão de curto prazo, abrindo negociações de reversão após a ruptura, pode travar mais lucros.
A estratégia de negociação de rastreamento de força é, em geral, uma estratégia de rastreamento de tendências sistematizada recomendada. A lógica de negociação é clara, o risco é controlado e o retorno do investimento é estável e eficiente para os usuários.
No entanto, a estratégia em si também tem algumas falhas inerentes, que exigem que o usuário tenha a capacidade de otimizar os parâmetros e a integração de estratégias para obter o máximo de benefícios da estratégia. No geral, a estratégia de rastreamento de força é um produto quantitativo adequado para os amantes de estratégias com uma certa base de quantificação.
/*backtest
start: 2023-12-12 00:00:00
end: 2023-12-15 01:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//Created by frasmac2k Strategy credit to Alex Morris
//@version=5
strategy("Mechanical", shorttitle="MECH", overlay=true)
// Get the current date and time
currentYear = year
currentMonth = month
currentDay = dayofmonth
// Create a timestamp for the present date and time
currentTimestamp = timestamp(currentYear, currentMonth, currentDay)
// Define time interval for backtesting
dStart = input(timestamp('2023-07-01'), title='Set Start date', tooltip='Select a start date to run the script from')
// Define direction of strategy
direction = input.string('Forward',title='Direction', tooltip='Forward will go LONG on a Green anchor candle. Inverse will go short on a Green anchor candle and vice versa for Red candle', options=['Forward', 'Inverse'])
// Define the anchor hour as user input with a range of 0 to 23
anchorHour = input.int(11, title="Anchor Hour", tooltip='Set the hour to trade', minval=0, maxval=23)
// Define the take profit and stop loss in pips
takeProfitPips = input.int(10, title='Define TP Pips', tooltip='How many pips do you want to set TP. Choose a sensible value related to the instrument', minval=5)
stopLossPips = input.int(10,'Define SL Pips', tooltip='How many pips do you want to set SL. Choose a sensible value related to the instrument', minval=5)
// Define Tick size
tick10p = input.int(100, title='tick size', tooltip='Choose how many ticks equal 10 pips. This can vary by broker so measure 10 pips on the chart and select how many ticks that equates to. Forex is typically 100. Some instruments such as indices can be 1000', options=[100,1000])
// Declare TP/SL variables
var float takeProfit = na
var float stopLoss = na
// Calculate take profit and stop loss levels in ticks
if tick10p == 100
takeProfit := takeProfitPips * 10
stopLoss := stopLossPips * 10
if tick10p == 1000
takeProfit := takeProfitPips * 100
stopLoss := stopLossPips * 100
// Declare offset time
var int offset = na
if currentTimestamp > timestamp('2023-10-29')
offset := 4
else
offset := 5
//adjust for exchange time
anchorHour := anchorHour - offset
// Define the anchor hour as user input with a range of 0 to 23
tradeHour = anchorHour
// Define logical check for strategy date range
isStratTime = true
// Calculate the time condition for placing the order at the user-defined hour (start of the next hour)
isTradeTime = true
// Logic condition for forwards or inverse
isForward = direction == 'Forward'
isInverse = direction == 'Inverse'
// Declare entry condition variables
var bool longCondition = na
var bool shortCondition = na
// Declare and initialize variables for anchorCandle open and close prices
var float anchorOpen = na
var float anchorClose = na
var float tradeOpen = na
var float tradeClose = na
// Set logic by direction
if isForward
// Strategy logic
if isTradeTime and isStratTime
//Obtain candle open/close
anchorOpen := open
anchorClose := close
// Define entry conditions
longCondition := anchorClose > anchorOpen
shortCondition := anchorClose < anchorOpen
// Entry logic
if longCondition
strategy.entry("Long", strategy.long)
strategy.exit("Exit Long", from_entry="Long", profit=takeProfit, loss=stopLoss, comment_profit='TP', comment_loss='SL')
if shortCondition
strategy.entry("Short", strategy.short)
strategy.exit("Exit Short", from_entry="Short", profit=takeProfit, loss=stopLoss, comment_profit='TP', comment_loss='SL')
if isInverse
// Strategy logic
if isTradeTime and isStratTime
//Obtain candle open/close
anchorOpen := open
anchorClose := close
// Define entry conditions
shortCondition := anchorClose > anchorOpen
longCondition := anchorClose < anchorOpen
// Entry logic
if longCondition
strategy.entry("Long", strategy.long)
strategy.exit("Exit Long", from_entry="Long", profit=takeProfit, loss=stopLoss, comment_profit='TP', comment_loss='SL')
if shortCondition
strategy.entry("Short", strategy.short)
strategy.exit("Exit Short", from_entry="Short", profit=takeProfit, loss=stopLoss, comment_profit='TP', comment_loss='SL')
// Define the time range for the background shade
startHour = anchorHour
startMinute = 0
endHour = anchorHour
endMinute = 0
// Check if the current time is within the specified range
isInTimeRange = (hour == startHour and minute >= startMinute) or (hour == endHour and minute <= endMinute) or (hour > startHour and hour < endHour)
// Define the background color for the shade
backgroundColor = color.new(color.red, 90)
// Apply the background shade
bgcolor(isInTimeRange ? backgroundColor : na)