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

 
Alexey Viktorov:

De onde é esta fotografia?

Enviado a partir de 4K

 
Vitaly Muzichenko:

Enviado com 4K

Bem, pode verificar novamente, suponho? Ou não?

 
Alexey Viktorov:

Bem, pode verificar novamente, suponho? Ou não?

Não desejável)

 
Como obter o valor da versão do programa MQL5 definido pela propriedade# versão no código ?
 
leonerd:
Como obter o valor da versão do programa MQL5 definido pela propriedade# versão?

Acontece que não pode, porque emsubstituições macro pré-definidas

Constante

Descrição

__DATE__

Data em que o ficheiro foi compilado sem tempo (horas, minutos e segundos são 0)

__DATETIME__

Data e hora em que o ficheiro foi compilado

__LINHA__

Número de linha no código fonte onde a macro está localizada

__FICHEIRO__

Nome do ficheiro a ser compilado

__PATH__

Caminho absoluto para o ficheiro compilado actual

__FUNÇÃO__

Nome da função no corpo do qual a macro está localizada

__FUNCSIG__

Assinatura da função no corpo do qual a macro está localizada. A descrição da função com tipos de parâmetros pode ser útil na identificação defunções sobrecarregadas

__MQLBUILD__, __MQL5BUILD__

Número da construção do compilador


nenhuma variável deste tipo

Документация по MQL5: Константы, перечисления и структуры / Именованные константы / Предопределенные макроподстановки
Документация по MQL5: Константы, перечисления и структуры / Именованные константы / Предопределенные макроподстановки
  • www.mql5.com
//| Expert initialization function                                   | //| Expert deinitialization function                                 | //| Expert tick function                                             | //| test1                                                            |...
 
leonerd:
Como obter o valor da versão do programa MQL5 definido pela propriedade# versão?

Uso isto, não consegui encontrar qualquer outra opção. É necessário especificar a versão duas vezes, mas não é assim tão difícil

#property version     "23.25" // 16.04.2020
#define   version     "23.25"
 

Bom dia, caros peritos.

Poderia dizer-me onde no código existe um erro que impede a abertura da posição COMPRAR na mesma barra com a VENDA que fechou a posição anterior?

As regras são simples (para aprender):
1 Entrada - passagem lenta do indicador 0 + rápida também na zona (compra/venda)

2 Saída - passagem por indicador rápido 0

//+------------------------------------------------------------------+
//|                                                      TestDPO.mq5 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#include <Trade\Trade.mqh>
CTrade trade;

input int dpo_fast_period = 9;  // DPO Fast Period
input int dpo_slow_period = 40; // DPO Fast Period
input int magic = 1000;         // Magic советника
input ulong slippage = 10;         // Проскальзывание цены
input double volume = 0.1;      // размер позиции

int DPO_fast;                 // Хэндл для быстрого DPO
int DPO_slow;                 // Хэндл для медленного DPO


double fDPOVal[];                 //Динамический массив для хранения значений fast DPO
double sDPOVal[];                 //Динамический массив для хранения значений slow DPO

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {



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

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---------------Задаем цены покупки и продажи------------------------
   double Ask=NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits);
   double Bid=NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits);

   int signal=0;  // сигнал на покупку, продажу

//--------------Проверка на новый бар
   if(!isNewBar())
      return;
//--------------------------------------------------------------------

   DPO_fast=iCustom(NULL,0,"Examples\\DPO",dpo_fast_period);   // получаем хэндлы для быстрого
   DPO_slow=iCustom(NULL,0,"Examples\\DPO",dpo_slow_period); // получаем хэндлы для медленного


   ArraySetAsSeries(fDPOVal,true);              //задаем направление индексов массива
   ArraySetAsSeries(sDPOVal,true);
   if(CopyBuffer(DPO_fast,0,0,10,fDPOVal)<0)    // наполняем массив значений DPO fast
     {
      Alert("Ошибка копирования буфера индикатора fast DPO. Ошибка ", GetLastError());
     }
   if(CopyBuffer(DPO_slow,0,0,10,sDPOVal)<0)    // наполняем массив значений DPO slow
     {
      Alert("Ошибка копирования буфера индикатора slow DPO. Ошибка ", GetLastError());
     }

   double DPO_fast_c_value=NormalizeDouble(fDPOVal[1],6);  // запоминаем значение индикатора DPO fast на предыдущем баре
   double DPO_slow_c_value=NormalizeDouble(sDPOVal[1],6);  // запоминаем значение индикатора DPO slow на предыдущем баре
   double DPO_fast_p_value=NormalizeDouble(fDPOVal[2],6);  // запоминаем значение индикатора DPO fast на пред-предыдущем баре
   double DPO_slow_p_value=NormalizeDouble(sDPOVal[2],6);  // запоминаем значение индикатора DPO slow на пред-предыдущем баре

   if(DPO_slow_c_value>0 && DPO_slow_p_value<0 && DPO_fast_c_value>0)  // если медленный индикатор пересекает 0 снизу вверх и быстрый находится выше 0
      signal=1;                                                           // сигнал на открытие покупки
   if(DPO_slow_c_value<0 && DPO_slow_p_value>0 && DPO_fast_c_value<0)  // если медленный индикатор пересекает 0 сверху вниз и быстрый находится ниже 0
      signal=-1;                                                          // сигнал на открытие продажи
   if(DPO_fast_c_value>0 && DPO_fast_p_value<0)                       // если быстрый индикатор пересекает 0 снизу вверх
      signal=-2;                                                           // сигнал на закрытие продажи
   if(DPO_fast_c_value<0 && DPO_fast_p_value>0)                       // если быстрый индикатор пересекает 0 сверху вниз
      signal=2;                                                          // сигнал на закрытие покупки

switch (signal)
         {
         case -1:
         trade.Sell(volume,NULL,Bid,0,0,NULL);
         break;
         case 1:
         trade.Buy(volume,NULL,Ask,0,0,NULL);
         break;
         case -2:
         trade.PositionClose(_Symbol,slippage);
         break;
         case 2:
         trade.PositionClose(_Symbol,slippage);
         break;
	}
  }
Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
  • www.mql5.com
Задавайте вопросы по техническому анализу, обсуждайте торговые системы и улучшайте свои навыки программирования торговых стратегий на языке MQL5. Общайтесь и обменивайтесь опытом на форуме с трейдерами всего мира и помогайте ответами новичкам — наше сообщество развивается вместе с вами. Как я собираю себе советника методом тыка Из этих...
 
Andrey.Sabitov:

Boa tarde, estimados especialistas.

Poderia dizer-me onde no código existe um erro que impede a abertura da posição COMPRAR na mesma barra com VENDA que fechou uma posição anterior?

As regras são simples (para aprender):
1 Entrada - passagem lenta do indicador 0 + rápida também na zona (compra/venda)

2 Saída - indicador rápido que atravessa a linha 0

Tudo funciona correctamente: condições de abertura atravessando a linha 0 do indicador lento, apenas o indicador rápido atravessou a linha 0 no local especificado.

Deve ser adicionada uma condição para abrir uma posição no local especificado, lenta na mesma área e rápida atravessa a linha 0

 
Andrey.Sabitov:

Bom dia, caros peritos.

Poderia informar onde no código existe um erro que impede a abertura da posição COMPRA na mesma barra com a VENDA, que fechou uma posição anterior?

As regras são simples (para aprender):
1 Entrada - passagem lenta do indicador 0 + rápida também na zona (compra/venda)

2 Saída - atravessando o indicador rápido 0

Está a cometer um erro grave: Está a criar DOIS INLIGADORES PARA CADA TICK!

//--------------------------------------------------------------------

   DPO_fast=iCustom(NULL,0,"Examples\\DPO",dpo_fast_period);   // получаем хэндлы для быстрого
   DPO_slow=iCustom(NULL,0,"Examples\\DPO",dpo_slow_period); // получаем хэндлы для медленного

O cabo indicador DEVE ser criado uma vez no OnInit.


Por favor, leia a ajuda doiCustom.

Основы тестирования в MetaTrader 5
Основы тестирования в MetaTrader 5
  • www.mql5.com
Идея автоматической торговли привлекательна тем, что торговый робот может без устали работать 24 часа в сутки и семь дней в неделю. Робот не знает усталости, сомнений и страха,  ему не ведомы психологические проблемы. Достаточно четко формализовать торговые правила и реализовать их в виде алгоритмов, и робот готов неустанно трудиться. Но прежде...
Razão: