
A estratégia baseia-se na linha K de um tsunami no nível da linha solar, combinada com a análise da dinâmica em diferentes níveis de ciclo, determinando dinamicamente as forças de suporte por trás do preço atual das ações, para determinar o momento de construir uma posição de paz.
Calcular o preço de fechamento da linha K de Ashi-Tsu em diferentes níveis de ciclo. Esta é a base para o cálculo de energia dinâmica subsequente.
Calculando os preços de abertura da linha lunar e da linha diária, respectivamente, e os altos e baixos dos preços de fechamento de diferentes períodos históricos. Isso reflete a intensidade dinâmica dos preços atuais das ações em relação aos preços históricos.
A média de queda e queda de energia dinâmica das linhas lunar e solar, filtrando parte do ruído, obtém um indicador de energia dinâmica estável das linhas lunar e solar.
De acordo com o aumento e diminuição da energia dinâmica média, pode-se calcular a força de suporte do mercado que pode ser refletida pelo preço atual das ações, ou seja, o preço que remove a influência da flutuação do mercado. Esse preço pode ser visto como um limite de energia dinâmica do preço real das ações atual.
Quando o preço de fechamento é superior ao limiar de energia dinâmica, a construção de mais posições é feita mensalmente. Quando o preço de fechamento é inferior ao limiar de energia dinâmica, a perda de posição é eliminada.
A maior vantagem dessa estratégia é que ela não segue simplesmente o preço das ações, mas sim calcula a força de sustentação real com base na dinâmica por trás do preço das ações, para fazer uma posição e um stop loss. Isso pode efetivamente filtrar o ruído de situações de choque e bloquear oportunidades de alta estável.
Além disso, os dados baseados na estratégia são todos da linha K de Axiom. Esta linha K especial, por si só, pode reduzir o problema da dependência excessiva do ciclo de ligação. Portanto, a estabilidade da estratégia é melhor do que a de outras estratégias de linha K.
O maior risco desta estratégia é que a energia dinâmica é calculada com base nos preços históricos. Se houver uma mudança significativa nos fundamentos da empresa e no mercado, a representatividade dos preços históricos diminuirá, levando a distorções nos julgamentos de posição e de parada.
Além disso, a estratégia usa um ciclo mensal e diário. Isso significa que a estratégia não é muito realista e não pode reagir rapidamente a mudanças bruscas na situação. Isso traz risco de parada de perdas quando a situação muda.
Para reduzir esses riscos, pode-se considerar a introdução de dados de maior frequência, bem como o feedback em tempo real sobre os fundamentos da empresa. Ou combinar com outros sinais de transação mais subjetivos para a aceitação e otimização.
A estratégia pode ser melhorada em alguns aspectos:
A própria linha K pode ser melhorada ainda mais, como por exemplo, por meio de ajustes na configuração de peso.
Adicionar mais dados de diferentes períodos, construir um mecanismo de pontuação de energia dinâmica com média de índice, melhorar a estabilidade.
A introdução de dados de maior frequência, tais como as linhas de minutos por dia, para melhorar a atualidade da estratégia.
A Co-Activity conta com informações sobre os fundamentos da empresa, incluindo anúncios de resultados, rumores de reestruturação e outras informações.
Pode-se considerar a criação de depósitos em base mensal, aumentando a frequência diária ou semanal e o mecanismo de acumulação de depósitos.
A estratégia é, em geral, muito estável e controla o risco de forma eficaz através do rastreamento de ações. Sua maior vantagem é o uso da dinâmica por trás do preço das ações para determinar a realidade, em vez de simplesmente acompanhar o preço das ações.
/*backtest
start: 2023-01-12 00:00:00
end: 2024-01-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © FrancoPassuello
//@version=5
strategy("Heiken Ashi ADM", overlay=true)
haClose = (open + high + low + close) / 4
// prevHaOpen = line.new(na, na, na, na, width = 1)
haOpen = (open[1] + close[1]) / 2
// line.set_xy1(prevHaOpen, bar_index[1], nz(haOpen[1]))
// line.set_xy2(prevHaOpen, bar_index, haClose[1])
[monopen, _1monopen, _2monopen, _3monopen, _4monopen, _5monopen, _6monopen] = request.security(syminfo.tickerid, "M", [haOpen, haOpen[1], haOpen[2], haOpen[3], haOpen[4], haOpen[5], haOpen[6]] , barmerge.gaps_off, barmerge.lookahead_on)
[monclose, _1monclose, _3monclose, _6monclose] = request.security(syminfo.tickerid, "M", [haClose, haClose[1], haClose[3], haClose[6]] , barmerge.gaps_off, barmerge.lookahead_on)
[dayclose1, _21dayclose, _63dayclose, _126dayclose, dayclose] = request.security(syminfo.tickerid, "1D", [haClose[1], haClose[21], haClose[63], haClose[126], haClose], barmerge.gaps_off, barmerge.lookahead_on)
[dayopen1, _21dayopen, _63dayopen, _126dayopen] = request.security(syminfo.tickerid, "1D", [haOpen[1], haOpen[21], haOpen[63], haOpen[126]], barmerge.gaps_off, barmerge.lookahead_on)
get_rate_of_return(price1, price2) =>
return_ = (price1/price2 -1)*100
return_
m0 = get_rate_of_return(monclose, monopen)
m1 = get_rate_of_return(_1monclose, _1monopen)
m2 = get_rate_of_return(monclose, _2monopen)
m3 = get_rate_of_return(_1monclose, _3monopen)
m4 = get_rate_of_return(monclose, _4monopen)
m5 = get_rate_of_return(monclose, _5monopen)
m6 = get_rate_of_return(_1monclose, _6monopen)
MS = (m1 + m3 + m6)/100
CS = (m0 + m2 + m5)/100
d1 = get_rate_of_return(dayclose1, _21dayopen)
d2 = get_rate_of_return(dayclose1, _63dayopen)
d3 = get_rate_of_return(dayclose1, _126dayopen)
DS = (d1 + d2 + d3)/100
//Last (DAILY)
lastd_s_avg1 = DS/3
lastd_Approximate1 = dayclose1*(1-lastd_s_avg1)
last_approx1_d21 = lastd_Approximate1 / _21dayopen-1
last_approx1_d63 = lastd_Approximate1 / _63dayopen-1
last_approx1_d126 = lastd_Approximate1 / _126dayopen-1
lastd_s_avg2 = (last_approx1_d21 + last_approx1_d63 + last_approx1_d126) / 3
lastd_approximate2 = (dayclose1)*(1-(lastd_s_avg1 + lastd_s_avg2))
lastd_price = lastd_approximate2
//plot(lastd_price,color = color.rgb(255, 255, 255, 14), title = "Last momentum threshold")
//Last
last_s_avg1 = MS/3
last_Approximate1 = _1monclose*(1-last_s_avg1)
last_approx1_m1 = last_Approximate1 / _1monopen-1
last_approx1_m3 = last_Approximate1 / _3monopen-1
last_approx1_m6 = last_Approximate1 / _6monopen-1
last_s_avg2 = (last_approx1_m1 + last_approx1_m3 + last_approx1_m6) / 3
last_approximate2 = (_1monclose)*(1-(last_s_avg1 + last_s_avg2))
last_price = last_approximate2
Scoring_price = _1monclose*(1-CS)
plot(last_price,color = color.rgb(255, 255, 255, 14), title = "Last momentum threshold")
//plot(Scoring_price,color = color.rgb(234, 0, 255, 14), title = "Last momentum threshold")
//Long based on month close and being the first trade of the month.
var int lastClosedMonth = -1
limit_longCondition = _1monclose > last_approximate2 and (lastClosedMonth == -1 or month(time) != lastClosedMonth)
// Long based on day close and being the first trade of the month.
limit_Dlongcondition = dayclose1 > lastd_approximate2 and (lastClosedMonth == -1 or month(time) != lastClosedMonth)
// Close trade based on day close
DCloseLongCondition = dayclose1<lastd_approximate2
//Old standard Trading rules
longCondition = _1monclose > Scoring_price
MCloseLongCondition = _1monclose<Scoring_price
shortCondition = CS < 0
if (longCondition)
strategy.entry("Long", strategy.long)
if (strategy.position_size > 0 and MCloseLongCondition)
strategy.close("Long")
lastClosedMonth := month(time)