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

 
Artyom Trishkin:

Plus rapide à appréhender et à comprendre

écrire les prix, comment les prendre plus tard, quand quoi ?

void PriceTimePos(string sy="",int op=-1,int mn=-1)
  {
  double Цены[3];
   datetime t;
   bool daa;
   int d,k_=OrdersTotal(),typ_;
   double   r=0;
   int      i,k=OrdersHistoryTotal();

   if(sy=="0") sy=Symbol();
   for(i=0; i<k; i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
        {
         if(OrderSymbol()==Symbol())
           {
            if(OrderType()==OP_BUY || OrderType()==OP_SELL)
              {
               if(op<0 || OrderType()==op)
                 {
                  if(mn<0 || OrderMagicNumber()==mn)
                    {
                     if(OrderCloseTime()>=TimeCurrent()-2440*60)
                       {
                        t=OrderCloseTime();
                        r=OrderOpenPrice();
                        sl=OrderStopLoss();
                        tp=OrderTakeProfit();
                        lot=OrderLots();
                        typ_=OrderType();
                        Print("OpenPrice",r);
                       Цены[0]=OrderOpenPrice();
                    
                       }
                    }
                 }
              }
           }
        }
     }
//
  }
à insérer dans cette boucle au lieu de r
                        daa=false;
                        for(i=0; i<k; i++)
                          {
                           if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
                             {
                              if((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op))
                                {
                                 if(OrderType()>1 && OrderType()<6)
                                   {
                                    d=MarketInfo(OrderSymbol(), MODE_DIGITS);
                                    r=NormalizeDouble(r, d);
                                    if(r==NormalizeDouble(OrderOpenPrice(),d)) daa=true; 
                                   }
                                }
                             }
                          }
 

Bonjour, J'ai réalisé une fonction qui doit augmenter le stop loss après la clôture du dernier ordre en moins.

L'augmente de l'échelon défini, jusqu'à ce qu'il atteigne le maximum. Par conséquent, il fixe toujours la valeur initiale du stop loss.

Qu'est-ce qui ne va pas ? Merci !

//+------------------------------------------------------------------+

double SL()

{

double sL ;

si(OrdersHistoryTotal()==0)

{

sL=StopLoss ;

}

if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY))

{

si(OrderProfit()>=0)

{

sL=StopLoss ;

}

si(OrderProfit()<0 && OrderType()==OP_BUY)

{

sL=OrderOpenPrice()-OrderStopLoss()+SLStep ;

}

si(OrderProfit()<0 && OrderType()==OP_SELL)

{

sL=OrderStopLoss()-OrderOpenPrice()+SLStep ;

}

}

if(sL>maxStep)

{

sL=StopLoss ;

}

retour(sL) ;

}

//+------------------------------------------------------------------+

 
Artyom Trishkin:
  1. Vous avez raison de renvoyer des valeurs à partir de fonctions non nulles, mais il est préférable de passer à de nouveaux rails - il n'y a rien de compliqué.
  2. Ecrivez, n'oubliez pas d'insérer la directive #property strict au tout début du code - où toutes les directives sont écrites, lisez les codes d'erreur - leurs descriptions sont dans la documentation et tout sera bien et pas compliqué.
Où puis-je trouver les codes d'erreur? Où se trouve cette documentation ?
 
#property strict

int Count=0;

void OnInit()     
{
   Alert ("Сработала ф-ия init() при запуске");   // Сообщение
   return;                                                                     // Выход из init()
   }   
//--------------------------------------------------------------------
void OnStart()                                                                       // Спец. ф-ия start()
   {
   double Price = Bid;                                                      // Локальная перемен.
   Count++;                                                                      // Счётчик тиков
   Alert("Новый тик ",Count," Цена = ",Price);       // Сообщение
   return;                                                                        // Выход из start()
   }
void OnDeinit()                                                                              // Спец. ф-ия deinit()
   {
   Alert ("Сработала ф-ия deinit() при выгрузке");         // Сообщение
   return;                                                                                 // Выход из deinit()
   }

Je l'écris mal ?

Cela devrait se passer comme suit : http://prntscr.com/lu1kb9


J'ai essayé d'insérer les données sous le modèle actuel.

//+------------------------------------------------------------------+
//|                                                            п.mq4 |
//|                        Copyright 2018, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {

   Alert ("Сработала ф-ия init() при запуске");   // Сообщение
                                                                       // Выход из init()
     
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
Alert ("Сработала ф-ия deinit() при выгрузке");         // Сообщение
   return;
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
 
   double Price = PRICE_OPEN;                                                      // Локальная перемен.
   Count++;                                                                      // Счётчик тиков
   Alert("Новый тик ",Count," Цена = ",Price);       // Сообщение
   return;                                                                        // Выход из start()
   
   
  }
//+------------------------------------------------------------------+


Mais ce n'est toujours pas la même chose. Aidez-moi.
Скриншот
Скриншот
  • prnt.sc
Снято с помощью Lightshot
 
Quelqu'un a-t-il une fonction qui peut passer un tableau pour calculer le drawdown maximum ?
 

Bon après-midi.

Je maîtrise emq-el grâce au tutoriel de Sergei Kovalev.

J'ai téléchargé le conseiller expert à partir de là, je l'ai compilé, il semble même fonctionner, mais lors de la compilation, il affiche des commentaires, pas des erreurs, mais des avertissements.

Que dois-je changer pour qu'il compile sans erreur ? Merci d'avance.

Dossiers :
expert.mq4  28 kb
 
Sergey Branin:
Où puis-je trouver les codes d'erreur? Où se trouve cette documentation ?

Dans le menu de ce site web - cherchez

 
Artyom Trishkin:

Dans le menu de ce site - cherchez

Artem, il y a de la documentation sur mql5, et les questions sont dans la section mql4

Sergey Branin:
Où puis-je trouver les codes d'erreur? Où se trouve cette documentation ?

Voici la documentation de mql4. Vous pouvez également appuyer sur F1 dans MetaEditor.

Справочник MQL4
Справочник MQL4
  • docs.mql4.com
MetaQuotes Language 4 (MQL4) - встроенный язык программирования торговых стратегий, разработанный компанией MetaQuotes Software Corp. на основе своего многолетнего опыта в создании торгово-информационных платформ. Этот язык позволяет писать собственные программы-эксперты (Expert Advisors), автоматизирующие управление торговыми процессами и...
 
Alexey Viktorov:

Artyom, la documentation mql5 est-elle là ? et les questions sont dans la section mql4

Il existe une documentation sur mql4. Et il est préférable d'appuyer sur F1 dans le MetaEditor.

Ahh... C'est quand même pas si compliqué que ça, c'est plus rapide de mettre le doigt sur F1 et de trouver tout ce dont on a besoin que d'attendre une journée une réponse sur le forum. Je ne comprends pas...

 
Bonjour, je suis nouveau dans le domaine de la programmation. Je n'ai trouvé aucun code prêt à l'emploi nulle part. L'idée est la suivante : j'ai besoin de contrôler un indicateur personnalisé à partir d'un EA, ou plutôt de modifier ses paramètres externes (un) lorsqu'un événement se produit. La logique en bref - si le lot (ou par exemple le nombre de positions) > une valeur prédéfinie, le paramètre externe dans l'indicateur (qui est dans une autre fenêtre et n'est pas connecté avec cet EA) change à la volée sans réinitialisation de l'indicateur. Vous pouvez peut-être essayer de le faire par
 string ServiceCustomIndicatorByIndexA(int nIndex);// я даже не знаю тут   ANSI или UNICODE нужно
и
int ServiceGetNamesIndicatorsMA(int hwndChart,int nWindow,string &asIndicators[],int nSize);   
Je ne sais pas comment faire, est-ce qu'un programmeur peut écrire un bloc de code simple pour un exemple. c/o Denis