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

 

Estou a escrever um EA. Não estou a testá-lo num testador, mas sim num comércio real.

É possível limpar o ficheiro de registo (separador "Especialistas") ao iniciar um Consultor Especialista?

Neste momento, a única forma de remover este ficheiro é fechar o terminal. A forma de apagar o ficheiro com o terminal aberto seria óptima.

 
pivomoe:

É possível limpar o ficheiro de registo (separador "Especialistas") quando um Especialista começa?

É possível fazê-lo manualmente: no separador, (botão direito do rato) -> "Clear" (Limpar)

 
Ivan Ivanov:

Pode fazê-lo manualmente: no separador, (clique com o botão direito do rato) -> "Limpar".

Apenas o texto no separador Expert desaparecerá. O ficheiro permanecerá no seu lugar. Preciso de apagar ou limpar o ficheiro.

 

Quero ensinar a máquina a encontrar um apartamento exacto. As suas condições são as seguintes: por isso, há uma barra no gráfico


Paraformar um plano, que eu quero encontrar, é necessário formar 3 barrasopostas à 1ª barra entre a sua altura HL (ou seja, apenas 4 barras que estão localizadas num intervalo) para comparar as barras e encontrar níveis escreveu esta condição

        if(
        Bar_Op[qt+2]<=Bar_Hi[qt+3]&&Bar_Cl[qt+2]>=Bar_Lo[qt+3]&& 
        Bar_Op[qt+2]>=Bar_Lo[qt+3]&&Bar_Cl[qt+2]<=Bar_Hi[qt+3]&&
        Bar_Op[qt+1]<=Bar_Hi[qt+3]&&Bar_Cl[qt+1]>=Bar_Lo[qt+3]&&
        Bar_Op[qt+1]>=Bar_Lo[qt+3]&&Bar_Cl[qt+1]<=Bar_Hi[qt+3]&&
        Bar_Op[qt+0]<=Bar_Hi[qt+3]&&Bar_Cl[qt+0]>=Bar_Lo[qt+3]&&
        Bar_Op[qt+0]>=Bar_Lo[qt+3]&&Bar_Cl[qt+0]<=Bar_Hi[qt+3])         
        {

Segundo sei, a comparação está em curso, mas tenho um problema com o desenho de níveis

double Price_Ur = Bar_Cl[qt+2];

Quero construir um nível que passe pelo preço próximo do 2º bar.


Tenho uma pergunta: como devolver o preço mais baixo da condição ou como encontrá-la pode ser que a minha condição não devolva o preço mas apenas compare os topos das velas que passam pelo OP e CL? Utilizei a seguinte notação

int iLwCL=iLowest(_Symbol,PERIOD_D1,MODE_CLOSE,3,qt+1); int iLwOP=iLowest(_Symbol,PERIOD_D1,MODE_OPEN,3,qt+1);
double Price_Ur = Bar_Cl[iLwCL]<Bar_Op[iLwOP] ? Bar_Cl[iLwCL]:Bar_Op[iLwOP];

A funçãoiLowest determina o topo mais baixo em relação à barra 0, mas no meu caso não encontra o preço mais baixo. Como posso devolver o preço mais baixo da condição para construir um nível como no caso dodobro Price_Ur = Bar_Cl[qt+2];?

 
Pode dizer-me se existe uma forma de transferir uma matriz de uma EA para outra?
As variáveis GV são muito inconvenientes para isto.
 
User_mt5:
Pode dizer-me se existe uma forma de transferir uma matriz de uma EA para outra?
As variáveis GV são muito inconvenientes para isto.

Talvez isto ajude https://www.mql5.com/ru/code/818. Eu próprio nunca a utilizei.

 
User_mt5:
Pode dizer-me se existe uma forma de transferir uma matriz de uma EA para outra?
As variáveis GV são muito inconvenientes para isto.

Fórum sobre comércio, sistemas comerciais automatizados e teste de estratégias comerciais

Bibliotecas: TradeTransactions

fxsaber, 2018.09.20 16:23

// Пример хранения/обмена данными через Ресурсы внутри Терминала
#include <fxsaber\TradeTransactions\ResourceData.mqh> // https://www.mql5.com/ru/code/22166

void OnStart()
{  
  const RESOURCEDATA<int> ResourceINT("::int"); // Ресурс для обмена int-ами. const - как доказательство, что ничего не пишется в объект класса
  
  int ArrayINT[] = {1, 2, 3};
  int Num = 5;
  
  ResourceINT = ArrayINT;  // Ресурс хранит массив.
  ResourceINT += Num;      // Добавили в ресурс еще значение.
  ResourceINT += ArrayINT; // Добавили массив.
  
  int ArrayINT2[];  
  ResourceINT.Get(ArrayINT2); // Считали данные из ресурса.
  ArrayPrint(ArrayINT2);      // Вывели: 1 2 3 5 1 2 3

  ResourceINT.Free();                // Удалили данные из ресурса
  Print(ResourceINT.Get(ArrayINT2)); // Убедились, что данных нет: 0

  const RESOURCEDATA<MqlTick> ResourceTicks("::Ticks"); // Ресурс для обмена тиками. const - как доказательство, что ничего не пишется в объект класса
  MqlTick Tick;
  
  if (SymbolInfoTick(_Symbol, Tick))
    for (int i = 0; i < 3; i++)
      ResourceTicks += Tick; // Добавили в ресурс тики

  MqlTick Ticks[];
  ResourceTicks.Get(Ticks); // Считали данные из ресурса.
  ArrayPrint(Ticks);        // Вывели.
  
  // Это полное имя ресурса для обращения из другой программы
  const string NameOut = StringSubstr(MQLInfoString(MQL_PROGRAM_PATH), StringLen(TerminalInfoString(TERMINAL_PATH)) + 5) + "::Ticks";  
  Print(NameOut); // Вывели полное имя ресурса.
  
  const RESOURCEDATA<MqlTick> Resource(NameOut); // Ресурс для доступа к данным (read-only) из другой программы
  
  MqlTick TicksOut[];
  Resource.Get(TicksOut); // Считали данные из ресурса.
  ArrayPrint(TicksOut);   // Вывели.
  
  Resource.Free();   // Не получится повлиять на данные read-only-ресурса.
  Print(_LastError); // ERR_INVALID_PARAMETER - Ошибочный параметр при вызове системной функции.
}
 
pivomoe, @fxsabe, obrigado. Vou estudar o assunto.
 

Não compreendo como é que neste conselheiro

https://www.mql5.com/ru/code/20254

Para evitar o desenho da barra de corrente (ainda não formada). Alguém me pode dar uma dica?

Renko 2.0 Offline
Renko 2.0 Offline
  • www.mql5.com
Неторгующий советник Renko 2.0 Offline генерирует информацию по пользовательскому символу на минутном графике. Полный график Ренко с фитилями. Доступен и оффлайн! Ссылается на библиотеку Symbol для MetaTrader 5, написанную пользователем fxsaber. Настраивается с...
 
EgorKim:

Não compreendo como é que neste conselheiro

https://www.mql5.com/ru/code/20254

Para evitar o desenho da barra de corrente (ainda não formada). Alguém me pode dar uma dica?

Deve perguntar no fio de discussão Expert Advisor).