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: 3824
Beiträge: 36925
Benutzer: 6.074
Aktive Benutzer: 494
Links: 80
Wir begrüßen unseren neuesten Benutzer: hmf44
Mit 483 Benutzern waren die meisten Benutzer gleichzeitig online (21.04.16 um 17:12).
Neue Benutzer:
vor 9 Stunden
- hmf44
vor 13 Stunden
- Crossa
vor 14 Stunden
- snatshit
vor einem Tag
- Roerich
vor einem Tag
- John_Liver...

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

Empfehlungen

Werbung

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

@traderdoc
trotzdem Danke!
Ich versuche selber und wenn ich nicht weiter komme dann suche ich jemanden gegen Bares der das übernimmt!
Vielleicht kannst Du mir wennigstens netterweise sagen wie man mit eine Schleife automatisch den Arrayfeldern ein Wert einer Variable zuweisst. So wie ich es probiert habe (mit Variable in einer Schleife) will MQL4 nicht annehmen, ich musste alle Werte als konstante zuweisen also manuell und das bei 50 Positionen mühsam ist und jedesmal wenn ich den Close_Hedge_Times Zähler anders einstellen wollen würde, müsste ich es wieder manuell im Code machen!?
Geht das nicht anders?
Für nur 6 Hedgpositionen sieht das schon so aus:
int HedgePos[6][2]={0,0,0,0,0,0 2,2,2,2,2,2 }; // ini von Array:

1Parameter=MagicNumber, 2Parameter Zähler: Close_Hedge_Times

Gruß

janbuk
  #12 (permalink)  
Alt 16.04.13
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 1.875
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Code:
int HedgePos[6][2];

for(int i = 0; i <=1; i++) {
   if (i == 0) int value = 0;
      else value = 2;
   for (int j = 0; j <=5; j++) {
      HedgePos[j][i] = value;
   }
}

Geändert von traderdoc (16.04.13 um 18:38 Uhr)
  #13 (permalink)  
Alt 16.04.13
Neues Mitglied
 
Registriert seit: Mar 2013
Beiträge: 13
janbuk63 befindet sich auf einem aufstrebenden Ast
Standard

Danke schön!
Eine letzte Frage hätte ich noch!
Gibt' es Möglichkeit wie man eine Position identifiziert bevor sie gestzt wird.
Ich setzte eine SendOrder als Pending oder MarketOrder und später will ich wissen welche MagicNumber sie hat um sie im Auge zu behalten, ob sie noch aktiv ist oder schon closed? Wie macht man das ? mit OrderOpenTime?
  #14 (permalink)  
Alt 16.04.13
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 1.875
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Code:
for(int i = 0; i < OrdersTotal(); i++) {
   if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol() == Symbol()) {
         int MagicNumber = OrderMagicNumber();
      }
   }
}
  #15 (permalink)  
Alt 16.04.13
Neues Mitglied
 
Registriert seit: Mar 2013
Beiträge: 13
janbuk63 befindet sich auf einem aufstrebenden Ast
Standard

Ich glaube, das Betrifft nur die Positionen die schon da sind. Das habe ich auch angewandt um alle Positionen nach OrderOpenPrice abfragen. Das gleiche kann man auch machen um OrderOpenTime oder eben OrderMagicNumber zu erfahren.

Ich wollte aber wissen welche Nummer oder andere Merkmal die Position bekommt beim setzen diese Position?
Wenn ich MarketOrder oder Pending setzte da existiert sie doch nicht und erst später beim öffnen durch MetaTrader bekommt sie eine Nummer. Wie soll ich dann später sie von den anderen unterscheiden?
  #16 (permalink)  
Alt 16.04.13
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 1.875
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von janbuk63 Beitrag anzeigen
Ich glaube, das Betrifft nur die Positionen die schon da sind. Das habe ich auch angewandt um alle Positionen nach OrderOpenPrice abfragen. Das gleiche kann man auch machen um OrderOpenTime oder eben OrderMagicNumber zu erfahren.

Ich wollte aber wissen welche Nummer oder andere Merkmal die Position bekommt beim setzen diese Position?
Wenn ich MarketOrder oder Pending setzte da existiert sie doch nicht und erst später beim öffnen durch MetaTrader bekommt sie eine Nummer. Wie soll ich dann später sie von den anderen unterscheiden?
Was willst Du denn nun genau wissen?
1. Wenn du eine Marketorder setzt ist sie im Markt! (egal, ob mit oder ohne MagicNumber!)
2. Wenn Du eine Pendingorder in Auftrag gibst, existiert sie, auch mit MagicNumber, sofern Du überhaupt eine angibst, aber sie ist noch nicht am Markt!
3. Wenn Du keine MagicNumber bei der Orderaufgabe angibst, kannst Du auch später keine finden beim Suchen!
4. Was ist ein anderes Merkmal?
5. Von wem willst Du was unterscheiden?

Du mußt wiklich ganz genau beschreiben, was Du willst, sonst meinst Du immer etwas anderes und wir kommen nicht ans Ziel.

traderdoc
  #17 (permalink)  
Alt 16.04.13
Neues Mitglied
 
Registriert seit: Mar 2013
Beiträge: 13
janbuk63 befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von traderdoc Beitrag anzeigen
Was willst Du denn nun genau wissen?
1. Wenn du eine Marketorder setzt ist sie im Markt! (egal, ob mit oder ohne MagicNumber!)
2. Wenn Du eine Pendingorder in Auftrag gibst, existiert sie, auch mit MagicNumber, sofern Du überhaupt eine angibst, aber sie ist noch nicht am Markt!
3. Wenn Du keine MagicNumber bei der Orderaufgabe angibst, kannst Du auch später keine finden beim Suchen!
4. Was ist ein anderes Merkmal?
5. Von wem willst Du was unterscheiden?

Du mußt wiklich ganz genau beschreiben, was Du willst, sonst meinst Du immer etwas anderes und wir kommen nicht ans Ziel.

traderdoc
@traderdoc

entschuldige wenn ich nicht immer genau Bescheid weiss über alle Einzelheiten. Ich wusste nicht, dass man selber eine MagicNumber schon beim setzen vergeben kann.

BeI meinem EA die Order werden mit diese Codezeile realisiert:
GVSet("HedgeBuy"+pos,MarketOrder(OP_SELL,openprice _hedge,Lot,stoplosticksell,takeprofithedgeticksell ,"Hedge_f_Buy "+pos,Symbol()));
- diese GVSet ist ein Funktion die GlobalVariableSet benutzt-
und wird von diese weiter gemacht:
int MarketOrder(int TYPE,double Tradingprice,double LOT,double SL=0,double TP=0,string reason="",string symb="")

Ich kenne nicht alle Möglichkeiten was man noch selber angeben kann. Wenn aber selber eine MagicNumber vergeben kann dann ist mir damit schon geholfen.

Mit diese Nummer kann ich später gezielt nach bestehen diese Position abfragen mit OrderSelect(pos,Select_By_Position) && OrderMagicNumber()==.... && OrderCloseTime==0.
So wird nach der Hedge-Position geschaut, da sie jederzeit verschwinden kann wenn der Chart dreht und SL von Hedge-Position erreicht wird.
Bei ausführen meiner HedgeAbteilung muss ich immer nach den Verlust-Positionen schauen und die dazugehörigen Hedges überprüfen ob sie noch da sind und wenn nicht ob sie wieder eröffnet werden müssen!
Wenn ich also ein Hedge setze wäre gut zu wissen welche Nummer er bekommt um später immer nach ihm zu schauen.
Ich hoffe das ist jetzt verständlicher beschrieben!
Gruß
  #18 (permalink)  
Alt 16.04.13
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 1.875
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Die MagicNumber kannst Du frei wählen, muß aber ein int-Wert sein.
Die Frage ist nur, meinst Du die Magicnumber oder meinst Du die TicketNumber?
Die haben beide miteinander überhaupt nichts zu tun!
Und wenn ich mir das so alles durchlese, dann glaube ich zu meinen, dass Du eigentlich die TicketNumber meinst, die ein Unikat ist und vom System vergeben wird. Auf die Nummer hast Du keinen Einfluß. Sie wird aber auch sofort vergeben, wenn die Order aufgegeben wird, egal ob Market- oder PendingOrder.
Abzufragen über OrderTicket() in der bewußten for-Schleife.

Mir ist aber immer noch nicht klar, was Du wann voneinander unterscheiden willst mit der MagicNumber?
Außerdem wird in der Funktion MarketOrder() keine MagicNumber an die Funktion OrderSend() übergeben! Wenn die nicht bei der Ausführung der Funktion OrderSend() extern aus dem EA von anderer Stelle übergeben wird, dann haben alle Deine Orders keine MagicNumber!

traderdoc
  #19 (permalink)  
Alt 16.04.13
Neues Mitglied
 
Registriert seit: Mar 2013
Beiträge: 13
janbuk63 befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von traderdoc Beitrag anzeigen
Die MagicNumber kannst Du frei wählen, muß aber ein int-Wert sein.
Die Frage ist nur, meinst Du die Magicnumber oder meinst Du die TicketNumber?
Die haben beide miteinander überhaupt nichts zu tun!
Und wenn ich mir das so alles durchlese, dann glaube ich zu meinen, dass Du eigentlich die TicketNumber meinst, die ein Unikat ist und vom System vergeben wird. Auf die Nummer hast Du keinen Einfluß. Sie wird aber auch sofort vergeben, wenn die Order aufgegeben wird, egal ob Market- oder PendingOrder.
Abzufragen über OrderTicket() in der bewußten for-Schleife.

Mir ist aber immer noch nicht klar, was Du wann voneinander unterscheiden willst mit der MagicNumber?
Außerdem wird in der Funktion MarketOrder() keine MagicNumber an die Funktion OrderSend() übergeben! Wenn die nicht bei der Ausführung der Funktion OrderSend() extern aus dem EA von anderer Stelle übergeben wird, dann haben alle Deine Orders keine MagicNumber!

traderdoc
Dir ist immer noch nicht klar warum ich die Hedge Position unterscheiden will?

Also wenn die EA sagen wir an die 15 aktive Positionen öffnet mit Pendingorder und einige erreichen die TP und werden geschlossen und wie das ist, andere gehen in Minus und da will ich die Positionen zuerst ermitteln und wenn festgestellt worden ist das sie, sagen wir, 30 Pips in minus stehen eröffne ich ein Hedge-Position. Natürlich wenn die Verlust Position buy ist dann Hedge muss sell sein. Somit habe ich die buy abgesichert un später wennder Chart dreht wird zuerst das Hedge-Pos geschlossen und wenn der Chart weiter die Richung buy geht wird aus Verlust-buy-Pos eine Gewinn-Pos werden.
Wie das aber so ist dreht der Chart sehr oft die Richtung und es kommt vor das die Hedge-Pos mehrmals geschlossen wird und wieder gesetzt werden muss. Um diese ein bisschen zu begrenzen werde ich Zähler Close_Hedge_Times benutzen. Wenn der Zähler erschöpft ist sollen beide d.h Verlust-buy und Hedge-sell geschlossen werden. Damit ist das Hedgen gescheitert aber ich hoffe damit einige Trades reten zu können.

Mit der Nummer egal ob Magic oder Ticketnr. will ich ständig nach dem Hedge schauen und reagieren, uff wenn Du das jetzt immer noch nicht verstehst dann bin ich auf dem Holzweg und habe keine Ahnung!
Gruß
  #20 (permalink)  
Alt 16.04.13
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 1.875
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Genau das meinte ich:
"Also wenn die EA sagen wir an die 15 aktive Positionen öffnet mit Pendingorder und einige erreichen die TP und werden geschlossen "
Eine Pendingorder wird nur dann zur MarketOrder, wenn der Ausführungspreis auch erreicht wurde. Also wenn Du damit sagen willst, dass Du zuerst PendingOrders platzierst, aus denen dann Deine 15 aktiven Positionen werden, dann gehe ich da mit, ansonsten kann keine Pendingorder in den TP laufen.

Und wenn ich Dich richtig verstanden habe, liegen diese 15 Positionen alle auf einem Währungspaar? Und jeder einzelne Trade könnte bei -30Pips einen Hedge auslösen?

Das vielmehr entscheidende Moment ist die Tatsache, dass Du eine Verbindung herstellen mußt zwischen Deiner MarketOrder und dem dazugehörigen!!! Hedge. Das könnte man erreichen über die Verwendung von Globalen Variablen (GV) und indem man die TicketNumber der MarketOrder als Comment oder als MagicNumber in das OrderSend() der zu öffnenden Hedgeorder schreibt.
Die GV wird gesetzt, wenn eine Hedgeorder geöffnet wird und über die aus der Hedgeorder ausgelesene Comment oder MagicNumber hast Du den Bezug zur entsprechenden MarketOrder.
Man kann auch nur mit GVs arbeiten, denn die haben v.a. den Vorteil, dass die Werte der GVs auch erhalten bleiben, wenn der PC mal abstürzt oder wie auch immer wieder hochgefahren werden muß. Denn dann wären alle anderen, zur Laufzeit!!, gesetzten Variablen gelöscht und können nicht mehr als Informationsquelle dienen.

traderdoc
Thema geschlossen

Lesezeichen

Stichworte
ea, expert advisor, hedgen, 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:25 Uhr.



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