Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 1634

 
makssub #:

Escreva um exemplo, porque eu já estou um pouco confuso. Se não for muito incômodo. Obrigado

No laço para procurar por pedidos:

if (OrderOpenPrice()<previous_value)
   {
   previous_value=OrderOpenPrice();
   nearest_order=OrderTicket();
   }

Antes do loop, inicializar o_valor_prévio=DBL_MAX uma_ordem_próxima=0

 
Taras Slobodyanik #:

no laço do pedido:

initialise previous_value=DBL_MAX a nearest_order=0 before the loop

Exatamente. Obrigado. Obras

 
Taras Slobodyanik #:

no laço do pedido:

initialise previous_value=DBL_MAX a nearest_order=0 before the loop

DBL_MAX é categórica).
 
Valeriy Yastremskiy #:
DBL_MAX é categórica).

O principal funciona)

Como encontrar OP_BUY com o máximo OrderOpenPrice e determinar seu OrderProfit.
Eu não posso colocá-los juntos, tudo funciona através do rabo... Se você puder me dar um exemplo imediatamente) Obrigado)

 
makssub #:

O principal funciona)

Como encontrar OP_BUY com o máximo OrderOpenPrice e determinar seu OrderProfit.
Eu não posso colocá-los juntos, tudo funciona através do rabo... Se você puder me dar um exemplo imediatamente) Obrigado)

previous_value=0;

if (OrderOpenPrice()>previous_value)
   {
   previous_value=OrderOpenPrice();
   profit_order=OrderProfit();
   }
 
MakarFX #:

Eu só queria dizer que já terminei.

Mas você a tornou mais compacta. Vou aceitar sua sugestão).

Obrigado

 
Como trabalhar com um arquivo em programa mql5 sem gravar o arquivo em disco, mas para trabalhar somente em RAM, para acelerar. Eu quero transferir dados de um programa mql5 para um programa no meu computador. É possível fazer isso sem funções de rede? Não tem que ser um arquivo, um array ou uma variável; é ainda melhor. Conheço apenas duas maneiras, módulo de integração python e tomada web, existe outra maneira?
 

Eu apago todos os objetos no OnDeInit() por loop (setas indicando barras de sinal e um botão):

const int obj_total=ObjectsTotal();

Print("ObjectsTotal ",obj_total);

for(int i=0 ; i < obj_total ; i++){
 Print("ObjectName ",ObjectName(i),", i = ",i);
 ObjectDelete(ObjectName(i));
}

Estou ciente de que há ObjetosDeleteAll(), mas ainda assim se eu fizer isso através de um loop, apenas metade dos objetos são deletados em um. Na verdade, aqui está o trabalho do loop e não entendo porque acontece assim:

2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName , i = 20
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName , i = 19
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName , i = 18
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName , i = 17
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName , i = 16
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName , i = 15
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName , i = 14
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName , i = 13
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName , i = 12
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName , i = 11
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName button1, i = 10
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName ArrowUp0008, i = 9
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName ArrowUp0006, i = 8
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName ArrowUp0004, i = 7
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName ArrowUp0002, i = 6
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName ArrowUp0000, i = 5
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName ArrowDown0008, i = 4
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName ArrowDown0006, i = 3
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName ArrowDown0004, i = 2
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName ArrowDown0002, i = 1
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName ArrowDown0000, i = 0
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectsTotal 21
 
Nerd Trader #:

Eu apago todos os objetos no OnDeInit() por loop (setas indicando barras de sinal e um botão):

Estou ciente de que há ObjetosDeleteAll(), mas ainda assim se eu fizer isso através de um loop, apenas metade dos objetos são deletados em um. Na verdade, aqui é como funciona o loop e não entendo porque acontece desta maneira:

O laço ao apagar deve ser revertido:

for(int i=obj_total-1; i>=0; i--)

e isto se aplica não somente à eliminação de objetos gráficos, mas em geral à eliminação de quaisquer objetos nas listas do terminal.

 
Nerd Trader #:

Eu apago todos os objetos no OnDeInit() por loop (setas indicando barras de sinal e um botão):

Estou ciente dos ObjetosDeleteAll(), mas ainda assim se eu fizer isso através de um loop, apenas metade dos objetos são deletados em um. Na verdade, aqui está como funciona o loop e não entendo porque isso acontece:

mas se você tentar desta forma - só é preciso colocar todos os nomes

string   m_name[]= {"button1","ArrowUp0008","ArrowDown0008","ArrowUp0006","ArrowDown0006"};
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   for(int i=0; i<ArraySize(m_name); i++)
     {
      ObjectDelete(0,m_name[i]);
     }
//---
  }
//+------------------------------------------------------------------+