Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 1134

Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Chers programmeurs, veuillez aider un débutant dans ce domaine.
L'EA ouvre les ordres d'achat et de vente séquentiellement après une certaine période de temps. Je veux qu'il modifie tous les ordres précédents (plus précisément, tous les ordres précédents doivent être fermés par la prise de bénéfices du dernier ordre). C'est-à-dire que si le dernier ordre d'achat et l'ordre de vente précédent, alors le stop loss de l'ordre précédent est fixé au niveau du take profit du dernier ordre,
Si l'achat précédent est un achat, alors son TakeProfit sera fixé au niveau du dernier TakeProfit. Le fait est que lorsque le takeprofit du dernier ordre arrive, tous les ordres doivent être fermés).
J'espère l'avoir expliqué clairement, même s'il est difficile de comprendre comment le mettre en œuvre. Merci d'avance.
Je comprends que l'on puisse passer par tous les ordres ouverts et les modifier, mais comment faire pour sauter le dernier ?
Le plus important dans tout cela est de comprendre ce qui doit se passer.
Qu'est-ce que le "dernier ordre" ? Est-ce que l'heure d'ouverture est la dernière ? Ou par niveau de prix d'ouverture ?
Que se passe-t-il si nous considérons le "dernier" ordre comme un "achat", mais que le prix augmente ? Ou vice versa, le dernier ordre sera VENDRE, mais le prix va vers le nord ? Alors lequel doit être considéré comme le dernier ? C'est ce que nous devons comprendre pour réaliser notre idée.
Bonjour. Si vous ne savez pas à l'avance combien d'éléments il y aura dans le tableau, comment déclarer le tableau de façon à ce que le tableau augmente avec chaque nouvel élément ?
Un exemple pour rendre les choses plus claires :
for(int i=0; i<1000; i++)
{
if(A[i]<B[i])
HighA[i]=A[i];
}
Print(">>>>>>>>>>>..ArraySize(HighA)= ",ArraySize(HighA));
Bonjour. Si vous ne savez pas à l'avance combien d'éléments il y aura dans le tableau, comment déclarer le tableau de façon à ce que le tableau augmente avec chaque nouvel élément ?
Un exemple pour rendre les choses plus claires :
for(int i=0; i<1000; i++)
{
if(A[i]<B[i])
HighA[i]=A[i];
}
Print(">>>>>>>>>>>..ArraySize(HighA)= ",ArraySize(HighA));
Vous devriez lire la documentation plus souvent.
J'ai lu et essayé mais j'obtiens une erreur "array out of range". Dans l'exemple, cela ressemblait à ceci :
for(int i=0; i<1000; i++)
{
if(A[i]<B[i])
{
countHlines++;
ArrayResize(HighA,countHlines);
HighA[i]=A[i];
}
}
Print(">>>>>>>>>>>..ArraySize(HighA)= ",ArraySize(HighA));
J'ai lu et essayé mais j'obtiens une erreur "array out of range". Sur l'exemple, cela ressemblait à ceci :
for(int i=0; i<1000; i++)
{
if(A[i]<B[i])
{
countHlines++;
ArrayResize(HighA,countHlines);
HighA[i]=A[i];
}
}
Print(">>>>>>>>>>>..ArraySize(HighA)= ",ArraySize(HighA));
Lorsque la condition A[i] < B[i] n'est pas remplie, la taille du tableau reste inchangée et le compteur de la boucle est incrémenté. C'est pourquoi il est hors de portée.
Essayez de cette façon.
for(int i=0; i<1000; i++)
{
if(A[i]<B[i])
{
int size = ArraySize(HighA);
ArrayResize(HighA, size+1);
HighA[size]=A[i];
}
}
Print(">>>>>>>>>>>..ArraySize(HighA)= ",ArraySize(HighA));
Lorsque la condition A[i] < B[i] n'est pas satisfaite, la taille du tableau reste inchangée et le compteur de la boucle est incrémenté. C'est pourquoi il est hors limite.
Essayez de cette façon.
for(int i=0; i<1000; i++)
{
if(A[i]<B[i])
{
int size = ArraySize(HighA);
ArrayResize(HighA, size+1);
HighA[size]=A[i];
}
}
Print(">>>>>>>>>>>..ArraySize(HighA)= ",ArraySize(HighA));
J'ai lu et essayé mais j'obtiens une erreur "array out of range". Dans l'exemple, cela ressemblait à ceci :
for(int i=0; i<1000; i++)
{
if(A[i]<B[i])
{
countHlines++;
ArrayResize(HighA,countHlines);
HighA[i]=A[i];
}
}
Print(">>>>>>>>>>>..ArraySize(HighA)= ",ArraySize(HighA));
Eh bien, ça irait plus vite
double HighA[];
for(int i=0; i<1000; i++)
{
if(A[i]<B[i])
{
countHlines++;
ArrayResize(HighA,countHlines);
HighA[countHlines-1]=A[i];
}
}
Print(">>>>>>>>>>>..ArraySize(HighA)= ",ArraySize(HighA));
// Вариант №2
int countHlines=-1;
double HighA[];
for(int i=0; i<1000; i++)
{
if(A[i]<B[i])
{
countHlines++;
ArrayResize(HighA,countHlines+1);
HighA[countHlines]=A[i];
}
}
Print(">>>>>>>>>>>..ArraySize(HighA)= ",ArraySize(HighA));
Eh bien, ça ira plus vite comme ça
double HighA[];
for(int i=0; i<1000; i++)
{
if(A[i]<B[i])
{
countHlines++;
ArrayResize(HighA,countHlines);
HighA[countHlines-1]=A[i];
}
}
Print(">>>>>>>>>>>..ArraySize(HighA)= ",ArraySize(HighA));
// Вариант №2
int countHlines=-1;
double HighA[];
for(int i=0; i<1000; i++)
{
if(A[i]<B[i])
{
countHlines++;
ArrayResize(HighA,countHlines+1);
HighA[countHlines]=A[i];
}
}
Print(">>>>>>>>>>>..ArraySize(HighA)= ",ArraySize(HighA));
Merci, je vois ! Il sera plus rapide grâce à ArraySize, est-ce que cela le ralentit d'une manière ou d'une autre ?
Pas grand-chose, mais c'est clair et sans risque d'erreur.