Questions des débutants MQL5 MT5 MetaTrader 5 - page 1127

 
Vous ne comprenez toujours pas quelle est la question ?
 
MrBrooklin:

Bonjour Vladimir !

Veuillez m'aider à modifier le début du script ci-dessous :

J'ai besoin que le script définisse les ordres en attente non pas à partir de l'ask et de l'bid, mais à partir du haut et du bas de la barre précédente (chandelier).

Sincèrement, Vladimir.

Comme ça :

//--- start work
   double start_price_ask=0.0;
   double start_price_bid=0.0;
//---
   MqlRates rates[];
   ArraySetAsSeries(rates,true);
   int start_pos=0,count=3;
   if(CopyRates(m_symbol.Name(),Period(),start_pos,count,rates)!=count)
     {
      Print(__FILE__," ",__FUNCTION__,", ERROR: CopyRates ");
      return;
     }
//---
   if(InpPending==stop)
     {
      start_price_ask=rates[1].high+ExtUpGap;
      start_price_bid=rates[1].low-ExtDownGap;
     }
   else
      if(InpPending==limit)
        {
         start_price_ask=rates[1].low-ExtDownGap;
         start_price_bid=rates[1].high+ExtUpGap;
        }
 

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégie

FAQ des débutants MQL5 MT5 MetaTrader 5

Vladimir Karputov, 2019.09.18 12:49

Comme ceci :

//--- start work
   double start_price_ask=0.0;
   double start_price_bid=0.0;
//---
   MqlRates rates[];
   ArraySetAsSeries(rates,true);
   int start_pos=0,count=3;
   if(CopyRates(m_symbol.Name(),Period(),start_pos,count,rates)!=count)
     {
      Print(__FILE__," ",__FUNCTION__,", ERROR: CopyRates ");
      return;
     }
//---
   if(InpPending==stop)
     {
      start_price_ask=rates[1].high+ExtUpGap;
      start_price_bid=rates[1].low-ExtDownGap;
     }
   else
      if(InpPending==limit)
        {
         start_price_ask=rates[1].low-ExtDownGap;
         start_price_bid=rates[1].high+ExtUpGap;
        }

Super ! !! Merci !

Salutations, Vladimir.

 
Pourquoi ne puis-je pas utiliser un critère personnalisé dans une énumération complète de paramètres, quel est le sens sacré de ceci ?
 

Forum sur le trading, les systèmes de trading automatisé et les tests de stratégie

FAQ des débutants MQL5 MT5 MetaTrader 5

Vladimir Karputov, 2019.08.31 14:38

S'il vous plaît.

Veuillez prêter attention à la variable m_first_start déclarée au niveau du programme global.

bool        m_first_start  = false;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()

A la fin de OnTick, cette variable reçoit la valeur "true".

//---
   m_first_start=true;
  }
//+------------------------------------------------------------------+
//| Refreshes the symbol quotes data                                 |
//+------------------------------------------------------------------+
bool RefreshRates()
  {

et l'EA ne placera plus d'ordres en attente jusqu'à son prochain redémarrage.

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   if(m_first_start)
      return;

Bonjour Vladimir !

Veuillez m'indiquer comment modifier le code pour que l'EA place des ordres en attente sur chaque barre afin d'améliorer mon auto-apprentissage. J'ai essayé de supprimer simplement tout le marquage jaune, mais il commençait immédiatement à ouvrir et à placer des milliers d'ordres et de positions.

Sincèrement, Vladimir.

 
MrBrooklin:

Bonjour Vladimir !

Pour améliorer mon auto-éducation, veuillez m'indiquer comment modifier le code afin que l'EA place des ordres en attente sur chaque barre. J'ai essayé de supprimer simplement tous les éléments marqués en jaune, mais il commence immédiatement à ouvrir et à placer des milliers d'ordres et de positions.

Sincèrement, Vladimir.

Vous devez détecter le moment où une nouvelle barre est née et placer des ordres en attente seulement à ce moment-là :

//+------------------------------------------------------------------+
//|                                                         Test.mq5 |
//|                              Copyright © 2019, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2019, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.000"
/*
   barabashkakvn Trading engine 3.043
*/
#include <Trade\SymbolInfo.mqh>
//---
CSymbolInfo    m_symbol;                     // object of CSymbolInfo class
//--- input parameters

//---
datetime m_prev_bars             = 0;        // "0" -> D'1970.01.01 00:00';

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

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//--- we work only at the time of the birth of new bar
   datetime time_0=iTime(m_symbol.Name(),Period(),0);
   if(time_0==m_prev_bars)
      return;
   ЗДЕСЬ РАЗМЕЩАТЬ КОД ПО ВЫСТАВЛЕНИЮ ОТЛОЖЕННЫХ ОРДЕРОВ
//---
  }
//+------------------------------------------------------------------+
Dossiers :
Test.mq5  4 kb
 

Merci, Vladimir, pour le tuyau.

Respectueusement, Vladimir.

 
Vladimir Karputov:

Ilfaut déterminer quand une nouvelle barre est née et seulement ensuite placer des ordres en attente:

C'est absolument évident ! D'où viennent ces questions ? Par paresse ou autre chose ?

 
Сергей Таболин:

C'est absolument évident ! D'où viennent ces questions ? Par paresse ou autre chose ?

MrBrooklin fait ses premiers pas, il a donc besoin d'une indication. Tout le monde a commencé et a été vert à un moment ou à un autre.

 
Vladimir Karputov:

MrBrooklin fait ses premiers pas, il a donc besoin de conseils. Tout le monde a commencé une fois et était vert.

Je ne suis pas contre le principe. Mais il doit y avoir une logique à cela ?

Je veux que quelque chose soit fait sur le nouveau bar. Eh bien, tout d'abord, vous devez définir cette nouvelle barre.

Ces questions ne sont pas celles d'un débutant, mais d'un paresseux qui veut que tout soit mâché et mis dans sa bouche. Tu ne peux pas utiliser ton cerveau ?