Bom dia!
Tem como ordenar arrays customizados? O ArraySort() não funciona na minha array de dois informações.
struct ALVOS
{
double Val;
double Qtd;
ALVOS() {
Val = 0;
Qtd = 0;
}
~ALVOS(){}
};
ALVOS AlvosCompra[];
ALVOS AlvosVendas[];
Como ordenar essas duas arrays pela dimensão Val?
Tem função pra isso ou preciso criar uma função que o faça?
Desde já Grato!
olá Juan!
Você terá que fazer isso manualmente, implementando algum algoritmo de ordenação como Quick Sort, Bubble Sort etc. Você pode pegar um código pronto e adaptar. Aí na comparação você usa o atributo que quer ordenar.
Dá uma olhada nesse artigo, quem sabe te ajuda também!
![Métodos de ordenação e sua visualização usando a MQL5 Métodos de ordenação e sua visualização usando a MQL5](https://c.mql5.com/36/37/m-todos-de-ordena-o-e-sua-visualiza.jpg)
- www.mql5.com
olá Juan!
Você terá que fazer isso manualmente, implementando algum algoritmo de ordenação como Quick Sort, Bubble Sort etc. Você pode pegar um código pronto e adaptar. Aí na comparação você usa o atributo que quer ordenar.
Dá uma olhada nesse artigo, quem sabe te ajuda também!
Valeu pela ajuda! Dei uma estudada no material que enviou mas não é o caminho que quero e preciso seguir nesse momento, porém pode servir no futuro, muito obrigado. Vou ter que criar uma rotina de ordenação pelo visto!
Valeu pela ajuda! Dei uma estudada no material que enviou mas não é o caminho que quero e preciso seguir nesse momento, porém pode servir no futuro, muito obrigado. Vou ter que criar uma rotina de ordenação pelo visto!
Isso, pega o código no stackoverflow, github ou até no wikipedia. Pega a versão em C++ que é a mais parecida com MQL5
boa sorte!
Bom dia!
...
ve se isso te ajuda, precisa passar a strutura, os dados e qual campo quer ordenar.
#define ArraySortStruct(T, ARRAY, FIELD) \ { \ class SORT \ { \ private: \ static void Swap( T &Array[], const int i, const int j ) \ { \ const T Temp = Array[i]; \ \ Array[i] = Array[j]; \ Array[j] = Temp; \ \ return; \ } \ \ static int Partition( T &Array[], const int Start, const int End ) \ { \ int Marker = Start; \ \ for (int i = Start; i <= End; i++) \ if (Array[i].##FIELD <= Array[End].##FIELD) \ { \ SORT::Swap(Array, i, Marker); \ \ Marker++; \ } \ \ return(Marker - 1); \ } \ \ static void QuickSort( T &Array[], const int Start, const int End ) \ { \ if (Start < End) \ { \ const int Pivot = Partition(Array, Start, End); \ \ SORT::QuickSort(Array, Start, Pivot - 1); \ SORT::QuickSort(Array, Pivot + 1, End); \ } \ \ return; \ } \ \ public: \ static void Sort( T &Array[], int Count = WHOLE_ARRAY, const int Start = 0 ) \ { \ if (Count == WHOLE_ARRAY) \ Count = ::ArraySize(Array); \ \ SORT::QuickSort(Array, Start, Start + Count - 1); \ \ return; \ } \ }; \ \ SORT::Sort(ARRAY); \ } void OnStart() { MqlRates Rates[]; CopyRates(_Symbol, PERIOD_CURRENT, 0, 5, Rates); ArrayPrint(Rates); ArraySortStruct(MqlRates, Rates, open); ArrayPrint(Rates); ArraySortStruct(MqlRates, Rates, high); ArrayPrint(Rates); ArraySortStruct(MqlRates, Rates, time); ArrayPrint(Rates); }
ve se isso te ajuda, precisa passar a strutura, os dados e qual campo quer ordenar.
Cara! Fantastico! Vlw mesmo!
Cara! Fantastico! Vlw mesmo!
Opa,
Espero que tenha ajudado.
Muito bom ,
já coloquei no meu copycode (includes pessoais).
ve se isso te ajuda, precisa passar a strutura, os dados e qual campo quer ordenar.
Muito maneiro , codigo limpo, te falar q sempre fazia com for ... e tinha q ficar repetindo codigo, e usava o metodo bolha, manualmente mesmo,.... essa implementacao do quicksort
ficou fantastica ...mandou muito bem !!!
![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Bom dia!
Tem como ordenar arrays customizados? O ArraySort() não funciona na minha array de dois informações.
struct ALVOS
{
double Val;
double Qtd;
ALVOS() {
Val = 0;
Qtd = 0;
}
~ALVOS(){}
};
ALVOS AlvosCompra[];
ALVOS AlvosVendas[];
Como ordenar essas duas arrays pela dimensão Val?
Tem função pra isso ou preciso criar uma função que o faça?
Desde já Grato!