[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 408

 
Andrew245:

Je l'avais deviné, mais je n'arrive pas à les trouver, ces paramètres d'arrêt des pertes.
https://docs.mql4.com/ru/trading/OrderSend
 

J'ai un jour posé une question sur l'utilisation des bibliothèques. J'ai été un peu confus, cependant.

D'après ce que j'ai compris, la bibliothèque est un ensemble de fonctions dont le code, dont je ne me souviens pas exactement du nom, est "fermé", c'est-à-dire que dans le processus, le code de la fonction de la bibliothèque n'est pas affecté par quoi que ce soit de l'extérieur.

Il est logique que lorsque toutes les fonctions fréquemment utilisées et pas seulement sont déplacées hors de l'EA, c'est très pratique. Mais pourquoi avons-nous besoin des inludes alors ? Après tout, les bibliothèques fonctionnent sans eux. Les inclusions ne sont donc pas nécessaires ? Qui les utilise ?

 
pako:

Est-ce que 10% par an est une bonne ou une mauvaise chose ?

Eh bien, on dit toujours que l'essentiel est de maintenir la courbe d'équilibre à plat, et que vous pouvez augmenter vos profits avec le MM. Ou bien est-ce que ce n'est pas le cas ?
 
Dmido:

Eh bien, on dit toujours que l'essentiel est de maintenir la courbe d'équilibre plate, et que pour augmenter les profits, vous pouvez utiliser le MM. Ou bien est-ce que ce n'est pas le cas ?


Essayez d'augmenter

si le Kolyan ne vient pas.

 
TarasBY:
Le jour actuel commence au début de la barre D1 actuelle (iTime (NULL, PERIOD_D1, 0)), mais vous ne cherchez pas la facilité ! :)))


ne fonctionne pas.

iTime (NULL, PERIOD_D1, 0) imprime 137082240

et inséré dans la fonction imprime tout l'historique disponible des transactions, mais pas les transactions pour aujourd'hui......

GetProfitFromDateInCurrency(NULL,-1,-1,(iTime (NULL, PERIOD_D1, 0))); 
видимо правильнее будет GetProfitFromDateInCurrency(NULL,-1,-1,(TimeCurrent()-iTime (NULL, PERIOD_D1, 0)));   НО И ТУТ РЕЗУЛЬТАТ ВСЕ СДЕЛКИ, ВМЕСТО СЕГОДНЯШНИХ
 
lottamer:


ne fonctionne pas.

iTime (NULL, PERIOD_D1, 0) imprime 137082240

et inséré dans la fonction imprime tout l'historique des transactions disponibles, pas les transactions d'aujourd'hui......

Si vous utilisez GetProfitFromDateInCurrency() (original - c'est IMPORTANT : je ne sais pas ce que vous avez dû obtenir dans votre version), alors la fonction doit être appelée comme ceci :
GetProfitFromDateInCurrency (Symbol(), -1, -1, iTime (NULL, PERIOD_D1, 0));

et la fonction retournera un profit sur les ordres fermés depuis le début de la journée en cours.

Et TOUT le non-sens dans le code est attrapé via Print().

 
hoz:
Je comprends la mise à jour des variables d'environnement de marché, mais je ne comprends pas l'ouverture et la mise à jour du graphique...
Lorsque vous ouvrez et mettez à jour un graphique, il y a des demandes de nouvelles données sur le serveur. Certaines sociétés de courtage avides préfèrent ne pas dépenser leur argent dans des serveurs plus puissants et un canal plus large, mais le répartir dans leurs poches. Ils doivent limiter le nombre de requêtes provenant du terminal afin qu'un serveur faible ne soit pas "bloqué". MRC n'a que 2000 demandes par jour. C'est 10 fois moins que le nombre de leurs instruments multiplié par le nombre de TF, sans compter les demandes de transaction.
hoz:

J'ai un jour posé une question sur l'utilisation des bibliothèques. J'ai été un peu confus, cependant.

D'après ce que j'ai compris, la bibliothèque est un ensemble de fonctions dont le code, dont je ne me souviens pas exactement du nom, est "fermé", c'est-à-dire que dans le processus, le code de la fonction de la bibliothèque n'est pas affecté par quoi que ce soit de l'extérieur.

Il est logique que lorsque toutes les fonctions fréquemment utilisées et pas seulement sont déplacées hors de l'EA, c'est très pratique. Mais pourquoi avons-nous besoin des inludes alors ? Après tout, les bibliothèques fonctionnent sans eux. Les inclusions ne sont donc pas nécessaires ? Qui les utilise ?

Les inclusions dans MQL4 aident à organiser le code. Par exemple, voici à quoi ressemble un indicateur pour 3000 lignes dans mon article :

#property indicator_separate_window

#include <stdlib.mqh>
#include <stderror.mqh>
#include <ServicesMT4.mqh>
#include <Spectrum.mqh>
#include <TimeFrames.mqh>
#include <GeneralFunctions.mqh>
#include <DynamicArray2.mqh>
#include <SPECTRUM_IND_Macros.mq4>
#include <SPECTRUM_IND_Preset_Buffers.mq4>
#include <SPECTRUM_IND_Extern_Variable.mq4>
#include <SPECTRUM_IND_Global_Variable.mq4>
#include <SPECTRUM_IND_Functions_Project.mq4>

void init()
 {
  int    i = 0;
  string i_sName = StringSubstr(WindowExpertName(), 0, StringLen(WindowExpertName()) - 8);
  g_nCounterStart = 0;
  #include <SPECTRUM_IND_Check_Param.mq4>
  if (Postfix == "") g_sNameIndicator = i_sName + g_sPostfix;
  else g_sNameIndicator = i_sName + g_sPostfix + Postfix + " ";
  g_sNameObject = g_sNameIndicator + "Derivative ";
  g_sNameLine = g_sNameIndicator + "Line ";
  g_sNameSpectrum = g_sNameIndicator;
  IndicatorShortName(g_sNameIndicator);
  #include <SPECTRUM_IND_Extern_Variables_In_Array.mq4>
  #include <SPECTRUM_IND_Buffers.mq4>
  ServiceRefreshChart(WindowHandle(Symbol(), 0), 1000);
 }

void deinit()
 {
  ObjectsDeleteAll(g_nWindow);
  DeleteObject();
 }

void start()
 {
  if (g_bStop) return;
  #include <SPECTRUM_IND_Start_Variable.mq4>
  #include <SPECTRUM_IND_Start_Initialize.mq4>
  #include <SPECTRUM_IND_Optimization.mq4>
  #include <SPECTRUM_IND_Calc_Filters.mq4>
  #include <SPECTRUM_IND_Calc_Last_Derivative.mq4>
  #include <SPECTRUM_IND_Show_Lines.mq4>
  #include <SPECTRUM_IND_Show_Sum.mq4>
  g_nBegin = s_nBegin;
  g_nTemp_SizeChart = s_nSizeChart;
  g_tLastTime = iTime(NULL, g_nPeriod, 0);
  ArrayCopy(g_adTemp_PriceBeginBar, s_adPriceBeginBar);
 }
Les 5 lignes d'opérations similaires s'accumulent, ou un algorithme séparé, ou un autre critère du groupe et il peut être alloué dans un fichier séparé. Néanmoins, il est préférable d'examiner du code jusqu'à 200 lignes plutôt que 10000 lignes d'un coup. Vous vous fatiguerez à le peaufiner. Dans MQL4, il est préférable d'éviter les appels de fonction. Surtout, dans les boucles. Si possible, il est préférable d'exposer la fonction. Le code fonctionnera beaucoup plus rapidement. Les inclusions sont d'une grande utilité ici.

Malheureusement, le compilateur ne permet pas d'utiliser une inclusion plus d'une fois dans un même module. Il s'agit généralement d'un moyen d'économiser sur le code répétitif.

 
hoz:
J'ai immédiatement pris Victor au mot, mais... pour dissiper tout doute, j'ai juste écrit aux méta-citations.
...

Victor a absolument et complètement raison. Cette demande au serveur, qui intervient à l'ouverture du graphique, n'est pas une demande de la fonction émulateur, mais d'une action manuelle de l'utilisateur.

 
Integer:

Victor a absolument et complètement raison. La demande au serveur, qui intervient à l'ouverture du graphique, n'est pas une demande provenant d'une fonction de l'émulateur, mais d'une action manuelle de l'utilisateur.

La requête du graphique est similaire à celle de RefreshRates(). Je n'ai aucun doute sur le fait qu'il s'agit du serveur. Cela dit, RefreshRates() n'est pas une fonction commerciale.

Je vais devoir demander aux Métacvotes.

 
La demande du graphique est similaire à CopyRates ArrayCopySeries, pas à RefreshRates. CopyRates est la seule fonction non commerciale qui fait bouger le serveur.
Raison: