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

 

Leute, ich habe eine Funktion OnTimer(), die zu Beginn eines jeden Tages ausgeführt werden soll und bei einem bestimmten Ergebnis der Ausführung sollte EA in den Schlaf gehen. Wenn ich den Zeitpunkt der nächsten Ausführung für die Funktion OnTimer() auf den Beginn des nächsten Tages setze und der EA danach bis zum gleichen Zeitpunkt (z.B. -1 Sekunde) in den Ruhezustand geht, läuft dann der Zeitzähler weiter und die Funktion wird ausgeführt, nachdem sie nach 1 Sekunde aus dem Ruhezustand kommt?


P. S. Eine weitere, etwas beunruhigende Frage: Wie konnte die Dokumentation in einem derart käsigen Stil verfasst werden? Ich meine Code-Lücken und die Anordnung von Klammern. Ich habe noch nie gesehen, dass jemand außer "Schulkindern in Programmierkursen" und Leuten, die in mql schreiben, so etwas produziert

for(int x=0;x<10;x++)

{

}


Die Seite korrigiert sich irgendwie selbst, mit den Klammern meine ich, dass die Klammern bei der Tabellierung gesetzt werden, d.h. man kann nicht vertikal intuitiv nachvollziehen, wo eine Klammer hingeht.

 
ukrop1203:

Leute, ich habe eine Funktion OnTimer(), die zu Beginn eines jeden Tages ausgeführt werden soll und bei einem bestimmten Ergebnis der Ausführung sollte EA in den Schlaf gehen. Wenn ich den Zeitpunkt der nächsten Ausführung für die Funktion OnTimer() auf den Beginn des nächsten Tages setze und der EA danach bis zum gleichen Zeitpunkt (z.B. -1 Sekunde) in den Ruhezustand geht, läuft dann der Zeitzähler weiter und die Funktion wird ausgeführt, nachdem sie nach 1 Sekunde aus dem Ruhezustand kommt?


P. S. Eine weitere, etwas beunruhigende Frage: Wie konnte die Dokumentation in einem derart käsigen Stil verfasst werden? Ich meine Code-Lücken und die Anordnung von Klammern. Ich habe noch nie gesehen, dass jemand außer "Schulkindern in Programmierkursen" und Leuten, die in mql schreiben, so etwas produziert

for(int x=0;x<10;x++)

{

}


Was die Klammern anbelangt, so meine ich, dass die Klammern bei der Tabellierung gesetzt werden, d. h. es ist nicht möglich, intuitiv nachzuvollziehen, wo eine Klammer vertikal verläuft.

Sie können nicht vertikal verfolgen, wo die Klammer hingeht, also werden Sie nicht sehen können, wo sie hingeht. Sie können ihn für 5 Minuten in den Ruhezustand versetzen und Print alle 10 Sekunden in den OnTimer setzen. Dies wird Ihre Frage beantworten. Warum sollte man schlafen gehen, wenn man den Schlüssel, der den Modus des Hauptalgorithmus bestimmt, einfach in jeder anderen Funktion ändern kann?

 

Hallo zusammen!


FRAGE zum MT5. Die Textmarken (Zahlen) werden als dünner grauer Balken dargestellt. Die Punkte sind ein Kontrollpuffer, um die MT5-Bloopers in meinem Kopf zu visualisieren....


Verglichen mit der Dokumentation für OBJ_TEXT scheint es das gleiche zu sein: ....

//| Вывод текстовой метки с размером интервала "тела" свечи          |
//+------------------------------------------------------------------+
void LabText(const long  chart_ID=0,
             string      name="Text", 
             string      text="text", // ТЕКСТ ДЛЯ ВЫВОДА НА ГРАФИК
             datetime    time=0, 
             double      price=0,
             int         fontsizes=0,
             color       clr=0)
  {
  if(ObjectFind(chart_ID,name)!=0)
     {
   ObjectCreate(chart_ID,name,OBJ_TEXT,0,0,0);
   ObjectSetInteger(chart_ID,name,OBJPROP_TIME,time);
   ObjectSetDouble(chart_ID,name,OBJPROP_PRICE,price);
//--- установим угол наклона текста 
   ObjectSetDouble(chart_ID,name,OBJPROP_ANGLE,0.0); 
//--- установим способ привязки 
   ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,ANCHOR_LEFT); 
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
   ObjectSetString(chart_ID,name,OBJPROP_TEXT,text);
   ObjectSetString(chart_ID,name,OBJPROP_FONT,"Arial");
   ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,fontsizes);
//--- скроем (true) или отобразим (false) имя графического объекта в списке объектов 
   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,true);
     }
  }

********************** В КОДЕ *********************************
    

    double  LW=iLow(NULL,PERIOD_H1,i);  //   ЦИКЛ I

                        *********** 

   LabText(0,"NAME  ("+string(i)+")",DoubleToString(bbull[i],0),iTime(NULL,PERIOD_H1,i),
              LW-(8*_Point),12,clrWhite);
   ExtLineBuffer1[i]=iHigh(NULL,PERIOD_H1,i);


 
kopeyka2:

Hallo zusammen!


FRAGE zum MT5. Die Textmarken (Zahlen) werden als dünner grauer Balken dargestellt. Die Punkte sind ein Kontrollpuffer, um die MT5-Bloopers in meinem Kopf zu visualisieren....


Verglichen mit der Dokumentation für OBJ_TEXT scheint es dasselbe zu sein: ....


Sehen Sie, was Sie im Parameter fontsizes übergeben

 
Artyom Trishkin:

Sehen Sie, was Sie im Parameter fontsizes übergeben

DANKESCHÖN!!! Ichhabe Schriftgrößen aus globalen Variablen eingegeben. Legen Sie ihn in der Funktion void LabText fest. Es hat funktioniert...


 

Ich möchte mit dem Skript Indikatoren im Diagramm hinzufügen und löschen, da die Anwendung der Vorlage alle gezeichneten Linien löscht.


#property indicator_label1  "MA8"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrBlue
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1


int indicator_handle;

void OnStart()
  {

   indicator_handle = iMA(0,0,8,0,MODE_EMA,PRICE_CLOSE);

   Print(indicator_handle);

   //ChartIndicatorAdd(0,0,indicator_handle);

   
  }

Ich erhalte Antwort

2019.01.24 19:14:53.633 add_ind (EURJPY,H1) cannot load indicator 'Moving Average' [4302]

2019.01.24 19:14:53.633 add_ind (EURJPY,H1) -1


Der Code lässt sich jedoch ohne Fehler kompilieren.


 
psyman:

Ich möchte mit dem Skript Indikatoren auf dem Diagramm hinzufügen und löschen, da bei Anwendung der Vorlage alle gezeichneten Linien gelöscht werden.


Ich erhalte Antwort

2019.01.24 19:14:53.633 add_ind (EURJPY,H1) cannot load indicator 'Moving Average' [4302]

2019.01.24 19:14:53.633 add_ind (EURJPY,H1) -1


Obwohl der Code ohne Fehler kompiliert wird.


ERR_MARKET_NOT_SELECTED

4302

Symbol in MarketWatch nicht ausgewählt


Warum schreiben Sie 0 anstelle des Symbolnamens? Wenn Sie den aktuellen wollen, müssen Sie NULL oder seinen Namen schreiben, zum Beispiel "EURUSD".

iMA

Gibt den Handle des gleitenden Durchschnittsindikators zurück. Nur ein Puffer.

intiMA(
String Symbol, // Name des Symbols
ENUM_TIMEFRAMESZeitraum, // Zeitraum
int ma_period, // Mittelungszeitraum
int ma_shift, // Indikator für horizontale Verschiebung
ENUM_MA_METHODma_method, // Art der Glättung
ENUM_APPLIED_PRICE applied_price // Preisart oder Handle
);

Parameter

Symbol

[in] Symbolname des Instruments, dessen Daten zur Berechnung des Indikators verwendet werden. NULL bedeutet aktuelles Symbol.

Zeitraum

[in ] Der Periodenwert kann einer der Aufzählungswerte von ENUM_TIMEFRAMES sein, wobei 0 für den aktuellen Zeitrahmen steht.

ma_Zeitraum

[in] Mittelungszeitraum für die Berechnung des gleitenden Durchschnitts.

ma_shift

[in] Verschiebung des Indikators relativ zum Preisdiagramm.

ma_method

[in] Mittelungsmethode. Kann einer der Werte von ENUM_MA_METHOD sein.

angewandter_Preis

[in] Verwendeter Preis. Kann eine der Preiskonstanten von ENUM_APPLIED_PRICE oder ein Handle eines anderen Indikators sein.

Zurückgegebener Wert

Gibt das Handle des angegebenen technischen Indikatorszurück , im Falle eines Fehlers wird INVALID_HANDLE zurückgegeben.Die Funktion IndicatorRelease() wird verwendet, um den Speicher des Computers für einen nicht mehr verwendeten Indikator freizugeben.

 
Hallo, könnten Sie mir bitte sagen, wie man ein Array von MA Griffe Rückkehr normale Preise, ich meine, die Art, wie sie sollten, 5 Dezimalstellen, nicht 8
int OnInit()
  {
 ima1_handle        = iMA (Symbol(),0,14,0,MODE_EMA,PRICE_CLOSE);
 ima2_handle        =  iMA (Symbol(),0,64,0,MODE_EMA,PRICE_CLOSE);               //хендл
 Stoch_handle       = iStochastic (Symbol(),0,20,15,15,MODE_EMA,STO_CLOSECLOSE);//хендл
 ATR_handle         = iATR        (Symbol(),0,21);                              //хендл

   if(Digits==3 || Digits==5)
     {
      Slippage*=10;
      TrailingStop *= 10;
      TrailingStep *= 10;
     }
   return(0);
  }
void OnDeinit(const int reason)
  {

  }

void OnTick()
  { 
    double ima1_massiv [];                                          //динамический массив для быстрой машки
    ArraySetAsSeries(ima1_massiv, true);   
    int ima_count1 = CopyBuffer(ima1_handle,0,0,2,ima1_massiv);    //скопировал данные из 2х буферов быстрой машки
    //double ima1_normal = NormalizeDouble(ima1_massiv[0], Digits);
    string ima1_massiv_str0 = DoubleToString (ima1_massiv[0]);
    string ima1_massiv_str1 = DoubleToString (ima1_massiv[1]);
    printf ("сегодня = "+ ima1_massiv_str0 + " вчера = "+ ima1_massiv_str1);  
    
  }    
mt5 Sprache
 
Sergey Lobzankin:
Hallo, könnten Sie mir bitte sagen, wie man ein Array von MA Griffe zurückgeben normale Preise, ich meine die Art, wie sie sollten, 5 Stellen nach dem Komma und nicht 8
if(Digits==3 || Digits==5)
     {
      Slippage*=10;
      TrailingStop *= 10;
      TrailingStep *= 10;
     }
   return(0);

cool)

double normalMA=NormalizeDouble(MA,_Digits);    
 

Hallo, könnten Sie mir bitte sagen, wie man ein Array von MA Griffe zurückgeben normale Preise, ich meine die Art, wie sie sollten, 5 Stellen nach dem Komma und nicht 8

mt5-Sprache

DoubleToStr in mt5, es gibt keinDoubleToString(); aber es hilft nicht
DoubleToStr - Преобразование данных - Справочник MQL4
DoubleToStr - Преобразование данных - Справочник MQL4
  • docs.mql4.com
DoubleToStr - Преобразование данных - Справочник MQL4
Grund der Beschwerde: