Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools

Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools (http://www.expert-advisor.com/forum/index.php)
-   Programmierung MQL4 (http://www.expert-advisor.com/forum/forumdisplay.php?f=220)
-   -   iCustom (http://www.expert-advisor.com/forum/showthread.php?t=4834)

Lena 06.03.16 15:07

@Traderdoc: Da arbeitet der MT4 aber äußerst ineffizient wenn jedesmal der abgefragte Indikator komplett geladen und wieder gelöscht wird. Da erscheint es fast sinnvoller die vom Indikator vorgenommene Berechnung direkt in den EA zu integrieren.

ralfbenker 06.03.16 16:48

Also ich beschäftige mich auch erst ein paar Monate mit mql4 und mir ist egal ob der Indikator bei iCustom jedesmal neu geladen wird oder nicht.

Fakt ist, das bei Einsatz von iCustom Strategietests über mehrere Jahre unendlich lange dauern. Auch wenn ich iCustom nur bei jedem neuen Bar einmal aufrufe geht das nicht schneller. Dass da alle Werte die ich eh nicht brauche neu berechnet werden kann ich mir gut vorstellen.

Demgegenüber läuft die direkte Indikatorabfrage mit, z.B. iIchimoku() wesentlich schneller. Hier wird wohl wirklich nur der in shift angegebene Wert berechnet.

Bei den Standardindikatoren nehme ich nie iCustom und bei denen, die nicht standardmäßig verfügbar sind schaue ich mir den Code des Indikators an und versuche die Berechnung über eine Funktion im EA direkt nachzubilden.

Für viele Dinge benötigt man auch gar keinen Indikator weil's am Kurs ablesbar ist.

Lena 07.03.16 08:25

So, alles was nicht wirklich bei jedem Tick abgefragt werden muss ist in eine Funktion ausgelagert. Ich hoffe das war die Mühe auch Wert und man bemerkt den Unterschied. Wobei das wohl nur bei Newszeiten einen Ausschlag macht. Naja, selbst wenn nicht habe ich dadurch mal wieder was gelernt.

Lena 07.03.16 12:09

Mal was anderes, über die iCustom Funktion kann ich wenn ich es richtig verstanden habe nur im Buffer gespeicherte Werte abfragen, oder?
Wäre eine vielleicht sehr viel effizientere Lösung, zumindest wenn ich die MQL Datei des auszulesenden Indikators habe, den Indikator die von mir benötigten Werte in einer globalen Variablen zu speichern und dann direkt auch von dem EA auslesen zu lassen? So müsste zwar der Indikator in dem Chart geladen werden, dieser würde aber nicht ständig über iCustom initialisiert, durchgerechnet und gelöscht.

traderdoc 07.03.16 13:54

Das ginge prinzipiell auch, denn viele Wege führen nach Rom.
Teste es doch einfach mal aus und Berichte uns dann bitte, was Deine Beobachtungen bzgl. der Ausführungsperformance waren.

Ich habe so im Gefühl, dass sich diese Methode eignen würde, wenn man nur wenige Indikatoren und gleichzeitig Charts offen hätte. Ich habe aber auch schon Programme für Kunden geschrieben, da wurden etwa 20 WP über alle TF mit mehreren Indikatoren jeweils auf Kerzenclose übe iCustom() abgefragt.
Mit Deiner Lösungsvariante hätte das eine Unzahl von Charts bedurft.

traderdoc

Raul0 07.03.16 14:07

Hallo,

allgemein gültig und auch für dieses Thema interessant:

http://www.expert-advisor.com/forum/...giesparen.html

Lena 07.03.16 16:45

Ich denke meine Idee ist eher geeignet wenn man man nur verschiedene Werte von einem Chart beziehen muss. Wenn ich Werte aus verschiedenen Timeframes abfragen muss ist iCustom sicher die bessere Lösung.

Zu den globalen Variablen hätte ich aber auch eine Frage. Gibt es eine Möglichkeit den Variablennamen für eine globale Variable individuell generieren zu lassen? Weil angenommen ich will von einem Indikator zwei integerwerte als globale Variable speichern und nenne diese High und Low. Diese beiden Namen würde der Indikator ja dann jedesmal nehmen wenn ich den Indikator auf einen Chart lade und dementsprechend Chaos verursachen. Ich vermute es gibt keine Möglichkeit automatisch zum Beispiel einen Namen wie High_Symbol generieren zu lassen.

pako 07.03.16 16:53

Zitat:

Zitat von traderdoc (Beitrag 33648)



Du bist mir noch die Erklärung bzgl. des Unterschieds zwischen Pferd und Esel schuldig.

traderdoc

Code:


//+------------------------------------------------------------------+
//|                        Unterschieds zwischen Pferd und Esel.mq4 |
//|                        Copyright 2014, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version  "1.00"
#property strict
double MaWert=0.0;
ulong StartZeit;
ulong StopZeit;
datetime ZeitWert;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
  StartZeit=GetMicrosecondCount();
  for(int i=0;i<1000000;i++)
    {
      MaWert=iMA(NULL,0,13,8,MODE_SMA,PRICE_CLOSE,0);
    }
  StopZeit=GetMicrosecondCount();
  Print("MaAbfrage: ",DoubleToString((StopZeit-StartZeit)/1000.0,3));
  StartZeit=GetMicrosecondCount();
  for(int i=0;i<1000000;i++)
    {
      ZeitWert=Time[0];
    }
  StopZeit=GetMicrosecondCount();
  Print("Time[0]Abfrage: ",DoubleToString((StopZeit-StartZeit)/1000.0,3));
  }
//+------------------------------------------------------------------+

Es gibt noch eine andere Lösung, ohne Pferd und Esel

pako 07.03.16 17:04

Zitat:

Zitat von Lena (Beitrag 33697)
Ich vermute es gibt keine Möglichkeit automatisch zum Beispiel einen Namen wie High_Symbol generieren zu lassen.

Code:


Print ( "High "+ Symbol() + MQLInfoString( MQL_PROGRAM_NAME));


pako 07.03.16 17:11

Zitat:

Zitat von Lena (Beitrag 33690)
Mal was anderes, über die iCustom Funktion kann ich wenn ich es richtig verstanden habe nur im Buffer gespeicherte Werte abfragen, oder?

iCustom ist Benutzerindikator


Alle Zeitangaben in WEZ +2. Es ist jetzt 11:53 Uhr.

Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum