Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 1127

 
¿Sigue sin entender cuál es la pregunta?
 
MrBrooklin:

¡Hola Vladimir!

Por favor, ayúdame a modificar el inicio del script que aparece a continuación:

Necesito que el script establezca las órdenes pendientes no a partir de la oferta y la demanda, sino a partir de la altura y el mínimo de la barra anterior (vela).

Sinceramente, Vladimir.

Así:

//--- 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;
        }
 

Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategia

FAQ de principiantes MQL5 MT5 MetaTrader 5

Vladimir Karputov, 2019.09.18 12:49

Más o menos así:

//--- 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;
        }

¡¡¡Grandioso!!! Gracias.

Saludos, Vladimir.

 
¿Por qué no puedo utilizar un criterio personalizado en una enumeración de parámetros completa, cuál es el significado sagrado de esto?
 

Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategia

FAQ de principiantes MQL5 MT5 MetaTrader 5

Vladimir Karputov, 2019.08.31 14:38

Por favor.

Preste atención a la variable m_first_start declarada a nivel global del programa

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

Al final de OnTick se asigna a esta variable el valor "true"

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

y el EA dejará de colocar órdenes pendientes hasta su próximo reinicio

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

¡Hola Vladimir!

Por favor, indíqueme cómo modificar el código para que el EA coloque órdenes pendientes en cada barra. Intenté simplemente borrar toda la marca amarilla, pero inmediatamente empezaba a abrir y colocar miles de órdenes y posiciones.

Sinceramente, Vladimir.

 
MrBrooklin:

¡Hola Vladimir!

Para mejorar mi auto-educación, por favor, aconsejen cómo cambiar el código para que el EA coloque órdenes pendientes en cada barra. Intenté simplemente borrar todo lo marcado en amarillo, pero inmediatamente comienza a abrir y colocar miles de órdenes y posiciones.

Sinceramente, Vladimir.

Debe detectar el momento en que nace una nueva barra y colocar las órdenes pendientes sólo entonces:

//+------------------------------------------------------------------+
//|                                                         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;
   ЗДЕСЬ РАЗМЕЩАТЬ КОД ПО ВЫСТАВЛЕНИЮ ОТЛОЖЕННЫХ ОРДЕРОВ
//---
  }
//+------------------------------------------------------------------+
Archivos adjuntos:
Test.mq5  4 kb
 

Gracias, Vladimir, por el consejo.

Respetuosamente, Vladimir.

 
Vladimir Karputov:

Es necesariodeterminar cuándo nace una nueva barra y sólo entonces colocar las órdenes pendientes:

Es absolutamente obvio. ¿De dónde vienen estas preguntas? ¿Por pereza o por otra cosa?

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

¡Es absolutamente obvio! ¿De dónde vienen estas preguntas? ¿Por pereza o por otra cosa?

MrBrooklin está dando sus primeros pasos, así que necesita una pista. Todo el mundo empezó y estuvo verde en algún momento.

 
Vladimir Karputov:

MrBrooklin está dando sus primeros pasos, así que necesita algunos consejos. Todos empezaron una vez y estaban verdes.

En principio, no estoy en contra. ¿Pero tiene que haber una lógica en ello?

Quiero que se haga algo en el nuevo bar. Bueno, en primer lugar, hay que definir esta nueva barra.

Estas preguntas no son de un principiante, sino de un perezoso que quiere que todo se mastique y se lleve a la boca. ¿No puedes usar tu cerebro?

Razón de la queja: