Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 1127

 
Ainda não compreende qual é a questão?
 
MrBrooklin:

Olá Vladimir!

Por favor, ajude-me a modificar o início do guião abaixo:

Preciso do guião para definir ordens pendentes não de pedir e licitar, mas da altura e baixo da barra anterior (candelabro).

Atenciosamente, Vladimir.

Assim:

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

Fórum sobre Comércio, Sistemas de Comércio Automatizados e Testes de Estratégia

FAQ de Iniciantes MQL5 MT5 MetaTrader 5

Vladimir Karputov, 2019.09.18 12:49

Mais ou menos assim:

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

Óptimo!!! Obrigado!

Cumprimentos, Vladimir.

 
Porque não posso utilizar um critério personalizado numa enumeração completa de parâmetros, qual é o significado sagrado disto?
 

Fórum sobre Comércio, Sistemas de Comércio Automatizados e Testes de Estratégia

FAQ de Iniciantes MQL5 MT5 MetaTrader 5

Vladimir Karputov, 2019.08.31 14:38

Por favor.

Por favor preste atenção à variável m_first_start declarada a nível de programa global

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

No final do OnTick esta variável recebe o valor "verdadeiro".

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

e a EA não fará mais encomendas pendentes até ao seu próximo reinício

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

Olá Vladimir!

Aconselhar como alterar o código para que a EA tenha colocado encomendas pendentes em cada barra para melhorar a minha auto-educação. Tentei simplesmente apagar todas as marcas amarelas, mas começaria imediatamente a abrir e a colocar milhares de encomendas e posições.

Atenciosamente, Vladimir.

 
MrBrooklin:

Olá Vladimir!

Para melhorar a minha auto-educação, aconselhar como alterar o código para que a EA coloque encomendas pendentes em todos os bares. Tentei simplesmente apagar tudo o que estava assinalado a amarelo, mas imediatamente começou a abrir e a colocar milhares de encomendas e posições.

Atenciosamente, Vladimir.

Deverá detectar o momento em que nasce um novo bar e só então colocar encomendas pendentes:

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

Obrigado, Vladimir, pela dica.

Com todo o respeito, Vladimir.

 
Vladimir Karputov:

É necessário determinar quando nasce um novo bar e só depois colocar encomendas pendentes:

É absolutamente óbvio! De onde vêm estas perguntas? De preguiça ou outra coisa qualquer?

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

É absolutamente óbvio! De onde vêm estas perguntas? De preguiça ou outra coisa qualquer?

O Sr. Brooklin está apenas a dar os seus primeiros passos, pelo que precisa de uma dica. Toda a gente começou e estava verde de uma vez ou de outra.

 
Vladimir Karputov:

O Sr. Brooklin está apenas a dar os seus primeiros passos, por isso precisa de algumas dicas. Todos começaram uma vez e eram verdes.

Em princípio, não sou contra. Mas tem de haver uma lógica para isso?

Quero que algo seja feito no novo bar. Bem, antes de mais, é preciso definir esta nova barra.

Estas perguntas não são um principiante, mas um homem preguiçoso que quer tudo mastigado e posto na sua boca. Não pode usar o seu cérebro?

Razão: