Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 1132
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
Quelque part dans l'aide, les développeurs ont indiqué qu'aucun tri n'est garanti.
Il y a toujours une commande sur le billet. Le ticket d'une commande ultérieure ne sera jamais plus petit que celui d'une commande antérieure (par le temps d'ouverture).
Et si nous effectuons une recherche parmi les ordres en attente, dans l'ordre, l'ordre portant le numéro 0 est l'ordre le plus ancien, et l'ordre portant le numéro OrdersTotal()-1 sera l'ordre le plus récent (encore une fois, par le temps d'ouverture), sans tenir compte du type.
Dans l'historique des ordres clôturés, cela dépend toujours du tri effectué dans l'onglet historique de la fenêtre du terminal.
J'ai dû vérifier. Je ne l'ai pas trouvé dans la référence MQL5, mais je l'ai trouvé dans la référence OrderSelect pour MQL4:
" Lorsque vous utilisez le paramètre SELECT_BY_POS, les informations sont renvoyées dans l'ordre dans lequel elles ont été reçues du serveur commercial. Aucun tri de la liste des commandes reçues n'est garanti."
En fait, je vérifie systématiquement si les listes que j'utilise disposent d'un tri par numéro de ticket. Il n'y a pas eu de cas d'absence. Mais vous ne pouvez pas non plus argumenter avec la référence, il n'y a pas d'argument. C'est aussi bien, c'est aussi bien...
J'ai dû vérifier. Je ne l'ai pas trouvé dans la référence MQL5, mais je l'ai trouvé dans la référence OrderSelect pour MQL4:
" Lorsque vous utilisez le paramètre SELECT_BY_POS, les informations sont renvoyées dans l'ordre dans lequel elles ont été reçues du serveur commercial. Aucun tri de la liste des commandes reçues n'est garanti."
En fait, je vérifie systématiquement si les listes que j'utilise disposent d'un tri par numéro de ticket. Il n'y a pas eu de cas d'absence. Mais vous ne pouvez pas non plus argumenter avec la référence, il n'y a pas d'argument. C'est aussi bien, c'est aussi bien...
Que voulez-vous dire par "pas de tri" ? Trier par ticket - il y aura toujours un ordre et il n'y a pas de contradiction avec la documentation, elle parle de trier par numéro de ticket, pas par ticket, ce sont des choses différentes.
Exécutez ce code, et lisez le journal
void OnTick()
{
//--
if(flag)
{
for(int i=0; i<OrdersTotal(); i++)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
Print(i," = ",OrderOpenTime());
}
}
flag=false;
}
//-
}
Un autre problème que j'ai rencontré ! Ne jugez pas, j'étudie la langue depuis 2 ou 3 semaines, peut-être que je suis juste stupide !
La tâche du conseiller expert est d'informer le trader par e-mail toutes les 4 heures, si la marge libre sur le compte a ajouté une certaine valeur.
Dans le sujet du message, vous devez écrire le nom du courtier et la paire négociée, et dans le corps du message "Danger ! Le tirage au sort dépasse la limite. Prenez les mesures nécessaires".
Le compilateur fonctionne mal, je ne suis pas bon en anglais et je n'arrive pas à comprendre quelle est l'erreur !
double Sag;
void OnTick()
{
Sag = NormalizeDouble(100-100*(AccountInfoDouble(ACCOUNT_FREEMARGIN)/AccountInfoDouble(ACCOUNT_BALANCE)), 1); //находим процент просадки и округляем до 1 знака
if(Sag > MessageMail && iVolume(NULL,PERIOD_H4,0)<3) //если просадка больше заданного и начата новая свеча на 4ч таймфрейме
{
Alert(Symbol(), ": Просадка = ", Sag, " % ", " > ", MessageMail, " % "); //вывести предупреждение в терминале
//Сюда нужно вставить команду SendMail для отправки сообщения, а что и как не понятно
// пробовал bool SendMail( AccountInfoString(ACCOUNT_COMPANY)|Symbol, "Опасность! Просадка привысила допустимое значение. Примите необходимые меры")
//что то не выходит
}
}
PS : Peut-être qu'en général il y a une solution plus facile pour ce genre de problème, mais jusqu'à présent je ne vois que cette façon de faire)
Un autre problème que j'ai rencontré ! Ne jugez pas, j'étudie la langue depuis 2 ou 3 semaines, peut-être que je suis juste stupide !
La tâche du conseiller expert est d'informer le trader par e-mail toutes les 4 heures, si la marge libre sur le compte a ajouté une certaine valeur.
Dans le sujet du message, vous devez écrire le nom du courtier et la paire négociée, et dans le corps du message "Danger ! Le tirage au sort dépasse la limite. Prenez les mesures nécessaires".
Le compilateur se plaint, je ne suis pas bon en anglais et je n'arrive pas à comprendre quelle est l'erreur !
double Sag;
void OnTick()
{
Sag = NormalizeDouble(100-100*(AccountInfoDouble(ACCOUNT_FREEMARGIN)/AccountInfoDouble(ACCOUNT_BALANCE)), 1); //находим процент просадки и округляем до 1 знака
if(Sag > MessageMail && iVolume(NULL,PERIOD_H4,0)<3) //если просадка больше заданного и начата новая свеча на 4ч таймфрейме
{
Alert(Symbol(), ": Просадка = ", Sag, " % ", " > ", MessageMail, " % "); //вывести предупреждение в терминале
//Сюда нужно вставить команду SendMail для отправки сообщения, а что и как не понятно
// пробовал bool SendMail( AccountInfoString(ACCOUNT_COMPANY)|Symbol, "Опасность! Просадка привысила допустимое значение. Примите необходимые меры")
//что то не выходит
}
}
PS : Peut-être qu'en général il y a une solution plus simple pour un tel problème, mais jusqu'à présent je ne vois que cette façon de faire)
Je ne sais pas de quoi il s'agit.
Quelles sont les erreurs du compilateur
prıvet.podjalujte pojalusta pozwala why on demo schete ne mogu otkrıt zdelkı