Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 1212

 
Vitaly Muzichenko:

OK, ich werde nach einem Mon mit 4K suchen.

Woher stammt dieses Bild?

 
Alexey Viktorov:

Woher stammt dieses Bild?

Gesendet von 4K

 
Vitaly Muzichenko:

Gesendet mit 4K

Können Sie das noch einmal überprüfen? Oder nicht?

 
Alexey Viktorov:

Können Sie das noch einmal überprüfen? Oder nicht?

Nicht erwünscht)

 
Wie erhält man den Wert der MQL5-Programmversion, die durch property# version im Code definiert ist?
 
leonerd:
Wie erhält man den Wert der MQL5-Programmversion, die durch die Eigenschaft # Version definiert ist?

Es stellt sich heraus, dass das nicht möglich ist, weil inVordefinierte Makro-Ersetzungen

Konstante

Beschreibung

__DATUM__

Datum, an dem die Datei ohne Zeitangabe kompiliert wurde (Stunden, Minuten und Sekunden sind 0)

__DATETIME__

Datum und Uhrzeit, zu der die Datei kompiliert wurde

__LINE__

Zeilennummer im Quellcode, in der sich das Makro befindet

__FILE__

Name der zu kompilierenden Datei

__PATH__

Absoluter Pfad zur aktuellen kompilierten Datei

__FUNCTION__

Name der Funktion, in deren Körper sich das Makro befindet

__FUNCSIG__

Funktionssignatur, in deren Körper sich das Makro befindet. Die Funktionsbeschreibung mit den Parametertypen kann bei der Identifizierung vonüberladenen Funktionen hilfreich sein

__MQLBUILD__, __MQL5BUILD__

Nummer des Compiler-Builds


keine solche Variable

Документация по MQL5: Константы, перечисления и структуры / Именованные константы / Предопределенные макроподстановки
Документация по MQL5: Константы, перечисления и структуры / Именованные константы / Предопределенные макроподстановки
  • www.mql5.com
//| Expert initialization function                                   | //| Expert deinitialization function                                 | //| Expert tick function                                             | //| test1                                                            |...
 
leonerd:
Wie erhält man den Wert der MQL5-Programmversion, die durch die Eigenschaft # Version definiert ist?

Ich benutze das, ich konnte keine andere Option finden. Sie müssen die Version zweimal angeben, aber das ist nicht so schwierig

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

Guten Tag, liebe Experten.

Könnten Sie mir bitte sagen, wo im Code ein Fehler auftritt, der verhindert, dass eine BUY-Position auf demselben Balken mit SELL eröffnet wird, der die vorherige Position geschlossen hat?

Die Regeln sind einfach (zu lernen):
1 Einstieg - langsamer Indikator über 0 + schneller Indikator ebenfalls in der Zone (Kauf/Verkauf)

2 Ausfahrt - Überquerung durch Schnellblinker 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:

Guten Tag, geschätzte Experten.

Könnten Sie mir bitte sagen, wo im Code ein Fehler auftritt, der verhindert, dass eine BUY-Position auf demselben Balken mit SELL eröffnet wird, der eine vorherige Position geschlossen hat?

Die Regeln sind einfach (zu lernen):
1 Einstieg - langsamer Indikator über 0 + schneller ebenfalls in der Zone (Kauf/Verkauf)

2 Ausfahrt - schneller Blinker über die 0-Linie

Alles funktioniert richtig: Öffnungsbedingungen Kreuzung der langsamen Indikator 0 Linie, nur schnelle Indikator überquerte 0 Linie an der angegebenen Stelle.

Eine Bedingung muss hinzugefügt werden, um eine Position an der angegebenen Stelle zu öffnen, langsam im gleichen Bereich und schnell kreuzt die 0-Linie

 
Andrey.Sabitov:

Guten Tag, liebe Experten.

Könnten Sie bitte angeben, wo im Code ein Fehler auftritt, der verhindert, dass eine BUY-Position auf demselben Balken wie eine SELL-Position eröffnet wird, die eine vorherige Position geschlossen hat?

Die Regeln sind einfach (zu lernen):
1 Einstieg - langsamer Indikator über 0 + schneller Indikator ebenfalls in der Zone (Kauf/Verkauf)

2 Ausfahrt - Überquerung durch Schnellblinker 0

Sie machen einen groben Fehler: Sie erstellen ZWEI INLIKER für jeden TICK!

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

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

Der Indikator-Handle MUSS einmal bei OnInit erstellt werden.


Bitte lesen Sie dieiCustom-Hilfe.

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