
Esta estratégia é baseada na nova alta de dois anos e na média móvel das ações como única forma de cálculo. Um sinal de compra é gerado quando o preço da ação retorna para a média móvel do índice de 13 dias após a criação de uma nova alta de dois anos.
A lógica central desta estratégia baseia-se no seguinte método de cálculo único:
Quando os preços das ações atingem o seu valor mais alto em dois anos, um ponto de alta de curto prazo é formado. Este é um ponto de preço mais crítico.
Quando o preço cai deste novo pico e volta para a média móvel do índice de 13 dias, é uma melhor oportunidade de compra. Esta é uma característica central do preço.
Além disso, quando o sinal de compra é emitido, o preço das ações deve estar na faixa de 10% do novo preço de alta de dois anos, não muito longe. E deve ser abaixo da linha 13 e acima da linha 21, o que garante a escolha do momento da compra.
Para as posições detidas, se o preço cair 5% abaixo da linha de 21 dias ou 20% abaixo de um novo máximo de dois anos, o limite de lucro é interrompido.
É uma estratégia de ruptura de longo prazo, com as seguintes vantagens:
O preço único de alta de dois anos pode ser usado para avaliar a possibilidade de uma potencial reversão.
A média móvel do índice de 13 dias serve como base para a entrada no mercado, filtrando oscilações e determinando o momento mais forte.
O único método de cálculo é usar as características do preço para emitir sinais, evitando pressupostos subjetivos.
A maioria dos lucros podem ser bloqueados com o devido cuidado com o stop loss.
A estratégia também apresenta alguns riscos, principalmente:
Pode ocorrer um reencaminhamento profundo, que não pode ser totalmente interrompido. Neste momento, é necessário avaliar o ambiente geral para determinar se o dano foi interrompido.
Em situações de grandes falhas durante a noite, não é possível parar o prejuízo perfeitamente. Isso requer uma flexibilização apropriada da amplitude de parada de prejuízo como resposta.
O efeito da oscilação do filtro da linha 13 pode não ser ideal, gerando muitos sinais errados. Neste momento, pode ser apropriadamente prolongado para a linha 21.
A nova descrição do ponto de viragem de tendência pode não ser muito eficaz e pode ser considerada em combinação com outros indicadores.
A estratégia ainda tem espaço para otimização:
A introdução de outras ferramentas para avaliar o ambiente pode evitar a necessidade de manter posições.
Aumentar a capacidade de julgamento, como os indicadores de quantidade de energia, para evitar ainda mais erros na faixa de vibração.
Otimizar os parâmetros das médias móveis para melhor capturar as características dos preços.
Otimização dinâmica dos novos parâmetros de alta de preços de dois anos usando métodos de aprendizagem de máquina para tornar a estratégia mais flexível.
A estratégia é uma abordagem única de longo prazo. O ponto-chave é usar o preço de alta de dois anos para julgar e usar a média móvel de 13 dias como base de filtragem e entrada. A estratégia tem algumas vantagens, mas também há espaço para otimização e vale a pena explorar ainda mais.
/*backtest
start: 2023-12-26 00:00:00
end: 2024-01-25 00:00:00
period: 1h
basePeriod: 15m
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/
// © Part Timer
//This script accepts from and to date parameter for backtesting.
//This script generates white arrow for each buying signal
//@version=4
strategy("AMRS_LongOnly_PartTimer", overlay = true)
//i_endTime = input(defval = timestamp("02 Jun 2021 15:30 +0000"), title = "End Time", type=input.time)
StartYear=input(defval = 2000, title ="Start Year", type=input.integer)
StartMonth=input(defval = 01, title ="Start Month", type=input.integer)
StartDate=input(defval = 01, title ="Start Date", type=input.integer)
endYear=input(defval = 2021, title ="End Year", type=input.integer)
endMonth=input(defval = 06, title ="End Month", type=input.integer)
endDate=input(defval = 03, title ="End Date", type=input.integer)
ema11=ema(close,11)
ema13=ema(close,13)
ema21=ema(close,21)
afterStartDate = true
//g=bar_index==1
//ath()=>
//a=0.0
//a:=g ? high : high>a[1] ? high:a[1]
//a = security(syminfo.tickerid, 'M', ath(),lookahead=barmerge.lookahead_on)
newHigh = (high > highest(high,504)[1])
//plot down arrows whenever it's a new high
plotshape(newHigh, style=shape.triangleup, location=location.abovebar, color=color.green, size=size.tiny)
b=highest(high,504)[1]
VarChk=((b-ema13)/b)*100
TrigLow = (low <= ema13) and (low >= ema21) and (VarChk <= 10)
plotshape(TrigLow, style=shape.triangleup, location=location.belowbar, color=color.white, size=size.tiny)
ExitPrice=(ema21 - (ema21*0.05))
DrawPrice=(b - (b*0.20))
stopprice=0.0
if (close <= ExitPrice)
stopprice := ExitPrice
if (close <= DrawPrice)
stopprice := DrawPrice
if (TrigLow and afterStartDate)
strategy.entry("Long", strategy.long)
strategy.exit("exit","Long", stop=stopprice)
//beforeEndDate = (time < i_endTime)
beforeEndDate = (time >= timestamp(syminfo.timezone,endYear, endMonth, endDate, 0, 0))
if (beforeEndDate)
strategy.close_all()