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

 
Ihor Herasko:

Rédigez vos propres tics et mettez-les dans le testeur de stratégie.

mais quelque chose de plus convivial ?

 
Andrey Sokolov:

mais quelque chose de plus convivial ?

ne pouvez-vous pas écrire que vous ne le ferez pas vous-même ? alorshttps://www.mql5.com/ru/job

Voici l'article https://www.mql5.com/ru/articles/4566

vous le lisez, faites des citations selon vos propres lois de distribution

Si MT4 a besoin de ses propres graphiques et ticks, lisez l'article, exportez les cotations de MT5 et importez-les dans MT4.

on ne peut pas faire plus simple

Si vous savez programmer pour MT4, ouvrez le script PeriodConverter de MT4 dans MetaEditor, le code est clair et assez compact, il ne vous faudra pas beaucoup de temps pour le comprendre, puis créez votre propre graphique et testez-le.

ZS : Je me souviens avoir posté sur le forum un script pour créer des graphiques avec la fonction Wehrstrass.

https://www.mql5.com/ru/forum/86386/page988#comment_7843056

 

Bonjour. La fonction Retourne un drapeau pour l'existence d'une position ou d'un ordre près du marché (fonction trouvée sur le forum). Pour le code de test, il devrait ouvrir une position si environ 200 pips au-dessus et au-dessous du prix actuel, il n'y a pas de positions. Pourquoi ouvre-t-il une position sur chaque tick à presque le même prix ?

//+------------------------------------------------------------------+
//|                                                    testprpos.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
//--- input parameters
input int      Input1;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   if(!ExistOPNearMarket(Symbol(),-1,200))
     {
      int ticket=OrderSend(Symbol(),OP_BUY,1,Ask,300,0,0,"_",16384,0,clrGreen);
      if(ticket<0)
        {
         Print("OrderSend завершилась с ошибкой #",GetLastError());
        }
      else
         Print("Функция OrderSend успешно выполнена");
      //--- 

     }

  }
//+------------------------------------------------------------------+
bool ExistOPNearMarket(string sy="",int op=-1,int mn=-1,int ds=1000000) 
  {
   int i,k=OrdersTotal(),ot;

   if(sy=="" || sy=="0") sy=Symbol();
   double p=MarketInfo(sy,MODE_POINT);
   if(p==0) if(StringFind(sy,"JPY")<0) p=0.0001; else p=0.01;
   for(i=0; i<k; i++) 
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) 
        {
         ot=OrderType();
         if((OrderSymbol()==sy) && (op<0 || ot==op)) 
           {
            if(mn<0 || OrderMagicNumber()==mn) 
              {
               if(ot==OP_BUY || ot==OP_BUYLIMIT || ot==OP_BUYSTOP) 
                 {
                  if(MathAbs(MarketInfo(sy, MODE_ASK)-OrderOpenPrice())<ds*p) return(True);
                 }
               if(ot==OP_SELL || ot==OP_SELLLIMIT || ot==OP_SELLSTOP) 
                 {
                  if(MathAbs(OrderOpenPrice()-MarketInfo(sy, MODE_BID))<ds*p) return(True);
                 }
              }
           }
        }
     }
   return(False);
  }
//+------------------------------------------------------------------+
 
J'ai un problème avec la migration des EAs, les boutons sont devenus inactifs, je ne peux pas migrer, quelqu'un a-t-il rencontré ce problème ?
 
Aleksei Petrenko:
J'ai un problème avec la migration des EAs, les boutons sont devenus inactifs, je ne peux pas migrer, quelqu'un a-t-il rencontré ce problème ?
 
Aleksei Petrenko:


 
Ghabo:

Bonjour. La fonction Retourne un drapeau pour l'existence d'une position ou d'un ordre près du marché (fonction trouvée sur le forum). Pour le code de test, il devrait ouvrir une position si environ 200 pips au-dessus et au-dessous du prix actuel, il n'y a pas de positions. Pourquoi ouvre-t-il une position sur chaque tick à presque le même prix ?

Vérifier le nombre de paramètres lors de l'appel

ExistOPNearMarket(Symbol(),-1,200)

et sa description

 
Galim_V:

Vérifier le nombre de paramètres lors de l'appel

et sa description

Merci.
 
J'ai un bot binaire sur python, question : comment lui envoyer un signal du robot depuis le terminal sans béquilles ?
 

Pouvez-vous me dire comment calculer la garantie d'une transaction ?


J'ai essayé deux approches

(0.1 * Ask*MarketInfo(Symbol(),MODE_LOTSIZE))/AccountInfoInteger(ACCOUNT_LEVERAGE)


Et celui-ci

FreeMarginCheck=AccountFreeMarginCheck(Symbol(),OP_BUY,0.1);

 double val=AccountFreeMargin()-FreeMarginCheck;



Le premier donne des résultats étranges sur l'EURJPY si ma devise de dépôt est l' USD. Dois-je ajouter quelque chose à la formule ?

La seconde fonctionne aussi occasionnellement, parfois avec des valeurs correctes, parfois avec des valeurs absurdes (cela dépend du dépôt).

Raison: