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

 
Woher weiß ich, dass es keinenOBJ_RECTANGLE auf N-Takten gibt?
 
neverness:

Hat sich im MT5 wirklich etwas geändert?

So etwas gibt es weder in mt4 noch in mt5.

In mt5 gibt es sogar einen Fehler mit der Anzeige des Trennzeichens in der aktuellen Periode, auf Zeiten über H2

 
Ghabo:
Woher weiß ich, dass es keinenOBJ_RECTANGLE auf N-Takten gibt?
Versuchen Sie es vielleicht auf diese Weise?
  int n = Bars(Symbol(), PERIOD_CURRENT, ObjectGetInteger(0,"Rectangle",OBJPROP_TIME,1), TimeCurrent());
  Print(n);
 
Vitaly Muzichenko:

So etwas gibt es weder in mt4 noch in mt5.

In mt5 gibt es sogar einen Fehler mit der Anzeige der Trennzeichen in der aktuellen Periode, auf Zeiten über H2

Endlich habe ich die einzige "konstruktive Antwort" auf meine Frage in dieser ganzen "Diskussion" gesehen.

Was die Fehler anbelangt, so sind sie bei allen Separator-Wochen im aktuellen (letzten) Frame sowohl auf MT4 als auch auf MT5 vorhanden.

Überall in der letzten Woche zieht der Separator MT4/MT5 den Separator 7 Tage statt 5.

Aber das ist nicht der Punkt. Fehler gab es schon immer und wird es immer geben. All dies kann korrigiert werden, wenn es einen Programmcode zum Zeichnen von Begrenzungszeichen gibt.

Es sind nicht die Fehler, die mich überraschen, es ist etwas ganz anderes.

Ist niemand auf die Idee gekommen, ein Programm zu schreiben, das die Begrenzungszeichen im vorhergesagten Bereich während der ganzen Zeit der Existenz von MT4/MT5 zeichnet?

Schließlich ist das Programm das einfachste.

Alles, was Sie wissen müssen, ist die Position des letzten Teilers und die "Lösung" der Zeit entlang der X-Achse (d. h. welches Zeitintervall 1 Pixel dauert).

Und bis jetzt hat sich noch niemand gemeldet.

Das überrascht mich jetzt wirklich.

Wieder muss ich alles selbst machen.

 
Igor Makanu:

Es ist nicht kompliziert, aber Sie scheinen nicht zu verstehen, wie Indikatoren in MT funktionieren und was ihre Vorteile sind

Sie haben wahrscheinlich Recht.

Es gibt eine mathematische Anekdote:

Ein Mathematiker wird gefragt: "Wie kocht man Wasser in einem Kessel?

Der Mathematiker antwortet: - Man nehme einen leeren Wasserkessel, fülle ihn mit Wasser, stelle ihn auf den Herd, schalte den Herd ein und warte, bis das Wasser kocht.

- GUT. Was aber, wenn der Kessel bereits voll ist? - fragt der Mathematiker.

- Gießen Sie das Wasser aus dem Kessel und lösen Sie das Problem auf die oben beschriebene Weise. - antwortet der Mathematiker.

So, das war's.

In diesem Witz geht es um Sie.

 
neverness:

In diesem Witz geht es um Sie.

hmm, ich weiß nicht, ob ich lächeln soll oder .... Wenn du ein Trading-Terminal kennst, das alle deine Wünsche erfüllt, was bringt dir das? ich bin 100% zufrieden mit MT4/5, ich kann alles damit machen, behalte den Indikator, der D1-Perioden auf dem Chart zeichnet, wenn du dich für die Programmierung interessierst, ändere ihn nach deinen Bedürfnissen ... Ich glaube nicht, dass du es schaffen wirst ....

#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://www.mql5.com/ru/users/igorm"
#property version   "1.00"
#property strict
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_plots   2
//--- plot line1
#property indicator_label1  "Period"
#property indicator_type1   DRAW_HISTOGRAM
#property indicator_color1  clrRed
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
#property indicator_label2  "Period"
#property indicator_type2   DRAW_HISTOGRAM
#property indicator_color2  clrRed
#property indicator_style2  STYLE_SOLID
#property indicator_width2  1
//--- input parameters
input int      Days=3;
//--- indicator buffers
double         Pmax[],Pmin[];
bool run=true;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,Pmax);
   SetIndexBuffer(1,Pmin);
   run=true;
   switch(_Period)
     {
      case PERIOD_M1:   SetIndexShift(0,1440*Days);SetIndexShift(1,1440*Days);   break;
      case PERIOD_M5:   SetIndexShift(0,288*Days); SetIndexShift(1,288*Days);    break;
      case PERIOD_M15:  SetIndexShift(0,96*Days);  SetIndexShift(1,96*Days);     break;
      case PERIOD_M30:  SetIndexShift(0,48*Days);  SetIndexShift(1,48*Days);     break;
      case PERIOD_H1:   SetIndexShift(0,24*Days);  SetIndexShift(1,24*Days);     break;
      case PERIOD_H4:   SetIndexShift(0,6*Days);   SetIndexShift(1,6*Days);      break;
      default: run=false; SetIndexShift(0,0); SetIndexShift(1,0);ArrayInitialize(Pmax,EMPTY_VALUE);ArrayInitialize(Pmin,EMPTY_VALUE); break;
     }
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   if(prev_calculated==0)
     {
      run=true;
      ArrayInitialize(Pmax,EMPTY_VALUE);
      ArrayInitialize(Pmin,EMPTY_VALUE);
     }
   if(run)
     {
      int i=0,lastperiod=TimeDay(time[0]);
      double maxvalue;
      if(!ChartGetDouble(ChartID(),CHART_PRICE_MAX,0,maxvalue)) maxvalue=1000.0;
      maxvalue*=10.0;
      while(i<rates_total)
        {
         if(TimeDay(time[i])!=lastperiod)
           {
            lastperiod=TimeDay(time[i]);
            Pmax[i-1]=maxvalue;
            Pmin[i-1]=0.0;
           }
         else
           {
            Pmax[i]=EMPTY_VALUE;
            Pmin[i]=EMPTY_VALUE;
           }
         i++;
        }
      run=false;
     }
//---
   return(rates_total);
  }
//+------------------------------------------------------------------+
Chart EURUSD.e, H1, 2018.11.09 13:11 UTC, RoboForex (CY) Ltd, MetaTrader 4, Demo


Ich habe es bereits versucht, und ich weiß nicht, warum, ich weiß nicht, warum, es ist das erste Mal, dass ich es so gesehen habe, scheint es, dass ich Puffer initialisieren, wenn ich Zeitrahmen wechseln

 
neverness:

Endlich habe ich die einzige "konstruktive Antwort" auf meine Frage in dieser ganzen "Diskussion" gesehen.

Was die Fehler anbelangt, so sind sie bei allen Separator-Wochen im aktuellen (letzten) Frame sowohl auf MT4 als auch auf MT5 vorhanden.

Überall in der letzten Woche zieht der Separator MT4/MT5 den Separator 7 Tage statt 5.

Aber das ist nicht der Punkt. Fehler gab es schon immer und wird es immer geben. All dies kann korrigiert werden, wenn es einen Programmcode zum Zeichnen von Begrenzungszeichen gibt.

Es sind nicht die Fehler, die mich überraschen, es ist etwas ganz anderes.

Ist niemand auf die Idee gekommen, ein Programm zu schreiben, das die Begrenzungszeichen im vorhergesagten Bereich während der ganzen Zeit der Existenz von MT4/MT5 zeichnet?

Schließlich ist das Programm das einfachste.

Alles, was Sie wissen müssen, ist die Position des letzten Teilers und die "Lösung" der Zeit entlang der X-Achse (d. h. welches Zeitintervall 1 Pixel dauert).

Und bis jetzt hat sich noch niemand gemeldet.

Das überrascht mich jetzt wirklich.

Auch hier müssen Sie alles selbst machen.

Wie gesagt - ich habe es mehr als einmal getan. (und auf dem Markt, und in mehr als einem Indikator)

und Sie sagten, Sie hätten den Code bereits geschrieben, werden Sie ihn noch einmal schreiben?)

 
Igor Makanu:

hmm, ich weiß nicht, ob ich lächeln soll oder .... Wenn Sie ein Trading-Terminal kennen, das alle Ihre Wünsche erfüllt, wozu dann noch? Ich bin 100% zufrieden mit MT4/5, ich kann alles damit machen, den Indikator, der D1-Perioden auf dem Chart zeichnet, behalten, mich für die Programmierung interessieren, es an meine Bedürfnisse anpassen ... Ich glaube nicht, dass du es schaffen wirst ....


Ich wüsste nicht warum, es ist das erste Mal, dass ich einen solchen Fehler sehe.

Danke, natürlich.

Wie ich schon vermutet habe, stimmen Ihre Perioden-Trennzeichen an unvollständigen Tagen nicht mit den Standard-Trennzeichen überein.

Aber das ist eigentlich egal, denn ich glaube nicht, dass Sie versuchen sollten, die Standardtrennzeichen neu zu zeichnen, sondern die Trennzeichen für den Prognosebereich an die Trennzeichen für den Verlauf anzudocken.

In diesem Fall hat die Position der unvollständigen Tagesabgrenzungen in der Historie keinen Einfluss auf die Abgrenzungen in der Prognose.

Ein weiterer wichtiger Unterschied zwischen Ihrem Indikator und den Standardbegrenzern besteht darin, dass die Standardbegrenzer bei jedem Ereignis im Diagramm selbst aktualisiert werden, Ihr Indikator jedoch bei jedem OnCalculate()-Ereignis aktualisiert wird. Ich dachte, das würde sich bemerkbar machen - aber tatsächlich ist es kaum spürbar.

Natürlich sollte dieser Indikator umgestaltet werden, aber trotzdem vielen Dank. Es war interessant zu sehen.

 
Ghabo:

Dies ist der Index des Balkens des Objekts mit dem angegebenen Namen. Es gibt mehr als ein Objekt und sein Name ist "QUADRO "+Time[i+1] Wie kann ich wissen, dass es kein solches Objekt auf zehn Takten gibt?

Mit dem Puffer ist es klar, wenn der Wert leer ist, wird nichts auf dem Diagramm angezeigt, aber was ist mit dem Objekt?

if (ObjectFind(0,"QUADRO"+Time[10])<0)
        {
        //объекта нет на 10 баре
        }
 
Vitaly Muzichenko:
Kann ich es auf diese Weise versuchen?
  int n = Bars(Symbol(), PERIOD_CURRENT, ObjectGetInteger(0,"Rectangle",OBJPROP_TIME,1), TimeCurrent());

Ich danke Ihnen. Es handelt sich um den Balkenindex (120983) des Objekts mit dem angegebenen Namen. Es gibt mehr als ein Objekt und sein Name ist "QUADRO "+Time[i+1] Wie kann ich wissen, dass es kein solches Objekt auf zehn Takten gibt?

Ich verstehe es mit dem Puffer, wenn der Wert leer ist, wird nichts auf dem Diagramm angezeigt, aber was ist mit dem Objekt?

Grund der Beschwerde: