Discussão do artigo "Análise angular dos movimentos de preço: um modelo híbrido de previsão dos mercados financeiros" - página 2

 

Mais uma vez, os camundongos choraram, esfaquearam, fizeram cocô, mas continuaram persistentemente a comer o cacto! ;)

Aqui está um modelo de Gann mais ou menos finalizado para MT4, o código está aberto.

https://disk.yandex.ru/d/7YhmKzcqttnQnQ

Com a configuração correta de tudo o que o TS descreveu, é possível ver com antecedência de algumas horas que a tendência ou a correção está chegando ao fim. Além disso, o momento do fim da tendência pode ser calculado com antecedência.

Como configurar corretamente, cada um sabe por si mesmo.

P.S. - Gunn tem tudo em seus trabalhos (matemática de modelos), você não encontrará ou inventará nada novo, 2x2 sempre será 4. É melhor se aprofundar no estudo do material de origem.

Gann_Box_144_test_FULL_NULL_NEN_SQH4-----.mq4
Gann_Box_144_test_FULL_NULL_NEN_SQH4-----.mq4
  • disk.yandex.ru
Посмотреть и скачать с Яндекс Диска
 

ouro

Há outra confirmação no padrão de que a tendência estava desaparecendo e que valia a pena esperar por uma reação.

 
Não há proteção contra o caso de `copy_rates_range` retornar `None`. Se o símbolo/intervalo de tempo/histórico não estiver disponível, `mt5.copy_rates_range` retorna `None`, e `pd.DataFrame(None)` irá gerar um erro sem informações úteis.
O parâmetro `shuffle=True` em `train_test_split` causa vazamento de dados. Cada linha de característica compartilha 14 de seus 15 valores de `angle_j` com a linha vizinha (janelas rolantes com grande sobreposição) e os dados estão ordenados cronologicamente. A reorganização espalha janelas quase duplicadas entre os conjuntos de treinamento e teste, de modo que a precisão/RMSE relatadas parecerão muito melhores do que o desempenho real do modelo fora da amostra.
Há um descompasso de “off-by-one” entre a janela de característica e seu rótulo, tanto em `prepare_features` quanto na lógica (duplicada) em `backtest_signals`: `window = filtered_df.iloc[i-lookback:i]` abrange as barras de i-lookback … i-1, mas o alvo é lido a partir de filtered_df.iloc[i]['future_direction_24'] / future_change_pct_24 — o que descreve o movimento da barra i (não i-1) até i+24. Portanto, current_price e todas as características derivadas da janela são ancoradas uma barra atrás do que realmente está sendo previsto, durante todo o treinamento e o backtest.
O `predict_future_movement` não se ancora da mesma forma. Ele usa `angular_df.tail(lookback)` e trata a última barra dessa janela como o “preço atual” para o sinal em tempo real — mas, conforme o ponto 3, o modelo foi treinado com o “preço atual” uma barra antes da âncora do rótulo verdadeiro. As previsões em tempo real e os rótulos de treinamento não são calculados seguindo a mesma convenção.
Possível divisão por zero em `create_angular_features`: se `time_range` (`tempo máximo − tempo mínimo`) for 0 (por exemplo, carimbos de data/hora duplicados ou inválidos), `scale_factor` torna-se inf/nan e se propaga para todos os ângulos.
Formato de retorno de CatBoostClassifier.predict() — dependendo da versão instalada do catboost, isso pode ser retornado como (n, 1) em vez de (n,). Ele é alimentado diretamente no accuracy_score/classification_report sem verificação de reformatação, portanto, vale a pena verificar em relação à versão que acabar sendo instalada.
Observação menor: as chamadas no estilo figsize=(750/100, 750/200) produzem dimensões em polegadas não inteiras (7,5×3,75; 7,5×6,0; 7,5×5,0) — não há falha, é apenas uma forma estranha de expressar o tamanho da figura.

Arquivos anexados: