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: 43256
Benutzer: 7.220
Aktive Benutzer: 81
Links: 84
Wir begrüßen unseren neuesten Benutzer: JosephTK
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor 10 Stunden
- JosephTK
vor 2 Tagen
- Hopfen&Mal...
vor 3 Tagen
- frankmicha...
vor einer Woche
- DFeck
vor einer Woche
- bb1107

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

Empfehlungen

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #11 (permalink)  
Alt 13.05.20
Mitglied
 
Registriert seit: Mar 2013
Beiträge: 30
janbuk63 befindet sich auf einem aufstrebenden Ast
Standard

Ich verstehe den Sinn nicht!

wenn z.B. eine Pos geöffnet wird dann wollte ich per SendNotification
eine eigene aus dem EA kreierte Nachricht an mein Handy zuschicken lassen.
Das Problem ist das die Bedienung : aktivierte Pending Order die ganze weiter besteht also wird beim jedem durchlaufen des Programms wieder eine Nachricht schicken weil die Bedienung weiter erfüllt ist.
Wenn ich es dann abhängig mache von Zeit z.B. nue 3 Sek nach der Aktivierung darf dies Mitteilung durchgehen und danach nicht wäre schon ein Fortschritt weil in diese kurze Zeit kommen nur 1-3 Nachrichten und dann nicht mehr.
Wenn ich die Ticks nehme wie in deinem Beispiel dann wird - sagen wir- nach 100 Ticks immer wieder die gleiche Nachricht kommen:
"Order aktiviert" obwohl zu diesem Zeitpunkt Nichts mehr aktiviert wurde. Das wäre doch keine Hilfe für mich ständig falsche Nachrichten zu bekommen.
Mein EA läuft in Init() nicht OnTime oder OnTick() !
am besten wäre mit dem Array weil sogar wenn ich OrderOpenTime() nehmen würde ist diese Zeit von setzten des Pendingorders genommen und nicht vom dem Zeitpunkt der Aktivierung.
Beim OrderCloseTime() wäre das schon sinnvoler!

Nun jetzt habe ich die normale Metatrader Push Funktion "Über Handelstransaktionen benachrichtigen" aktiviert und irgendwie habe nicht mehr so viele Nachrichten. Nur ein Paar Buylimit gesetzt und deleted aber das ist noch zum aushalten!
Also lasse ich sein das ganze! Nur schade dass es in der SendNotification so einen Parameter nicht vorgesehen wurde : wie oft soll die Nachricht gesendet werden so wie dass z.B. bei Alarm Funktion im Chart Fenster möglich ist!
Gruß
  #12 (permalink)  
Alt 13.05.20
Neues Mitglied
 
Registriert seit: Apr 2020
Beiträge: 14
TraumExperte befindet sich auf einem aufstrebenden Ast
Standard

Eigentlich habe ich Dir den Weg gezeigt. Wenn Dein Code komplett in OnInit läuft wird der Code nur ein einziges mal eben bei der EA Initialisierung durchlaufen und dann eben nicht mehr. Das macht in der Regel keinen Sinn.

Vielleicht postest Du mal Deinen Code. Würde uns allen leichter fallen Dir zu helfen. Siehst ja der Wille wäre da :-)

Gruß

TraumExperte

Geändert von TraumExperte (13.05.20 um 15:34 Uhr)
  #13 (permalink)  
Alt 13.05.20
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.733
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Und auch ich habe bereits geschrieben, das es auf das warum ankommt.
<wenn nach einer Orderöffnung eine Nachricht kommen soll, dann kommt die bei mir nur einmal, nämlich wenn die Funktion OrderSend() die Ticketnumber zurückgegeben hat, also

bool SendOrder(...) {
ticket = OrderSend(.....);
if (ticket > 0) {
//Nachricht
}
}

Und warum sollte bei diesem Code die Nachricht mit jedem Tick wieder gegeben werden, wenn die Funktion SendOrder() nur angesprungen wird, wenn auch tatsächlich eine Order geöffnet werden soll?

Ansonsten hast Du die bool-Variante auch bereits genannt bekommen.

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #14 (permalink)  
Alt 15.05.20
Mitglied
 
Registriert seit: Mar 2013
Beiträge: 30
janbuk63 befindet sich auf einem aufstrebenden Ast
Standard

Ich habe doch mehrmals geschrieben dass ich OrderSend benutze nur um Pending Order typ Buylimit oder Selllimit zu setzten und dann habe ich OpenOrderTime() von setzten dieses Pendings.
Dieses Ereignis könnte ich mir tatsächlich über SendNotification nur einmalig schicken lassen! Fertig!
Aber das ist für mich nicht so interessant im Vergleich wie das aktivieren dieses Orders also von Buylimit auf Buy oder Selllimit auf Sell. Diese Zeitpunkt wird nicht von Metatrader irgendwo außer in History festgehalten.
Wenn ich also eine For Schleife benutze um alle Positionen zu überlaufen um dieser Zeitpunkt der Aktivierung zu ermitteln dann passiert das jedes mal beim Tick oder Event oder jede Sekunde je nach dem wie der EA lüaft. Bei mir steht nur Init() DeInit() und dann Start() kein OnTime() oder OnEvent() oder OnTick() - kenne mich nicht so aus und Ich weiss nicht warum dass bei meinem EA so ist. Ich habe mir ein anderer EA genommen und es ständig überarbeitet!! Bin kein Profi!!
Und dann wird die Bedienung immer wieder erfüllt und wieder SendNotification getätigt. Bei jedem durchlaufen! Jedes mal!
Wenn ich booleanische Schalter nehme dann wird einmal gesendet aber wenn neue Order aktiviert wird dann wird eben nicht mehr gesendet - wegen dem Schalter.
Wie programmierst Du den Schalter ? welche Ereignis soll den Schalter wieder auf On stellen?
Oh! - Ja!- das könnte gehen! - ist mir gerade eingefallen! Ich setze immer 2 Order als Pending : auf dem Höchsten Punkt der letzten 12 Stunden Selllimit und auf tiefsten Punkt Buylimit.
Da könnte man tatsächlich den Schalter wieder auf On stellen und damit einmalig erlauben bei Aktivierung das SendNotification zu benutzen. - Das geht wirklich ! Gebe ich Euch Recht!
Es bleibt aber noch dass Schliessen des gleichen Orders nur einmal schicken lassen.
Ja - da mache ich den zweiten Schalter wenn die Position aktiviert wird ! Ja das ist die Lösung ! Ein Schalter beim setzen des Pendings und zweiten beim aktivieren. Das Aktivieren ändert nähmlich die Zahl der Aktiven Orders und Pending und diesen Zustand kann ich leicht kontrolieren und festhalten

Danke für den Tipp! und viele Grüße
Toll dass man irgendwo fragen kann und es findet sich fast immer jemand mit einem guten Rat!
  #15 (permalink)  
Alt 16.05.20
Mitglied
 
Registriert seit: Mar 2013
Beiträge: 30
janbuk63 befindet sich auf einem aufstrebenden Ast
Standard

Hallo!
Kann mir jemand eine Grundsatzfrage beantworten?
Eine Globale Variable wird am Anfang des Programms erstellt und wird dann im ganzen Programm also auch in der Funktionen gültig!
Eine Variable die Lokal d.h. in der Funktion erstellt wird - wird nur Lokal gültig sein und von den anderen Funktionen nicht akzeptiert! Richtig?
Gibt es auch die Möglichkeit eine Variable in der Funktion deklarieren die dann Global d.h. von ganzen Programm gesehen und akzeptiert wird - ohne Meldung :undeclared identifier!
Gruß
  #16 (permalink)  
Alt 16.05.20
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 janbuk63 Beitrag anzeigen
Eine Globale Variable wird am Anfang des Programms erstellt und wird dann im ganzen Programm also auch in der Funktionen gültig!
Eine Variable die Lokal d.h. in der Funktion erstellt wird - wird nur Lokal gültig sein und von den anderen Funktionen nicht akzeptiert! Richtig?
ja.
Zitat:
Zitat von janbuk63 Beitrag anzeigen
Gibt es auch die Möglichkeit eine Variable in der Funktion deklarieren die dann Global d.h. von ganzen Programm gesehen und akzeptiert wird - ohne Meldung :undeclared identifier!
Lokale Variablen sind lokal und globale Variablen sind global, so einfach ist das. AVT
  #17 (permalink)  
Alt 16.05.20
Mitglied
 
Registriert seit: Mar 2013
Beiträge: 30
janbuk63 befindet sich auf einem aufstrebenden Ast
Standard

ich fragte dass nicht ohne Grund!
ich möchte einen booleanischen Schalter erstellen der für jeden Order einmalig ist also am besten wenn der Name des Schalters den Order Ticket beinhaltet und dadurch eindeutig dem Ordner zugewiesen werden kann und nicht einem anderen Order.
Bei Grafischen Objecten ist es möglich ObjectCreate "name"+IntegerToString(OrderTicket()) einen eindeutigen Namen zu kreieren der NUR zu dem besagten Order passt.
Nun würde ich gerne das gleiche mit dem Schalter haben!
Der Schalter muss im ganzen Programm sichtbar sein also Globale Variable!
Ich kann aber den Schalter mit dem OrderTicket in den Namen drin - am Anfang doch nicht deklarieren weil ja am Anfang es noch keine Order gibt und später in der Funktion kann man keine Globale Variablen deklarieren wie aus der letzten Post hervorgeht!
Kann jemand helfen und sagt mir wie man es macht?
Thema geschlossen

Lesezeichen

Stichworte
push notification

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 08:41 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.
-----------------------------------------------------------------------------------------------------------------------------