[ARCHIVE]Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Je ne peux aller nulle part sans toi - 5. - page 88

 
Bonjour à tous ! Pouvez-vous me dire s'il est possible d'implémenter une fonction de vitesse de changement de prix dans mql4 ? Par exemple, si le prix change plus rapidement que 30 pips par seconde, alors ne pas ouvrir une transaction (pour un EA) ... si possible, dites-moi le code ... merci.
 
artmedia70:
В той функции идёт перебор ордеров для поиска последнего закрытого по тейку. Переработайте эту функцию для ускорения. Они у Кима все универсальные - значит от-туда можно много лишнего поубирать. Опять-таки, всё зависит от логики вашего эксперта.

borilunad:
Merci beaucoup ! J'ai pensé à un opérateur à utiliser, mais il n'y a pas de cas avec "ou" pour la même action.

Artyom, désolé de vous déranger ! Qu'est-ce que je peux encore supprimer de la fonction et comment ? Je ne suis intéressé que par la dernière position, fermée sur la prise !

J'ai commenté tout ce qui n'était pas nécessaire, mais ça continue à ramper et à traîner... :((

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.05.2008                                                     |
//|  Описание : Возвращает флаг закрытия последней позиции по тейку.           |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
//bool isCloseLastPosByTake(string sy="", int op=-1, int mn=-1) {
bool isCloseLastPosByTake() {//int op=-1) {//, int mn=0) {//string sy="", 
  datetime t;
  double   ocp, otp;
  int      dg, i, j=-1, k=OrdersHistoryTotal();

//  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
//      if (OrderSymbol()==sy || sy=="") {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
//          if (op<0 || OrderType()==op) {
//            if (mn<0 || OrderMagicNumber()==mn) {
              if (t<OrderCloseTime()) {
                t=OrderCloseTime();
                j=i;
              }
//            }
//          }
        }
//      }
    }
  }
  if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) {
//    dg=MarketInfo(sy, MODE_DIGITS);
//    if (dg==0) if (StringFind(OrderSymbol(), "JPY")<0) dg=5; else dg=3;
    ocp=NormalizeDouble(OrderClosePrice(), 5);//dg);
    otp=NormalizeDouble(OrderTakeProfit(), 5);//dg);
    if (ocp==otp) return(True);
  }
  return(False);
}
 

Bonsoir ! Joyeuses fêtes à tous !

J'ai supprimé mes ordres en attente dans le testeur, on peut le voir dans les résultats, mais le journal indique ERR_INVALID_TICKET 4108 Numéro de ticket invalide.

Dois-je l'ignorer ou mieux gérer la situation ?

 
bugorok:
Bonjour à tous ! Pouvez-vous me dire s'il est possible d'implémenter une fonction de taux dans mql4 ? Par exemple, si le prix change plus vite que 30 pips par seconde, alors il ne faut pas ouvrir une transaction (pour un EA)... Si vous le pouvez, dites-moi le code... merci.

Essayez de regarder le code de cet EA, il a quelque chose de similaire implémenté.

https://www.mql5.com/ru/code

extern int     KolSec =  4;  //количество секунд, между измерениями скорости цены
extern int     Punkts = 28;  //количество пунктов, которые цена проходит за это время

 //ЗАКРЫТИЕ ПОЗИЦИИ, ЕСЛИ ЦЕНА ДЕЛАЕТ РЕЗКИЙ РЫВОК ПРОТИВ НЕЕ
   //-------------------------------------------------------------
 
Dimka-novitsek:

Bonsoir ! Joyeuses fêtes à tous !

J'ai supprimé mes ordres en attente dans le testeur, on peut le voir dans les résultats, mais le journal indique ERR_INVALID_TICKET 4108 Numéro de ticket invalide.

Dois-je l'ignorer ou mieux gérer la situation ?


Vous feriez mieux de vous en occuper. Peut-être que votre conseiller expert a essayé de supprimer non seulement ceux qui sont en attente, mais aussi ceux qui sont déjà ouverts ? Avant de supprimer, insérer Print("Je veux supprimer une commande avec ticket=",OrderTicket()," OrderType=",OrderType()) ; Pour les OrderType en attente de 2 à 5. Pour les ouverts, de 0 à 1.https://docs.mql4.com/ru/constants/trading
 
BeerGod, merci pour le tuyau ! !!
 
Merci !!!!
 
Dimka-novitsek:
Merci !!!!

Y a-t-il un bushwhacker/aucun bushwhacker dans les réservoirs ? :-)
 
Je ne sais pas grand-chose des chars, de ce que c'est. L'aîné est Misha - mon frère - c'est un fan du jeu.
 
borilunad:

Artyom, désolé de vous déranger ! Qu'est-ce que je peux encore supprimer de la fonction et comment ? Je ne suis intéressé que par la dernière position, fermée sur la prise !

J'ai commenté tout ce qui n'est pas nécessaire, mais ça continue à ramper et à traîner... :((

Essayez de sélectionner un ordre à la fin de la liste et vérifiez son prix de clôture pour voir s'il correspond à sa prise.