le fait de le mettre dans une seule requête est encore plus dommageable.
ce qui est intéressant ...
par exemple, le code SQL d'une requête complexe est plus difficile à lire que celui de quelques requêtes SQL successives.
et aussi étrange que cela puisse paraître, les performances de trois requêtes simples sont souvent meilleures que celles d'une seule requête complexe (apparemment optimisée)
La logique de ceux qui écrivent des requêtes SQL complexes... souffre... juste parce que...
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. 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);
}
Comment c'est ? Cela m'a plu personnellement... :))
Parfois, vous avez besoin de trier les données dans MQL4 sans toucher aux données elles-mêmes. Il n'y a pas de pointeurs dans MQL4, et il n'y a pas non plus de structures.
Voici un exemple de script qui trie des données par différents paramètres grâce à l'émulation de pointeurs. Peut-être quelqu'un trouvera-t-il cette approche et la fonction de triage utiles.
#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;
}
Code alternatif :
Code alternatif :
if(index>0 || index>8) return (-1) ;
Peut-être que si(index < 0 || ...) ... ; ?
La deuxième version du code est vraiment meilleure ... et plus jolie.
--
C'est vrai... quand il est plus difficile de maintenir un code optimisé en taille qu'un code flou.
c'est-à-dire qu'un texte plus large est parfois plus facile à maintenir...
--
Dans SQL, c'est à l'envers... optimisation du code
le fait de le mettre dans une seule requête est encore plus dommageable.
ce qui est intéressant ...
par exemple, le code SQL d'une requête complexe est plus difficile à lire que celui de quelques requêtes SQL successives.
et aussi étrange que cela puisse paraître, les performances de trois requêtes simples sont souvent meilleures que celles d'une seule requête complexe (apparemment optimisée)
La logique de ceux qui écrivent des requêtes SQL complexes... souffre... juste parce que...
1 - peu pratique à entretenir
2. Travail plus lent
--
ne s'appliquent pas à votre code
c'est juste par expérience...
Voici quelque chose que j'ai beaucoup aimé... Tiré du fil de discussion d'Igor Kim, son premier code :
... et son second :
Comment c'est ? Cela m'a plu personnellement... :))J'ai fait un indicateur. Mais lorsque ZZCount>1, le terminal raccroche. Il semble qu'il n'y ait pas d'erreurs.
Peut-être que quelqu'un en trouvera la cause ?
Tu peux aussi être un vieil homme.
Merci beaucoup !
Parfois, vous avez besoin de trier les données dans MQL4 sans toucher aux données elles-mêmes. Il n'y a pas de pointeurs dans MQL4, et il n'y a pas non plus de structures.
Voici un exemple de script qui trie des données par différents paramètres grâce à l'émulation de pointeurs. Peut-être quelqu'un trouvera-t-il cette approche et la fonction de triage utiles.
Le résultat du travail :