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.


Portalsuche


Werbung

Login
Benutzername:
Kennwort:


Statistik
Themen: 3824
Beiträge: 36916
Benutzer: 6.076
Aktive Benutzer: 496
Links: 80
Wir begrüßen unseren neuesten Benutzer: Spitzmaus
Mit 483 Benutzern waren die meisten Benutzer gleichzeitig online (21.04.16 um 17:12).
Neue Benutzer:
vor 18 Stunden
- Spitzmaus
vor 20 Stunden
- juleslesqu...
vor einem Tag
- hmf44
vor 2 Tagen
- Crossa
vor 2 Tagen
- snatshit

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

Empfehlungen

Werbung

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 15.02.16
Premium Mitglied
 
Registriert seit: Apr 2015
Beiträge: 370
Raul0 befindet sich auf einem aufstrebenden Ast
Standard EA Variablen zurücksetzen

Hallo,

im Moment setze ich die Variablen einzeln im Bereich int init zurück.

Geht das einfacher, sodass alle Variablen auf einmal zurücksetzt werden?

Ich habe Probleme mit Aufsummierungen gehabt, nach Änderungen in der Eingabe.

Raul
__________________

Tradertool
  #2 (permalink)  
Alt 16.02.16
Premium Mitglied
 
Registriert seit: Apr 2015
Beiträge: 370
Raul0 befindet sich auf einem aufstrebenden Ast
Standard

Ich habe rausgefunden, dass ich bei deinit() die Rücksetzungen tätigen kann.

Wie ich alle Variablen auf einmal zurücksetzen kann fehlt noch, bzw. den EA.

Geht das überhaupt?

Mit ExpertRemove() wäre es die sauberste Lösung, jedoch gehen die Einstellungen verloren.
__________________

Tradertool
  #3 (permalink)  
Alt 16.02.16
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 1.875
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Ich verstehe das Problem noch nicht ganz.
Klar, bei OnInit() werden alle Variablen resettet.
Das passiert "auf einmal", auch wenn für jede Variable einzeln.
Nur wo soll jetzt der Vorteil liegen, mittels einer Funktion alle Variablen zu resetten.
Im Prinzip macht das ja eine Funktion und die heißt OnInit(). Du kannst auch eine eigene Funktion schreiben: z.B. Reset_Variables(). Dort werden alle Variablen natürlich wieder einzeln zurückgesetzt. Diese Funktion kannst Du dann aber irgendwo einsetzen, wo sie für Dich Sinn ergibt.

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #4 (permalink)  
Alt 16.02.16
Premium Mitglied
 
Registriert seit: Apr 2015
Beiträge: 370
Raul0 befindet sich auf einem aufstrebenden Ast
Standard

Ok, ein einfaches Beispiel. Die Variable test wird zu einem Zeitpunkt während des Betriebes auf 20 gesetzt.
Rufe ich mit F7 die Einstellungen auf und klicke ok, dann sehe ich über die Zeile bei init(), Print("test init ", test );, dass diese Variable noch den Wert 20 beibehalten hat, obwohl der EA mit neuen Einstellungen gestartet wurde.

Ich hatte schon die Befehle bei mql durchgeschaut, leider nichts gefunden, sodass ich mit einem Befehl den Speicher der Variablen nullen kann. Alles nur Einzelabfertigung, was bei vielen Variablen gern zu Fehlern führt.

PHP-Code:
extern int        Magic          1001;
extern double  BaseLot      0.01;
extern int        TakeProfit    0;
extern int        StopLoss     200;

string Version;
int bmtest 0;

//----
int init()
  {

   
Version "EA_Test";
   
bm 1;
   if(
MarketInfo(Symbol(),MODE_DIGITS) == ||  MarketInfo(Symbol(),MODE_DIGITS) == 3)       bm 10;
   if(
TakeProfit>0)       TakeProfit        =  TakeProfit          bm;   
   if(
StopLoss>0)        StopLoss         =  StopLoss           bm;
//----

Print("test init "test );

   return(
0);
  }
//----
int deinit()
  {
//----
   
return(0);
  }
//----
int start()
  {

Print(
"test start "test );
....
//---- 
__________________

Tradertool
  #5 (permalink)  
Alt 16.02.16
Gesperrter Benutzer
 
Registriert seit: Jan 2016
Beiträge: 62
pischinger befindet sich auf einem aufstrebenden Ast
Standard

also ich kann ohne probleme über f7 änderungen vornehmen die auch geladen werden-oder habe ich was komplett falsch verstanden

2016.02.16 13:03:02.388 MACD Sample EURUSD,H1 inputs: TakeProfit=30.0; Lots=0.1; TrailingStop=30.0; MACDOpenLevel=3.0; MACDCloseLevel=2.0; MATrendPeriod=26;
2016.02.16 13:02:52.691 MACD Sample EURUSD,H1 inputs: TakeProfit=50.0; Lots=0.1; TrailingStop=30.0; MACDOpenLevel=3.0; MACDCloseLevel=2.0; MATrendPeriod=26;

edit: ich denke das dies möglicherweise gar nicht über OnInit() läuft sondern über OnTick() da nur eine variable geändert wurde und auch nur diese initialisiert wird
  #6 (permalink)  
Alt 16.02.16
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 1.875
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Ja, aus diesem Grunde werden bei mir alle Variablen erst in der OnInit()-Funktion initialisiert. Damit wäre auch Dein Problem behoben.

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #7 (permalink)  
Alt 16.02.16
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 1.875
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von pischinger Beitrag anzeigen
also ich kann ohne probleme über f7 änderungen vornehmen die auch geladen werden-oder habe ich was komplett falsch verstanden
Ich denke, ja. Denn es ging ihm nicht um die Änderung der F7-Variablen, sondern um die globalen Variablen unter den externen, die nicht! über F7 aufrufbar sind.

Bei Veränderungen über F7 nimmt der EA diese externen Variablen-Veränderungen mit, aber eigentümlicherweise nicht die der globalen Variablen.

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #8 (permalink)  
Alt 16.02.16
Gesperrter Benutzer
 
Registriert seit: Jan 2016
Beiträge: 62
pischinger befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von traderdoc Beitrag anzeigen
Ja, aus diesem Grunde werden bei mir alle Variablen erst in der OnInit()-Funktion initialisiert. Damit wäre auch Dein Problem behoben.

traderdoc
ich gestehe, auch bei mir wird alles wie digits, signs, magic, time(filter) im OnInit() initialisiert
  #9 (permalink)  
Alt 16.02.16
Premium Mitglied
 
Registriert seit: Apr 2015
Beiträge: 370
Raul0 befindet sich auf einem aufstrebenden Ast
Standard

Also Einzelabfertigung :-)

Im Header definieren, im Bereich init Grundwerte zuweisen.
Gut, Danke für die Mithilfe.

PHP-Code:
extern int     StopLoss    200;

string Version;
int bmtest;

//----
int init()
  {

   
test 0;

   
Version "EA_Test";
   
bm 1;
...... 
__________________

Tradertool
  #10 (permalink)  
Alt 16.02.16
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 1.875
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

... oder eben in eine eigene Funktion auslagern, sofern das Resetten auch von anderer Stelle aus betrieben werden sollte.

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
Thema geschlossen

Lesezeichen

Stichworte
init, initialisieren, mql4, oninit(), programmierung, programmierung metatrader, variablen initialisieren, variablen zurücksetzen


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 15:07 Uhr.



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