Merkmale der Sprache mql5, Feinheiten und Techniken - Seite 57

 
A100:

Das Geschenk eines schwer zu findenden Fehlers in der Ausführung

Was ist ::CopyTicks besser als Copyticks?

Und warum ist das Ergebnis immer -1. Diese Fehler sollten zur Kompilierzeit gemeldet werden

Es ist also alles logisch.ERR_INVALID_ARRAY hat einen Fehler.

CopyTicks ist genau vom Typ, wenn nur seine Größe gleich sizeof(MqlTick) ist. Natürlich kann genau diese Größe zur Kompilierzeit überprüft werden.

Nun, die benutzerdefinierten CopyTicks gehorchen allen MQL-Regeln.


Arrays von Nachkommen können nicht in Arrays von Vorfahren umgewandelt werden. Aber Element für Element, ja. Dies ist eine Einschränkung von ArrayCopy, die gerne entfernt werden kann.

 

Forum für Handel, automatisierte Handelssysteme und Strategietests

Fragen von Anfängern MQL5 MT5 MetaTrader 5

fxsaber, 2017.10.19 21:13

// Возвращает true, если нет бара с таким временем ("дырка")
bool IsHole( const string Symb, const ENUM_TIMEFRAMES TimeFrame, const datetime time )
{
  return(Bars(Symb, TimeFrame, SeriesInfoInteger(_Symbol, PERIOD_CURRENT, SERIES_FIRSTDATE), time) +
         Bars(Symb, TimeFrame, time, SeriesInfoInteger(_Symbol, PERIOD_CURRENT, SERIES_LASTBAR_DATE)) ==
         SeriesInfoInteger(_Symbol, PERIOD_CURRENT, SERIES_BARS_COUNT));
}

Funktioniert ohne Zugriff auf den Server.

 
A100:

Ein Geschenk in Form eines schwer fassbaren Ausführungsfehlers

Im nächsten Build wird das Geschenk leider abgeschaltet sein.

 
Werden Sie weiterhin an diesem Konto arbeiten oder nicht?
Документация по MQL5: Программы MQL5 / Выполнение программ
Документация по MQL5: Программы MQL5 / Выполнение программ
  • www.mql5.com
Каждый скрипт и каждый эксперт работает в собственном отдельном потоке. Все индикаторы, рассчитываемые на одном символе, даже если они запущены на разных графиках, работают в одном потоке. Таким образом, все индикаторы на одном символе делят между собой ресурсы одного потока. В одном потоке с индикаторами также последовательно выполняются...
 

Forum zum Thema Handel, automatische Handelssysteme und Testen von Handelsstrategien

Bibliotheken: Experte

fxsaber, 2017.10.31 01:27

Ein kleiner Tipp: EAs/Skripte auf OBJ_CHART-Objekten ausführen.

Die laufenden EAs bleiben also tot hängen - sie werden in keiner Weise ausgeführt. Aber die Skripte funktionieren perfekt. Das eröffnet einige Möglichkeiten.

Zum Beispiel können wir Order-Funktionen von Indikatoren auf Charts verwenden, auf denen bereits ein Expert Advisor läuft. Und wir brauchen keine neuen Hilfskarten zu öffnen.

 
fxsaber:

Sie habeneinen Tip-Off verwendet, obwohl der Indikator auch ohne ihn handeln kann, und zwar über Ereignisse


 
Vitaly Muzichenko:

Sie habeneinen Tippgeber benutzt, obwohl der Indikator auch ohne ihn handeln kann, durch Ereignisse

Dazu muss ein "Sniffer"-EA parallel laufen, d. h. es ist ein Hilfsdiagramm erforderlich.

Die Situation in diesem Beispiel ist etwas anders: Es gibt einen Chart, auf dem bereits ein EA läuft. Und wir wollen manchmal OrderSend durch den Indikator leiten, ohne neue zu öffnen.

Natürlich ohne DLL für den Markt, um es zu übergeben.

 
fxsaber:

Dazu muss ein "tap" EA parallel laufen, d.h. eine Hilfskarte ist erforderlich.

Die Situation in diesem Beispiel ist etwas anders: Es gibt einen Chart, auf dem bereits ein EA läuft. Und wir wollen manchmal OrderSend durch den Indikator leiten, ohne neue zu öffnen.

Natürlich ohne DLL für Market, um es zu übergeben.

Im Video funktioniert es auch ohne DLL. Der Expert Advisor benötigt nur einen einzigen Chart, der sich auf dem aktuellen Chart befinden kann.

 
Vitaly Muzichenko:

Sie brauchen nur einen Expert Advisor auf einem beliebigen Chart, Sie können auch einen auf dem aktuellen Chart haben.

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Eigenheiten der mql5-Sprache, Feinheiten und Tricks

fxsaber, 2017.10.31 06:08

Das Beispiel hat eine etwas andere Situation: ein Chart und es läuft bereits ein EA darauf. Und ich möchte OrderSend durch den Indikator laufen lassen, ohne manchmal neue zu öffnen.

 
// Сохранение Bitmap-объекта в bmp/gif/png-файле (прозрачность не учитывается)
bool BitmapObjectToFile( const long chartID, const string ObjName, const string FileName, const bool FullImage = false )
{  
  const ENUM_OBJECT Type = (ENUM_OBJECT)ObjectGetInteger(chartID, ObjName, OBJPROP_TYPE);  
  bool Res = (Type == OBJ_BITMAP_LABEL) || (Type == OBJ_BITMAP);
             
  if (Res)
  {
    const string Name = __FUNCTION__ + (string)MathRand();

    ObjectCreate(chartID, Name, OBJ_CHART, 0, 0, 0);
    ObjectSetInteger(chartID, Name, OBJPROP_XDISTANCE, -1 e3);
    
    const long chart = ObjectGetInteger(chartID, Name, OBJPROP_CHART_ID);
        
    Res = ChartSetInteger(chart, CHART_SHOW, false) && ObjectCreate(chart, Name, OBJ_BITMAP_LABEL, 0, 0, 0) &&
          ObjectSetString(chart, Name, OBJPROP_BMPFILE, ObjectGetString(chartID, ObjName, OBJPROP_BMPFILE)) &&
          (FullImage || (ObjectSetInteger(chart, Name, OBJPROP_XSIZE, ObjectGetInteger(chartID, ObjName, OBJPROP_XSIZE)) &&
                         ObjectSetInteger(chart, Name, OBJPROP_YSIZE, ObjectGetInteger(chartID, ObjName, OBJPROP_YSIZE)) &&
                         ObjectSetInteger(chart, Name, OBJPROP_XOFFSET, ObjectGetInteger(chartID, ObjName, OBJPROP_XOFFSET)) &&
                         ObjectSetInteger(chart, Name, OBJPROP_YOFFSET, ObjectGetInteger(chartID, ObjName, OBJPROP_YOFFSET)))) &&
                         ChartScreenShot(chart, FileName, (int)ObjectGetInteger(chart, Name, OBJPROP_XSIZE),
                                                          (int)ObjectGetInteger(chart, Name, OBJPROP_YSIZE));
    ObjectDelete(chartID, Name);
  }                    

  return(Res);
}


Anmeldung

// Сохраняет в png-файлах все Bitmap-объекты текущего чарта
void OnStart()
{  
  for (int i = ObjectsTotal(0) - 1; i >= 0; i--)
  {
    const string Name = ObjectName(0, i);
    
    BitmapObjectToFile(0, Name, (string)ChartID() + "\\" + Name + ".png");    
  }      
}


SZY Der BMP->GIF/PNG-Konverter ist ebenfalls implementiert.

Grund der Beschwerde: