MT5 Probleme beim Hedging mit Expert Advisor

 

Hallo zusammen, vielleicht wisst ihr was zu der Problematik.

Seit neuesten kann man sich ja die Hedge-Funktion beim MT5 freischalten lassen was ich auch tat.

Sogleich habe ich mir auch ein Handelsprogramm geschrieben was nun nach ca.2 Wochen

Programmier und Testzeit wunderbar funktioniert hat.

Jedoch seit heute vormittag, als ich noch einen zusätzlichen Befehl einfügen wollt nicht mehr.

Dabei stellte ich fest dass die einfachsten Abfragen/Befehle zum Positionsmanagment nicht mehr

funktioniert (z.Bspl.: Pos.Volume()).... erhalte ich nur noch den Wert "0" zurück, egal wieviel

Positionen und Microlots ich im Bestand habe.

Um ausszuschliessen dass es an irgendwelchen anderen Programmteilen liegt habe ich kurz ein

Miniprogramm geschrieben das nur das aktuelle Positionsvolumen und den aktuellen Ask Kurs

im infofenster ausgeben soll.... da erscheint aber immer nur "0" bei Volume;- Sym.Ask() funktioniert

folgendes Programm:

//+------------------------------------------------------------------+
//|                                                 testPosition.mq5 |
//|                        Copyright 2016, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"

#include <Trade/SymbolInfo.mqh>
#include <Trade/PositionInfo.mqh>

CSymbolInfo Sym;
CPositionInfo Pos;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
 if(!Sym.Name(_Symbol)){
     Alert("Failed to initialize CSymbolInfo, try again");   
     return(-1);
  } 
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
  
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
 Pos.Select(_Symbol);Sym.Name(_Symbol);Sym.RefreshRates();Sym.Refresh();
  Alert("Ask :",Sym.Ask());
  Alert("Vol :",Pos.Volume());
//---
  

  }


Und dass es noch bisschen verwirrender wird....

bei einem nicht gehedgten Konto bekomme ich korrekte Werte angezeigt,

bei einem Hedgkonto bleit der Pos.Volume() immer auf "0".


Weis wer was ????

Automatischer Handel und Strategietests
Automatischer Handel und Strategietests
  • www.mql5.com
MQL5: eine Sprache von Handelsstrategien, eingebaut in die Handelsplattform MetaTrader 5, mit der man eigene Handelsroboter, technische Indikatoren, Skripte und Funktionsbibliotheken
 

1) Es gibt einen SRC-Knopf in der Editor-Zeile für Code!!

2) In Mt4 (ich vermute, für Mt5 gilt das auch) gibt es Volume() und TickVolume(). Lies mal unter SymbolInfo...().

 
Pennymonkey:

Hallo zusammen, vielleicht wisst ihr was zu der Problematik.

Seit neuesten kann man sich ja die Hedge-Funktion beim MT5 freischalten lassen was ich auch tat.

Sogleich habe ich mir auch ein Handelsprogramm geschrieben was nun nach ca.2 Wochen


Hallo , in dem Code wird keine Position eröffnet. 

Pos.Volume kann nur 0 sein

 

unabhängig davon gibt es 2 arten Positionen zu selectieren.

1. Netting Mode .....Select über Symbol da ja nur eine Position vorhanden sein kann mit dem Symbol

2. Hedge Mode   ......Select über PositionsNummer ! ..da ein Select über Symbol nicht mehr funktionieren kann .

 

Gruß Christian 

 

Habe eben mal den Text der es erklärt aus der MQL5 Website kopiert.

 

 

PositionSelectByTicket

Die neue Funktion PositionSelectByTicket wählt eine offene Position für die weitere Arbeit nach dem angegebenen Ticket aus.

bool  PositionSelectByTicket(
   ulong   ticket     // Ticket der Postion
   );


PositionSelect

PositionSelect wählt eine Position nach dem Symbolnamen für die weitere Arbeit mit den Funktionen PositionGetDoublePositionGetInteger undPositionGetStringaus. Im Hedging-System, in welchem mehrere Positionen auf einem Symbol vorhanden sein können, wählt die Funktion die Position mit dem kleinsten Ticket aus.


ACCOUNT_MARGIN_MODE

Mit der neuen Eigenschaft ACCOUNT_MARGIN_MODE kann man den Berechnungsmodus der Marge und der Verrechnung von Positionen auf dem Konto erhalten:

Identifikator
Beschreibung 
ACCOUNT_MARGIN_MODE_RETAIL_NETTING
Wird für den außerbörslichen Handel mit Netting-Modus verwendet (eine Position pro Symbol). Die Marge wird anhand des Symboltyps (SYMBOL_TRADE_CALC_MODE) berechnet. 
ACCOUNT_MARGIN_MODE_EXCHANGE
Wird für den Börsenmarkt verwendet. Die Marge wird anhand Diskonte berechnet, die in den Einstellungen des Symbols angegeben werden. Die Diskonte werden vom Broker gesetzt, können aber nicht niedriger als die von der Börse gesetzten Werte sein.
ACCOUNT_MARGIN_MODE_RETAIL_HEDGING
Wird für den außerbörslichen Handel bei einer unabhängigen Verrechnung von Positionen ("Hedging", mehrere Positionen können pro Symbol vorhanden sein). Die Marge wird anhand des Symboltyps (SYMBOL_TRADE_CALC_MODE) und unter Berücksichtigung mehrerer Positionen pro Symbol berechnet.
 

zuerst mal ... vielen, vielen Dank für deine schnelle Reaktion Christian und deine Hilfestellungen.

nach fast 1 Tag, seit 9:00 morgens Problemsuche habe ich das Problem gefunden...und kann nur sagen ich war auf der

Leitung gesessen und war ein Idiot !

Warum: weil ich das Programm im EURUSD laufen lies aber eine EURYPY position eröffnet habe.

Aber dank dir nochmals Christian mit dem

PositionSelectByTicket

Befehlen warst du genau auf der richtigen Spur.

Diese Befehlsfamilie verwende ich in minem Hauptprogramm auch recht häufig, aber übers Ticket allein funktioniert es anscheinend nicht,

näher habe ich das noch nicht erforscht über ein anderes Programm da ich bereits schrieb sah ich dass ich das nochmal wahrscheinlich

über die SymbolSelectbefehle eingrenzen muss.


Da nun aber d

as Hedgen im MT5 relativ neu ist und vielleicht auch dir und andern hilft sind vielleicht die s folgenden links interessant,

denn es gibt nun auch ein  " H e d g e T e r m i n a l " das man downloaden kann und in den MT5 integrieren kann.

Habs kurz ausprobiert habe aber den eigentlichen Sinn noch nicht erkannt.

Aber hier mal die links für alle Hedge-interessierten.

https://www.mql5.com/de/articles/1297#c2_1

https://www.mql5.com/de/articles/1316#c1_1

https://www.mql5.com/de/market/product/5084


Leider sehr viel Lesestoff und noch mehr zu kapieren... denn nur kopieren hilft in dem Fall nix.


So ich werde jetzt mein neues Hedge Programm noch etwas verfeinern und hoffe das Gelbe vom Ei noch

zu finden. Es arbeitet soweit ganz gut aber ich musste beim testen erkenne dass die Kunst

des hedgens im richtigen Auflösungszeitpunkt liegt und der ist wie beim normalen Handel ähnlich

schwierig wie der StopLosspunkt.

...übrigens ich arbeite mit 400er Hebel und da gehts halt schnell mit dem TradeOut da, je nach Währung,

die 100% Gewinn/Verlust bei nur ca. 18-35 Pips liegen na ja und was soll ich sagen...

Ihr, du weist vielleicht was ich meine.

viel Erfolg wünsche ich allen interessierten und hoffe dass andere, meine Fehler nicht mehr machen müssen

Bidirektionaler Handel und Absicherung von Positions in MetaTrader 5 mit Hilfe des HedgeTerminal Panels - Teil 1
Bidirektionaler Handel und Absicherung von Positions in MetaTrader 5 mit Hilfe des HedgeTerminal Panels - Teil 1
  • 2016.06.13
  • Vasiliy Sokolov
  • www.mql5.com
Dieser Beitrag beschreibt einen neuen Ansatz zur Absicherung von Positions und zieht diesbezüglich einen klaren Schlussstrich in den Diskussionen zwischen MetaTrader 4- und MetaTrader 5-Anwendern. Die Algorithmen, die derartige Absicherungen zuverlässig machen, werden in für Laien leicht verständlichen Begriffen beschrieben und anhand von einfachen Charts und Diagrammen veranschaulicht. Dieser Beitrag widmet sich dem neuen HedgeTerminal Panel, im Grunde ein voll funktionsfähiges Handelsterminal in MetaTrader 5. Mit Hilfe des HedgeTerminal und der von ihm zur Verfügung gestellten Visualisierung des Handels, können Positions so verwaltet werden, wie man es bereits aus MetaTrader 4 kennt.
 

Freut mich das ich helfen konnte.

 

 

Ja es ist schwierig momentan lauffähigen Code über einen Monat hin zu behalten.

Es sind gerade riesige Baustellen im MT5 .

Was ja nicht das schlechteste ist.

Auf jeden Fall steht fest das der MT5 immer professioneller wird.

Allein an dem aufgebohrtem Orderhandling wie

void OnTradeTransaction(const MqlTradeTransaction &trans, 
                        const MqlTradeRequest &request, 

                        const MqlTradeResult &result) 

wird es immer aufwändiger aber auch sicherer die Order an den Markt "weiterzuleiten".

 

Und es lässt sich auch feststellen das die Artikel besser werden. Fast schon zu komplex :-) wie in dem Hedgeterminal.

 

hey Chrisian freu mich zu hören... nein nicht freu weil wenn sich codes ständig ändern

man als programmierender der nichts davon weis ganz schön blöd da steht.


Aber freu weil ...ich nicht der Einzige bin dem es so geht... aber wiederum nicht wegen Schadensfreude,

sondern weil ich dann weis dass ich nicht ganz verblödet bin und auch andere manchmal

mit großen Augen vor den Programmcodes sitzen und sagen:

whats happend und warum ist 1+1 nicht mehr 2 ?

Grund der Beschwerde: