O mercado está sempre errado

 
Uma continuação do tema "Arbitragem". Já existem muitas páginas, e os críticos fizeram disso uma bagunça, portanto, um novo tópico.

Consegui aumentar a equidade sobre o saldo. É o que parece (EURJPY H1):





Código fonte da EA anexado ao correio. Assim é o relatório do testador.

Para isso, tive que adicionar mais um parâmetro de entrada ao código: beginEquity - equidade inicial. Isto é, o equilíbrio inicial. No Testador de Estratégia, o Expert Advisor monitora automaticamente se o nível de startEquity é excedido. E se for excedido, ele começa o jogo de novo, ou seja, ele muda o preço inicial para Bid, beginEquity para o patrimônio líquido atual e muda o número mágico (aumenta em 1).

Mas em Demo e Real, o Expert Advisor apenas gerará um alerta pedindo para alterar estes parâmetros manualmente. A questão é que o Expert Advisor não salva parâmetros anteriores em nenhum lugar no encerramento do terminal ou do computador, e não será capaz de restaurá-los após reiniciar (aqueles que realmente precisam deles podem criar um banco de dados de arquivos ou armazenar parâmetros em variáveis globais).
Assim, se eles começarem a exibir mensagens, terão que alterar manualmente os parâmetros de entrada acima para todo o grupo.
Arquivos anexados:
 
Aqui estou eu, crítico, encontrando você aqui também, Yuri. Agora eu vou cagar aqui também. A análise superficial do relatório mostra que de 20 de agosto de 2004 às 22h00 do dia 4 de maio de 2007, no depósito inicial de 200.000 72.252 lucros foram feitos, e às 22h00 todas as posições restantes foram fechadas, o que trouxe cerca de 528.000 lucros de uma só vez (7 vezes mais do que em todo o histórico de testes!). O efeito é provavelmente causado simplesmente pelo fim do período de testes.
 
Mathemat:
Aqui estou eu, crítico, encontrando você aqui também, Yuri. Agora eu vou cagar aqui também. A análise superficial do relatório mostra que de 20 de agosto de 2004 às 22h00 do dia 4 de maio de 2007, com um depósito inicial de 200.000, obteve 72.252 lucros, e às 22h00 todas as posições restantes foram fechadas, o que trouxe cerca de 528.000 lucros de uma só vez (7 vezes mais do que em toda a história dos testes!). O efeito é provavelmente simplesmente devido ao final do período de testes.
O momento da conclusão dos testes pode ser visto no gráfico da direita como uma faixa verde estritamente horizontal (equidade) e um "crescimento" não linear acentuado do saldo abaixo dessa mesma linha horizontal. Em outras palavras, o testador fecha todas as posições e o saldo "cresce" até se igualar à equidade. Obviamente, havia muitas posições em aberto com lucro positivo naquele momento. Caso contrário, a equidade não pode subir mais do que o saldo.

O Testador encerra todas as posições em aberto ao final do período de testes. Se o patrimônio líquido não for igual ao saldo naquele momento, o saldo será igual ao último valor do patrimônio líquido após o fechamento de todas as posições. Portanto, não chame este comportamento do testador de "efeito", porque é o princípio de funcionamento.
 
Olá!
Aqui está o dia de sua avó! Estava brincando.
Como disse Mathemat "por análise de superfície", muito bem! Não há um único valor negativo. Vou colocá-lo à prova on-line. Mas eis o que não entendo (talvez eu tenha entendido mal): não desligo meu apostador e não fecho o terminal. O alerta será exibido em tais condições ou o EA comercializará por si só como deveria? O que acontecerá se eu for desconectado da Internet por algum tempo e depois voltar a ser conectado? Sem nenhuma desconexão do meu lado?
Para mim a pergunta é muito importante por causa da minha ausência do computador por pelo menos 18 horas por dia (sono, trabalho, etc.) e se nesse tempo ocorre a desconexão, ou não posso inserir novos dados. ..... bem, não é realmente bom.
Além disso, se eu entendi corretamente: se você ligar o came ou o terminal, você só precisa inserir os valores atuais e tudo correrá como de costume, ou seja, reconectar o EA?
Além disso, se o alerta for exibido, mas não fizermos nada, a EA continua negociando de acordo com as configurações antigas ou espera que as novas configurações sejam inseridas?
Se possível, favor dar mais detalhes sobre estes pontos!!!!
Obrigado por mais um motivo para me abalar um pouco os miolos! (de uma boa maneira).
Atenciosamente !!!!
 
Não sei por que, mas em modo de teste o Expert Advisor abre negócios em lotes de cerca de dez, isto é uma coincidência ou não?
Não sei por que, mas em modo de teste o Expert Advisor abre negócios em cachos de cerca de dez peças. Se você levar 5 minutos desde o início de 3000, o EuroUSD, de 01.02.2007 até hoje, abre dez posições que estão fechadas por alguma razão, não no final do período, mas em algum lugar em 12.02.2007 um afundamento sólido, e este afundamento é basicamente aquelas dez primeiras ordens abertas. E este quadro se repete não apenas em pequenos momentos. Mesmo que aumentemos o depósito até 50.000, ele também está perdendo. Alterar o prazo, para 1 hora, também está perdendo. Algo está errado aqui!
A primeira é a mais bela até agora. Talvez eu tenha feito algo errado?
Atenciosamente!
 
Olá!

Tenho uma pequena pergunta: eu baixei o Expert Advisor, mas ele gera um erro na compilação:
MODE_MARGINREQUIRED' - variável não definida C:\Program Files\PFG FX Trader\experts\ArbitrageReverse_1. 5.mq4 (244, 49)
Para que é útil a variável MODE_MARGINREQUIRED e como defini-la?

 
Implex:
Olá!

Tenho uma pequena pergunta: eu baixei o Expert Advisor, mas ele gera um erro na compilação:
MODE_MARGINREQUIRED' - variável não definida C:\Program Files\PFG FX Trader\experts\ArbitrageReverse_1. 5.mq4 (244, 49)
Para que é útil a variável MODE_MARGINREQUIRED e como defini-la?


Atualize seu terminal para o mais recente build 204, baixando a distribuição de: http://www.metatrader4.com/files/mt4setup.exe
 

Embora eu não tenha terminado o teste da antiga EA como planejado, estive pensando em como melhorar essa versão. E então Yuri inventou um novo. Não é mais "quinto elemento", mas "sexto". Como posso trabalhar aqui? Minhas mãos estão tremendo.

Mas falando sério, eu tenho uma pergunta sobre o código. Pode ser ingênuo, portanto não estou me dirigindo apenas ao Yury. Talvez outra pessoa possa esclarecê-lo. Serei grato a eles.

Na ArbitrageReverse_1.1.mq4, e na nova versão da ArbitrageReverse_1.5.mq4, a mesma estrutura é repetida, o que para mim não é claro: é uma chamada da função do usuário fechada (ticksell, tickbuy) após um arredondamento de blocos de pedidos atualmente abertos. Para ArbitrageReverse_1.1.mq4 é linha [106], para 1.5 é linha [128]. A função faz sentido - se houver ordens de VENDA abertas e ordens de COMPRA abertas (um símbolo cada), a VENDA será fechada por COMPRA. O que eu não gosto é que não haja nenhuma condição prévia para que esta operação ocorra. Em outras palavras, somente se tivermos COMPRA e VENDA, as ordens devem fechar. Mas mais adiante no código, já no bloco 'dt', a chamada de função fechada (ticksell, tickbuy) (para v:1.1 linha [163], para v:1.5 [189]) é enquadrada em condições. E isso me parece mais correto. Em princípio, logo verei o que está acontecendo comigo mesmo, tendo rastreado todas as atribuições às variáveis, enquanto eu trabalho em meus erros menores. Mas agora vou perguntar diretamente ao Yuri:
A chamada fechada é necessária na linha [106] v:1.1 ou [128] v:1.5 e, se assim for, o que será "fechado" em [163] para v:1.1 ou em [189] para v:1.5 se se verificar que tudo o que pode ser fechado deve ser fechado antes disso? Entendo que pode haver uma diferença em volumes de lote, mas ainda assim, algo aqui me parece "desligado".

A chamada de fechamento (tickbuy, ticksell) em [200] para v:1.1 ou em [224] para v:1.5 é mais ou menos clara - se uma ordem aberta VENDA ou COMPRA é definida em ordens abertas, e no bloco "dt", dependendo das condições, uma ordem oposta pode ser aberta pela função OrderSend - então o fechamento será executado respectivamente.

De qualquer forma, se eu pedi algo estúpido, peço desculpas. Aponte o erro e eu o corrigirei.

Sinceramente, Fed.

 
Já coloquei um EA em CodeBase que, aderindo a táticas de arbitragem, também ganha em trocas positivas. Após verificação pelo moderador, o código estará disponível AQUI
 
Olá!
Eu tentei entender - a lógica desta modificação depende do preço inicial, startEquity que precisa ser alterado manualmente. eu acho que os únicos resultados sobre o euroyenne foram os mesmos e o resto foram drenagens líquidas quando o teste foi encerrado ... E equidade não é muitas vezes maior do que o saldo. Obrigado
 
Fed:

Embora eu ainda não tenha completado o teste da antiga EA, como eu pretendia, já estava pensando em como melhorar essa versão. E então Yuri inventou um novo. Não é mais "quinto elemento", mas "sexto". Como posso trabalhar aqui? Minhas mãos estão tremendo.

Mas falando sério, eu tenho uma pergunta sobre o código. Pode ser ingênuo, portanto não estou me dirigindo apenas ao Yury. Talvez outra pessoa possa esclarecê-lo. Serei grato a eles.

Na ArbitrageReverse_1.1.mq4, e na nova versão da ArbitrageReverse_1.5.mq4, a mesma estrutura é repetida, o que para mim não é claro: é uma chamada da função do usuário fechada (ticksell, tickbuy) após um arredondamento de blocos de pedidos atualmente abertos. Para ArbitrageReverse_1.1.mq4 é linha [106], para 1.5 é linha [128]. A função faz sentido - se houver ordens de VENDA abertas e ordens de COMPRA abertas (um símbolo cada), a VENDA será fechada por COMPRA. O que eu não gosto é que não haja nenhuma condição prévia para que esta operação ocorra. Em outras palavras, somente se tivermos COMPRA e VENDA, as ordens devem fechar. Mas mais adiante no código, já no bloco 'dt', a chamada de função fechada (ticksell, tickbuy) (para v:1.1 linha [163], para v:1.5 [189]) é enquadrada em condições. E isso me parece mais correto. Em princípio, logo verei o que está acontecendo comigo mesmo, tendo rastreado todas as atribuições às variáveis, enquanto eu trabalho em meus erros menores. Mas agora vou perguntar diretamente ao Yuri:
A chamada fechada é necessária na linha [106] v:1.1 ou [128] v:1.5 e, se assim for, o que será "fechado" em [163] para v:1.1 ou em [189] para v:1.5 se se verificar que tudo o que pode ser fechado deve ser fechado antes disso? Entendo que pode haver uma diferença em volumes de lote, mas ainda assim, algo aqui me parece "desligado".

O fechamento (tickbuy, ticksell) chamado em [200] para v:1.1 ou em [224] para v:1.5 é mais ou menos claro - se uma ordem aberta VENDA ou COMPRA é definida em ordens abertas, e no bloco "dt", dependendo das condições, uma ordem oposta pode ser aberta pela função OrderSend - então o fechamento será executado respectivamente.

De qualquer forma, se eu pedi algo estúpido, peço desculpas. Aponte o erro e eu o corrigirei.

Sinceramente, Fed.

Se na demonstração e no modo real o fechamento das posições do contador fosse tão perfeito quanto nos testes, certamente seria suficiente deixar apenas uma chamada para fechar() antes do último retorno(0) no evento inicial. Portanto, no modo teste, por mais rastreável que seja, não haverá fechamento em chamadas adicionais.

Mas no modo de demonstração e na vida real, posições fechadas muitas vezes não conseguem fechar no balcão por alguma razão (por exemplo, não há conexão com o servidor por um curto período de tempo), então eu tive que fornecer chamadas adicionais para fechar().
Razão: