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

 
Tretyakov Rostyslav #:

a1)

а2)

б)

et sur les autres points ?

 
Порт-моне тв #:

et sur les autres points ?

Nous traiterons les questions au fur et à mesure qu'elles se présenteront...

Il faut d'abord créer un tableau et définir ce qui doit s'y trouver et où, puis écrire les fonctions.

 
Mihail Matkovskij #:

La fonction Color devrait retourner la couleur, et non le double.

Cela ne ferait pas de mal d'étudier le lien que le moteur du site a ajouté aussi.

Merci. Laissez-moi le lire

 
Tretyakov Rostyslav #:

Nous traiterons les problèmes au fur et à mesure qu'ils se présenteront...

Il faut d'abord créer un tableau et définir ce qui doit s'y trouver et où, puis écrire les fonctions.

Je peux le faire, mais le plus difficile pour moi est d'écrire le prix dans un fichier et de calculer le temps.

 
Порт-моне тв #:

Je peux le faire en principe, le plus difficile pour moi est d 'écrire le prix dans un fichier et de calculer le temps.

Pourquoi l'écrire dans un fichier, vous pouvez le faire comme ça ?


Cen'est pas difficile non plus, dès que tu commences à compter.

int iStart  = 0;
int iSeconds=20;
//---
   if(наступило событие)
      iStart=TimeCurrent(); // запомнили время в секундах
//---
   if((iStart+iSeconds)<=TimeCurrent()) // если время пришло
     {
      выполняем действие
     }


 
Tretyakov Rostyslav #:

Nous traiterons les problèmes au fur et à mesure qu'ils se présenteront...

Il faut d'abord créer un tableau et définir ce qui doit s'y trouver et où, puis écrire des fonctions.

int ticket;
double pricefix;
// if an object was clicked
   if(id==CHARTEVENT_OBJECT_CLICK)
     {
      // if buy button was pressed
      if(sparam=="BuyButton")
        {
         //price fixing
         pricefix = Ask; 
        
        }
     }  
    if(Ask < pricefix - 4*_Point)
    { 
   ticket = OrderSend(_Symbol,OP_BUY,0.01,Ask,3,0,Ask+300*_Point,NULL,0,0,Green);  
    }  
}

J'ai essayé de fixer le prix en appuyant sur le bouton par le biais d'une variable, en espérant que lorsque le prix atteindra cette variable, l'ordre sera ouvert, mais aucun miracle ne s'est produit. Aide.

Bien que la fonction soit théoriquement correcte, si je mets

if(Ask == pricefix)
alors l'ordre s'ouvre immédiatement, mais j'ai besoin qu'il soit 4 points plus bas après s'être souvenu.
 
Порт-моне тв #:

J'essayais en quelque sorte de faire une fixation de prix via une variable, en espérant que lorsque le prix sera égal à cette variable, un ordre s'ouvrira, mais aucun miracle ne s'est produit. Aide.

Bien que la fonction soit correcte en théorie, si je mets

L'ordre s'ouvre immédiatement mais j'ai besoin qu'il soit 4 pips plus bas après s'être rappelé.




//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- 
   ObjectCreate(0,"Button_1",OBJ_BUTTON,0,0,0);
   ObjectSetInteger(0,"Button_1",OBJPROP_XDISTANCE,20);
   ObjectSetInteger(0,"Button_1",OBJPROP_YDISTANCE,20);
   ObjectSetInteger(0,"Button_1",OBJPROP_XSIZE,100);
   ObjectSetInteger(0,"Button_1",OBJPROP_YSIZE,20);
   ObjectCreate(0,"Label_1",OBJ_LABEL,0,0,0);
   ObjectSetInteger(0,"Label_1",OBJPROP_XDISTANCE,20);
   ObjectSetInteger(0,"Label_1",OBJPROP_YDISTANCE,40);
   ObjectSetInteger(0,"Label_1",OBJPROP_CORNER,CORNER_LEFT_UPPER);
   ObjectSetString(0,"Label_1",OBJPROP_TEXT,"Price");
   ObjectSetInteger(0,"Label_1",OBJPROP_COLOR,clrBlack);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
//---
   if(sparam=="Button_1")
     {
      ObjectSetString(0,"Label_1",OBJPROP_TEXT,DoubleToString(Ask-4*_Point,Digits));
     }
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   int ticket;
   double price=StringToDouble(ObjectGetString(0,"Label_1",OBJPROP_TEXT));
   if(Ask<=price) ticket = OrderSend(_Symbol,OP_BUY,0.01,Ask,3,0,Ask+300*_Point,NULL,0,0,clrGreen);  
  }
 

Salut !

J'ai une question.

Existe-t-il un moyen de se souvenir de l'épuisement maximum ?

Par exemple, si le drawdown d'aujourd'hui est de 16% et qu'il y a 20 jours il était de 5%, le drawdown maximum est de 16% et si demain il est de 24%, le drawdown maximum est de 24%.

Ou bien il est difficile de s'en souvenir.

 
Alexander Avksentyev #:

Salut !

J'ai une question.

Existe-t-il un moyen de se souvenir de l'épuisement maximum ?

Par exemple, si le drawdown d'aujourd'hui est de 16% et qu'il y a 20 jours il était de 5%, le drawdown maximum est de 16% et si demain il est de 24%, le drawdown maximum est de 24%.

Ou bien c'est compliqué.

CodeBase dispose d'indicateurs qui affichent le solde, l'historique de l'équité à partir de l'historique des transactions. Il existe plus d'un outil de ce type.

Prenez les données et calculez-les comme un indicateur normal.

 
Maxim Kuznetsov #:

CodeBase dispose d'indicateurs qui affichent la balance, l'historique d'Equty à partir de l'historique de trading. Et il y en a plus d'un, de tels outils.

Prenez les données et calculez-les comme pour un indicateur standard.

Bien sûr, vous pouvez sortir vers un indicateur et faire des comparaisons.

Merci ! !!