Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 583

 

Bonjour, aidez-moi. Le robot de trading, le conseiller, le conseiller expert ne fonctionnent pas. J'ai téléchargé tout ce qui était possible et j'ai voulu vérifier comment tout cela fonctionne. Je pensais que mon dépôt était trop faible, mais mon compte de démonstration est le même. Je pensais avoir un petit dépôt, mais c'est pareil sur un compte de démonstration.

 
Lilia.solomko:

Bonjour, aidez-moi. Le robot de trading, EA, Expert Advisor ne fonctionne pas. J'ai téléchargé tout ce qui était possible et j'ai voulu vérifier comment tout cela fonctionne. Je pensais que mon dépôt était trop faible, mais mon compte de démonstration est le même. Je pensais que mon dépôt était petit mais c'est pareil sur mon compte de démonstration.

Comment savez-vous que le robot n'a pas négocié ? Vous êtes-vous assuré que toutes les conditions requises par la stratégie de trading étaient remplies pour ouvrir la position ? Ou bien avez-vous placé le robot et il n'a pas immédiatement ouvert la transaction ?

 
Lilia.solomko:

Bonjour, aidez-moi. Le robot de trading, EA, Expert Advisor ne fonctionne pas. J'ai téléchargé tout ce qui était possible et j'ai voulu vérifier comment tout cela fonctionne. Je pensais que mon dépôt était trop faible, mais mon compte de démonstration est le même. Je pensais avoir un petit dépôt mais c'est pareil sur un compte de démonstration.

Je ne sais pas ce qui est écrit dans les deux onglets ?


 
Aidez-moi à écrire une fonction : fermer les ordres d'un grand lot vers un petit (string Symbol, int type, bool hand orders, int Magic).
C'est-à-dire la sélection des symboles, le type, la prise en compte ou non des ordres manuels, le nombre magique.
 
Tigerfreerun:
Aidez-moi à écrire une fonction : fermer les ordres d'un grand lot vers un petit (string Symbol, int type, bool hand orders, int Magic).
C'est-à-dire la sélection des symboles, le type, la prise en compte ou non des ordres de la main, le nombre magique.

Oui, il est prêt à être utilisé.

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 11.12.2008                                                     |
//|  Описание : Закрытие позиций в порядке сортировки по размерам лотов.       |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента        (    ""       - любой символ,      |
//|                                             NULL      - текущий символ)    |
//|    op - операция                        (    -1       - любая позиция)     |
//|    mn - MagicNumber                     (    -1       - любой магик)       |
//|    sd - Направление сортировки лотов    (MODE_ASCEND  - возрастание,       |
//|                                          MODE_DESCEND - убывание)          |
//+----------------------------------------------------------------------------+
void ClosePosBySortLots(string sy="", int op=-1, int mn=-1, int sd=MODE_DESCEND) {
  double a[][2];                  // Массив лотов и тикетов
  int    i, k=OrdersTotal();      // Счётчик и количество ордеров
  int    p=0;                     // Количество позиций

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if ((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (mn<0 || OrderMagicNumber()==mn) {
            p++;
            ArrayResize(a, p);
            a[p-1][0]=OrderLots();
            a[p-1][1]=OrderTicket();
          }
        }
      }
    }
  }

  // вдруг позиций нету, тогда и закрывать нечего
  if (p>0) {
    ArraySort(a, WHOLE_ARRAY, 0, sd);
    for (i=0; i<p; i++) {
      if (OrderSelect(a[i][1], SELECT_BY_TICKET)) {
        // проверим незакрытость на всякий случай,
        // может какая-то позиция уже закрылась по стопу/тейку
        if (OrderCloseTime()==0) ClosePosBySelect();
      }
    }
  }
}
 
Alekseu Fedotov:

Oui, c'est prêt à partir.

J'ai essayé de l'utiliser, mais pour une raison quelconque, ça ne fonctionne pas.
Où se trouve la fermeture proprement dite dans cette fonction, d'après ce que je peux voir, il y a une référence à une autre fonction ?
 
Tigerfreerun:
J'ai essayé de l'utiliser, mais pour une raison quelconque, ça ne fonctionne pas.
Où se trouve la fermeture elle-même dans cette fonction, d'après ce que je peux voir, il y a une référence à une autre fonction ?

Oui, il y a une fonction ClosePosBySelect() à part entière, et pas seulement l'envoi d'un ordre de transaction sans vérification du statut et du résultat.

Une recherche sur le site vous donnera un lien vers la fonction ClosePosBySelect() de Kim.

 
Tigerfreerun:
J'ai essayé de l'utiliser, mais pour une raison quelconque, ça ne fonctionne pas.
Où se trouve la fermeture proprement dite dans cette fonction, d'après ce que je peux voir, il y a une référence à une autre fonction ?

Dans l'en-tête de cette fonction, il y a l'adresse d'un site web, allez télécharger toutes les bibliothèques,

Cela fonctionne très bien.

 

Je dessine des barres horizontales. L'indicateur met correctement, selon les coordonnées, des lignes, mais à un moment donné, sur une nouvelle barre, une ligne est mise sur un prix arbitraire, composé de nombreux segments de différentes longueurs, superposés les uns aux autres. Le prix du paramètre "étranger" ne correspond à aucune condition. D'où viennent-ils, comment peut-on les prévenir ?

if(Line)
  {
   n_++;
   Setline(n_,Time[b_u_pbu],High[b_u_pbu],Time[b_u_pbu1],High[b_u_pbu],clrLime);
  }
//
void Setline(int sh,datetime tm,double pr,datetime tm1,double pr1,color clr)
  {
   ObjectCreate("-"+sh,OBJ_TREND,0,tm,pr,tm1,pr1,clr);
   ObjectSet("-"+sh,7,STYLE_SOLID);
   ObjectSet("-"+sh,10,false);
   ObjectSet("-"+sh,6,clr);
   ObjectSet("-"+sh,8,2);
  }
 
bij:

Je dessine des barres horizontales. L'indicateur met correctement, selon les coordonnées, des lignes, mais à un moment donné, sur une nouvelle barre, une ligne est mise sur un prix arbitraire, composé de nombreux segments de différentes longueurs, superposés les uns aux autres. Le prix du paramètre "étranger" ne correspond à aucune condition. D'où viennent-ils, comment peut-on les prévenir ?

Les noms des lignes changent, d'où la multitude de lignes.

Dans ce cas, il est préférable d'inclure l'heure d'ouverture du bar dans le nom de la ligne.