Os fluxos de trabalho de rotulagem com barreira tripla costumam utilizar uma constante arbitrária (0,5–1,0%) ou uma suposição de spread herdada do passado como limite min_ret. Um limite definido abaixo do custo real de transação de ida e volta faz com que o fluxo de trabalho rotule ruídos causados por custos como sinais negociáveis. O conjunto de dados rotulado, então, superestima sistematicamente a vantagem, e qualquer modelo treinado com base nessas rotulagens sofre sobreajuste a um artefato do esquema de rotulagem, em vez de se ajustar à estrutura genuína do mercado.
O TransactionCostCollector.mq5 é um script independente que resolve a etapa de coleta de dados desse problema. Ele amostra a distribuição histórica do spread, lê as taxas de swap e os diagnósticos de comissão da corretora para o símbolo do gráfico anexado e exporta tudo para um arquivo CSV estruturado. O arquivo CSV é processado pela classe Python associada, TransactionCostModel, que converte todos os custos em retornos fracionários e calcula o limiar min_ret específico do instrumento para sua chamada de rotulagem.

Ilustração em três painéis da saída do TransactionCostCollector: detalhamento dos custos intradiários por sessão (a), distribuição completa dos custos (b) e curva de percentis para seleção de min_ret (c)
O script coleta três componentes de custo para um único símbolo em uma única execução:
| Parâmetro | Padrão | Descrição |
|---|---|---|
| InpBars | 50.000 | Número de barras do histórico de spread a ser amostrado. Um valor maior produz uma distribuição mais representativa e captura mais variação da sessão. 50.000 barras no H1 cobrem aproximadamente 5,7 anos; no M15, cobrem aproximadamente 1,4 anos. Reduza se o terminal tiver histórico limitado para o símbolo. |
| InpOutputFile | (em branco) | Substitui o nome do arquivo de saída. Quando em branco (padrão), o arquivo é nomeado <SYMBOL>_costs.csv — por exemplo, EURUSD_costs.csv para o EURUSD. O arquivo é gravado em MQL5\Files\ na pasta de dados do terminal (modoFILE_WRITE | FILE_CSV ). |
O CSV utiliza uma estrutura de quatro colunas: seção, chave, valor, unidade. As seções são:
A classe complementar em Python, TransactionCostModel, carrega o CSV e calcula o min_ret para a classificação de barreira tripla:
from afml.transaction_costs import load_cost_model import pandas as pd model = load_cost_model( csv_path = "EURUSD_costs.csv", spread_percentile = "p95_pips", # conservador slippage_pips = 0.4, commission_per_lot = 7.0, # da transação de referência lot_size = 0.01, ) close = pd.read_parquet("EURUSD_H1.parquet")["close"] min_ret = model.min_ret_for_symbol( price_series = close, holding_days = 1.0, cost_multiplier = 1.5, # 1,5x ponto de equilíbrio ) print(f"min_ret = {min_ret:.6f}")
A taxa de comissão por lote não pode ser lida programaticamente em todas as corretoras. O procedimento recomendado é: abra uma operação de referência de exatamente 1,0 lote padrão em uma conta demo, leia ACCOUNT_COMMISSION_BLOCKED do terminal imediatamente após a abertura da operação e, em seguida, feche a operação. O valor bloqueado dividido por 1,0 fornece a taxa por lote. Confirme com o extrato da conta. Isso precisa ser feito uma vez por corretora.
O spread médio é dominado por períodos de baixa volatilidade: sessão asiática, consolidação durante a madrugada e condições de tendência ordenada. As entradas da estratégia, no entanto, costumam coincidir com os momentos de maior incerteza (que é quando os modelos geram sinais). Usar o spread do 95º percentil como entrada para min_ret leva em conta o ambiente de custos em condições típicas de entrada, em vez de condições médias de mercado.
Traduzido do inglês pela MetaQuotes Ltd.
Publicação original: https://www.mql5.com/en/code/73173
Institutional Harmonic Volumetric Gravity Center
Um mecanismo quantitativo de densidade de volume que utiliza a matemática da média harmônica ponderada para eliminar valores atípicos aritméticos e mapear o verdadeiro centro de gravidade da liquidez institucional.
Close Profit Positions
Encerrar posições com lucro
Heiken ashi as series
Heiken Ashi com todos os buffers configurados como série
SetSLByLoss - set Stop Loss on all open positions by target loss amount
Script para definir o Stop Loss em todas as posições abertas com base em um valor-alvo de perda na moeda da conta (por exemplo, US$ 50 por posição). Funciona com qualquer moeda de depósito e qualquer símbolo de câmbio. Verifica os níveis de stop e congelamento da corretora. A conversão de moeda é feita automaticamente.