[Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas votre chemin. Je ne peux aller nulle part sans toi. - page 567
![MQL5 - Langage des stratégies de trading intégré au terminal client MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Une autre question d'un débutant.
J'utilise plusieurs fonctions définies par l'utilisateur dans mon conseiller expert. Comment puis-je faire en sorte que ces fonctions soient combinées dans une bibliothèque, et dans le corps du conseiller expert, les appeler simplement à partir de là.
Je ne connais pas la syntaxe des langues à cet égard.
Veuillez vous référer à la documentation ou à la section des didacticiels. Je ne l'ai pas trouvé là-bas.
https://book.mql4.com/ru/build/structure
https://www.mql5.com/ru/articles/1462
+ pour couronner le tout... https://book.mql4.com/ru/appendix/examples
Comment écrire une fonction qui vérifie si une position est ou a été ouverte sur une barre zéro (de préférence un choix de timeframe. OpenPosLastBar(string sym="", int tf=0, int op=-1, int mn=-1), ou cette fonction le fait. Si j'ai bien compris, il ne renvoie que -1 si la position est ouverte en ce moment, mais si elle était ouverte et déjà fermée.
//+----------------------------------------------------------------------------+
//| Renvoie le numéro de barre de la dernière position ouverte ou -1. |
//| Paramètres : |
//| sym - nom de l'instrument ("" - symbole actuel) |
//| tf - timeframe ( 0 - timeframe actuel) |
//| op - opération (-1 - n'importe quelle position) |
//| mn - MagicNumber (-1 - n'importe quelle magik) |
//+----------------------------------------------------------------------------+
int NumberOfBarLastPos(string sym="", int tf=0, int op=-1, int mn=-1)
{
datetime oot ;
int i, k=OrdersTotal() ;
if(sym=="")
sym=Symbol() ;
for(i=0 ; ik ; i++)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if(OrderSymbol()==sym)
{
if(OrderType()==OP_BUY || OrderType()==OP_SELL)
{
if(op0 || OrderType()==op)
{
if(mn0 || OrderMagicNumber()==mn)
{
if(ootOrderOpenTime()) oot=OrderOpenTime() ;
}
}
}
}
}
}
return(iBarShift(sym, tf, oot, True)) ;
}
//+----------------------------------------------------------------------------+
Нужно два цикла. В первом проходим по истории ордеров, во втором - по текущим ордерам. В обоих случаях если время открытия ордера больше или равно Time[0], то ордер был открыт на текущей свече. Это справедливо для всех таймфреймов.
Merci de cliquer. Pourriez-vous demander ceci dans le code
Спадибо, что аткликнулся. А можно попросить это в коде
Voici un exemple de passage historique
Essayez de créer votre propre code, d'autant plus que vous avez l'algorithme et un exemple tout fait sous les yeux.
ObjectDelete(a_name_0) ;
ObjectCreate(a_name_0, OBJ_ARROW, a_window_8, a_datetime_12, a_price_20) ;
ObjectSet(a_name_0, OBJPROP_ARROWCODE, ai_28) ;
ObjectSet(a_name_0, OBJPROP_COLOR, a_color_32) ;
ObjectSet(a_name_0, OBJPROP_WIDTH, a_width_36) ;
}
void _setabuy(string as_0) {
g_str_concat_356 = StringConcatenate(as_0, gi_120) ;
seta(g_str_concat_356, 0, TimeCurrent(), Bid + 15.0 * Point, SYMBOL_ARROWUP, Blue, 2) ;
gi_120++ ;
}
void _setasell(string as_0) {
g_str_concat_356 = StringConcatenate(as_0, gi_120) ;
seta(g_str_concat_356, 0, TimeCurrent(), Bid - 15.0 * Point, SYMBOL_ARROWDOWN, Red, 2) ;
gi_120++ ;
}
Вот пример прохода по истории
Попробуйте самостоятельно придумать код, тем более, что алгоритм и готовый пример у Вас перед глазами.
Merci. Je vais essayer.
Вот пример прохода по истории
Попробуйте самостоятельно придумать код, тем более, что алгоритм и готовый пример у Вас перед глазами.
Ou bien voici une fonction qui vérifie si une position a été ouverte sur la barre actuelle (avec une vérification sur OrdersTotal() et OrdersHistoryTotal() ). Renvoie un résultat positif si un ordre de type a été ouvert.
Veuillez me dire comment mettre en œuvre cette condition.
Si( il y a des ordres en attente) alors faites ceci et cela ;