Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 1413

 

Olá. Por favor, me ajude com um problema no mt5.

O histórico de cotações de pares de moedas após 2016 não está carregando. Corretora - Gerchik.

Tentei:

1 - baixar o histórico por meio do testador de estratégias.

2 - através do terminal de ferramentas. ele estupidamente mostra o histórico apenas até 2016.

3 - copiar o histórico do par carregado normalmente do servidor mt5. não adianta, ele simplesmente exclui esses arquivos depois de reiniciar o programa e, novamente, o histórico só vai até 2016.

4 - o suporte técnico da corretora disse para executar pares sem a letra Z no final, mas eles têm todos os pares de moedas terminando com Z - EURUSDz, AUDCADz.

Acho que o problema está na corretora e em seu servidor, mas por que ela exclui o histórico copiado? Alguém pode me dizer como fazer o upload do histórico normalmente?

 
gyperion #:

Olá. Por favor, me ajude com um problema no MT5.

O histórico de cotações de pares de moedas após 2016 não está carregando. Corretora - Gerchik.

Tentei:

1 - baixar o histórico através do testador de estratégia.

2 - por meio do terminal de ferramentas. ele mostra estupidamente o histórico apenas até 2016.

3 - copiar o histórico de um par carregado normalmente do servidor mt5. não adianta, ele simplesmente exclui esses arquivos depois de reiniciar o programa e, novamente, o histórico é apenas até 2016.

4 - o suporte técnico da corretora disse para executar pares sem a letra Z no final, mas eles têm todos os pares de moedas terminando com Z - EURUSDz, AUDCADz.

Acho que o problema está na corretora e em seu servidor, mas por que ela exclui o histórico copiado? Alguém pode me dizer como fazer o upload do histórico normalmente?

Então, talvez eles não tenham histórico, já que não são uma cozinha muito antiga?

 
Aleksey Vyazmikin #:

Então, talvez eles não tenham um histórico, já que não são uma cozinha muito antiga?

E quais são algumas cozinhas que não são da Rússia para se trabalhar? Na verdade, isso não importa. A questão é como fazer o upload do histórico, mesmo que eles não o tenham?
 
gyperion #:
E o que há para não trabalhar na Rússia? Isso realmente não importa. A questão é: como você faz o download da história, mesmo que eles não a tenham?

Você pode me emprestar dinheiro, mesmo que não tenha nenhum?

 
gyperion #:
E o que há para não trabalhar na Rússia? Isso realmente não importa. A questão é como fazer o upload do histórico, mesmo que eles não o tenham?

Por meio de personagens personalizados, crie seu histórico.

Importing High Quality Tick Data to MetaTrader 5
Importing High Quality Tick Data to MetaTrader 5
  • 2021.11.28
  • www.mql5.com
In order to vet a potential trading strategy, it is imperative to ensure that the results obtained f r om optimizations and strategy tests are a true reflection of the performance of your EA
 
Nauris Zukas #:

Através de personagens personalizados, crie sua história.

Funcionou parcialmente, mas o importante é que funcionou. Vou continuar pesquisando. Obrigado por sua ajuda, senhor, já tentei de tudo.
 

Olá a todos, quero escrever meu primeiro robô de negociação (Expert Advisor). Ele funciona perfeitamente no backtest e os resultados do teste também são respeitáveis. Mas há vários aspectos a serem considerados: tipos de conta, propriedades do símbolo, interferência com outros EAs, etc.

Tenho quatro variáveis para isso:

bool isHedging; bool isFIFO; ulong positionTicket; double positionVolume;

As duas primeiras variáveis são definidas no método init:

if ((bool)AccountInfoInteger(ACCOUNT_HEDGE_ALLOWED)) isHedging = true;
else isHedging = false;
if ((bool)AccountInfoInteger(ACCOUNT_FIFO_CLOSE)) isFIFO = true;
else isFIFO = false;

Se eu quiser abrir uma posição, primeiro verifico se isso pode causar problemas com o FIFO (ou seja, se eu quiser abrir uma posição comprada, verifico se já existe uma posição comprada com o mesmo volume ou uma posição vendida para o respectivo símbolo, pois, caso contrário, o StopLoss e o TakeProfit podem não funcionar corretamente, como ouvi dizer). E, por fim, uso o método OrderSend e defino se ele foi bem-sucedido:

positionVolume = tradeResult.volume;
positionTicket = tradeResult.deal;

Com um StopLoss ou TakeProfit executado, reconheço, por meio do método OnTradeTransaction, se minha posição (interna) no EA foi fechada, verificando se a variável positionTicket corresponde a transaction.position.

Se eu quiser fechar uma posição de conta de compensação, simplesmente fecho uma posição longa com uma negociação curta com o mesmo volume.

Se eu quiser fechar uma posição de conta de hedge, fecho a posição com trade.PositionClose(positionTicket, slippage);

Se eu quiser fechar uma posição de conta de cobertura FIFO, fecho a posição mais antiga do respectivo símbolo que corresponda à direção da posição (longa/curta) e ao volume, que deve ser o meu próprio devido às minhas condições de entrada para contas FIFO descritas acima.

Agora tenho certeza de que negligenciei algo fundamental. Como faço para garantir que o StopLoss e o TakeProfit em uma conta de compensação também sejam fechados quando eu fechar a posição (interna) do EA, conforme descrito acima? Existem maneiras mais elegantes e eficientes de tornar o EA compatível com FIFO? Com uma conta de cobertura não-FIFO, se eu apenas abrir uma posição no EA com uma MarketOrder, não a editar e depois quiser fechá-la, o valor de tradeResule.deal será sempre o mesmo, de modo que eu também possa fechar essa posição sem me preocupar com trade.PositionClose(positionTicket, slippage), em que positionTicket é o valor de tradeResult.deal salvo?

Estou procurando respostas há vários dias, mas ainda não encontrei nenhuma que pudesse resolver todas as minhas preocupações. Espero que alguém aqui possa me ajudar.

 
Benjamin Fotteler #:

Agora tenho certeza de que esqueci algo fundamental. Como faço para garantir que o StopLoss e o TakeProfit em uma conta de compensação também sejam fechados quando eu fechar a posição (interna) do EA, conforme descrito acima? Existem maneiras mais elegantes e eficientes de tornar o EA compatível com FIFO? Com uma conta de hedge não-FIFO, se eu apenas abrir uma posição no EA com uma MarketOrder, não a editar e depois quiser fechá-la, o valor de tradeResule.deal será sempre o mesmo, de modo que eu também possa fechar essa posição com trade.PositionClose(positionTicket, slippage) sem nenhuma preocupação, sendo que positionTicket é o valor de tradeResult.deal salvo?

Estou procurando respostas há vários dias, mas ainda não encontrei nenhuma que pudesse resolver todas as minhas preocupações. Espero que alguém aqui possa me ajudar.

Há apenas uma posição por símbolo em uma conta de compensação. Se o EA negociar apenas um símbolo, isso pode ser lido em PositionTotal() - ou, ainda mais simples, PositionSelect() está errado (=nenhum) ou, portanto, também selecionado para negociação posterior.

Documentation on MQL5: Trade Functions / PositionSelect
Documentation on MQL5: Trade Functions / PositionSelect
  • www.mql5.com
PositionSelect - Trade Functions - MQL5 Reference - Reference on algorithmic/automated trading language for MetaTrader 5
 

Isso está correto. Obrigado pela dica. Mas o que devo fazer, por exemplo, se outro EA for executado no mesmo símbolo, abrir uma posição de 0,5 lote e um stop loss de 100 pontos, meu EA abrir uma "posição interna do EA" de 0,5 e um stop loss de 150 pontos, ou seja, aumentar a posição existente para 1 lote, e eu então fechar a "posição interna do EA", ou seja, reduzir a posição existente para 0,5 lote. Que stop loss os 0,5 lotes restantes têm? 100 pontos ou 150 pontos? Ou não é possível, no modo de compensação, definir um stop loss independente para "meus" 0,5 lote por meio do SendRequest nesse caso?

Quero dizer, não quero simplesmente alterar os stop losses bem planejados de outros EAs, mas também não quero simplesmente abrir mão dos meus próprios. Existe alguma solução eficiente para meu "problema" que não seja abrir uma "posição interna do EA" no modo de compensação somente quando não houver nenhuma posição aberta para o símbolo?

 
Benjamin Fotteler símbolo, abrir uma posição de 0,5 lote e um stop loss de 100 pontos, meu EA abrir uma "posição interna do EA" de 0,5 e um stop loss de 150 pontos, ou seja, aumentar a posição existente para 1 lote, e eu então fechar a "posição interna do EA", ou seja, reduzir a posição existente para 0,5 lote. Que stop loss os 0,5 lotes restantes têm? 100 pontos ou 150 pontos? Ou não é possível, no modo de compensação, definir um stop loss independente para "meus" 0,5 lotes por meio do SendRequest nesse caso?

Quero dizer, não quero simplesmente alterar os stop losses bem planejados de outros EAs, mas também não quero simplesmente abrir mão dos meus próprios. Existe alguma solução eficiente para meu "problema" que não seja abrir uma "posição interna do EA" no modo de compensação somente quando não houver nenhuma posição aberta para o símbolo?

Se em uma conta com compensação(!) o primeiro EA, por exemplo, EURUSD compra 0,01 lote (compra) e um segundo EA vende 0,05 lote (venda), haverá novamente apenas uma posição na conta, agora com 0,04 de venda. Por enquanto, os números dos bilhetes são completamente irrelevantes aqui. E se a segunda ordem para a única posição em EURUSD definir novos (its= SL e TP, os da primeira ordem serão substituídos.

Há apenas uma posição com um SL e um TP, se especificado.

Razão: