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: 3367
Beiträge: 33884
Benutzer: 5.356
Aktive Benutzer: 613
Links: 79
Wir begrüßen unseren neuesten Benutzer: Mogelbaum
Mit 483 Benutzern waren die meisten Benutzer gleichzeitig online (21.04.16 um 17:12).
Neue Benutzer:
vor einer Stunde
- Mogelbaum
vor 16 Stunden
- romahanove...
vor einem Tag
- thaiquocba...
vor einem Tag
- patte
vor einem Tag
- boomo

Onlineuser
'Wer ist online' anzeigen Benutzer: 1
Gäste: 30
Gesamt: 31
Team: 0
Team:  
Benutzer:  GenosseX
Freunde anzeigen

Empfehlungen

Werbung

Like Tree6Likes
Antwort
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 05.10.16
Neues Mitglied
 
Registriert seit: Sep 2016
Beiträge: 9
TraderHolic befindet sich auf einem aufstrebenden Ast
Standard Definieren der Magic Number

Guten Abend,
ich bin Thomas und programmiere seit einer Woche an meinem EA.
Ich bin 22 Jahre alt komme aus Bayern, habe keine Programmierkenntnisse, handel seit 4 Jahren an der Börse und habe mir bis jetzt alle selbst beigebracht.
Ich bin neu hier

Zu meiner Frage:
ich möchte gerne eine Position schließen nachdem eine gewissen Bedingung erfüllt ist. Dies wollte ich mit dem Befehl "OrderClose" lösen.
Allerdings möchte der Befehl eine "Order_ID", wie definiere ich diese?

Hat doch irgendwas mit der Magic Number auf sich oder?

PHP-Code:
void Verkaufen()
   {
      
OrderSend(Symbol(),OP_SELL,0.1,Bid,3,(LastCandleHigh+5),NULL,NULL,1,0,Red);
   }
   
void StopForSell()
   {
      
OrderClose(1,0.1,Ask,3,Green);
   } 
ich möchte die "Verkaufen" Position mit dem "void StopForSell()" schließen.
Mit Zitat antworten
  #2 (permalink)  
Alt 05.10.16
Premium Mitglied
 
Registriert seit: Sep 2015
Beiträge: 412
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

"void" dient nur dazu, Nachrichten auszugeben.
Lern erst mal die Grundlagen.
Mit Zitat antworten
  #3 (permalink)  
Alt 05.10.16
Neues Mitglied
 
Registriert seit: Sep 2016
Beiträge: 9
TraderHolic befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von MA-EA Beitrag anzeigen
"void" dient nur dazu, Nachrichten auszugeben.
Lern erst mal die Grundlagen.
Mit void rufe ich meine vorher definierte Funktion auf.
Mit Zitat antworten
  #4 (permalink)  
Alt 05.10.16
Benutzerbild von Kronenchakra
Mitglied
 
Registriert seit: Feb 2016
Ort: 2100 Österreich
Beiträge: 120
Kronenchakra befindet sich auf einem aufstrebenden Ast
Standard

void bedeutet nur, dass diese Funktion keinen Rückgabewert liefert.

Code:
void MyFunction()
{ 
   // Diese Funktion macht was (in diesm Fall nichts) :D
   // und liefert auch keinen Wert zurück
}
F1 im Metaeditor->Inhalt->MQL Reference->Language Basics

Viel Erfolg wünscht der

OPA-Trader
Mit Zitat antworten
  #5 (permalink)  
Alt 05.10.16
Mitglied
 
Registriert seit: Mar 2016
Beiträge: 39
SusanneH befindet sich auf einem aufstrebenden Ast
Cool

Zitat:
Zitat von Kronenchakra Beitrag anzeigen
void bedeutet nur, dass diese Funktion keinen Rückgabewert liefert.

Code:
void MyFunction()
{ 
   // Diese Funktion macht was (in diesm Fall nichts) :D
   // und liefert auch keinen Wert zurück
}
F1 im Metaeditor->Inhalt->MQL Reference->Language Basics

Viel Erfolg wünscht der

OPA-Trader
...und einfach einmal die Beispiel EA´s anschauen/durchlesen & verstehen
Mit Zitat antworten
  #6 (permalink)  
Alt 05.10.16
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 1.522
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von MA-EA Beitrag anzeigen
"void" dient nur dazu, Nachrichten auszugeben.
Lern erst mal die Grundlagen.
Der Inhalt des ersten Satzes ist grottenfalsch.
Der Inhalt des zweiten Satzes, gerade von Dir geschrieben, ist an Komik nicht mehr zu überbieten. Wobei mit Komik die Tragik eigentlich gar nicht richtig trifft. Da schreibt der lernresistendende User, er solle erst mal die Grundlagen lernen. Ich kippe vor Lachen jetzt wirklich fast hinten über.

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
Mit Zitat antworten
  #7 (permalink)  
Alt 05.10.16
Neues Mitglied
 
Registriert seit: Sep 2016
Beiträge: 9
TraderHolic befindet sich auf einem aufstrebenden Ast
Standard

Danke für die Antworten.
Dann wäre das ja mit void geklärt. Wusste ich aber ja schon.

Wie siehts jetzt aus mit der Magic Number Definiton?
Ich kenn die Beispiele schon aber ich verstehe die einfach nicht.
Die schreiben immer irgendwas von Index...

https://www.mql5.com/de/articles/1359

PHP-Code:
int total=OrdersTotal();
int mymagic;

for(
int pos=0;pos<total;pos++)
{
     if(
OrderSelect(pos,SELECT_BY_POS)==false) continue;
     
mymagic OrderMagicNumber();

Ich verstehe das einfach nicht und finde auch keine verständliche Erklärung dazu..
Mit Zitat antworten
  #8 (permalink)  
Alt 05.10.16
Neues Mitglied
 
Registriert seit: Dec 2015
Beiträge: 15
TogoTiger befindet sich auf einem aufstrebenden Ast
Standard

Wenn du eine Order erstellst, codierst du doch etwa sowas:

Ticketnummer = OrderSend(Symbol,OP_BUY, Lots,Ask, SlipPips,0,0, "Kauf-Order", MagicNumber,0,Green);

Wenn's geklappt hast, dann hast du die Nummer der Order in Ticketnummer
Diese gibst du beim Schliessen der Order wieder an. Die MagicNumber spielt beim Close keine Rolle.

Etwa so:

Geschlossen = OrderClose(Ticketnummer, Lots, Ausstiegspreis, SlipPips, Red);

Gruss
Erwin
TraderHolic likes this.
Mit Zitat antworten
  #9 (permalink)  
Alt 05.10.16
Neues Mitglied
 
Registriert seit: Sep 2016
Beiträge: 9
TraderHolic befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von TogoTiger Beitrag anzeigen
Wenn du eine Order erstellst, codierst du doch etwa sowas:

Ticketnummer = OrderSend(Symbol,OP_BUY, Lots,Ask, SlipPips,0,0, "Kauf-Order", MagicNumber,0,Green);

Wenn's geklappt hast, dann hast du die Nummer der Order in Ticketnummer
Diese gibst du beim Schliessen der Order wieder an. Die MagicNumber spielt beim Close keine Rolle.

Etwa so:

Geschlossen = OrderClose(Ticketnummer, Lots, Ausstiegspreis, SlipPips, Red);

Gruss
Erwin
Ah ok, jetzt versteh ichs. Ich probiere es am Freitag mal.
Vielen Dank! =)
Mit Zitat antworten
  #10 (permalink)  
Alt 05.10.16
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 1.522
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von TogoTiger Beitrag anzeigen
Wenn du eine Order erstellst, codierst du doch etwa sowas:
Ticketnummer = OrderSend(Symbol,OP_BUY, Lots,Ask, SlipPips,0,0, "Kauf-Order", MagicNumber,0,Green);
Wenn's geklappt hast, dann hast du die Nummer der Order in Ticketnummer
Diese gibst du beim Schliessen der Order wieder an. Die MagicNumber spielt beim Close keine Rolle.
Etwa so:
Geschlossen = OrderClose(Ticketnummer, Lots, Ausstiegspreis, SlipPips, Red);
Gruss
Erwin
Das funktioniert nur, wenn nur eine Order offen ist. Sobald eine weitere dieses Währungspaares offen ist oder zusätzlich eine andere Order eines anderen Währungspaares, dann funktioniert das nicht mehr.

Eine Möglichkeit wäre (hängt immer von den Erfordernissen ab!)

Code:
int BuyTicketNumber = 0, SellTicketNumber = 0;
double BuyLot, SellLot;

void CheckOrders() {
   for (int i = 0; i < OrdersTotal(); i++) {
      if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic_Number) {
            if (OrderType() == OP_BUY)  {
               BuyTicketNumber = OrderTicket();
               BuyLot = OrderLots();
            }
            if (OrderType() == OP_SELL) {
               SellTicketNumber = OrderTicket();
               SellLot = OrderLots();
            }
         }
      }
   }
}
Bei diesem Code wird schon mal nach dem Währungpaarsymbol selektiert und zusätzlich nach der MagicNumber, d.h. es werden wirklich nur die Orders selektiert, die auch mit dem EA auf dem Chart dieses Währungspaares geöffnet wurden.

Aber auch dieser Code wird nur zuverlässig funktionieren, wenn maximal eine BuyOrder und/oder eine SellOrder dieses Währungspaares existiert, weil die weiteren Orders die Werte überschreiben würden.

Die erhaltene TicketNumber wird dann eingesetzt in die Close-Funktion. Die Slippage ist ein Wert in Pips, der die tolerierbare Abweichung des tatsächlichen Ausführungskurses von den CloseKursen Bid bzw. Ask angibt. Als erstes einfach mal z.B. eine 2 einsetzen. Bei einem 5-Digit-Broker entsprechend eine 20. Red ist die Farbe des grafischen Close-Dreiecks im Chart.

Code:
if (BuyTicketNumber > 0) OrderClose(BuyTicketNumber, BuyLot, Bid, Slippage, Red);
if (SellTicketNumber > 0) OrderClose(SellTicketNumber, SellLot, Ask, Slippage, Red);
Ansonsten, einfach fertige Programme anschauen, wie diese programmiert wurden.

traderdoc
TraderHolic likes this.
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
magic number, magic nummer, magicid, mql4, programmierung, programmierung metatrader


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



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