Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools
Zurück   Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools > Metatrader 4 > Programmierung MQL4
Startseite Registrieren Hilfe Community Kalender Heutige Beiträge Suchen

Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4.

Login
Benutzername:
Kennwort:


Statistik
Themen: 4978
Beiträge: 43260
Benutzer: 7.223
Aktive Benutzer: 75
Links: 84
Wir begrüßen unseren neuesten Benutzer: Sundaytrader
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor 5 Tagen
- Sundaytrad...
vor 6 Tagen
- TS_6
vor einer Woche
- Mane
vor 3 Wochen
- AlbertZiz
vor 3 Wochen
- michak

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

Empfehlungen

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 03.04.17
Neues Mitglied
 
Registriert seit: Feb 2017
Beiträge: 18
KeepItEasy befindet sich auf einem aufstrebenden Ast
Standard ChartApplyTemplate lässt den MT4 abstürzen

Ich habe die Funktion ChartApplyTemplate in einen Indikator eingebaut, um so per Klick auf einen Button ein neues Template zu installieren. In einem neu geöffneten Chart, in das NUR dieser Indikator eingefügt wurde, funktioniert das einwandfrei und blitzschnell, das gewünsche Template wird incl. eines EA vollständig geladen.

Versucht man das ein zweites Mal, stürzt der MT4 dagegen kommentarlos ab, nach dem Neustart befindet sich das gewünschte Template allerdings korrekt im Chart.

Ich habe auch testweise zunächst ein "leeres" Template, dessen Inhalt einem neuen Chart entspricht, in ein vorhandes Chart geladen, dann den Indikator hinzugefügt und die Funktion ausführen lassen. Das Ergebnis ist das gleiche: Der MT4 stürzt ab und nach dem Neustart ist das Template korrekt geladen.

Zusammengefasst: Das Laden eines Templates über die Funktion ChartApplyTemplate funktioniert nur einmal korrekt in einem NEUEN! Chart. Hat jemand eine Idee, wie man das lösen kann?
  #2 (permalink)  
Alt 03.04.17
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.735
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Vor dem Laden des Templates abfragen, ob dieses Template bereits geladen wurde.

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #3 (permalink)  
Alt 03.04.17
Neues Mitglied
 
Registriert seit: Feb 2017
Beiträge: 18
KeepItEasy befindet sich auf einem aufstrebenden Ast
Standard

Ich meine mit "Template" das, was man auf deutsch als "Vorlage" bezeichnet. Bisher ist mir nicht bekannt, dass man ein solches Template wieder von einem Chart entfernen kann (es sei denn durch ein anderes Template) und ich weiss leider auch nicht, wie man abfragen sollte, ob es bereits geladen wurde.

Und selbst wenn, warum soll ich es nicht noch einmal laden können, manuell geht das doch auch.
  #4 (permalink)  
Alt 07.04.17
Mitglied
 
Registriert seit: Feb 2016
Beiträge: 240
RetepM befindet sich auf einem aufstrebenden Ast
Standard

Guck mal hier. TradePairs[i] ist ein Array mit Währungspaaren:
//----------------------------------------------------------------
long nextchart = ChartFirst();
do {
string sym = ChartSymbol(nextchart);
if (StringFind(sym,TradePairs[i]) >= 0) {
ChartSetInteger(nextchart,CHART_BRING_TO_TOP,true) ;
ChartSetSymbolPeriod(nextchart,TradePairs[i]+suffix,TimeFrame);
ChartApplyTemplate(nextchart,usertemplate);
return;
}
} while ((nextchart = ChartNext(nextchart)) != -1);
long newchartid = ChartOpen(TradePairs[i]+suffix,TimeFrame);
ChartApplyTemplate(newchartid,usertemplate);
//----------------------------------------------------------------
Klappt bei mir prima.
  #5 (permalink)  
Alt 07.04.17
Neues Mitglied
 
Registriert seit: Feb 2017
Beiträge: 18
KeepItEasy befindet sich auf einem aufstrebenden Ast
Standard

Danke RetepM für die Antwort, funktioniert das auch in einem Indikator?
Ich habe die Funktion ChartApplyTemplate nämlich inzwischen in einen EA eingebaut, da funktioniert sie einwandfrei.

Mein ursprüngliches Ansinnen war es, den EA per Klick auf einen Button zu laden bzw. zu entfernen. Leider hat MQL4 nur eine Funktion ExpertRemove, aber nicht ExpertApply, so dass ich diesen Umweg wählen wollte.

Schaun wir mal...
  #6 (permalink)  
Alt 08.04.17
Mitglied
 
Registriert seit: Feb 2016
Beiträge: 240
RetepM befindet sich auf einem aufstrebenden Ast
Standard

Hi, in einem Indikator habe ich so was noch nie probiert. Siehe auch hier: https://docs.mql4.com/
----------------------------------------------------------
Custom Indicator is a technical indicator written independently in addition to those already integrated into the client terminal. Like built-in indicators, they cannot trade automatically and are intended for implementing of analytical functions only.
Custom indicators are stored in terminal_directory\MQL4\Indicators
----------------------------------------------------------
Ich glaube, der Weg einen weiteren EA über ein neues Chart zu laden, ist OK, mache ich mit einem EA, der ca. 30 Symbols überwacht und je nach Kondition 2 verschiedene Templates öffnen kann.
  #7 (permalink)  
Alt 10.04.17
Neues Mitglied
 
Registriert seit: Feb 2017
Beiträge: 18
KeepItEasy befindet sich auf einem aufstrebenden Ast
Standard

Ich habe es jetzt noch einmal getestet, mit einem neuen Chart funktioniert es auch aus einem Indikator heraus. Ist ganz einfach (scSymbol ist der Symbolname aus einer Liste, Template1 die Variable für das gewünschte Template):

long NewChartID = ChartOpen(scSymbol,0);
ChartApplyTemplate(NewChartID,Template1);

Allerdings habe ich jetzt das Problem, dass der mit dem neuen Template geladene EA nicht automatisch tradet, das Kontrollkästchen "Life Trading zulassen" ist deaktiviert. Lade ich das Template dagegen manuell, ist das Kästchen aktiviert (wie bei dem gespeicherten Template).

Wie kann ich das Kästchen per Code aktivieren? Ich habe es schon mit

bool TradeAllowedThisChart = MQLInfoInteger(MQL_TRADE_ALLOWED);
if(TradeAllowedThisChart == false) MQLSetInteger(MQL_TRADE_ALLOWED,true);

probiert, das funktioniert aber nicht. Die Variable TradeAllowedThisChart wird zwar korrekt auf "false" gesetzt, bei MQLSetInteger hapert es aber irgendwie.

Kennt jemand eine Lösung?
  #8 (permalink)  
Alt 10.04.17
Mitglied
 
Registriert seit: Feb 2016
Beiträge: 240
RetepM befindet sich auf einem aufstrebenden Ast
Standard

Hi, sichere das Template nochmal neu, mit angekreuztem Kästchen. Dann geht's!
https://docs.mql4.com/check/istradeallowed
  #9 (permalink)  
Alt 19.04.17
Neues Mitglied
 
Registriert seit: Feb 2017
Beiträge: 18
KeepItEasy befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von RetepM Beitrag anzeigen
Hi, sichere das Template nochmal neu, mit angekreuztem Kästchen. Dann geht's!
https://docs.mql4.com/check/istradeallowed
Geht leider NICHT!

Wie ich bereits in Beitrag 7 geschrieben hatte:
"Allerdings habe ich jetzt das Problem, dass der mit dem neuen Template geladene EA nicht automatisch tradet, das Kontrollkästchen "Life Trading zulassen" ist deaktiviert. Lade ich das Template dagegen manuell, ist das Kästchen aktiviert (wie bei dem gespeicherten Template)."

Ich habe das Template MIT aktiviertem Kontrollkästchen gespeichert, beim manuellen Laden ist es auch angekreuzt, beim automatischen Laden aber NICHT!

Die Funktion IsTradeAllowed() gibt mir nur diesen traurigen Zustand wieder ,
meine Frage war aber: Wie kann ich das per Code ändern?
  #10 (permalink)  
Alt 19.04.17
Mitglied
 
Registriert seit: Feb 2016
Beiträge: 240
RetepM befindet sich auf einem aufstrebenden Ast
Standard

Dazu bin ich leider ratlos.
Andererseits: Warum verlegst Du die Programmierung und die Buttons nicht in einen EA? Die indikator-Daten kannst Du ja trotzdem anzeigen. Ich habe hier ein Dashboard mit 30 Symbols laufen und es klappt einwandfrei.
Thema geschlossen

Lesezeichen

Stichworte
absturz, chartapplytemplate, metatrader absturz, mql4, programmierung, programmierung metatrader, programmierung mql4


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 15:22 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.
-----------------------------------------------------------------------------------------------------------------------------