Assista a como baixar robôs de negociação gratuitos
Encontre-nos em Facebook!
Participe de nossa página de fãs
Script interessante?
Coloque um link para ele, e permita que outras pessoas também o avaliem
Você gostou do script?
Avalie seu funcionamento no terminal MetaTrader 5
Bibliotecas

CGoldSymbol - find the broker's gold and size the position correctly on it - biblioteca para MetaTrader 5

Petr Kostal
Petr Kostal
Petr Kostal — algorithmic trading developer, Czech Republic.
I trade on live accounts myself, so I build EAs the way I'd want to run them.
What I build:
• Expert Advisors and indicators for MetaTrader 4 and 5 (MQL4 / MQL5)
| Portuguese English Русский 中文 Español Deutsch 日本語 한국어 Français Italiano Türkçe
Visualizações:
16
Avaliação:
(3)
Publicado:
Freelance MQL5 Precisa de um robô ou indicador baseado nesse código? Solicite-o no Freelance Ir para Freelance

O ouro é o instrumento sobre o qual as corretoras quase não chegam a um consenso. O símbolo pode ser XAUUSD, GOLD, XAUUSD.m, XAUUSDpro ou GOLD#. Um contrato pode corresponder a 100 onças, a 10 ou a uma. O preço pode ter duas ou três casas decimais. Um EA que calcula o tamanho do lote com base em uma configuração fixa de “100 onças, dois dígitos” não está apenas um pouco errado na corretora seguinte — ele está errado por um fator de dez, na direção que esvazia a conta.

Essa classe consulta o terminal em vez de fazer suposições.

Detecção. O Detect() percorre todos os símbolos oferecidos pela conta e classifica os nomes; assim, XAUUSD tem prioridade sobre XAUUSD.m, que tem prioridade sobre uma correspondência aproximada, enquanto prata, platina e paládio são excluídos de imediato — XAGUSD nunca deve ser priorizado em uma busca por ouro. Um símbolo que já esteja no Market Watch recebe um pequeno bônus. Se sua corretora usar algo incomum, Attach("YOURNAME") ignora a busca.

Especificação. ContractSize(), Digits(), Point(), TickSize(), TickValueLoss(), MinLot(), MaxLot(), LotStep(), StopsLevel() e FreezeLevel() vêm diretamente do terminal para esse símbolo.

Dinheiro. LossForDistance(lots, distance) indica quanto custa um movimento desfavorável a você na moeda da conta. LotForRisk(riskMoney, distance) é o inverso e o que realmente importa: ela faz a conversão por meio de SYMBOL_TRADE_TICK_VALUE_LOSS, de modo que permanece correta tanto para um contrato de 10 onças quanto para uma conta denominada em euros; em seguida, arredonda o resultado para baixo, de acordo com o passo de volume da corretora e dentro de seus valores mínimo e máximo. Ela retorna zero em vez de um lote mínimo implícito quando até mesmo o menor volume representaria um risco maior do que o permitido — um caso em que a maioria dos códigos de dimensionamento erra ao arredondar para cima.

Diagnósticos. O Attach() coleta avisos para um tamanho de contrato que não seja 100, um número incomum de dígitos, um valor de tick que o terminal reporta como zero e um nível de stop diferente de zero. O PrintReport() imprime toda a especificação com um exemplo prático, o que geralmente é a maneira mais rápida de descobrir por que uma estratégia se comporta de maneira diferente em duas corretoras.

Em uma conta real com um contrato de 100 onças, um saldo em euros e um stop de 1.500 pontos, 1% de 10.000 EUR resulta em 0,07 lotes, arriscando 90,42 EUR. A mesma operação de compra em um contrato de 10 onças resulta em 0,70 lotes, e em um contrato de uma onça, 7,00 lotes. Mesmo risco, mesmo stop, uma diferença de cem vezes no volume — que é exatamente o que uma constante codificada fixamente erra.

O pacote inclui o GoldSymbolDemo.mq5, um script que detecta o símbolo do ouro, gera o relatório e converte uma porcentagem do saldo em tamanho de lote para várias distâncias de stop. Execute-o em qualquer gráfico para ver como realmente funciona o ouro da sua corretora.

A classe não abre nenhuma operação nem modifica nenhuma posição. Ela apenas responde a perguntas.

O mesmo risco e o mesmo stop em três contratos diferentes de ouro — uma diferença de cem vezes no tamanho do lote

Traduzido do inglês pela MetaQuotes Ltd.
Publicação original: https://www.mql5.com/en/code/77067

Trade Excursion Report: MFE and MAE of every closed trade, to CSV Trade Excursion Report: MFE and MAE of every closed trade, to CSV

Exporta uma linha CSV por operação encerrada com os números que um extrato bancário não apresenta: o melhor lucro não realizado que a operação apresentou (MFE), a pior perda não realizada que ela suportou (MAE), quanto do MFE foi efetivamente mantido, quantas barras ela abrangeu e por quanto tempo foi mantida. A mesma métrica do indicador Trade Excursion, gravada em um arquivo em vez de exibida graficamente, pois as perguntas que valem a pena fazer sobre esses dados são aquelas que um gráfico não consegue responder: a taxa de captura depende da hora de entrada? As operações que eu fecho antecipadamente são as que eu mantenho por mais tempo? As operações com prejuízo às segundas-feiras atingem um MAE diferente das de sexta-feira? Basta uma tabela dinâmica para responder a essas perguntas, uma vez que o arquivo CSV esteja disponível. A saída é separada por ponto-e-vírgula com uma linha de cabeçalho, no formato MQL5\Files; abre em qualquer planilha. Limite da medição: as excursões são calculadas a partir das máximas e mínimas das barras no período de tempo escolhido; o trajeto dentro de uma barra é desconhecido. A coluna de barras informa a resolução obtida por cada operação, e o resumo conta as operações de barra única separadamente, em vez de calcular a média delas.

SessionReopenEA SessionReopenEA

O ouro apresenta uma pausa diária de manutenção na CME. A primeira hora após essa pausa, o preço sobe mais do que o esperado pelo acaso, em todos os anos civis de uma amostra de 11 anos — enquanto todas as outras horas do dia apresentam movimento estável. Uma operação por sessão, um stop do lado do servidor escalonado pela volatilidade, sem média móvel nem estratégia de grade. Então, meu modelo de custo acabou se revelando errado. Um backtest com ticks reais mostrou que o custo real de ida e volta na reabertura é de cerca de 60 pontos, e não os 19 que minha pesquisa havia calculado — o campo de spread da barra M1 é um resumo por barra e subestima o valor em aproximadamente três vezes. Reexecutando os 11 anos com o custo corrigido: +3,34 bps, t 7,40, 59,3% de ganhos -> +1,60 bps, t 3,42, 50,8% de ganhos A vantagem persiste, com menos da metade de sua força original. Esse segundo número é o valor real. O que não é: cerca de +3,3% ao ano com drawdown de 4,6%, aproximadamente um ano em cada nove com resultado negativo. Com 0,01 lotes, isso equivale a ~130 por ano — um número que mede o tamanho da posição, não a estratégia.

OHLC Reality Check - at what stop distance does your backtest start lying? OHLC Reality Check - at what stop distance does your backtest start lying?

Abre uma operação virtual entre colchetes em cada barra de M1, simula-a com base no histórico real de ticks e relata, para uma série de distâncias de stop, com que frequência a modelagem OHLC de 1 minuto resultaria em uma avaliação incorreta da operação.

Accelerator Oscillator (AC) Accelerator Oscillator (AC)

O Indicador Acceleration/Deceleration (Aceleração/Desaceleração ou AC) mede a aceleração e a desaceleração da força motriz atual do mercado.