Fehler, Irrtümer, Fragen - Seite 136

 
Renat:
Ein von einem Expert Advisor erstellter Indikator wird erst dann entladen, wenn Sie ihn explizit löschen oder der Expert Advisor beendet wird.

Vielen Dank, dass Sie sich die Zeit für eine Antwort genommen haben.

Das ändert viel, denn es bedeutet, dass wir auf die Trennung des Codes für den Tester und des Codes für die Realität verzichten können.

 
Renat:

Ratschläge, wie man am besten Ressourcen spart, wenn die Indikatoren einmal pro Stunde benötigt werden:

lassen Sie ein Dutzend Standardindikatoren bei jedem Tick hängen oder

Entladen Sie sie nach jeder Verwendung über IndicatorRelease(indicator_handle), und laden Sie sie nach einer Stunde erneut.

Bei der zweiten Variante erhöht sich jedoch der Zeitaufwand für die Prüfung.

Beantworten Sie auch die Frage, wie viel Zeit im Durchschnitt für das Laden einer Maske erforderlich ist.

 
Urain:

Ratschläge, wie man am besten Ressourcen spart, wenn die Indikatoren einmal pro Stunde benötigt werden:

ein Dutzend Standardindikatoren an jeder Zecke hängen lassen oder

Am besten ist es, sie nicht zu entladen (Blinker werden kaum wirklich "einmal pro Stunde" benötigt), sondern:

  1. die Speichergröße mit dem Übergang zu 64 Bit zu erhöhen, oder
  2. die Tiefe der Geschichtstabellen verringern
Der genaue Zeitpunkt des Ladens lässt sich nicht sagen - er hängt von mehreren Faktoren ab. Es ist besser, keine Probleme durch das Entladen von Indikatoren zu verursachen - dies kann aufgrund der asynchronen Prozesse der Erstellung und Neuberechnung des Indikators Probleme verursachen.
 
Urain:

Ratschläge, wie man am besten Ressourcen spart, wenn die Indikatoren einmal pro Stunde benötigt werden:

lassen Sie ein Dutzend Standardindikatoren bei jedem Tick hängen oder

Entladen Sie sie nach jeder Verwendung über IndicatorRelease(indicator_handle), und laden Sie sie nach einer Stunde erneut.

Bei der zweiten Variante erhöht sich jedoch der Zeitaufwand für die Prüfung.

Beantworten Sie auch die Frage, wie viel Zeit im Durchschnitt für das Laden einer Maske erforderlich ist.

Wenn Sie den Timer nicht für andere Zwecke verwenden, versuchen Sie, die Daten in dem gewünschten Intervall an den Timer zu senden.
 

Frage

Ich verwende die Offset-Einstellungen überhaupt nicht, aber ich habe zufällig eine Beschreibung auf Alligator gesehen und angefangen, darüber nachzudenken... :)

Beschreibung einer der Alligator-Einstellungen:

Zähne_Schicht

[in] Verschiebung der roten Linie im Vergleich zum Preisdiagramm. Es ist zu beachten, dass die Verschiebung der Linie rein visuell für die Anzeige ist und die Werte im Indikatorpuffer ohne Verschiebung gespeichert werden. Wenn die Pufferwerte mit der Funktion CopyBuffer() ermittelt werden, hat der Offset-Wert keine Auswirkungen.

Obwohl es in der Beschreibung von MA nicht erwähnt wird, denke ich, dass es ein Fehler ist und alles ähnlich ist.

ma_shift

[in] Verschiebung des Indikators relativ zum Preisdiagramm.

Auf dem Bild mit dem gelben Vögelchen hat der Kurs den MA ohne Verschiebung überschritten. Es ist klar, hier, zum Beispiel, der Preis bei der Schließung der vorherigen Bar ist höher als die MA und der Preis bei der Eröffnung der aktuellen Bar geöffnet ist.

Aber wo der grüne Vogel ist, wie können wir dasselbe wissen? D.h. wenn der Preis visuell den MA mit der Verschiebung kreuzt

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Линии индикаторов
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Линии индикаторов
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы индикаторов / Линии индикаторов - Документация по MQL5
 
Hallo, ich habe ein Skript geschrieben, um einen Ask-Preis für EURUSD zu erhalten
#include <Trade\SymbolInfo.mqh>
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
  CSymbolInfo SymInfo;
  Alert(SymInfo.Ask());
  }
Es wird 0 zurückgegeben - ich denke, ich muss die
CSymbolInfo SymInfo;
zum Diagrammsymbol, aber ich weiß nicht, wie ich das Klassensymbol angeben soll
 
kirill190982:
Hallo, ich schrieb ein Skript - immer Ask-Preis für EURUSD gibt 0 - ich denke, ich muss binden
zum Diagrammsymbol, aber ich weiß nicht, wie ich das Klassensymbol angeben soll
Zunächst einmal sollten wir herausfinden, worum es in dem Kurs geht. Um das Problem zu lösen, sollten Sie die Methoden Name und RefreshRates dieser Klasse verwenden.
 
Interesting:
Als Erstes sollten Sie sich mit dem Inhalt des Kurses vertraut machen. Beim Verknüpfen mit dem Symbol sollten Sie zunächst die Methode "Name" der Klasse verwenden.
//+------------------------------------------------------------------+
//|                                                   SymbolInfo.mqh |
//|                      Copyright © 2010, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//|                                              Revision 2010.02.22 |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Class CSymbolInfo.                                               |
//| Appointment: Class for access to symbol info.                    |
//+------------------------------------------------------------------+
class CSymbolInfo
  {
protected:
   string                      m_name;               // symbol name
   MqlTick                     m_tick;               // structure of tick;
.....
//--- ask parameters
   double            Ask() const                      { return(m_tick.ask); 
Ich verstehe, dass Ask in der Klasse durch die MqlTick-Struktur bestimmt wird.
#include <Trade\SymbolInfo.mqh>
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
  string Megasymbol=Symbol();
  CSymbolInfo SymInfo;
  SymInfo.Name(Megasymbol);
  Alert(SymInfo.Ask());
  }
erhalten immer noch keine Ergebnisse.
 
kirill190982:
Ich verstehe, dass Ask in der Klasse durch die MqlTick-Struktur definiert ist; ich habe es auf beide Arten versucht und erhalte immer noch Null

Sie sollten Folgendes tun

SymInfo.Name("EURUSD");
SymInfo.RefreshRates();
Print(SymInfo.Ask());
 
Interesting:

Wie wäre es, es auf diese Weise zu versuchen?

Dankeschön