Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 316

 
Alexey Viktorov:

In der Tat haben nicht alle Tastaturen das, worüber ich geschrieben habe... Vielleicht sollten Sie Ihre Tastatur wechseln.



Es gibt zu viele "Experten" hier :) Also dachte ich, ich mache mich über dich lustig. Anstatt Fragen zu beantworten, halten sie Vorträge.

 
Luchezar Shalomaev:

Es gibt zu viele "Experten" hier :) Also habe ich beschlossen, mich über sie lustig zu machen. Anstatt Fragen zu beantworten, halten Sie einen Vortrag.

Erwarten Sie dann keine normalen Antworten von Leuten, die mit ihren eigenen Dingen beschäftigt sind und davon abgelenkt sind, Ihnen zu helfen, wenn Sie sich über den Geber lustig machen.

Dies ist kein Zirkus.

 
Artyom Trishkin:

Dann erwarten Sie in Zukunft von Menschen, die mit ihren Geschäften beschäftigt und abgelenkt sind, um Ihnen zu helfen, keine normalen Antworten, wenn Sie sich in die Lage versetzen, sich über den Geber lustig zu machen.

Dies ist kein Zirkus.



Sehr geehrter Herr Moderator, wenn das hier kein Zirkus ist, würden Sie dann bitte die Clowns, die meine Fragen beantwortet haben, hinter die Bühne bringen? Ich danke Ihnen.

 
Luchezar Shalomaev:


Sehr geehrter Herr Moderator, wenn das hier kein Zirkus ist, wären Sie dann so freundlich, die Clowns, die meine Fragen beantwortet haben, hinter die Bühne zu führen? Ich danke Ihnen.

Ist das der Weg, um Sie hinter die Kulissen zu schicken?

Sie:

Forum für Handel, automatisierte Handelssysteme und Strategietests

Alle Fragen von Anfängern zu MQL4, Hilfe und Diskussion über Algorithmen und Codes

Luchezar Shalomaev, 2017.09.20 22:25

Hallo. Ich habe die EUR USD 1 Minute Kursdatei von Ducascopy heruntergeladen und versucht, sie in MT4 Alpari zu importieren, aber nichts passiert. Nur ein leeres Konvertierungsfenster. Dasselbe bei Instaforex. Was kann das sein?

Antwort:

Sie:

Antwort:

Sie:

Antwort:

Sie:

Sie:

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Alle Fragen von Anfängern zu MQL4, Hilfe und Diskussion über Algorithmen und Codes

Alexey Viktorov, 2017.09.21 09:34

Wirklich nicht alle Tastaturen haben das, worüber ich geschrieben habe... Vielleicht sollte die Tastatur geändert werden?


Sie:

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Alle Fragen, die Neulinge zu MQL4 haben, Hilfe und Diskussion über Algorithmen und Codes

Luchezar Shalomaev, 2017.09.21 21:10


Es gibt zu viele "Experten" hier :) Also beschloss ich, mich über sie lustig zu machen. Anstatt Ihre Fragen zu beantworten, beginnen sie zu predigen.


Ihre Frage wurde beantwortet - drücken Sie F2, um das Fenster zum Herunterladen von Angeboten aufzurufen.

Aber Sie begannen zu scherzen und bekamen den Scherz als Antwort.

Was wollten Sie? Was du mitgebracht hast, wie man sagt...

 
Artyom Trishkin:

Soll ich Sie also hinter die Bühne schicken?

Sie:

Antwort:

Sie:

Antwort:

Sie:

Antwort:

Sie:

Sie:

Sie:


Ihre Frage wurde beantwortet - drücken Sie F2, um das Fenster zum Herunterladen von Angeboten aufzurufen.

Aber Sie fingen an zu scherzen, woraufhin Sie einen Scherz als Antwort erhielten.

Was wollen Sie? Was du mitgebracht hast, wie man sagt...













Nun, Sie sagen, es sei kein Zirkus.

 
Aleksey Vyazmikin:
Der einfachste Weg, die Logik zu schreiben, ist, sie klarer zu machen - ich verstehe nicht, was die Logik ist... Können Sie es in Worten beschreiben?

Ich habe einen Fehler in der Logik gefunden. Das Problem wurde behoben und es funktioniert.

int Doji()
{

//Параметры Дожи
   double Open1 = NormalizeDouble (iOpen(Symbol(), PERIOD_H4,1),Digits);
   double Close1 = NormalizeDouble (iClose(Symbol(), PERIOD_H4,1),Digits);
   double High1 = NormalizeDouble (iHigh(Symbol(), PERIOD_H4,1),Digits);
   double Low1 = NormalizeDouble (iLow(Symbol(), PERIOD_H4,1),Digits);
   
//Параметры предыдущей свечи
   double Open2 = NormalizeDouble (iOpen(Symbol(), PERIOD_H4,2),Digits);
   double Close2 = NormalizeDouble (iClose(Symbol(), PERIOD_H4,2),Digits);
   double High2 = NormalizeDouble (iHigh(Symbol(), PERIOD_H4,2),Digits);
   double Low2 = NormalizeDouble (iLow(Symbol(), PERIOD_H4,2),Digits);
   
//Параметры индикатора волотильности ATR для нахожденя относительно большой свечи перед Доджи
   double ATR = iATR(Symbol(),PERIOD_H4,21,1);
   
   
//Математическое описание патерна Дожи
   if(Close1 < High1 -0.3*(High1-Low1) && 
      Open1 < High1 -0.3*(High1-Low1) && 
      Close1 > High1 -0.7*(High1-Low1) && 
      Open1 > High1 -0.7*(High1-Low1) && 
      MathAbs(Close1-Open1) < 0.2*(High1-Low1)&&
      MathAbs(Close2-Open2) > 0.7*ATR)
      {
         if((Close2 - Open2) > 0 && New_Bar == true)
         { 
            Print ("Down"); return(-1);// Условие для продаж
         }
         if((Close2 - Open2) < 0 && New_Bar == true)
         {
            Print ("Up"); return(1);// Условие для покупок
         }
      }
      return(0);
}
Der Fehler lag in der mathematischen Beschreibung des Doji-Musters.
 

Nun lautet die Aufgabe wie folgt. Anstelle eines Pfeils muss ein Rechteck gezeichnet werden, das durch den maximalen und minimalen Doji sowie durch die Eröffnungszeit des Doji und die Eröffnungszeit eines neuen Balkens nach dem Doji gezeichnet wird. Und das alles auf einem 4-Stunden-Chart. Gleichzeitig muss ich auf einem 5-Minuten-Chart sein. Was können Sie mir raten? Wie kann man das umsetzen?

Ich weiß nicht, wie ich das machen soll.

 
voron_026:

Ich habe einen Fehler in der Logik gefunden. Ich habe es repariert und es funktioniert.

Der Fehler lag in der mathematischen Beschreibung des Doji-Musters.

Gut für Sie. Haben Sie schon einmal programmiert? Ihr Stil ist nicht typisch.

voron_026:

Nun lautet die Aufgabe wie folgt. Anstelle der Pfeile müssen wir ein Rechteck zeichnen, das durch den maximalen und minimalen Doji sowie durch die Eröffnungszeit des Doji und die Eröffnungszeit eines neuen Balkens nach dem Doji gezeichnet wird. Und das alles auf einem 4-Stunden-Chart. Gleichzeitig muss ich auf einem 5-Minuten-Chart sein. Was können Sie mir raten? Wie kann man das umsetzen?

Ich danke Ihnen.


Deklaration gemeinsamer (globaler) Variablen, die in der Funktion berechnet werden und von ihr zurückkehren void(){} . Können Sie die Zeit definieren... Wie auch immer, ich habe die Frage noch nicht ganz verstanden.

Übrigens, ich wusste nicht, über globale Variable Ansatz vor und war die Rückgabe alle Werte von Funktion über String-Variable ...

 
voron_026:

Nun lautet die Aufgabe wie folgt. Anstelle eines Pfeils muss ein Rechteck gezeichnet werden, das durch den maximalen und minimalen Doji sowie durch die Eröffnungszeit des Doji und die Eröffnungszeit eines neuen Balkens nach dem Doji gezeichnet wird. Und das alles auf einem 4-Stunden-Chart. Gleichzeitig muss ich auf einem 5-Minuten-Chart sein. Was können Sie mir raten? Wie kann man das umsetzen?

Ich danke Ihnen.

Sie müssen OBJ_RECTANGLE verwenden. Sie wissen, wie Sie Preis- und Zeitdaten aus dem H4-Chart erhalten.

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов / OBJ_RECTANGLE
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов / OBJ_RECTANGLE
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов / OBJ_RECTANGLE - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Aleksey Vyazmikin:

Gut für Sie. Haben Sie schon einmal programmiert? Ihr Stil ist nicht typisch.


Deklaration allgemeiner (globaler) Variablen, die in der Funktion berechnet und von ihr zurückgegeben werden void(){} . Können Sie die Zeit bestimmen... Ich verstehe nicht, was genau die Frage ist.

Übrigens, ich wusste nicht, über globale Variable Ansatz vor und gab alle Werte von Funktion durch String-Variable ...


HalloAleksey Vyazmikin Ich programmiere noch nicht so lange. Ich fange langsam an, mich mit dem Thema zu beschäftigen.

Ich habe es auf diese Weise versucht:

//+------------------------------------------------------------------+
//|                                                          111.mq4 |
//|                                       Copyright 2017,UriyGlushko |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017,UriyGlushko"
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

extern string Rodot           = "Параметры робота";
extern double Lots            = 0.2;
extern int    StopLoss        = 20;
extern int    TakeProfit      = 80;
extern int    Magic           = 999999;
extern int    Slippage        = 3; // Проскальзывание

extern bool UseDojiCandles = true; // Использование патерна Доджи
int DojiCandle = 0;
bool New_Bar = false;

datetime time0 = iTime(Symbol(),PERIOD_H4,0);
datetime time1 = iTime(Symbol(),PERIOD_H4,1);
double open0 = iOpen(Symbol(), PERIOD_H4,0);
double open1 = iOpen(Symbol(), PERIOD_H4,1);
double close1 = iClose(Symbol(), PERIOD_H4,1);
double high1 = iHigh(Symbol(), PERIOD_H4,1);
double low1 = iLow(Symbol(), PERIOD_H4,1);
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
{
  if (Digits == 3 || Digits ==5 )
  {
   TakeProfit *= 10;
   StopLoss   *= 10;
   Slippage   *= 10;
  }
 return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
  
   
}
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
{
Fun_New_Bar();

   if(UseDojiCandles = true && Doji() == 1 && New_Bar == true)
     {
      if(!ObjectCreate(ChartID(),"Doji_"+IntegerToString(DojiCandle),OBJ_RECTANGLE,0,time1,open1,time0,open0))
         {
         Print("Не удалось создать метку вверх");
         }
         ObjectSetInteger(ChartID(),"Doji_"+IntegerToString(DojiCandle),OBJPROP_COLOR,clrRed);//--- установим цвет прямоугольника 
         ObjectSetInteger(ChartID(),"Doji_"+IntegerToString(DojiCandle),OBJPROP_STYLE,STYLE_SOLID);//--- установим стиль линий прямоугольника 
         ObjectSetInteger(ChartID(),"Doji_"+IntegerToString(DojiCandle),OBJPROP_WIDTH,1);//--- установим толщину линий прямоугольника 
         ObjectSetInteger(ChartID(),"Doji_"+IntegerToString(DojiCandle),OBJPROP_BACK,false);//--- отобразим на переднем (false) или заднем (true) плане 
         
         DojiCandle ++;
     }
   

   
   if(UseDojiCandles = true && Doji() == -1 && New_Bar == true)
     {
      if(!ObjectCreate(ChartID(),"Doji_"+IntegerToString(DojiCandle),OBJ_RECTANGLE,0,time1,open1,time0,open0))
         {
         Print("Не удалось создать метку вниз");
         }
         ObjectSetInteger(ChartID(),"Doji_"+IntegerToString(DojiCandle),OBJPROP_COLOR,clrRed);//--- установим цвет прямоугольника 
         ObjectSetInteger(ChartID(),"Doji_"+IntegerToString(DojiCandle),OBJPROP_STYLE,STYLE_SOLID);//--- установим стиль линий прямоугольника 
         ObjectSetInteger(ChartID(),"Doji_"+IntegerToString(DojiCandle),OBJPROP_WIDTH,1);//--- установим толщину линий прямоугольника 
         ObjectSetInteger(ChartID(),"Doji_"+IntegerToString(DojiCandle),OBJPROP_BACK,false);//--- отобразим на переднем (false) или заднем (true) плане 

         DojiCandle ++;
     }
     

   
}
//+------------------------------------------------------------------+
//    Поиск всех объектов
//+------------------------------------------------------------------+


 




//+------------------------------------------------------------------+
//    Функция паттерна Доджи
//+------------------------------------------------------------------+
int Doji()
{

//Параметры Дожи
   double Open1 = NormalizeDouble (iOpen(Symbol(), PERIOD_H4,1),Digits);
   double Close1 = NormalizeDouble (iClose(Symbol(), PERIOD_H4,1),Digits);
   double High1 = NormalizeDouble (iHigh(Symbol(), PERIOD_H4,1),Digits);
   double Low1 = NormalizeDouble (iLow(Symbol(), PERIOD_H4,1),Digits);
   
//Параметры предыдущей свечи
   double Open2 = NormalizeDouble (iOpen(Symbol(), PERIOD_H4,2),Digits);
   double Close2 = NormalizeDouble (iClose(Symbol(), PERIOD_H4,2),Digits);
   double High2 = NormalizeDouble (iHigh(Symbol(), PERIOD_H4,2),Digits);
   double Low2 = NormalizeDouble (iLow(Symbol(), PERIOD_H4,2),Digits);
   
//Параметры индикатора волотильности ATR для нахожденя относительно большой свечи перед Доджи
   double ATR = iATR(Symbol(),PERIOD_H4,21,1);
   
   
//Математическое описание патерна Дожи
   if(Close1 < High1 -0.3*(High1-Low1) && 
      Open1 < High1 -0.3*(High1-Low1) && 
      Close1 > High1 -0.7*(High1-Low1) && 
      Open1 > High1 -0.7*(High1-Low1) && 
      MathAbs(Close1-Open1) < 0.2*(High1-Low1)&&
      MathAbs(Close2-Open2) > 0.7*ATR)
      {
         if((Close2 - Open2) > 0 && New_Bar == true)
         { 
            Print ("Down"); return(-1);// Условие для продаж
         }
         if((Close2 - Open2) < 0 && New_Bar == true)
         {
            Print ("Up"); return(1);// Условие для покупок
         }
      }
      return(0);
}
//+------------------------------------------------------------------+
//    Функция определения нового бара
//+------------------------------------------------------------------+
void Fun_New_Bar()                              // Ф-ия обнаружения нового бара 
  {                                             
  datetime TimeBar0 = iTime(Symbol(),PERIOD_H4,0);
   static datetime New_Time=0;                  // Время текущего бара 
   New_Bar=false;                               // Нового бара нет 
   if(New_Time != TimeBar0)                        // Сравниваем время 
     { 
      New_Time = TimeBar0;                         // Теперь время такое 
      New_Bar = true;                             // Поймался новый бар 
     } 
  }  

Das erste Rechteck wird gezeichnet, die übrigen werden nicht gezeichnet. Ich versuche immer noch herauszufinden, wie man das macht. Danke für die Tipps und was meinen Sie mit einem untypischen Stil?

Grund der Beschwerde: