[Arquivo!] Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por ela. Não poderia ir a lugar algum sem você - 2. - página 246

 
BBSL:

eddy disse que não queria ofender ninguém

Eu disse que não me importei :D Eu me comportarei corretamente mesmo que isso ofenda alguém porque o problema é deles. mas é para seu benefício, para que eles possam resolver o problema e procurar causas e eventualmente erradicá-las, caso contrário sempre haverá problemas.
 
Ais:

Um motivo para fazer tudo em um arquivo -> https://docs.mql4.com/ru/basis/variables/formal:

"É possível passar parâmetros por referência. Neste caso, a modificação de tais parâmetros afetará as variáveis correspondentes na função chamada passada por referência. Não é possível passar elementos de arrays por referência. Os parâmetros por referência só podem ser passados dentro de um único módulo, isto não é possível para funções de biblioteca. "


Sim, talvez seja esse o problema...

Tenho muitas funções onde um dos parâmetros é um array passado por referência.

Ou seja, você tem que abandonar a estrutura de programas com vários arquivos para evitar problemas, não pode ser resolvido de outra forma?

 
Bicus:

Cavalheiros, eis uma pergunta.

Eu estou administrando a EA no testador. A EA tem acesso à história, ou seja, está procurando por uma das últimas, digamos, 20 ordens fechadas.

Isto é muito fácil em uma verdadeira EA: podemos especificar o período do histórico durante o qual as ordens devem ser mostradas. Assim, as últimas ordens são sempre "acima". Mas, quanto mais negócios temos no testador, mais pedidos são fechados e quanto maior a lista deles tem que ser analisada e mais lentamente o Expert Advisor começa a trabalhar.

De qualquer forma, como você resolveu este problema?

Os computadores modernos executam centenas de milhões de operações por segundo.

Quantas transações devem ser necessárias para que o computador comece a diminuir a velocidade?

Em seu caso "difícil", você pode especificar a condição que fará a busca do pedido somente para o último mês/semi mês.

 
eddy:
Na verdade eu disse que não quero saber :D eu vou me comportar corretamente mesmo que isso ofenda alguém porque o problema é deles. mas é para seu benefício, então eles querem resolver o problema e começar a procurar causas e eventualmente erradicá-las, caso contrário sempre haverá problemas.


eddy, o conceito de direito é muito subjetivo))

Se um grupo de pessoas pensa que algo é geralmente aceito e correto, então essa é a regra para esse grupo de pessoas. Existe um grupo desse tipo neste fórum.

É muito bom que você tenha sua própria visão do mundo, mas passar tempo discutindo-o e ainda mais mudar ou reeducar as pessoas é um luxo muito grande))

A discussão sobre a exatidão das idéias é um desperdício de recursos e nossas questões não são resolvidas.

Eu proponho, com todo respeito e compreensão por suas idéias, voltar à programação))))

 
tmt0086:
Oi =) Acabei de escrever um EA... não há condições, apenas abertura em GBPUSD e EURUSD. Portanto, ao testar, não fecha as encomendas GBPUSD quando está em EURUSD. E vice versa. Você pode montá-la? Então, ela abrirá pedidos. Não posso fazer isso na demonstração, mas não posso testá-la.

Alguém me diga...
 
Sergey_Rogozin:

Em seu caso "difícil", você pode introduzir a condição de que os pedidos só serão reproduzidos no último mês/semestre.

Quais condições?

É impossível ordenar a história no testador. A última encomenda chega ao fundo do poço. Você tem que percorrer toda a história para chegar a ela.

Eu estou errado?

 
tmt0086:

Alguém me diga...

Não há um testador de estratégia de múltiplas moedas no MT4.
 
BBSL:


eddy, a noção de direito é muito subjetiva))

Há regras objetivas e, portanto, corretas. há também a importância das regras e a hierarquia das regras. se uma regra é menos importante do que outra ou hierarquicamente inferior, ela deve ser desconsiderada se uma regra assim o exigir. estudei regras e corrigi-las durante toda a minha vida
 
Roman.:

Não há um testador de estratégia multi-divisas no MT4.

Você pode me dizer onde eu posso testá-lo? Funcionará no MT5?
 
Bicus:

Quais são as condições?

É impossível ordenar a história no testador. A última ordem cai bem no fundo. Você tem que percorrer TODO o histórico para chegar a ele.

Eu estou errado?


Não. Aqui está um exemplo de seleção da mais recente ordem fechada da história da ordem para continuar trabalhando com ela...

//---Поиск последнего отработавшего ордера для открытия очередной позиции ---
   
   for (orderIndex = (OrdersHistoryTotal() - 1); orderIndex >= 0; orderIndex--)
   {   
      if (!OrderSelect(orderIndex, SELECT_BY_POS, MODE_HISTORY))
      {
         Print("Ошибка при доступе к исторической базе (",GetLastError(),")");
         continue;
      }
   
      if ((OrderSymbol() != Symbol()) || (OrderMagicNumber() != MagicNumber))
      {
         continue;
      }
      
        
   //-------------------------Принимаем в расчет только ордер, закрытый недавно-----------------------
if(time<OrderCloseTime())     //(сравниваем его с хранящимся в пероеменной time) 
  {
    time=OrderCloseTime();     //если время закрытия ордера больше - ложим его в переменную
         
         
     
         int lastType = OrderType();
         double lastLots = OrderLots();
         double lastProfit = OrderProfit() + OrderSwap();
.....
.....
.....
Razão: