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: 43255
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: 745
Gesamt: 745
Team: 0
Team:  
Benutzer:  
Freunde anzeigen

Empfehlungen

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 28.09.20
Mitglied
 
Registriert seit: Sep 2018
Beiträge: 238
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
  #2 (permalink)  
Alt 28.09.20
Premium Mitglied
 
Registriert seit: Jun 2013
Beiträge: 364
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ß
  #3 (permalink)  
Alt 28.09.20
Mitglied
 
Registriert seit: Sep 2018
Beiträge: 238
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?
  #4 (permalink)  
Alt 28.09.20
Premium Mitglied
 
Registriert seit: Jun 2013
Beiträge: 364
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.
  #5 (permalink)  
Alt 29.09.20
Mitglied
 
Registriert seit: Sep 2018
Beiträge: 238
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
  #6 (permalink)  
Alt 29.09.20
Mitglied
 
Registriert seit: Feb 2016
Beiträge: 240
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
  #7 (permalink)  
Alt 29.09.20
Premium Mitglied
 
Registriert seit: Jun 2013
Beiträge: 364
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.
  #8 (permalink)  
Alt 29.09.20
Mitglied
 
Registriert seit: Sep 2018
Beiträge: 238
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.
  #9 (permalink)  
Alt 29.09.20
Premium Mitglied
 
Registriert seit: Jun 2013
Beiträge: 364
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
  #10 (permalink)  
Alt 29.09.20
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.178
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...
Thema geschlossen

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 +1. Es ist jetzt 20:29 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.
-----------------------------------------------------------------------------------------------------------------------------