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: 3948
Beiträge: 37735
Benutzer: 6.245
Aktive Benutzer: 418
Links: 80
Wir begrüßen unseren neuesten Benutzer: joerg
Mit 483 Benutzern waren die meisten Benutzer gleichzeitig online (21.04.16 um 17:12).
Neue Benutzer:
vor einem Tag
- joerg
vor 2 Tagen
- Mojo
vor 2 Tagen
- daybyter
vor 5 Tagen
- Marcel83
vor einer Woche
- Megaule

Onlineuser
'Wer ist online' anzeigen Benutzer: 1
Gäste: 32
Gesamt: 33
Team: 0
Team:  
Benutzer:  jimydirektsaft
Freunde anzeigen

Empfehlungen

Werbung

Like Tree33Likes
Antwort
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 07.01.18
Mitglied
 
Registriert seit: Jan 2018
Beiträge: 40
Lampe befindet sich auf einem aufstrebenden Ast
Standard MQL4 Starthilfe

Sehr geehrte Damen und Herren,

ich möchte gerne in diesem Thread Fragen stellen um MQL4 überhaupt erstmal in seinem Aufbau zu verstehen.

Es geht mir bei allen Fragen nicht darum den richtigen Code an sich zu kriegen sondern vorallem darum zu verstehen, warum und wieso etwas funktioniert oder nicht funktioniert.

Vermutlich werdet ihr euch bei einigen Fragen an den Kopf fassen, seht es mir nach.

Frage 1

Ich möchte überprüfen, wieviele Orders im Markt sind, und einen Kommentar oben Links im Chart ausgeben, wenn die Orderanzahl größer oder gleich 1 sind.

Ich möchte also KEIN Kommentar wenn die Orderanzahl 0 ist.

Code:
void OnTick()
  {
  
   int Anzahl = OrdersTotal();

   if(Anzahl>=1);
           {
           Comment ("eine Order");
           }
  }
Er ignoriert meine "if Zeile" und zeigt den Kommentar immer oben links im Chart an.

Wo liegt mein Denkfehler?
Mit Zitat antworten
  #2 (permalink)  
Alt 07.01.18
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 1.991
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Na ja, nun ist ein ; zu viel an Bord.

Code:
void OnTick() {
   int Anzahl = OrdersTotal();
   if (Anzahl >= 1) {
      Comment ("eine Order");
   }
}
Und gleich von vornherein angewöhnen, einen schön strukturierten Code zu schreiben.

traderdoc
Lampe likes this.
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
Mit Zitat antworten
  #3 (permalink)  
Alt 07.01.18
Mitglied
 
Registriert seit: Jan 2018
Beiträge: 40
Lampe befindet sich auf einem aufstrebenden Ast
Standard

Danke Doc, ich hab gehofft das du dich hier beteiligt..

Dann war nur ein ; zuviel... das lässt mich hoffen.

Ich möchte nun den Code von oben etwas ausbauen.

Dafür habe ich den Code so umgestellt das bei OrdersTotal == 0 das Comment "keine Order" ausgegeben wird, und "Order", sobald eine besteht.

Um dieses Meisterwerk zu testen möchte ich wieder per if Bedingung, eine Buy Order setzen wenn wie oben, der OrdersTotal == 0.

Ich möchte also immer wenn KEINE Order besteht eine senden.

Code:
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick() 
{
   
   int Anzahl = OrdersTotal();
   if (Anzahl == 0) 
      {
      Comment ("keine Order");
      }
   else Comment ("Order");
   
   if (Anzahl == 0)   
      {
      int OrderSenden = OrderSend(NULL,OP_BUY,0.1,Ask,10,100,200,NULL,12,0,clrGreen);
      }
}
Er sendet aber keine Order raus, und als Fehlercode bekomme ich Ordersend Error 130.

Wo liegt der Fehler?

MfG
Lampe
Mit Zitat antworten
  #4 (permalink)  
Alt 07.01.18
Mitglied
 
Registriert seit: Jan 2018
Beiträge: 40
Lampe befindet sich auf einem aufstrebenden Ast
Standard

//Update zur vorherigen Frage


Ich habe die Fehler gefunden.

1. viel mir auf das ich beim StoppLoss das "-" Zeichen vergessen habe

Das brachte jedoch noch nicht den gewünschten Erfolg.

2. viel mir auf das ich bei SL und TP auch den Wert dazu schreiben muss von wo die Werte berechnet werden müssen.

Die korrekte OrderSend Zeile lautet also wie folgt:

Code:
int OrderSenden = OrderSend(NULL,OP_BUY,0.1,Ask,10,Ask-100,Ask+200,NULL,12,0,clrGreen);
Wer weiß, vielleicht hilft dieses Update ja auch einem anderen Anfänger weiter.

Feierabend.

MfG
Lampe
Mit Zitat antworten
  #5 (permalink)  
Alt 08.01.18
Mitglied
 
Registriert seit: Jan 2018
Beiträge: 40
Lampe befindet sich auf einem aufstrebenden Ast
Standard

Sehr geehrte Damen und Herren,

heute möchte ich mich mit einer weiteren allgemeinen Frage an euch richten und hoffe, auf deine, Mithilfe..

Ich habe Verständnisprobleme was das bearbeiten von Orders angeht, und benötige einen Denkanstoß.

Nehmen wir an ich habe 2 StopOrders gesetzt, eine Buy_Stop und eine Sell_Stop.
Und möchte nun, sobald eine der beiden Orders ausgelöst wird, die jeweilige andere Stop_Order löschen.

Das sieht wie folgt aus:

Zitat:
int Buy_Stop_Order=OrderSend(Parameter..);
int Sell_Stop_order=OrderSend(Parameter..);
Er speichert mir doch jetzt sofern die Order beim Broker eingegangen ist in den Variabelen "Buy_Stop_Order" und "Sell_Stop_Order einen Wert, ich glaube es ist die Ticketnummer.

Kannst du, mir bitte einen kurzen Anstoß geben wie ich von diesem Punkt aus weiter machen kann?

Hilfreich wäre auch eine kurze einfache Beschreibung der OrderSelect Funktion.

Ich bin für jeden Ratschlag dankbar.

MfG
Lampe
Mit Zitat antworten
  #6 (permalink)  
Alt 08.01.18
Mitglied
 
Registriert seit: Apr 2014
Beiträge: 108
Trader6666 befindet sich auf einem aufstrebenden Ast
Standard

moin,

würd sagen das du einfach die Orders nach dem Typ abfragst und das Ergebnis mit nem Bool wert ausgibst, sobald eine von denen keine Limit oder Stoporder ist, kannst du die bestehende dann eben löschen...du musst die Orders nicht zwingend in eine Variable speichern, bei der Ordererstellung kann man auch einen Kommentar zu der jeweiligen Order setzten. Dann fragst du einfach die OrderComment() ab und wenn einer fehlt ,die LimitStop Order auswählen und dann löschen, so grob gesagt...
Lampe likes this.
Mit Zitat antworten
  #7 (permalink)  
Alt 08.01.18
Mitglied
 
Registriert seit: Jan 2018
Beiträge: 40
Lampe befindet sich auf einem aufstrebenden Ast
Standard

Hallo Trader666,

vielen Dank für deine Antwort. Ich hab mich zwischenzeitlich auch weiter eingelesen und denke ich werds hin bekommen. Jedenfalls bin ich guter Hoffnung.

Bis hierher erstmal Dankeschön!

Feierabend.

Mit freundlichen Grüßen
Lampe
Mit Zitat antworten
  #8 (permalink)  
Alt 09.01.18
Mitglied
 
Registriert seit: Jan 2018
Beiträge: 40
Lampe befindet sich auf einem aufstrebenden Ast
Standard

Sehr geehrte Damen und Herren,

heute möchte ich mich mit einer sehr einfachen Frage an euch wenden und hoffe, du nimmst dir kurz die Zeit, für eine Antwort.

Folgendes:

Wenn ich im Strategietester, eine Strategie Backteste und das Journal aufrufe, gibt er mir dort verschiedene Informationen.

Es gibt ganz linkt beispielsweise ein rotes Dreieck das für einen Error steht und somit einen Fehler anzeigt.

Es gibt aber auch ein gelbes Dreieck wie beispielsweise in folgender Zeile:
Code:
Gelbes Dreieck! 2018.01.09. 12:03:15.322 2018.01.05. 22:57:30 Tester:order#7 is closed
Meine Simple Frage:
Dient diese Zeile und das gelbe Dreieck mit Ausrufezeichen lediglich dazu mich über eine Ausführung zu Informieren?
In diesem Fall hätte es keine weitere Bedeutung für mich.

Oder ist diese Zeile ebenfalls ein Hinweis darauf, das irgendwie in irgendeiner Form, ein Fehler aufgetreten ist?

Ich würde mich über eine kurze Antwort von dir sehr freuen.

MfG
Lampe
Mit Zitat antworten
  #9 (permalink)  
Alt 10.01.18
Mitglied
 
Registriert seit: Jan 2018
Beiträge: 40
Lampe befindet sich auf einem aufstrebenden Ast
Standard

Ich habe eine weitere Frage.

Für eine For Schleife wird häufig folgende Zeile verwendet:

Zitat:
for (int i = OrdersTotal()-1; i >= 0; i--)
Warum verwendet man diese -1 hinter OrdersTotal?
Das i–– am Ende besagt doch das man jeweils um eins herunterzählt, aber wieso verringert man bereits am Anfang die Orderanzahl um -1?

Wäre sehr nett wenn mir jemand die Frage kurz beantworten könnte.

Mit freundlichen Grüßen
Lampe
Mit Zitat antworten
  #10 (permalink)  
Alt 11.01.18
Neues Mitglied
 
Registriert seit: Dec 2017
Beiträge: 6
mocwoc befindet sich auf einem aufstrebenden Ast
Standard OrdersTotal -1

Hi Lampe,

der Grund für die "-1" in dem Ausdruck

Code:
for (int i = OrdersTotal()-1; i >= 0; i--)
liegt darin, dass die Orders indiziert, sprich mit einer laufenden Nummer versehen sind. Nur fängt MQL nicht mit 1 zu zählen an, sondern mit 0.

Wenn Du also 5 Orders im Markt hast, dann haben die die Indexnummer 0,1,2,3 und 4. Die Anzahl der Orders ist aber 5. Beim Herunterzählen fängst Du also mit 4 an und hörst bei 0 auf. Deshalb die -1.

Ähnliches gilt auch für frei definierte Arrays, IndexBuffers, TimeSeries, etc.

Cheers, mocwoc
Bosso and Lampe like this.
Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
hilfe, lernen, mql4, mql4 aufbau, mql4 hilfe, mql4 lernen, programmierung, programmierung metatrader, programmierung mql4, starthilfe


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 00:09 Uhr.



Der Wavesnode - Spam Firewall
-----------------------------------------------------------------------------------------------------------------------------
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Powered by vBCMS® 2.7.0 ©2002 - 2018 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.
-----------------------------------------------------------------------------------------------------------------------------