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

 
Artyom Trishkin #:
E como é fácil montar uma matriz e ordenar pelo critério certo. Mas, durante 100500 páginas, estivemos nos mutilando de calcanhar.
Por favor, mostre-me um exemplo em código. Eu não sei como empilhar em uma matriz e depois classificar também.
 
Alexey Viktorov #:
Afinal, é mais fácil e mais rápido verificar do que esperar por uma resposta de outra pessoa.

Minhas habilidades de mql são muito baixas) eu poderia tentar, mas levaria muito tempo) então é melhor descobrir se é possível do que gastar muito tempo e descobrir que não pode ser feito)
quando eu tiver mais tempo livre, certamente será mais fácil tentar, mas por enquanto eu preferiria perguntar a pessoas mais experientes se isso pode ser feito.

 
Scarick #:

Minhas habilidades de mql são muito pequenas) eu certamente posso tentar, mas isso vai me levar muito tempo) então é melhor descobrir de antemão se é possível fazer algo, do que gastar muito tempo e descobrir que não pode ser feito)
quando eu tiver mais tempo livre, certamente será mais fácil tentar, mas por enquanto eu preferiria perguntar a pessoas mais experientes se isso pode ser feito.

Se suas habilidades não são muito grandes, mas seu pensamento lógico está funcionando, o que pode ser entendido a partir desta pergunta?

Fórum sobre comércio, sistemas comerciais automatizados e teste de estratégias comerciais.

Qualquer pergunta de iniciantes sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos

Scarick, 2021.11.06 17:01

Em outras palavras, se eu assinar 5 símbolos em um indicador, posso trabalhar com todos os 5 símbolos através de um OnBookEvent()? A única coisa importante é filtrar por qual personagem a mudança ocorreu?

a coisa mais confiável a fazer é verificar, não esperar por uma resposta positiva de outra pessoa. Foi por isso que respondi como respondi
 
MakarFX #:
Por favor, mostre-me um exemplo em código. Eu não sei como empilhar em uma matriz e depois classificar também.

Veja aquihttp://www.mql5.com/ru/articles/1404 Não há ordenação ali, mas empilhar em uma matriz.

Управление ордерами – это просто
Управление ордерами – это просто
  • www.mql5.com
Статья описывает разнообразные способы контроля открытых позиций и отложенных ордеров и призвана облегчить написание экспертов.
 
MakarFX #:
Por favor, mostre-me um exemplo em código. Eu não sei como empilhar em uma matriz e depois também classificar.

bool BubleSort(struct &arr[])

{

for(int i = ArraySize(arr)-1;i>=0;i--)
for(int j = i-1;j>=0;j--) {

se (Compare(arr[i],arr[j])<0 ) Swap(arr[i],arr[j]);

}

}

Vá para a escola... tais micro-algoritmos são escritos de memória com um olho fechado.

a sério : faça um curso algorítmico ou algo assim...

 
Alexey Viktorov #:

No seu caso, se as habilidades não são grandes, mas o pensamento lógico funciona, como pode ser deduzido a partir desta pergunta

então a coisa mais confiável a fazer é verificar em vez de esperar por uma resposta positiva de outra pessoa. Foi por isso que respondi como respondi
Sim, já descobrimos como experimentá-lo com menos trabalho. Mas não se pode verificar através de um testador. Tenho que esperar por dias úteis. Mas você poderia ter respondido diretamente) Não estou lhe pedindo que escreva o código para mim, apenas fiz uma pergunta.
 

Maxim Kuznetsov #:

Vá à escola... tais micro-algoritmos são escritos de memória e bêbados, com um olho apertado.

A sério, faça um curso algorítmico ou algo assim.

Forma interessante de falar... você não deveria ter se incomodado

 
MakarFX #:

Forma interessante de falar... você não deveria ter se incomodado

Modo normal - você recebe um algoritmo de ordenação. Tudo bem, triagem normal de bolhas. Ninguém estava se esforçando.

E a mensagem normal é realmente - leia-se sobre algoritmos

Leia já a literatura.

 

Bom dia senhores programadores!!!!

Vou tentar mais uma vez fazer minha pergunta, mas reformulei um pouco o texto.

Em uma grade EA, precisamos encontrar o bilhete da penúltima ordem. Uma solução de -1 do bilhete da ordem máxima não funciona no testador de estratégia, talvez, mas não funcionará em uma demonstração ou conta real, então eu anexarei uma foto, ficará claro o porquê.

Eu escrevi o código para a função que determina o próximo ao último bilhete de pedido. Esta lógica é a seguinte: se olharmos todas as ordens abertas na grade, encontraremos a máxima seguindo-a e será o ticket de ordem necessário.

Entretanto, meu nível de programação não é suficientemente alto e há algum erro no código. O resultado desta função é o bilhete mínimo. Estas duas funções são: bilhete máximo e penúltimo bilhete. A função que define o bilhete máximo funciona sem problemas.

//+----------------------------------------------------------------------------+
//| Расчет тикета предпоследнего ордера в сетке                                |
//+----------------------------------------------------------------------------+
int GetTicketPenultimateOrder()
  {
   penultimate_ticket = 0;
     {
      for(int cnt = OrdersTotal() - 1; cnt >= 0; cnt--)
        {
         if(OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES))
           {
            if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
              {
               if(OrderType() == OP_BUY || OrderType() == OP_SELL)
                 {
                  if(OrderTicket() > penultimate_ticket && penultimate_ticket != GetTicketMaxOrder())
                     penultimate_ticket = OrderTicket();
                 }
              }
           }
        }
     }
   return(penultimate_ticket);
  }
//+----------------------------------------------------------------------------+
//| Расчет тикета максимального ордера в сетке                                 |
//+----------------------------------------------------------------------------+
int GetTicketMaxOrder()
  {
   max_ticket = 0;
     {
      for(int cnt = OrdersTotal() - 1; cnt >= 0; cnt--)
        {
         if(OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES))
           {
            if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
              {
               if(OrderType() == OP_BUY || OrderType() == OP_SELL)
                 {
                  if(OrderTicket() > max_ticket)
                     max_ticket = OrderTicket();
                 }
              }
           }
        }
     }
   return(max_ticket);
  }

Por favor, informe qual é o erro. Obrigado.

 
Scarick #:
Sim, eu já descobri como tentar com menos esforço. Mas não posso verificar isso com um testador. Tenho que esperar por dias úteis. Mas você poderia responder diretamente) Eu não estou pedindo para escrever o código para mim, eu apenas fiz uma pergunta.

Aí está... Eu não queria ofendê-lo. Que diferença faria uma resposta positiva? Afinal, você tem que escrever e verificar somente durante o horário de trabalho.

Razão: