Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools
Zurück   Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools > Metatrader 4 > Programmierung MQL4

Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4.

Login
Benutzername:
Kennwort:


Statistik
Themen: 4973
Beiträge: 43248
Benutzer: 7.219
Aktive Benutzer: 81
Links: 84
Wir begrüßen unseren neuesten Benutzer: Hopfen&Malz
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor einem Tag
- Hopfen&Mal...
vor 2 Tagen
- frankmicha...
vor einer Woche
- DFeck
vor einer Woche
- bb1107
vor 2 Wochen
- rg-trader

Onlineuser
'Wer ist online' anzeigen Benutzer: 0
Gäste: 252
Gesamt: 252
Team: 0
Team:  
Benutzer:  
Freunde anzeigen

Empfehlungen

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 11.08.22
AVT AVT ist offline
Elite Mitglied
 
Registriert seit: Mar 2018
Ort: Hamburg
Beiträge: 612
AVT befindet sich auf einem aufstrebenden Ast
Standard #import verstehen

Könnte mir bitte jemand erklären, wie ich die #import bei einem Indikator benutze?

Ich habe folgendes vor:
Ein Haupt-Indikator soll einen anderen Neben-Indikator importieren, der nur die reinen Berechnungen macht und die Ergebnisse in seine Buffer packt. Anstatt nun den ganzen Kram aus dem Neben-Indiktor in den Haupt-Indikator zu packen, müßte es doch möglich sein, den Neben-Indikator einfach zu importieren.

Mein Problem dabei ist:
In der Referenz wird zwar gesagt, die Funktionen des Importierten müssen mit ihrem vollständigen Funktionsname(Typ Zusatz1, Typ Zusatz2, ...) gelistet werden, wenn man sie benutzen will - aber die Funktion, die ich aus dem Neben-Indikator brauche, ist die OnCalculate, denn da werden ja die ganzen Berechnungen gemacht. (ja, ich habe gesehen, daß alles, was innerhalb #import steht, auch denselben Namen haben kann wie Funktionen, die im Haupt-Indikator stehen)
1.
Wie soll das gehen, etwa so:
#import Neben-Indikator
OnCalculate(const int rates_total,const int prev_calculated,...,const int &spread[])
#import

2.
Was ist mit der OnInit(), muß die da auch rein?
Und was ist mit den Hilfsfunktionen, die der Neben-Indikator innerhalb der OnCalculate(...) aufruft, müssen die auch noch gelistet werden oder ist das durch OnCalculate(...) schon abgedeckt.

3.
Und wie binde ich die Ausgaben des Neben-Indikators dann in den Haupt-Indikator ein?
Kann der iCustom(NULL,0, "Neben-Indikatorname", Zusätze, Buffer,Barindex) dann so bleiben?

Wäre nett, wenn jemand mir da beim Verständnis helfen könnte, die Reihenfolge die bei solch einem Import passiert, zu verstehen.
AVT
  #2 (permalink)  
Alt 19.08.22
Mitglied
 
Registriert seit: Jun 2020
Beiträge: 38
TraumExpert befindet sich auf einem aufstrebenden Ast
Standard

Hallo AVT,

sollte für Dein Vorhaben nicht die iCustom () Funktion das richtige Mittel sein?

Wenn Du was importieren willst muss du es auch exportieren z.b. aus einer Test.dll

dort wird dann die Funktion die Du importieren wirst wie folgt hinterlegt:

string IchBinEinString() export {

return ("Ich bin ein Test String");

};


In dem File in dem Du dann importieren möchtest

steht oben

#import "Test.dll"
string IchBinEinString();
#import


Ab jetzt kannst Du die Funktion an der benötigten Stelle mit

IchBinEinString();

verwenden.

Grüße

TraumExpert

Geändert von TraumExpert (19.08.22 um 15:46 Uhr)
  #3 (permalink)  
Alt 20.08.22
AVT AVT ist offline
Elite Mitglied
 
Registriert seit: Mar 2018
Ort: Hamburg
Beiträge: 612
AVT befindet sich auf einem aufstrebenden Ast
Standard

Danke für Deine Antwort.
Zitat:
Zitat von TraumExpert Beitrag anzeigen
sollte für Dein Vorhaben nicht die iCustom () Funktion das richtige Mittel sein?
Sobald ich iCustom(...,Indikatorname,...) verwende, muß dieser Indikator auch zwingend da vorhanden sein, wo er mit "Indikatorname" gerufen wird. Nun packe ich meine eigenen Indikatoren aber nicht einfach wild unter Indicators rein, sondern in geordnete Unterstrukturen. So, und was passiert, wenn ich die Unterstruktur ändere oder den so kompilierten "nackten" Hauptindikator weitergebe? "cannot load /Pfad/zu/Indikatorname" - funktioniert also nicht.

Zitat:
Zitat von TraumExpert Beitrag anzeigen
Wenn Du was importieren willst muss du es auch exportieren z.b. aus einer Test.dll
dort wird dann die Funktion die Du importieren wirst wie folgt hinterlegt:
string IchBinEinString() export {
return ("Ich bin ein Test String");
};
Beispiele, wie das mit einer .dll funktioniert habe ich schon gesehen. ABER, und nun kommt das große Aber: In der Dokumentation ist die Rede von einem kompilierten Programm (nix anderes ist ja eine .dll). Ich habe aber keine .dll, sondern eine .ex4. Auch das ist ein kompiliertes Programm. Und da sollte es doch keinen Unterschied geben.

Und eine #export gibt es in MQL nicht. Darum meine Fragen, wie ich das denn einbinden (also wie Du schreibst erst mal exportieren) soll. Ich hoffe, Du verstehst wo bei mir die Probleme liegen.

Natürlich könnte ich hergehen und die komplette Berechnung in eine Funktion CalcNebenIndikator(...) packen und damit den iCustom Aufruf vermeiden: durch den Aufruf von CalcNebenIndikator(). Wenn ich aber mehrere Hauptindikatoren habe, die allesamt denselben Nebenindikator verwenden, dann ist es schlicht unnütze Aufblähung, das in jedem Hauptindikator immer wieder zu wiederholen. Genauso ist es (meiner Meinung nach) völlig hirnrissig, für jeden Hauptindikator ein eigenes Verzeichnis zu machen, in dem dann die verwendeten iCustom Indikatoren liegen, nur damit dieses "cannot load" vermieden wird. Und diese Überlegungen haben mich auf die #import Idee gebracht - platt gesagt, wenn ich mit #include Quellcode einbinden kann, dann geht das mit #import für Programmcode.

AVT

Geändert von AVT (20.08.22 um 02:31 Uhr)
  #4 (permalink)  
Alt 20.08.22
Mitglied
 
Registriert seit: Jun 2020
Beiträge: 38
TraumExpert befindet sich auf einem aufstrebenden Ast
Standard

Hmmm, ja Du kannst auch eine ex4 als Library hernehmen.

export siehe https://docs.mql4.com/basis/function/export

Schreibe eine library mit den benötigten Funktionen für Deine Indikatoren, dass Template sieht wie folgt aus:

//+------------------------------------------------------------------+
//| test.mq4 |
//| Copyright 2022, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property library
#property copyright "Copyright 2022, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
//+------------------------------------------------------------------+
//| My function |
//+------------------------------------------------------------------+
// int MyCalculator(int value,int value2) export
// {
// return(value+value2);
// }
//+------------------------------------------------------------------+


Grüße

TraumExpert
  #5 (permalink)  
Alt 21.08.22
AVT AVT ist offline
Elite Mitglied
 
Registriert seit: Mar 2018
Ort: Hamburg
Beiträge: 612
AVT befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von TraumExpert Beitrag anzeigen
Hmmm, ja Du kannst auch eine ex4 als Library hernehmen.
export siehe https://docs.mql4.com/basis/function/export
Danke für den Link, ich werde mir das mal reinziehen und dann versuchen, einen kleinen Test-Indie zu basteln. Kann allerdings sein, daß ich da dann noch mal nachfragen muß.
AVT
Thema geschlossen

Lesezeichen

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus




Alle Zeitangaben in WEZ +1. Es ist jetzt 12:44 Uhr.





Suchmaschine - Reisen - Wavesnode - Facebook Forum - Spam Firewall
-----------------------------------------------------------------------------------------------------------------------------
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
SEO by vBSEO 3.6.1
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum
MetaTrader bzw. MetaTrader 4 und MetaTrader 5 sind eingetragene Marken der MetaQuotes Software Corp.
-----------------------------------------------------------------------------------------------------------------------------