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: 4554
Beiträge: 41279
Benutzer: 6.945
Aktive Benutzer: 217
Links: 82
Wir begrüßen unseren neuesten Benutzer: majid_z
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor einem Tag
- majid_z
vor einem Tag
- Jeatcomput...
vor 2 Tagen
- Herrfroehl...
vor 2 Tagen
- dberkovi
vor 4 Tagen
- ForexFighe...

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

Empfehlungen

Antwort
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt vor 3 Wochen
Mitglied
 
Registriert seit: Sep 2018
Beiträge: 158
Max2018 befindet sich auf einem aufstrebenden Ast
Standard extern oder input

Hallo
ich habe eine Frage. Was ist der Unterschied zwischen einer input Variable und einer extern Variable . Wann wird welche genutzt und warum?
Z.B.
Code:
extern int    Magicnummer                 =12; 
extern double AnfangsBetrag               =1400;
oder
Code:
input int    Magicnummer                 =12; 
input double AnfangsBetrag               =1400;
Danke
Mit Zitat antworten
  #2 (permalink)  
Alt vor 3 Wochen
Premium Mitglied
 
Registriert seit: Jun 2013
Beiträge: 308
Ca$hDigger befindet sich auf einem aufstrebenden Ast
Standard

"input" ist read only und so nicht durch das mql Programm änderbar. Ähnlich dem const anderer Programmiersprachen.

"extern" ist durch das mql Programm änderbar.

Gruß
Mit Zitat antworten
  #3 (permalink)  
Alt vor 3 Wochen
Mitglied
 
Registriert seit: Sep 2018
Beiträge: 158
Max2018 befindet sich auf einem aufstrebenden Ast
Standard

Heisst das, daß bei der Angabe "extern" diese im laufenden Betrieb bei eingestellten
"Import von externen Advisors zulassen"
und/oder
"Import von DLLs zulassen"
von einem Dritten geändert werden können?
Mit Zitat antworten
  #4 (permalink)  
Alt vor 3 Wochen
Premium Mitglied
 
Registriert seit: Jun 2013
Beiträge: 308
Ca$hDigger befindet sich auf einem aufstrebenden Ast
Standard

input und extern heißt nur, dass die Variablen über die grafische Oberfläche vom user einstellbar sind. Bei extern kann eben das mql-Programm diese Variable verstellen wie eine normale Variable.

Wegen Zugriff von Dritten, input, extern und normale Variablen sind immer im "Besitz" des entsprechenden Programms/EAs. Ein anderer EA etc kann darauf nicht ohne Weiteres zugreifen.

Zum Thema DLL, diese muss immer von einem EA bewusst eingebunden werden und kann, sofern es so programmiert ist, Zugriff auf Daten des EAs bekommen. Ich würde eine DLL aber deswegen nicht als "Dritte" bezeichnen da sie wie eine Funktion für den entsprechenden EA als Verbund genutzt wird.
Unseriöse DLLs können aber natürlich Schaden anrichten aber wer sowas nutzt bekommt dann sowieso ganz andere Probleme als den Zugriff auf Variablen in EAs.
Ich setzte mal voraus man nutzt nur Codes die man kennt oder von seriöser Quelle sind dann gibt es von "Dritten" auch nichts zu befürchten.
Mit Zitat antworten
  #5 (permalink)  
Alt vor 3 Wochen
Mitglied
 
Registriert seit: Sep 2018
Beiträge: 158
Max2018 befindet sich auf einem aufstrebenden Ast
Standard

Ich habe meine Frage wahrscheinlich falsch gestellt. Ich möchte in bestehenden EAs - ohne diese zu verändern - (!!) die externen Variablen beim starten des EAs automatisch anpassen. z.B. soll eine Variable durch die Abhängigkeit zum VIX oder VDAX sich entsprechend anpassen. Diese Berechnung der neuen Variablen wird von einem anderen Programm übernommen und an den MT4 übermittelt. Da diese Anpassung aber eine große Anzahl an EAs betrifft möchte ich diese eben nicht einzeln ändern, sondern diese externe Variable global über eine andere Methode ändern und einlesen - eben über die externen Variablen..... Geht so was und wenn ja wie? Offenbar hat MetaQuotes ja so etwas über die externen Variablen vorgesehen: https://docs.mql4.com/basis/variables/externvariables
Mit Zitat antworten
  #6 (permalink)  
Alt vor 3 Wochen
Mitglied
 
Registriert seit: Feb 2016
Beiträge: 211
RetepM befindet sich auf einem aufstrebenden Ast
Standard

Hi, das ist allerdings eine ganz andere Baustelle... Wenn ich deine Frage richtig verstehe, hast du einen EA (über dessen Quellcode du nicht verfügst?) und der beim Starten eine globale Variable anlegt. Hast du schon einmal versucht diese Variable händisch zu ändern? Bleibt sie im Programmlauf geändert bestehen oder setzt sie der Original-EA im Laufe des Handels wieder zurück?

Wenn der EA den Wert der globalen Variable nicht zurücksetzt, dann kannst du mit deinem externen Programm eine .csv -Datei anlegen, diese mit einem noch zu erstellenden, neuen EA einlesen und dann durch den neuen EA die Variable ändern.
Grüße
Mit Zitat antworten
  #7 (permalink)  
Alt vor 3 Wochen
Premium Mitglied
 
Registriert seit: Jun 2013
Beiträge: 308
Ca$hDigger befindet sich auf einem aufstrebenden Ast
Standard

Wenn die Values der Variablen von außen zugewiesen werden dann ist input und extern sowieso nicht nötig (und input nicht möglich da read only).
Mach einfach eine normale Variable und übergebe auf dem gewünschtem Wege den Wert.

Wenn der Quelltext nicht bekannt ist bzw der EA nur in komplilierter Form vorliegt dann ist der einzige offizielle Weg zum einstellen von input und extern Variablen die GUI. Variablen einer Blackbox auf anderem Wege zu ändern ist nicht ohne Weiteres möglich.
Mit Zitat antworten
  #8 (permalink)  
Alt vor 3 Wochen
Mitglied
 
Registriert seit: Sep 2018
Beiträge: 158
Max2018 befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von RetepM Beitrag anzeigen
Hi, das ist allerdings eine ganz andere Baustelle... Wenn ich deine Frage richtig verstehe, hast du einen EA (über dessen Quellcode du nicht verfügst?) und der beim Starten eine globale Variable anlegt. Hast du schon einmal versucht diese Variable händisch zu ändern? Bleibt sie im Programmlauf geändert bestehen oder setzt sie der Original-EA im Laufe des Handels wieder zurück?

Wenn der EA den Wert der globalen Variable nicht zurücksetzt, dann kannst du mit deinem externen Programm eine .csv -Datei anlegen, diese mit einem noch zu erstellenden, neuen EA einlesen und dann durch den neuen EA die Variable ändern.
Grüße
Hi, doch, den Quellcode aller EAs habe ich...... Ich wollte aber nicht alle ändern, sondern die dort hinterlegten externen Variablen über einen "eleganteren" Weg global ändern.
Mit Zitat antworten
  #9 (permalink)  
Alt vor 3 Wochen
Premium Mitglied
 
Registriert seit: Jun 2013
Beiträge: 308
Ca$hDigger befindet sich auf einem aufstrebenden Ast
Standard

Ohne Eingriff in den Quellcode geht das nicht.
Die EAs müssen sich die Daten selbst holen, denn etwas von Außen hat gar nicht die Berechtigung auf die Variablen des EAs zuzugreifen. Was du vor hast ist im Grunde eine Speicherzugriffsverletzung was nicht geht und auch gut so ist.
https://de.wikipedia.org/wiki/Speicherschutz
Mit Zitat antworten
  #10 (permalink)  
Alt vor 3 Wochen
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.025
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

@ Max2018

Könntest vielleicht in jedem EA das jeweilige Symbol() abfragen und die gewünschten GV dementsprechend vom EA ändern/einstellen lassen.
Code:
if( Symbol() == "A" ){

GV_eins = Wert-für-Symbol A...

GV_zwei = Wert-für-Symbol A...
Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
extern oder input

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 +2. Es ist jetzt 12:02 Uhr.





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