por exemplo, o código SQL de uma consulta complexa é mais difícil de ler do que algumas consultas SQL sucessivas
e por mais estranho que possa parecer, o desempenho de três consultas simples é frequentemente melhor do que o desempenho de uma consulta complexa (aparentemente otimizada)
A lógica daqueles que escrevem consultas SQL complexas... sofre... só porque...
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 12.10.2007 |//+----------------------------------------------------------------------------+//| Описание : Возвращает интервал установки сигнальных указателей |//| Параметры: |//| pr - процент относительно ценового размера окна |//+----------------------------------------------------------------------------+int GetArrowInterval(int pr=7) {
if (pr<=0) pr=7;
return((WindowPriceMax()-WindowPriceMin())/100*pr/Point);
}
Às vezes é necessário classificar os dados na MQL4 sem tocar nos próprios dados. Não há indicadores na MQL4, e também não há estruturas.
Aqui está um exemplo de um roteiro que ordena os dados por diferentes parâmetros através da emulação de ponteiros. Talvez alguém ache útil esta abordagem e a função de classificação.
#define AMOUNT 5string Symbols[AMOUNT] = {"EURUSD", "GBPUSD", "USDJPY", "USDCHF", "EURGBP"};
int Profit[AMOUNT] = {50, -130, 90, 2000, 0};
int Pos[AMOUNT] = {3, 0, 6, 7, 1};
int SL[AMOUNT] = {20, 60, 10, 80, 100};
void SortArrayINT( int Array[], int& Positions[], bool Increase = TRUE )
{
int i, j, Tmp, Size = ArraySize(Array);
if (ArraySize(Positions) != Size)
ArrayResize(Positions, Size);
for (i = 0; i < Size; i++)
Positions[i] = i;
if (Increase)
{
for (i = 0; i < Size - 1; i++)
for (j = i + 1; j < Size; j++)
if (Array[Positions[i]] > Array[Positions[j]])
{
Tmp = Positions[j];
Positions[j] = Positions[i];
Positions[i] = Tmp;
}
}
elsefor (i = 0; i < Size - 1; i++)
for (j = i + 1; j < Size; j++)
if (Array[Positions[i]] < Array[Positions[j]])
{
Tmp = Positions[j];
Positions[j] = Positions[i];
Positions[i] = Tmp;
}
return;
}
void PrintInfo( string SortName, int Array[] )
{
int Positions[];
SortArrayINT(Array, Positions);
Print("Sort by " + SortName);
Print("SYMBOL PROFIT POS SL");
for (int i = 0; i < AMOUNT; i++)
Print(Symbols[Positions[i]] + " " + Profit[Positions[i]] + " " +
Pos[Positions[i]] + " " + SL[Positions[i]]);
Print("");
return;
}
void start()
{
PrintInfo("PROFIT", Profit); // распечатали данные, отсортированные по параметру Profit
PrintInfo("POS", Pos); // распечатали данные, отсортированные по параметру Pos
PrintInfo("SL", SL); // распечатали данные, отсортированные по параметру SLreturn;
}
Código alternativo:
Código alternativo:
if(index>0 || index>8) retorno (-1);
Talvez se(índice < 0 || ...) ...; ?
A segunda versão do código é realmente melhor ... e mais bonita
--
É verdade ... quando é mais difícil manter um código de tamanho otimizado do que um código borrado.
ou seja, escrever de forma mais ampla às vezes é mais fácil de manter...
--
Em SQL está de cabeça para baixo... otimização de código
colocá-lo em uma única consulta até dói
o que é interessante ...
por exemplo, o código SQL de uma consulta complexa é mais difícil de ler do que algumas consultas SQL sucessivas
e por mais estranho que possa parecer, o desempenho de três consultas simples é frequentemente melhor do que o desempenho de uma consulta complexa (aparentemente otimizada)
A lógica daqueles que escrevem consultas SQL complexas... sofre... só porque...
1 - inconveniente para manter
2-baixo trabalho
--
não se aplique ao seu código
isso é apenas por experiência...
Eis algo que eu gostei muito... Extraído do fio do Igor Kim, seu primeiro código:
... e sua segunda:
Como é isso? Isso me agradou pessoalmente... :))Feito um indicador. Mas quando ZZCount>1 o terminal desliga. Parece que não há erros.
Talvez alguém encontre a causa?
Você também pode ser um homem velho.
Muito obrigado!
Às vezes é necessário classificar os dados na MQL4 sem tocar nos próprios dados. Não há indicadores na MQL4, e também não há estruturas.
Aqui está um exemplo de um roteiro que ordena os dados por diferentes parâmetros através da emulação de ponteiros. Talvez alguém ache útil esta abordagem e a função de classificação.
O resultado do trabalho: