[ARCHIVE] Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 3. - page 222

 
smartemiy:

Chers professionnels !

Je vous demande de m'aider !

J'ai un robot de trading qui effectue 20 à 80 transactions par jour. Je ne comprends pas que cela dépende de la société de courtage ?

Au lieu d'un - met 100 pièces.

Aidez-moi ! !!

La fonction de démarrage est exécutée à chaque tick et si la condition d'ouverture de l 'ordre est remplie, un nouvel ordre sera ouvert à chaque tick.

Fixez des limites au nombre maximum d'ordres ouverts ou à un ordre par barre, etc.

 
splxgf:

La fonction de démarrage est exécutée à chaque tick, et si la condition d'ouverture d'un ordre est remplie, un nouvel ordre sera ouvert à chaque tick.

Mettez des limites sur le nombre maximum d'ordres ouverts ou un ordre par barre, etc.

Merci beaucoup pour la réponse !

Splxgf , je pensais à ça aussi :

int init()
{  RefreshRates();
   if (NumberOfOrders()>15) return(0); // если число открытых ордеров превышает число 15, тогда советние не торгует
   if (OpenStop()>30) return(0);       // если число отложеных ордеров превышает число 15, тогда советние не торгует
}

NumberOfOrders est un f-from qui compte le nombre d'ordres ouverts. OpenStop - f-op compte le nombre d'ordres ouverts.

La condition d'ouverture de l'ordre est remplie et l'EA place un nombre quelconque d'ordres dans une rangée.

>splxgf: Il s'agit d'une variante du code qui arrête le conseiller expert lorsque le nombre de transactions est dépassé. Comment écrire pour qu'une commande soit passée lorsque la condition est déclenchée ?

 

init n'est exécuté qu'une seule fois https://docs.mql4.com/ru/basis/functions/special

int MaxOpenOrders=15;

int start()
  { 
    //bla-bla
    if (((OrderOpenPrice()-pAsk) >= -60 || OrdersTotal()<MaxOpenOrders) //открываем новые если количество открытых и отложенных ордеров не превышает 15
    OrderSend...
  

En fait, il existe un tutoriel à l'adresse https://book.mql4.com/ru/.

Si vous voulez que la condition soit déclenchée une seule fois, c'est plus compliqué

 
Messieurs ! Quelqu'un peut-il répondre à ma question sur le netbook et le modem 3G (à la page 221). Merci d'avance.
 
splxgf:

init n'est exécuté qu'une seule fois https://docs.mql4.com/ru/basis/functions/special

En fait, il existe un tutoriel à l'adresse https://book.mql4.com/ru/.

Si vous voulez que la condition ne soit déclenchée qu'une seule fois, c'est plus compliqué.

Merci !

Je vais m'en occuper !

 

J'ai cherché dans la base de données et je ne l'ai pas trouvé, mais peut-être que je ne cherchais pas assez.

Dites-moi, mes chers, avez-vous quelque chose de similaire :

L'algorithme est simple : un analogue d'une grille dans laquelle un ordre est ouvert tous les n pips (achat ou vente, selon la direction du prix). Les ordres sont ouverts jusqu'à ce qu'il y ait un profit de m pips. Lorsque cette valeur est atteinte, tous les ordres sont fermés et tout recommence.

Nous vous remercions d'avance de votre attention.

 
Zhunko:
La tâche consistait à enregistrer l'historique téléchargé dans les fichiers d'historique. Pendant le processus de téléchargement, tout l'historique est gardé en mémoire. Après avoir fermé la fenêtre MT4, la sauvegarde dans les fichiers à l'aide des outils MT4 commence. Ce n'est pas un processus rapide.

Vadim, j'ai résolu le problème de sauvegarde de cette façon :

if(Bars<7000)
  {
    int handle, bar, wParam;
    handle=WindowHandle(Symbol(),Period());
    switch(Period())
            {
                  case PERIOD_M1:  wParam = 33137; break;
                  case PERIOD_H1:  wParam = 33135; break;
                  case PERIOD_D1:  wParam = 33134; break;
            }
    for(bar=1;bar<7000;bar=+100)
      {
        Comment(Bars);
        PostMessageA(handle,WM_KEYDOWN,VK_HOME,0); Comment(Bars); Sleep(10000); 
        PostMessageA(handle,WM_COMMAND,33135,0);  Comment(Bars); Sleep(10000); 
        PostMessageA(handle,WM_KEYDOWN,VK_HOME,0); Comment(Bars); Sleep(10000); 
        PostMessageA(handle,WM_COMMAND,33134,0);  Comment(Bars); Sleep(10000); 
        PostMessageA(handle,WM_KEYDOWN,VK_HOME,0); Comment(Bars); Sleep(10000); 
        PostMessageA(handle,WM_COMMAND,33137,0);  Comment(Bars); Sleep(10000); 
        bar=Bars;
        RefreshRates();
        if(Bars>=7000) {PostMessageA(handle,WM_KEYDOWN,VK_END,0); StartProfit();} //обязательный выход, иначе просто остается и подкачивает данные
        
      }
   }

Grâce au saut d'une période à l'autre, l'historique est sauvegardé simultanément sur plusieurs périodes (dans ce cas, il s'agit de 1 minute, 1 heure et 1 jour). Ainsi, il n'est pas nécessaire d'éteindre le terminal, mais le chargement n'est pas très rapide, la vitesse est d'environ 1 minute (dans ces conditions) pour une paire de devises, c'est-à-dire que si nous le démarrons pour plusieurs devises, le terminal va rester bloqué pendant une demi-heure. L'Expert Advisor commence à utiliser les données historiques sans recharger le terminal.

 
forexnew:

Vadim, j'ai résolu le problème de conservation de cette façon :

Grâce au passage d'une période à l'autre, l'historique est enregistré simultanément pour plusieurs périodes (dans ce cas, il s'agit de 1 minute, 1 heure et 1 jour). Ainsi, il n'est pas nécessaire d'éteindre le terminal, mais le chargement n'est pas si rapide, la vitesse est d'environ 1 minute (dans ces conditions) pour une paire de devises, c'est-à-dire que si nous le démarrons pour plusieurs devises, le terminal va rester bloqué pendant une demi-heure. L'Expert Advisor commence à utiliser les données historiques sans recharger le terminal.

J'ai la même chose, mais beaucoup plus fiable. Lors du changement de TF, l'historique n'est pas sauvegardé dans les fichiers. Uniquement lors du déchargement du terminal.

Parfois, le terminal enregistre lui-même l'historique, mais cela n'a rien à voir avec TFswitching.

 
Zhunko:

J'ai la même chose, mais beaucoup plus fiable. Lorsque l'on change de TF, l'historique n'est pas sauvegardé dans les fichiers. Seulement lorsque le terminal est déchargé.

Parfois, le terminal commence à sauvegarder l'historique de lui-même, mais cela n'est pas lié à la commutation TF.

Comment puis-je le configurer pour qu'il ne télécharge que certaines périodes (pas toutes) : minutes, 1 heure et jours ?

Ainsi : string sTimeFrame = {"M1", "H1", "D1"} ; // La chaîne qui liste les TF analysés.

Il ne téléchargera pas plus de 2000 barres en une minute, mais mon conseiller expert a besoin de plus de 7000 barres. Après avoir téléchargé avec ce script, mon conseiller expert va le terminer.

Est-ce que c'est conçu de cette façon, que toutes les barres ne sont pas téléchargées ?

 

Bonjour, chère communauté.

J'ai un tel problème. J'utilise l'indicateur "Bollinger Bands" dans mon modèle (iBands - https://docs.mql4.com/ru/indicators/iBands) et l'un de ses paramètres - l' écart (écart type) - y est défini comme int . Est-il possible de le changer en double? Dans MT4, dans la section "Indicateurs personnalisés", il existe d'autres bandes de Bollinger (marquées comme "Bands") où la déviation est définie comme double . Mais comment l'insérer dans MQL4 ? Il n'est pas inclus dans l'ensemble standard des indicateurs intégrés, n'est-ce pas ? Je ne sais pas comment l'utiliser dans MQL4.

Raison: