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: 43248
Benutzer: 7.219
Aktive Benutzer: 81
Links: 84
Wir begrüßen unseren neuesten Benutzer: Hopfen&Malz
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor einem Tag
- Hopfen&Mal...
vor 2 Tagen
- frankmicha...
vor einer Woche
- DFeck
vor einer Woche
- bb1107
vor 2 Wochen
- rg-trader

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

Empfehlungen

Like Tree6Likes
Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 05.10.16
Neues Mitglied
 
Registriert seit: Sep 2016
Beiträge: 15
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.
  #2 (permalink)  
Alt 05.10.16
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.178
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

"void" dient nur dazu, Nachrichten auszugeben.
Lern erst mal die Grundlagen.
  #3 (permalink)  
Alt 05.10.16
Neues Mitglied
 
Registriert seit: Sep 2016
Beiträge: 15
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.
  #4 (permalink)  
Alt 05.10.16
Gesperrter Benutzer
 
Registriert seit: Feb 2016
Ort: 2100 Österreich
Beiträge: 313
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
  #5 (permalink)  
Alt 05.10.16
Mitglied
 
Registriert seit: Mar 2016
Beiträge: 68
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
  #6 (permalink)  
Alt 05.10.16
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.733
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.
  #7 (permalink)  
Alt 05.10.16
Neues Mitglied
 
Registriert seit: Sep 2016
Beiträge: 15
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..
  #8 (permalink)  
Alt 05.10.16
Mitglied
 
Registriert seit: Dec 2015
Beiträge: 85
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.
  #9 (permalink)  
Alt 05.10.16
Neues Mitglied
 
Registriert seit: Sep 2016
Beiträge: 15
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! =)
  #10 (permalink)  
Alt 05.10.16
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.733
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.
Thema geschlossen

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 18:53 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.
-----------------------------------------------------------------------------------------------------------------------------