Wednesday 26 July 2017

Backtesting Forex Programadores Mt4


Leon Lodewyks: Gostaria de saber se alguém poderia me ajudar. Eu escrevi, o que eu considero ser um EA muito simples, mas ao tentar back-testar este EA usando MT4, o backtester parece funcionar para alguns comércios e, em seguida, pára (correndo até o fim sem colocar qualquer outros comércios). É quase como se estivesse sem memória, mas eu não sei como verificar se este é o caso. Como exemplo, se eu quiser back-test o código de 1 de janeiro de 2016 até hoje, ele pode colocar alguns comércios em janeiro até dizer o 10 de janeiro e, em seguida, sugere que ele não vai colocar quaisquer outros negócios para o Resto do ano, mas se você fosse definir a sua data de início para mais tarde no mês, ele colocaria comércios. Alguém poderia sugerir que o problema poderia ser por favor, como isso está me deixando louco. Você terá que postar seu código se você quiser que possamos ajudá-lo. Só podemos adivinhar qual é o problema. Alain. Mencionadas linhas 128 e 278, mas eu acho que ele estava apenas brincando, a fim de fazer o ponto que só podemos adivinhar o que o problema pode ser porque você não forneceu qualquer código para olhar. No entanto, também certifique-se de que você realmente tem dados de histórico disponíveis para o período em questão que está sendo testado. Você terá que postar seu código se você quiser que possamos ajudá-lo. Só podemos adivinhar qual é o problema. Alain. Mencionadas linhas 128 e 278, mas eu acho que ele estava apenas brincando, a fim de fazer o ponto que só podemos adivinhar o que o problema pode ser porque você não forneceu qualquer código para olhar. No entanto, também certifique-se de que você realmente tem dados de histórico disponíveis para o período em questão que está sendo testado. Leon Lodewyks 2016.12.06 15:37 2016.12.06 15:37:40 4 Você terá que postar seu código se você quiser que possamos ajudá-lo. Só podemos adivinhar qual é o problema. Alain. Mencionadas linhas 128 e 278, mas eu acho que ele estava apenas brincando, a fim de fazer o ponto que só podemos adivinhar o que o problema pode ser porque você não forneceu qualquer código para olhar. No entanto, também certifique-se de que você realmente tem dados de histórico disponíveis para o período em questão que está sendo testado. Haha Obrigado Eu perdi completamente a piada :) Eu vou pegar o código, pensei que poderia ser um erro MT4 genérico, então eu não posto o código. Leon Lodewyks 2016.12.06 15:39 2016.12.06 15:39:55 5 Desculpe - aqui está o código. Eu baixei tickdata e tentei isso, mas também apenas baixando os dados através do centro de história. Ambos, o mesmo comportamento. Externo duplo Lotes 0.01 externo duplo SL 50 externo duplo TP 50 externo int Mágico 1 datetime Timeopen 3600 datetime Barra de tempo 0 duplo p, r1, r2, r3, s1, s2, s3 duplo todayhigh iHigh (Symbol (), PERIODD1. ILow (Symbol (), PERIODD1. 0) double yesterdayclose iClose (Symbol (), PERIODD1. 1) double yesterdayhigh iHigh (Symbol (), PERIODD1. 1) double yesterdaylow iLow (Symbol (), PERIODD1. 1) p (yesterdayhigh yesterdaylow Ontemclose) 3 r1 (2 p) - dia dia baixo r2 p (yesterdayhigh - yesterdaylow) r3 (2 p) (yesterdayhigh - (2 yesterdaylow)) s1 (2 p) - yesterdayhigh s2 p - (yesterdayhigh - yesterdaylow) s3 (2 p) - ((2 horas de ontem) - dia do meio dia) duplo anteriorCandleClosePreço iClose (Symbol (), PERIODCURRENT. 1) double Pivot NormalizeDouble (p, Digits) double Resistance1 NormalizeDouble (r1, Digits) double Resistance2 NormalizeDouble (r2, Digits) double Resistance3 NormalizeDouble (r3 , Dígitos) double Support1 NormalizeDouble (s1, Digi St) Double Support2 NormalizeDouble (s2, Digits) Double Support3 NormalizeDouble (s3, Digits) Pivot Point if (previousCandleClosePrice lt Pivot ampamp Pivot Ask ampamp (TimeCurrent () - Time 0) ltTimeopen) int ticket OrderSend (Symbol (), OPSELL, Lots , Lance. 5. Pergunte (SL 10 Point), Ask - (TP 10 Point), Pivot Point Sell, Magic, 0, Green) Imprimir (Pivot Level: Pivot) se (ticket gt 0) Timeopen TimeCurrent () - Time 0 digite nova string (Armazenar o intervalo do tempo de abertura da barra com a entrada até o momento de saída) Timebar Time 0 inserir nova string (lembre-se do horário de abertura da barra que teve a 1ª entrada) Imprimir (Pivot Point Sell Placed) else Imprimir (Erro ao colocar Trade: GetLastError (0) if (anteriorCandleClosePrice gt Pivot ampamp Pivot Oferta ampamp (TimeCurrent () - Time 0) ltTimeopen) Ticket (ponto 10), ponto-pivô, magia, 0, verde) Imprimir (nível pivô: pivota) se (ticket) Gt 0) Timeopen TimeCurrent () - Time 0 digite uma nova string (intervalo de armazenamento do tempo de abertura da barra com a entrada até o momento de saída) Timebar Time 0 entre nova string (lembre openin G tempo da barra que tinha a 1ª entrada) Imprimir (Pivot Point Buy Placed) else Imprimir (Erro colocando Trade:. GetLastError ()) Print (Ordem de abertura tentada em: Ask com SL em (Bid-SL) e TP em (BidTP)) return (0) Resistance 1 if (previousCandleClosePrice lt Resistance1 ampamp Resistência1 Ask ampamp (TimeCurrent () LtTimeopen) int ticketResistance1 OrderSend (Symbol (), OPSELL, Lots, Bid. 5. Peça (SL 10 Point), Ask - (TP 10 Point), Resistance 1 Sell, Magic, 0, Green) se (ticketResistance1 gt 0) Timeopen TimeCurrent () - Time 0 entrar nova seqüência de caracteres (intervalo de armazenamento do tempo de abertura da barra com a entrada até o momento de saída) Timebar Time 0 entrar nova seqüência de caracteres (lembrar o tempo de abertura da barra que tinha 1 entrada) (0) Resistência 2 if (previousCandleClosePrice lt Resistance2 ampamp Resistência2 Ask ampamp (TimeCurrent () - Time 0) ltTimeopen) int ticketResistance2 OrderSend (Symbol (), OPSELL, Lots, Bid. 5. Ask (SL 10 Ponto (ponto de TP 10), Resistência 2 Vender, Magia, 0, Verde) se (ticketResistance2 gt 0) Timeopen TimeCurrent () - Time 0 insira uma nova string (armazene o intervalo do horário de abertura da barra com a entrada até o Momento de saída) Timebar Time 0 insira uma nova string (lembre-se do tempo de abertura da barra que teve a primeira entrada) else Print (Erro ao colocar o Trade:. GetLastError ()) Print (Ordem de abertura tentada em: Licitação com SL em (Ask SL) e TP em (Ask - TP)) return (0) Resistance 3 if (previousCandleClosePrice lt Resistance3 ampamp Resistência3 Ask ampamp (TimeCurrent ) LtTimeopen) int ticketResistance3 OrderSend (Symbol (), OPSELL, Lots, Bid. 5. Ask (SL 10 Point), Ask - (TP 10 Point), Resistance 3 Sell, Magic, 0, Green) se (ticketResistance3 gt 0) Timeopen TimeCurrent () - Time 0 entrar nova string (intervalo de armazenamento do tempo de abertura da barra com a entrada até o momento de saída) Timebar Time 0 entrar nova seqüência de caracteres (lembrar o tempo de abertura da barra que tinha 1 entrada) : GetLastError ()) Imprimir (Ordem de abertura tentada em: Licitação com SL em (Ask SL) e TP em (Pergunte - TP)) return (0) if (previousCandleClosePrice gt Support1 ampamp Support1 Bid ampamp (TimeCurrent () - Time 0 ) LtTimeopen) int ticketSupport1 OrderSend (Símbolo (), OPBUY, Lotes, Ask 5. Oferta - (SL 10 pontos), lance (T P10 Point), Support 1 Buy, Magic, 0, Green) se (ticketSupport1 gt 0) Timeopen TimeCurrent () - Time 0 insira uma nova string (intervalo de armazenamento do horário de abertura da barra com a entrada até o momento de saída) Timebar Time 0 Digite nova seqüência de caracteres (lembre - se do tempo de abertura da barra que tinha 1 º entrada) else Print (Erro colocando Trade:. GetLastError ()) Print (Ordem de abertura tentada em: Ask com SL em (Bid-SL) e TP em (BidTP)) return (0) if (previousCandleClosePrice gt Support2 ampamp Support2 Bid ampamp (TimeCurrent () - Time 0) ltTimeopen) Int ticketSupport2 OrderSend (Symbol (), OPBUY, Lots, Ask. 5. Bid - (SL 10 Point), Bid (TP 10 Point), Support 2 Buy, Magic, 0, Green) se (ticketSupport2 gt 0) Timeopen TimeCurrent ( ) - Tempo 0 introduzir nova seqüência de caracteres (intervalo de armazenamento do tempo de abertura da barra com a entrada até o momento de saída) Timebar Time 0 entrar nova seqüência de caracteres (lembrar o tempo de abertura da barra que tinha 1a entrada) else Print (Erro colocando Trade :. GetLastError () (Return) () () () () () () () () () () () () () () (TP 10 Ponto), Suporte 3 Compra, Magia, 0, Verde) se (ticketSupport3 gt 0) Timeopen TimeCurrent () - Tempo 0 introduza uma nova string (Intervalo de armazenamento do tempo de abertura da barra com a entrada até o momento de saída) Timebar Time 0 entrar nova string (lembre-se do tempo de abertura da barra que tinha 1ª entrada) else Print (Erro colocando Trade:. GetLastError ()) Imprimir (Ordem de abertura tentada em: Pergunte com SL em (Bid-SL) e TP em (BidTP)) return (0) Leon Lodewyks 2016.12.06 17:11 2016.12.06 17:11:35 10 Além disso, O que é o Timeopen TimeCurrent () - Time 0 e the TimeCurrent () - Time 0) ltTimeopen) Chegará a um ponto em que você poderia obter uma diferença de Zero (ou um, ou um valor muito pequeno) e, em seguida, Você não poderá mais fazer pedidos. EDIT: Reconsiderando esta situação, este é provavelmente o principal culpado para o seu problema. Este era realmente algum código que eu tomei do abaixo para impedir que o EA negocie mais de uma vez na mesma barra. A rentabilidade dos sistemas de negociação é definida não apenas pela lógica e precisão da análise da dinâmica dos instrumentos financeiros, mas também pela qualidade do algoritmo de desempenho desta lógica. False trigger é típico para o desempenho de baixa qualidade da lógica principal de um robô comercial. As formas de resolver o problema especificado são consideradas neste artigo. Teste de testeOptimização Não solicitado mesmo. Foram apenas questões retóricas (pergunta com resposta dentro da pergunta). Claro que não, não podemos. Mas estamos trabalhando com este testador e não temos escolha. 1. Algumas pessoas dizem: não acredite no testador de estratégia mt4. Para entender sobre a EA particular, você precisa testá-lo em demonstração durante os vários anos (5 ou 8 anos). 2. As outras pessoas (programadores) dizem que não acreditam em testes de demonstração também. Você precisa usar dinheiro real (durante os 5 ou 8 anos) para dizer: esta EA que eu (programador) criou é boa (ou ruim). Neste caso, temos o seguinte: programadores propuseram alguns EAs, os testadores estão gastando seu próprio dinheiro para provar o trabalho dos programadores. E ninguém é responsável por nada, é claro. 3. As outras pessoas dizem que não é suficiente até mesmo. Porque nós precisamos testar em dinheiro real usando os diferentes corretores e diferentes cronogramas também (mas ninguém disse de onde obter esse dinheiro). 3. Algumas pessoas estão usando testador de estratégia mt4 para dizer algo sobre EA particular. Qual é a sua escolha Como o teste das pessoas Durante o backtesting podemos ter vários casos: - Por exemplo, alguns EA está testando muito bem, perfeitamente bem: não significa nada para mim porque o código de EA pode ser adaptado pelo programador para ser testado perfeitamente bem. - se a EA está mostrando resultados muito ruins durante o backtesting vou olhar para a idéia original tentando melhorar algo na idéia original. - se a EA está testando, mas às vezes é bom e às vezes ruim (apenas por exemplo: bom teste durante os dados de outubro, e ruim durante o mês de setembro, bom para agosto, etc) esta EA é muito interessante para mim. Porque eu entendo que é impossível ter bons resultados estáveis ​​para sempre (porque o mercado está mudando e tudo está mudando, mas estamos usando os mesmos indicadores e os mesmos EAs e não está mudando nada). Eu acho que o testador de estratégia é um bom filtro, ele mostra se uma estratégia tem promessa, revela pontos fortes e fracos de uma dada EA. A otimização ajuda a mitigar as fraquezas e explorar os pontos fortes. Os testes de demonstração ao vivo garantem que, em tempo real, os preços em tempo real, a EA se comunique eficientemente com o servidor do Brokers, como pretende. O teste de dinheiro real prova o EA, com resultados reais. Seja rentável ou não. Com mt4, um é capaz de viver teste de dinheiro real com tamanhos de lote tão pequeno quanto 100, ou um centavo de um pip. Dado que os corretores como IBFX pagar juros sobre as contas demo, mas não em mini contas ao vivo, eu acredito que é importante viver teste de dinheiro real com o menor tamanho de lote permitido para ter certeza de que a EA pode superar todos os obstáculos apresentados a ela, por exemplo , Taxas de troca, upgrades de construção de dia médio, interuptions de ISP, dias de nfp, etc., etc. hey. Meu opimion com ea é bem eles são ok, mas eles não dizem o que vai acontecer no futuro preço apenas história passada para 1 especialista pode funcionar bem 1 ou 2 anos, em seguida, pode funcionar como ele fez Eu tenho um livro em dinamarquês ea estratégia mais comum É tão simpel como uma média móvel abaixo, mas aqui você sente falta de alguns dos MT superior e inferior e backtesting eu sou novo neste fórum e gostaria de começar com algumas perguntas sobre backtesting im MT. Eu leio na rede, que os resultados do backtest de MT não pode ser invocado. Alguém realmente pode confirmar que existe um erro grave no MT que posso imaginar, que a razão para isso é, na maioria dos casos, apenas uma má programação do sistema. Que tal o manuseio de barras na MT, dizemos que olhamos para as barras diárias. Faz o verificador da estratégia olhar somente em OHLC ou olha em cada único tiquetaque internamente este fato é importante saber. O comportamento diferirá nesses 2 cenários, se tivermos 2 ou mais sinais na mesma barra diária. Eu sou novo neste fórum e o inglês não é minha língua nativa. Em primeiro lugar, gostaria de felicitá-lo pela alta qualidade das postagens. Não é comum em outros fóruns que visitei. Estou jogando forex e codificação EA por alguns meses. Meu problema principal é porque eu recebo lucros tão altos (mesmo 1000month) quando backtesting minha EA que em vivo que eu tentei muitas estratégias diferentes e nenhum resultado perceptível quando terrific em backtest. Suporte diz que backtester usa apenas dados OHLC, mas isso não é verdade, como eu vejo o preço mudando dentro da barra em testador de estratégia. By the way, eu uso Metatrader 3.83 construir 6231 de InterbankFX. Alguém pode ajudar Obrigado antecipadamente Do meu testador de estratégia de experiência do MT3 tem pelo menos um erro grave. Esse bug atinge você, se você estiver usando ordens de limite (OPSELLSTOP, OPBUYSTOP). Por exemplo, se seu limite de compra for superior ao preço real, o testador de estratégia executará essa ordem com o preço real. Na vida real, esse comércio não teria ocorrido, porque o limite de compra não foi alcançado. Como eu disse, isso é da minha experięncia. Talvez alguns outros possam confirmar isso. Para ter certeza de que você poderia transferir seu EA para MT4 e testar. Os resultados devem ser mais realistas. Sim, Iomme. Eu concordo com você. Eu tenho a sensação de algo como isso acontecendo. Eu notei que as ordens de parada foram processadas muito mais fácil do que no modo ao vivo. Mas eu não era o único problema com ST. Eu suspeito que mesmo as ordens normais são mais flexíveis, uma vez que não houve derrapagens ou algo assim. Os EAs escrevi escalas no couro cabeludo para lucrar com ST ganhando enormes lucros, mas obtendo preços inválidos e inválidos no modo ao vivo. Eu adoraria entender exatamente como ST inflar lucros simulados e ser capaz de adaptar EA para obter parte de que os lucros bons. Lomme: De minha experiência testador de estratégia MT3 tem pelo menos um erro grave. Esse bug atinge você, se você estiver usando ordens de limite (OPSELLSTOP, OPBUYSTOP). Por exemplo, se seu limite de compra for superior ao preço real, o testador de estratégia executará essa ordem com o preço real. Na vida real este comércio não teria ocorrido, porque o limite de compra não foi alcançado. Como eu disse, isso é da minha experięncia. Talvez alguns outros podem confirmar isso Para ter certeza que você poderia transferir o seu EA para MT4 e teste ist lá. Os resultados devem ser mais realistas.

No comments:

Post a Comment