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

 

Vous savez, je ne vois pas de commentaire sur le tableau.

int start()
  { Comment("OrdersProfit  ",OrderProfit(),"AccountBalance  ",AccountBalance(),"Equity  ",AccountEquity());
//----
  double Itogo_Profit=Orderasthitaem();
  if (Itogo_Profit>ProfitSeriyniy){Pozuminusudalaem();}
//----
   return(0);
  }
//+------------------------------------------------------------------+
 
Integer:

Vadim, avez-vous essayé de l'appliquer ? Ça ne synchronise rien. J'ai joué avec récemment. Vous devez construire la file d'attente vous-même. Malheureusement, cela ne fait que réduire le code de trois lignes. Ou peut-être que je ne le comprends pas.
Je ne l'ai pas essayé. Je vais essayer maintenant. Je fais tout en DLL maintenant. C'est plus facile là-bas.
 
Merci, Integer ! !!
 

Je vois. VVel dans init()
{
//----
Comment("OrdersProfit ",OrderProfit(), "AccountBalance ",AccountBalance(), "Equity ",AccountEquity()) ;
//----
return(0) ;
}

Il n'y a rien dans le testeur. Eh bien...

 

Dimka-novitsek:


Je vois. VVel dans init()
{
//----
Comment("OrdersProfit ",OrderProfit(), "AccountBalance ",AccountBalance(), "Equity ",AccountEquity()) ;
//----
return(0) ;
}

Il n'y a rien dans le testeur. Eh bien...


Peut-être, l'Expert Advisor dans lequel il a été collé, a la fonction de sortie de commentaire ? Vérifiez combien de fois la fonction Comment() est appelée dans cet EA.

Pour produire OrderProfit(), l'ordre doit être sélectionné en premier.

Aussi... quel est l'intérêt de le faire dans l'init ? Cela devrait être fait dans start().

 
Integer:


Peut-être que l'EA dans laquelle il est inséré dispose également d'une fonction d'édition de commentaires ? Vérifiez combien de fois la fonction Comment() est appelée dans l'EA.

Pour produire OrderProfit(), l'ordre doit d'abord être sélectionné.

Aussi... quel est l'intérêt de le faire dans l'init ? Cela devrait être fait dans start().



Inite, je voulais voir si mon truc écrit quelque chose, mais il n'y a pas de tics. Et j'ai dupliqué cette ligne dans l'init. Et je me suis planté avec OrderProfit() !

Ici, nous avons un puzzle complet. Vous pouvez le croire ! !! 4063 est censé être un paramètre entier.

ici -

OrderClose(  Orderasthitaem[i,0,1], Orderasthitaem[i,0,2], Bid, 5, 0) ; Error=GetLastError(); 

Tableau de type doublet. Ticket est exactement un entier et ticket, mais il s'avère être un double. Comment, à partir de la fonction doublet, obtenir un nombre entier ?

Excusez-moi, je ne comprends pas du tout.

 
Integer:

Vadim, avez-vous essayé de l'appliquer ? Il ne se synchronise en aucune façon. J'ai joué avec récemment. Vous devez organiser la file d'attente vous-même. Malheureusement, il ne vous permet de raccourcir le code que de trois lignes. Ou peut-être que je ne le comprends pas.

La file d'attente est organisée comme dans toute autre langue. Par lui-même à travers l'organisation de l'entrée et de la sortie du bloc à protéger.

C'est un script :

#property show_inputs

extern int Pause = 1000;

int    hwndChart = NULL; // Уникальный идентификатор скрипта.
string sName = "Condition";

void init()
 {
  hwndChart = WindowHandle(Symbol(), 0);
  // Создаём глобальную переменную синхронизации скриптов.
  if (!GlobalVariableCheck(sName)) GlobalVariableSet(sName, 0);
 }
 
void deinit()
 {
  GlobalVariableDel(sName);
 }

void start()
 {
  while (!IsStopped())
   {// Начало блока синхронизации.
    GlobalVariableSetOnCondition(sName, hwndChart, 0);
    if (GlobalVariableGet(sName) == hwndChart)
     {
      Print("Start");
      Sleep(Pause); // Имитация работы.
      Print("End");
     }
    GlobalVariableSetOnCondition(sName, 0, hwndChart);
    // Завершение блока синхронизации.
    Sleep(200);
   }
 }
Quant au découpage, comme le remplacement par d'autres fonctions, il ne fonctionnera pas. C'est à cela que sert l'accès atomique. Une seule fonction peut faire cela dans MQL4.
Entier:
C'est-à-dire que l'utilisation de cette fonction permet de s'assurer qu'un seul EA fonctionne à la fois, mais la file d'attente n'est pas construite, un EA peut rester inactif, et un autre peut être appelé deux fois.

Il semble que cela fonctionne bien. Chargé 6 scripts avec des pauses de 3000, 2000, 1000, 500, 300, 200. Voici une partie du journal :

19:58:36 Check_GlobalVariableSetOnCondition() GBPJPY,M1 : GBPJPY Start
19:58:37 Check_GlobalVariableSetOnCondition() GBPJPY,M1 : GBPJPY Fin
19:58:37 Check_GlobalVariableSetOnCondition() EURUSD,M1 : EURUSD Start
19:58:39 Check_GlobalVariableSetOnCondition() EURUSD,M1 : EURUSD End
19:58:39 Check_GlobalVariableSetOnCondition() USDCAD,M1 : USDCAD Start
19:58:39 Check_GlobalVariableSetOnCondition() USDCAD,M1 : Fin USDCAD
19:58:39 Check_GlobalVariableSetOnCondition() AUDUSD,M1 : AUDUSD Start
19:58:43 Check_GlobalVariableSetOnCondition() AUDUSD,M1 : AUDUSD End
19:58:43 Check_GlobalVariableSetOnCondition() GBPUSD,M1 : Début GBPUSD
19:58:43 Check_GlobalVariableSetOnCondition() GBPUSD,M1 : GBPUSD Fin
19:58:43 Check_GlobalVariableSetOnCondition() EURUSD,M1 : EURUSD Start
19:58:45 Check_GlobalVariableSetOnCondition() EURUSD,M1 : EURUSD End
19:58:45 Check_GlobalVariableSetOnCondition() GBPUSD,M1 : Début GBPUSD
19:58:46 Check_GlobalVariableSetOnCondition() GBPUSD,M1 : GBPUSD Fin
19:58:46 Check_GlobalVariableSetOnCondition() NZDUSD,M1 : NZDUSD Start
19:58:46 Check_GlobalVariableSetOnCondition() NZDUSD,M1 : Fin NZDUSD
19:58:46 Check_GlobalVariableSetOnCondition() USDCAD,M1 : USDCAD Start
19:58:46 Check_GlobalVariableSetOnCondition() USDCAD,M1 : Fin USDCAD
19:58:46 Check_GlobalVariableSetOnCondition() NZDUSD,M1 : NZDUSD Start
19:58:47 Check_GlobalVariableSetOnCondition() NZDUSD,M1 : Fin NZDUSD
19:58:47 Check_GlobalVariableSetOnCondition() GBPJPY,M1 : GBPJPY Start
19:58:48 Check_GlobalVariableSetOnCondition() GBPJPY,M1 : GBPJPY Fin
19:58:48 Check_GlobalVariableSetOnCondition() EURUSD,M1 : EURUSD Start
19:58:50 Check_GlobalVariableSetOnCondition() EURUSD,M1 : EURUSD End
19:58:50 Check_GlobalVariableSetOnCondition() USDCAD,M1 : USDCAD Start
19:58:50 Check_GlobalVariableSetOnCondition() USDCAD,M1 : Fin USDCAD
19:58:50 Check_GlobalVariableSetOnCondition() AUDUSD,M1 : AUDUSD Start
19:58:54 Check_GlobalVariableSetOnCondition() AUDUSD,M1 : Fin AUDUSD
19:58:54 Check_GlobalVariableSetOnCondition() NZDUSD,M1 : NZDUSD Start
19:58:54 Check_GlobalVariableSetOnCondition() NZDUSD,M1 : Fin NZDUSD
19:58:54 Check_GlobalVariableSetOnCondition() EURUSD,M1 : EURUSD Start
19:58:56 Check_GlobalVariableSetOnCondition() EURUSD,M1 : EURUSD End
19:58:56 Check_GlobalVariableSetOnCondition() USDCAD,M1 : USDCAD Start
19:58:57 Check_GlobalVariableSetOnCondition() USDCAD,M1 : Fin USDCAD
19:58:57 Check_GlobalVariableSetOnCondition() AUDUSD,M1 : AUDUSD Start
19:59:00 Check_GlobalVariableSetOnCondition() AUDUSD,M1 : AUDUSD Fin
19:59:00 Check_GlobalVariableSetOnCondition() GBPUSD,M1 : Début GBPUSD
19:59:00 Check_GlobalVariableSetOnCondition() GBPUSD,M1 : GBPUSD Fin
19:59:00 Check_GlobalVariableSetOnCondition() USDCAD,M1 : USDCAD Start
19:59:01 Check_GlobalVariableSetOnCondition() USDCAD,M1 : Fin USDCAD

 
Cela fonctionne, dans le sens où une fonction est exécutée à un moment donné, mais l'ordre n'est pas respecté.
 
Dimka-novitsek:


...Comment obtenir un nombre entier à partir d'une fonction doublet ?

int Int(double v){

return(v);

}
 
Integer:
Cela fonctionne, dans le sens où une fonction est exécutée à un moment donné, mais l'ordre n'est pas respecté.
La mise en file d'attente n'est garantie dans aucune langue.