Questions des débutants MQL5 MT5 MetaTrader 5 - page 1357

 

Question de l'administration.

Veuillez m'aider à télécharger la version de démonstration d'Osiris.

Quand j'essaie de le télécharger, il ne se télécharge pas.

Купите Торговый робот (Expert Advisor) 'Astroloqer' для MetaTrader 4 в магазине MetaTrader Market
Купите Торговый робот (Expert Advisor) 'Astroloqer' для MetaTrader 4 в магазине MetaTrader Market
  • www.mql5.com
Советник Звездочет 1.0 универсал. НЕ мартинит НЕ усредняется И не торгует сетками ордеров. Терминал МТ4. Это вы можете сами проваерить при
[Supprimé]  
Oleg Kolesov #:
La question principale n'est pas résolue. Comment colorer le tampon avec deux couleurs. >= Bleu à <= Rouge.

Je ne comprends pas vos termes et conditions.

Exemple. Bordure = 5

Valeur == 8, couleur bleue.

Valeur == 1, couleur - rouge.

Valeur == 5, couleur - quoi ?

[Supprimé]  
Oleg Kolesov #:
Je vais faire une pause. Merci.

j'ai légèrement modifié votre indicateur (il s'agit d'un Expert Advisor pour le testeur)

Capture d'écran 2021-10-12 071433

Dossiers :
V2.mq5  9 kb
 
SanAlex, comment vous sentez-vous ?
[Supprimé]  
Oleg Kolesov #:
SanAlex, comment l'évaluez-vous ?

ordinaire comme tout - un expert, avec tous les atouts, gagnera de l'argent.

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

EUR\USD-H2 Votre indicateur à 2 heures se trouve dans la direction de la baisse - en ce moment, il est neutre et attend de passer à la hausse ou de continuer à descendre.

EURUSDH2it

 
Pourquoi la commande Print ne peut-elle pas être enregistrée ?
 
Evgeny Dyuka #:
Pourquoi la commande Print ne peut-elle pas être enregistrée ?

La protection contre ... L'utilisateur a été empêché de faire la mauvaise chose. Faites un clic droit dans le terminal, dans l'onglet "Experts" et exécutez la commande "View".

 

Bonjour messieurs et mesdames !

Ne jetez pas vos pouces en l'air pour ma question. Je comprends que c'est naïf, mais nous sommes tous "Dieu, comme nous étions naïfs" (romance).

J'ai écrit un conseiller expert en utilisant l'algorithme original. Les tests montrent qu'il est plus efficace en mode scalper. Je vais garder le silence sur les résultats car nous connaissons tous les inventeurs de Perpetuum Mobile et de Grails. Ce n'est ni l'un ni l'autre et il présente un sérieux inconvénient - il dépend des valeurs de spread et de commission et du stop loss comme toutes les stratégies scalper. Je n'ai qu'un seul paramètre - SL et il a 6-10 pps sur 5 signes. Pouvez-vous m'éclairer sur la façon de traiter ce problème ou sur le courtier avec lequel je peux jouer à ces jeux.

 
Bonjour.
Il existe un indicateur. Il additionne les ordres limités dans la coupe et les affiche sous forme de graphique.
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_plots 2

#property indicator_label1 "Delta buy"
#property indicator_type1 DRAW_HISTOGRAM
#property indicator_color1 clrWhite
#property indicator_width1 3

#property indicator_label2 "Delta sell"
#property indicator_type2 DRAW_HISTOGRAM
#property indicator_color2 clrBlue
#property indicator_width1 3

int iStart;
double iDelta1[];
double iDelta2[];

void OnDeinit(const int reason)
{
  string symbol = Symbol();

  MarketBookRelease(symbol);
}

void OnInit()
{
  string symbol = Symbol();

  SetIndexBuffer(0, iDelta1, INDICATOR_DATA);
  ArraySetAsSeries(iDelta1, true);
  
  SetIndexBuffer(1, iDelta2, INDICATOR_DATA);
  ArraySetAsSeries(iDelta2, true);

  IndicatorSetString(INDICATOR_SHORTNAME, "OrderBook");
  IndicatorSetInteger(INDICATOR_DIGITS, Digits());

  MarketBookAdd(symbol);
}

int OnCalculate(
  const int bars,
  const int counted,
  const datetime& time[],
  const double& open[],
  const double& high[],
  const double& low[],
  const double& close[],
  const long& ticks[],
  const long& volume[],
  const int& spread[]
)
{
  if (iStart == 0)
  {
    iStart = 1;
    ZeroMemory(iDelta1);
    ZeroMemory(iDelta2);
  }
  else if (bars != counted)
  {
    iDelta1[0] = iDelta1[1];
    iDelta2[0] = iDelta2[1];
  }

  string symbol = Symbol();

  double ask = SymbolInfoDouble(symbol, SYMBOL_ASK);
  double bid = SymbolInfoDouble(symbol, SYMBOL_BID);

  MqlBookInfo levels[];

  bool book = MarketBookGet(symbol, levels);

  int indexBuy = 1;
  int indexSell = 1;
  long volumeBuy = 0;
  long volumeSell = 0;


  if (book)
  {
    int size = ArraySize(levels);

    for (int k = 0; k < size; k++)
    {
      if (levels[k].price >= ask) 
      {
        volumeSell += indexSell * levels[k].volume;
        indexSell++;
         
      }
    }

    for (int k = size - 1; k >= 0; k--)
    {
      if (levels[k].price <= bid) 
      {
        volumeBuy += indexBuy * levels[k].volume;
        indexBuy++;
     
      }
    }
  }

 iDelta1[0] = (double) ( - volumeSell);
 iDelta2[0] = (double) (volumeBuy); 
  return bars;
}
Et à chaque nouveau changement dans le gobelet, il écrase le montant précédent. Comment faire pour qu'il cumule la somme ? En d'autres termes, il n'écraserait pas les données de la barre actuelle, mais les ajouterait ? J'ai essayé de l'implémenter en utilisant la boucle "while" et d'ajouter des données tant que la barre actuelle n'a pas bougé, mais quelque chose a mal tourné. Ne vous sentez pas mal pour une question aussi triviale.
 

FileOpen renvoie l'erreur 5001(Impossible d'ouvrir plus de 64 fichiers simultanément).
Il semble que je ferme correctement chaque fois via FileClose(file_handle).

Où et comment le nombre de fichiers ouverts est-il accumulé et comment peut-il être réinitialisé ?