O grande e terrível MT4 para sempre (ou como fazer uma transição estratégica) - página 17

 
Andrey Khatimlianskii:

Estamos ansiosos por isso. Se precisar de alguma ajuda, por favor escreva.

Todos são bem-vindos para conferir o primeiro lançamento da solução.

Библиотеки: TradesID
Библиотеки: TradesID
  • 2021.03.29
  • www.mql5.com
Статьи и техническая библиотека по автоматическому трейдингу: Библиотеки: TradesID
 
fxsaber:

Todos são bem-vindos para conferir o primeiro lançamento da solução.

É uma pena que ninguém o tenha verificado em suas configurações. Vamos considerar que o problema da duplicação de posições foi de fato resolvido.

 
fxsaber:

É uma pena que ninguém a tenha testado em suas próprias configurações. Vamos supor que o problema da duplicação de posições tenha sido de fato resolvido.

Não vi o ponto de apenas executar o mesmo teste. Não está fazendo tiquetaque agora, não pode ser verificado.

 
Andrey Khatimlianskii:

Eu não vi a utilidade de apenas fazer o mesmo teste.

Se o teste de alguém não funcionar, então todos os outros terão problemas.

 

Este é um lugar interessante:

else if (::HistoryOrderGetInteger(this.Orders[i], ORDER_TICKET) != this.Orders[i])

Quando e por que esta desigualdade pode acontecer?

Em geral, o código ainda não está claro, terei que gastar tempo para analisá-lo :/

Não posso dizer que seja fácil e rápido e que possa ser chamado a cada tique.

Ao invés de ByPass.Is(), você deve tentar chamar qualquer outro código que será executado no mesmo período de tempo.

Ou talvez a solução esteja apenas relacionada ao seu tempo de execução.

Talvez durante este tempo todas as listas e quantidades se normalizem naturalmente?

 
Dmitry Fedoseev:

Este é um lugar interessante:

Quando e por que esta desigualdade pode acontecer?

Em geral, o código ainda não está claro, terei que gastar tempo para analisá-lo :/

Não posso dizer que seja fácil e rápido e que possa ser chamado a cada tique.

Ao invés de ByPass.Is(), você deve tentar chamar qualquer outro código que será executado no mesmo período de tempo.

Ou talvez a solução esteja apenas relacionada ao seu tempo de execução.

Talvez todas as listas e quantidades se normalizem naturalmente durante este tempo?

Outra opção é verificar os FORTS às 10h em ponto.

 
Dmitry Fedoseev:

É um lugar interessante:

Você fez bem em duplicar suas perguntas sobre a implementação em si no seu fio condutor. Vou responder lá.

 

Preciso escrever um roteiro em um MT5 que abra 100 posições em uma conta vazia.


Na MT4, a situação foi resolvida desta forma.

void OnStart()
{
  while (OrdersTotal() < 100)
    OrderSend(_Symbol, OP_BUY, 0.1, Ask, 0, 0, 0);
    
  Print(OrdersTotal());
}


Quem tem uma solução no MT5?

 
fxsaber:

Preciso escrever um roteiro em um MT5 que abra 100 posições em uma conta vazia.


Na MT4, a situação foi resolvida desta forma.


Quem tem uma solução no MT5?

Que tal isso?

//+------------------------------------------------------------------+
//|                                                    maxLimits.mq5 |
//|                                  Copyright 2021, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
#include <Trade\Trade.mqh>
//---
CTrade m_trade; // trading object
//---
uint maxLimits=100; // Кол-во Позиции Открыть в одну сторону
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   for(uint i=0; i<maxLimits; i++)
     {
      //--- open position
      if(m_trade.Buy(0.01))
         printf("Position by %s to be opened",_Symbol);
     }
  }
//+------------------------------------------------------------------+
Foto por
 
SanAlex:

Você pode fazer isso?

Não.
O resultado não é garantido.
Razão: