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

 
mila.com:

Danke, ist das richtig?

label =ObjectGetInteger(0,nm,OBJPROP_COLOR,0);

if(label==Lime) BUY_ = true;

Nein, so erhalten Sie die Farbdaten als int-Typ.

Versuchen Sie zu sehen, was in dem Kommentar steht.

Comment( ColorToString((color)ObjectGetInteger(0,"NaneOBJ",OBJPROP_COLOR,0), true) );

Lesen Sie über die Umstellung

 
Vitaly Muzichenko:

Lesen Sie über die Umstellung

Danke, ist die Bedingung selbst korrekt?
 
mila.com:
Danke, ist die Bedingung selbst korrekt?
string label = ColorToString((color)ObjectGetInteger(0,"MP140269",OBJPROP_COLOR,0), true);
if(label==Lime) BUY_ = true;

if(label==Red) BUY_ = false;
Wahrscheinlich nicht. Wenn die Daten vom TypString sind, müssen Sie sie in Anführungszeichen setzen und eine vollständige Farbübereinstimmung Zeichen für Zeichen schreiben: "clrLime".
 
Vitaly Muzichenko:
Wahrscheinlich nicht. Wenn die Daten vom TypString sind, müssen Sie sie in Anführungszeichen setzen und eine vollständige Farbübereinstimmung Zeichen für Zeichen schreiben: "clrLime".
Danke, es hat funktioniert)
 
Vitaly Muzichenko:
Wahrscheinlich nicht. Wenn die Daten vom TypString sind, müssen Sie sie in Anführungszeichen einschließen und einen vollständigen Farbabgleich Zeichen für Zeichen vornehmen: "clrLime".
Nein, Sie müssen sie nicht in Anführungszeichen setzen - das sind Konstanten. Das heißt, es sollte so aussehen: if(label==clrLime) {}
 
Artyom Trishkin:
Nein, das muss nicht in Anführungszeichen stehen - das sind Konstanten. Das heißt, es sollte so aussehen: if(label==clrLime) {}

Danke, es funktioniert.

Könnten Sie mir bitte sagen, wie ich das Niveau des Stochastik-Indikators im oberen Zeitrahmen korrekt erhalte.

      int bar_sto2_0=iBarShift(Symbol(),TimeFrame2,iTime(Symbol(),TimeFrame2,i));
      int bar_sto2_1=iBarShift(Symbol(),TimeFrame2,iTime(Symbol(),TimeFrame2,i+1));
      double sto1_0=iStochastic(Symbol(),TimeFrame1,kperiod1,dperiod1,slowing1,MODE_LWMA,STO_CLOSECLOSE,MODE_MAIN,i);
      double sto1_1=iStochastic(Symbol(),TimeFrame1,kperiod1,dperiod1,slowing1,MODE_LWMA,STO_CLOSECLOSE,MODE_MAIN,i+1);
      double sto2_0=iStochastic(Symbol(),TimeFrame2,kperiod2,dperiod2,slowing2,MODE_LWMA,STO_CLOSECLOSE,MODE_MAIN,bar_sto2_0);
      double sto2_1=iStochastic(Symbol(),TimeFrame2,kperiod2,dperiod2,slowing2,MODE_LWMA,STO_CLOSECLOSE,MODE_MAIN,bar_sto2_1);
      
      if(sto2_0>55)
       {
      BufferUP[i]=low[i]-distance*MyPoint;
       }
      

Wenn der Indikator auf einen hohen Zeitrahmen eingestellt ist, ist alles richtig, der Pfeil wird gesetzt, wenn die Indikatorlinie über 55 liegt.

Wenn man auf eine niedrigere Karte wechselt, herrscht Chaos.

 
mila.com:

Danke, es funktioniert.

Könnten Sie mir bitte sagen, wie ich das Niveau des Stochastik-Indikators im oberen Zeitrahmen richtig erhalte.

      int bar_sto2_0=iBarShift(Symbol(),TimeFrame2,iTime(Symbol(),TimeFrame2,i));
      int bar_sto2_1=iBarShift(Symbol(),TimeFrame2,iTime(Symbol(),TimeFrame2,i+1));
      double sto1_0=iStochastic(Symbol(),TimeFrame1,kperiod1,dperiod1,slowing1,MODE_LWMA,STO_CLOSECLOSE,MODE_MAIN,i);
      double sto1_1=iStochastic(Symbol(),TimeFrame1,kperiod1,dperiod1,slowing1,MODE_LWMA,STO_CLOSECLOSE,MODE_MAIN,i+1);
      double sto2_0=iStochastic(Symbol(),TimeFrame2,kperiod2,dperiod2,slowing2,MODE_LWMA,STO_CLOSECLOSE,MODE_MAIN,bar_sto2_0);
      double sto2_1=iStochastic(Symbol(),TimeFrame2,kperiod2,dperiod2,slowing2,MODE_LWMA,STO_CLOSECLOSE,MODE_MAIN,bar_sto2_1);
      
      if(sto2_0>55)
       {
      BufferUP[i]=low[i]-distance*MyPoint;
       }
      

Wenn der Indikator auf einen hohen Zeitrahmen eingestellt ist, ist alles richtig, der Pfeil wird gesetzt, wenn die Indikatorlinie über 55 liegt.

Wenn Sie zu einer niedrigeren Karte wechseln, herrscht Chaos.

Wenn es sich um den Zyklus des Indikators handelt, dann müssen Sie, um zu wissen, welcher Balken des hohen Zeitrahmens dem Balken entspricht, der durch den Zyklusindex im niedrigen Preisrahmen angezeigt wird, die Balkenzeit i erhalten . Diese Zeit wird dann verwendet, um den Balken des Highframe zu identifizieren, der dieser Zeit entspricht. Zum Beispiel: ein Takt von H4 entspricht vier Takten von H1. Dementsprechend weisen vier Werte des Zyklusindex i von H1 auf denselben Balken auf H4 hin.

Anhand Ihrer Variablen (Namen) kann ich nicht nachvollziehen, aus welcher Leiste Sie die Werte beziehen. Es ist also schwer, etwas anderes als die Theorie zu sagen.

 
Artyom Trishkin:

Wenn es sich um den Indikator Zyklus handelt, müssen Sie den Zeitpunkt des Balkens i ermitteln, um zu wissen, welcher Balken des höheren Zeitrahmens dem Balken entspricht, der durch den Zyklusindex im unteren Zeitrahmen angezeigt wird . Diese Zeit wird dann verwendet, um den Balken des Highframe zu identifizieren, der dieser Zeit entspricht. Zum Beispiel: ein Takt von H4 entspricht vier Takten von H1. Dementsprechend weisen vier Werte des Zyklusindex i aus dem H1-Zeitrahmen auf denselben Balken im H4-Zeitrahmen hin.

Aus Ihren Variablen (Namen) kann ich nicht ersehen, aus welchem Balken Sie die Werte beziehen. Daher ist es schwierig, etwas anderes als die Theorie zu sagen.

Das Kennzeichen ist auf M1 gesetzt.

Die Hauptbedingung für den Aufwärtspfeil ist die Indikatorlinie auf M5 oberhalb der 55er Marke.

Diese Bedingung ist nicht erfüllt, auch wenn die Linie unter der 55er-Marke auf M5 liegt, wird der Pfeil trotzdem gesetzt.

 

wie man die Bedingung "wenn das Hoch von 1 Bar höher ist als das Tief von 3..." in den Roboter schreibt.

Der Auslöser sollte nicht "OnTick()" sein.

aber jedes Mal wird aus 0 bar 1

 
trader781:

wie man die Bedingung "wenn das Hoch von 1 Bar höher ist als das Tief von 3..." in den Roboter schreibt.

Der Auslöser sollte nicht "OnTick()" sein.

aber jedes Mal wird aus 0 bar 1

Sie könnten Folgendes tun

//+------------------------------------------------------------------+
//|                                                       test03.mq4 |
//|                                                   Sergey Gritsay |
//|                         https://www.mql5.com/ru/users/sergey1294 |
//+------------------------------------------------------------------+
#property copyright "Sergey Gritsay"
#property link      "https://www.mql5.com/ru/users/sergey1294"
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
class CNevBar
  {
private:
   datetime          curbar;
   datetime          lastbar;
public:
                     CNevBar();
                    ~CNevBar();
   bool              new_bar(string symbol,ENUM_TIMEFRAMES period);
  };
//+------------------------------------------------------------------+
void CNevBar::CNevBar()
  {

  }
//+------------------------------------------------------------------+
void CNevBar::~CNevBar(void)
  {

  }
//+------------------------------------------------------------------+
bool CNevBar:: new_bar(string symbol,ENUM_TIMEFRAMES period)
  {
   curbar=(datetime) SeriesInfoInteger(symbol,period,SERIES_LASTBAR_DATE);
   if(lastbar==0)lastbar=(datetime)SeriesInfoInteger(symbol,period,SERIES_LASTBAR_DATE);
   if(lastbar!=curbar)
     {
      lastbar=curbar;
      return(true);
     }
   return(false);
  }

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

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

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(newbar.new_bar(_Symbol,PERIOD_CURRENT))
     {
      if(High[1]>Low[3])
        {

        }
     }

  }
//+------------------------------------------------------------------+

...

Grund der Beschwerde: