Пример
Ao executar um backtest em cruzamentos, o testador extrai não apenas o símbolo principal, mas também um símbolo auxiliar, que permite converter a moeda de lucro do símbolo principal na moeda da conta. A extração do símbolo auxiliar, a geração de seus ticks e a sincronização com o símbolo principal consomem recursos de computação preciosos (e tempo) nos modos de execução única e, especialmente, de otimização. Entretanto, essa precisão é quase sempre desnecessária. Portanto, eu gostaria de contornar essa obsessão/imperfeição do testador do MetaTrader 5. No MetaTrader 4 é fácil fazer isso - existe a possibilidade de alterar a moeda da conta diretamente no testador. O MetaTrader 5 não tem essa opção.
O script de demonstração mostra uma tentativa de contornar essa limitação do testador - para remover cálculos desnecessários. Para fazer isso, é criada uma cópia do símbolo para backtest, mas a moeda de lucro é definida como igual à moeda da conta. Ou seja, não haverá necessidade de reconverter os resultados da negociação. E o lucro será realmente calculado em pips, o que pode ser muito claro em algumas situações.
Funciona!
E essa é a maneira mais fácil de fazer o testador trabalhar de forma mais rápida e lógica.
ZЫ Eu me apressei. O novo cruzamento conta corretamente - ele não converte o lucro. Mas, por alguma razão, ele arrasta o major com ele quando não é usado em nenhum outro lugar
2017.09.04 14:46:43.062 Core 1 EURCHF_custom: generate 975389 ticks in 0:00:00.063, passed to tester 3210 ticks 2017.09.04 14:46:43.062 Core 1 EURUSD: generate 979976 ticks in 0:00:00.062, passed to tester 8696 ticks
O código do script foi ligeiramente editado. Nas linhas :
const SYMBOL Symb(_Symbol + PostFix); // Criou um símbolo
Symb = _Symbol; // Copia todas as propriedades e o histórico de barras do símbolo principal - clone.
Substitui _Symbol por "SBER".
Executei o script no gráfico da ação VDSB.
Depois de executar o script, o gráfico SBER_custom foi aberto e, em vez das barras SBER, foram exibidas as barras da ação VDSB. Isso não é lógico. Eu esperava ver as barras SBER..... no gráfico
Durante a execução dessa linha Symb = "SBER"; por algum motivo, é criado um objeto com o valor Name="VDSB", ou seja, com o nome do símbolo no qual o script é executado.
Infelizmente, não consegui corrigir esse erro. Você poderia corrigir o código?
Infelizmente, não consegui corrigir esse erro. Você poderia corrigir o código?
Até mesmo a execução do script sem alterações no Metaquotes-Demo "SBER" é suficiente para ver que o resultado não é o esperado.
Descobri que o CustomRatesReplace não funciona corretamente para alguns caracteres (parece ser para todos os caracteres não-Forex), portanto, os desenvolvedores precisam corrigir o erro.
Até mesmo a execução do script sem alterações no Metaquotes-Demo "SBER" é suficiente para ver que o resultado não é o esperado.
Descobri que o CustomRatesReplace não funciona corretamente para alguns símbolos (parece ser para todos os símbolos não-Forex), portanto, os desenvolvedores precisam corrigir o erro.
Executei-o em uma conta BCS real. O script original no gráfico SBER funciona. O gráfico SBER_custom com cotações SBER é exibido. O que significa o fato de a função CustomRatesReplace não funcionar corretamente? Se necessário, posso explicar como criar uma conta real no BCS com saldo zero.
Eu o executei em uma conta BCS real. O script original funciona no gráfico SBER. O gráfico SBER_custom com cotações SBER é aberto. O que significa que a função CustomRatesReplace não está funcionando corretamente? Se necessário, posso explicar como criar uma conta real no BCS com saldo zero.
Obrigado, e eu tenho um erro! Na linha 126 do Symbol.mqh
// return(this.CloneProperties() && (this.CloneHistory() != -1)); // Was return(this.CloneProperties(Symb) && (this.CloneHistory(Symb) != -1)); // Stahl
Outro cenário de uso de símbolos personalizados (não necessariamente com a ajuda dessa biblioteca).
É possível automatizar totalmente o backtest regular do Expert Advisor em dados históricos recentes e transferir os resultados do teste para o Expert Advisor de combate para sincronizar a imagem real com o testador. Isso permite realizar essa lógica de negociação sem escrever seu próprio testador.
testador de estratégia (MT4) até o trabalho em uma conta real.
Meu raciocínio:
No testador, o Expert Advisor funciona não apenas em condições ideais de negociação, mas, na verdade, em outro modo - no modo de tempo real, ou seja, por um tick ele consegue calcular o TS, enviar uma ordem e obter uma resposta, mas quando é realmente usado em uma conta de negociação não é assim. Acontece que temos dois robôs diferentes : um em tempo real e o outro não. Enviar/modificar uma ordem (mesmo que seja uma!) para uma conta real = ping + tempo de execução, etc. = no máximo 100-500ms e, ao mesmo tempo, os ticks estão chegando e precisam ser contados - e nós estamos parados, esperando.... e então entramos no fluxo aleatoriamente (não sei para onde o preço foi durante esse tempo em relação às nossas médias de ticks. + devemos ter perdido alguns dos ticks mais rápidos e, via de regra, os mais importantes). Acontece que , no final, pode não ter sobrado nada de nossa estratégia, que usamos no testador.
É por isso que, depois de pensar sobre isso, cheguei à seguinte conclusão:
- No modo de combate, a lógica de negociação no Expert Advisor é desligada e ele funciona, de fato, como uma ferramenta de cópia.
- O sistema de negociação é transferido para o indicador e ele gera comandos para abertura e fechamento, e não espera que o Expert Advisor execute esses comandos, mas simplesmente executa o TS incorporado nele em condições ideais, quase como em um testador. Até onde sei, o indicador não deve perder ticks, embora eu duvide que isso seja tecnicamente possível, mas pelo menos deve perdê-los menos do que o Expert Advisor, que tem esse recurso inerente e descrito na documentação. + Mesmo devido à separação dos erros de cálculo do TC, deve haver menos erros porque não há interrupções para quaisquer operações secundárias à lógica do TC.
Outra possibilidade de usar esse esquema:
Uma versão de demonstração gratuita do Expert Advisor do Mercado é obtida e perseguida no testador em cotações novas; a copiadora obtém dados do resultado do testador. Dessa forma, a versão paga não é necessária.
Talvez seja necessário proibir o backtest dos Expert Advisors do Mercado em símbolos personalizados....
No código, há uma linha como esta
const int Size = ::CopyRates(Symb, PERIOD_M1, 0, ::Bars(Symb, PERIOD_M1), Rates);
Não verifiquei seu script, mas estou escrevendo um script para cópia em massa de caracteres. A função CopyRates e a função Bars não podem retornar mais do que o especificado em "Settings->Graphics->Max. bars in window", portanto, a maior parte do histórico não será copiada.
O que esses dois-pontos significam em seu código?
Não verifiquei seu script, mas estou escrevendo um script para cópia em massa de caracteres. A função CopyRates e a função Bars não podem retornar mais do que o especificado em "Settings->Charts->Max. bars in window", portanto, a maior parte do histórico não será copiada.
Eu copio exatamente o que já está nos gráficos. Caso contrário, isso levará muito tempo - paginação.
O que significam esses dois-pontos em seu código?
Fórum sobre negociação, sistemas de negociação automatizados e teste de estratégias de negociação.
MQL5 Como saber se uma negociação foi fechada com stop loss ou não?
fxsaber, 2017.02.14 20:00
Em termos gerais, o nome da classe, de onde o método correspondente é chamado, é especificado antes dos dois pontos.
Se não houver nada antes dos dois pontos, a classe é global.
Nesse caso, todos os dois-pontos podem ser apagados. E é conveniente usá-los porque diferentes classes podem ter os mesmos métodos (inclusive o virtual). E, para não cometer um erro, os dois pontos podem ser usados para indicar claramente qual método deve ser chamado.
Devemos acrescentar algo como:
bool Template(const string Symb = NULL) const { return(this.CloneProperties(Symb)); }
Caso contrário, às vezes apenas as propriedades são necessárias e as barras não.

- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Symbol:
Autor: fxsaber