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

 
trader781:

reescreveu o post 844 para evitar ter que escrever o código aqui novamente

Quanto à matriz de tamanho zero - 0 pode ser um número inteiro, pode ser o equivalente a um falsificador booleano, pode ser um vazio, e pode ser o ponto de partida.

Não importa o que você quer dizer com zero. Se você dimensionar uma matriz com zero, chame-a de zero gingerbread e ela será zero. O que significa que a matriz será zero.
 
trader781:

reescreveu o post 844 para evitar ter que escrever o código aqui novamente

Quanto à matriz de tamanho zero - 0 pode ser um número inteiro, pode ser o equivalente a um falsificador booleano, pode ser um vazio, e pode ser um ponto de partida.

E, por favor, não me obrigue a inserir o código certo no correio certo para você:

//+------------------------------------------------------------------+
//|                                                      ProjectName |
//|                                      Copyright 2012, CompanyName |
//|                                       http://www.companyname.net |
//+------------------------------------------------------------------+
#property strict
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
struct myorder
  {
   int               Ticket;
   double            orderopenprice;
   int               ordertype;
   double            profit;
   double            stoploss;
   double            lot;
  };
myorder orders[];

int    i;
int    Magic=444;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   CalcOrders();

  }
//+------------------------------------------------------------------+
void CalcOrders()
  {
   int count1=0;

   for(i=OrdersTotal()-1; i>=0; i--)
     {
      if((OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) && (OrderSymbol()==Symbol())
         && (OrderMagicNumber()==Magic) && (OrderType()<2))
        {
         count1++;
         ArrayResize(orders,count1);
         orders[count1-1].Ticket=OrderTicket();
         orders[count1-1].lot=OrderLots();
         orders[count1-1].orderopenprice=OrderOpenPrice();
         orders[count1-1].ordertype=OrderType();
         orders[count1-1].profit=OrderProfit();
         orders[count1-1].stoploss=OrderStopLoss();
        }
     }
   ArraySort(orders,WHOLE_ARRAY,0,MODE_ASCEND);

  }
//+------------------------------------------------------------------+

Agora veja em que matriz você está preenchendo e por qual campo você está ordenando. E o mais importante - por que você precisa desta triagem? Qual é o objetivo disso?

 
Artyom Trishkin:

E por favor, não me faça colar o código certo na mensagem certa para você:

А теперь поглядите какой массив вы заполняете и по какому полю его сортируете. И, главное - зачем нужна эта сортировка? Какой в ней смысл?

ordenar o conjunto de ordens, em ordem ascendente a partir do valor zero

por exemplo, se temos 20 ordens e 18 delas subiram acidentalmente por alguns pontos e eu a fechei imediatamente com minhas mãos

 
trader781:

ordenar o conjunto de ordens, em ordem ascendente a partir do valor zero

Por exemplo, se temos 20 pedidos e 18 deles subiram acidentalmente por alguns pontos, e eu os fechei imediatamente com minhas mãos.

Se você precisar absolutamente de classificação por bilhete, você terá que fazer 2 matrizes. Uma é uma matriz de estruturas e a segunda é uma matriz bidimensional que contém o ticket de pedido na primeira dimensão, e na segunda o índice do contador, o índice sob o qual a informação do pedido é armazenada na matriz de estruturas. E preencher estas matrizes ao mesmo tempo em um loop.

Você vem tentando resolver esta questão há tanto tempo, que eu nem me lembro do propósito que você estava tentando alcançar. E provavelmente todos os outros.

Se eu me lembro corretamente, você precisa selecionar um certo número da lista de pedidos. Então qual é o problema com isso? Basta fazer uma simples matriz unidimensional, classificá-la e depois ordenarSelect(matriz[necessário], SELECT_BY_TICKET) e pronto... então você pode fazer o que quiser com este pedido.

 
Alexey Viktorov:

Se você precisa absolutamente classificar por bilhete, você tem que fazer duas matrizes. Uma é uma matriz de estrutura e a segunda é uma matriz bidimensional, que contém o ticket do pedido na primeira dimensão e o índice do contador na segunda, o índice sob o qual as informações do pedido são armazenadas na matriz de estrutura. E preencher estas matrizes ao mesmo tempo em um loop.

Você vem tentando resolver esta questão há tanto tempo, que eu nem me lembro do propósito que você estava tentando alcançar. E provavelmente todos os outros.

Se eu me lembro corretamente, você precisa selecionar um certo número da lista de pedidos. Então qual é o problema com isso? Basta fazer uma simples matriz unidimensional, classificá-la e depois ordenarSelect(matriz[necessário], SELECT_BY_TICKET) e pronto... Então você pode fazer o que quiser com este pedido.

Também não me lembro o que devo fazer ali. Mas o bom é que ele faz.

Eu lhe peço especificamente que escreva uma coisa no início, e depois lhe peço que olhe cuidadosamente o que ele escreveu, para que ele mesmo entenda que não vai funcionar desta maneira - ele precisa de outra matriz local na função, que teremos que classificar e depois preencher a matriz global a partir da classificada.

 
Alexey Viktorov:

Se você precisa absolutamente classificar por bilhete, você tem que fazer duas matrizes. Uma é uma matriz de estrutura e a segunda é uma matriz bidimensional, que contém o ticket do pedido na primeira dimensão e o índice do contador na segunda, o índice sob o qual as informações do pedido são armazenadas na matriz de estrutura. E preencher estas matrizes ao mesmo tempo em um loop.

Você vem tentando resolver esta questão há tanto tempo, que eu nem me lembro do propósito que você estava tentando alcançar. E provavelmente todos os outros.

Se eu me lembro corretamente, você precisa selecionar um certo número da lista de pedidos. Então qual é o problema com isso? Basta fazer uma simples matriz unidimensional, classificar os bilhetes e depois encomendarSelect(matriz[necessário], SELECT_BY_TICKET) e pronto... então faça o que quiser com esta ordem.

Não, eu entendo que há muitas maneiras de fazer isso de forma diferente e evitar arrays. Por que preciso de 2 se vou usar uma das matrizes?
 
trader781:
Não, eu entendo que há muitas maneiras de fazer isso de forma diferente e sem arrays. Por que 2 se existe uma das estruturas?

Como uma matriz simples é classificada por valores na primeira dimensão da matriz, e como uma matriz de estruturas é classificada, eu não tenho idéia.

Pergunta interessante, porém... Agora vou tentar ordenar uma série de estruturas.

 
Alexey Viktorov:

Porque uma matriz simples é ordenada por valores na primeira dimensão da matriz, mas como uma matriz de estruturas é ordenada eu não tenho idéia.

É uma pergunta interessante, no entanto... Agora vou tentar ordenar uma série de estruturas.

Não tenho a menor idéia para que serve na forma de uma estrutura. O programa mq é escrito em um único arquivo, a matriz é tratada em um único rolo de rolagem, e cabe em uma única tela. Para que serve uma estrutura, neste caso, para o interesse esportivo?
 
Alexey Viktorov:

Porque uma matriz simples é classificada por valores na primeira dimensão da matriz, mas não tenho idéia de como uma matriz de estruturas é classificada.

Embora a pergunta seja interessante... Vou tentar ordenar uma série de estruturas.

Não tenho idéia do que é ou do que se trata

Mas agora que o assunto foi levantado, é uma tolice jogá-lo fora. Há também matrizes de classes.

 
Vitaly Muzichenko:
Não tenho a menor idéia do porquê de ser necessário na forma de uma estrutura. O programa mq é escrito em um arquivo, a matriz é manipulada em um rolo de rolagem e cabe em uma tela. Para que serve uma estrutura, neste caso, para o interesse esportivo?

Escrevemos tudo para o bem do esporte. Primeiro entendemos o que funciona e como funciona, e depois começamos a pensar em como escrevê-lo de forma mais eficaz.


Quanto à classificação da estrutura: como eu esperava, a experiência fracassou. Já no momento da compilação o compilador disse que"a expressão não tem efeito".

Razão: