trade.buy und trade.sell nicht ausgeführt ?

 

Hallo @community,

wenn ich mit ExpertAdvisor einen trade.buy im Format

           // Anzahl  , auf aktuellem Chart, zum ask-Preis, S/L , T/P               , comment
trade.Buy((buy_amount), NULL               , ask          , NULL, (ask*calc_procent), NULL );

erstelle, wird eine Position gekauft und bei Erreichen des T/P verkauft.

Will ich das ganze aber händisch realisieren, also mittels

trade.Buy((buy_amount), NULL, ask, NULL, NULL, NULL );

und

trade.Sell((buy_amount), NULL, bid2, NULL, NULL, NULL );

verschwindet im MT5 im Fenster "Werkzeuge", dort im Tab "Handel" die Position nicht. Der Wert für SELL (also mein bid2) wird aber erreicht. Somit sollte doch Buy und Sell abgeschlossen sein ?!? Ich muss jedoch die Einträge BUY und SELL immer händisch schließen. Kann das so richtig sein?

 

Das ist zu wenig Code aber ich würde es mal so versuchen:

trade.Buy((buy_amount), NULL, ask );
trade.Sell((buy_amount), NULL, bid2 );

Außerdem hilft oft der Debugger (mit hist. Daten), wenn eine Funktion nicht tut, was sie soll.

 

Also das ist eigentlich nur die void OnTick(), in der alles läuft. Sollte ja erstmal nur zum Testen gehen. Deshalb gibts da auch kaum Code.



// Instanz von Ctrade
CTrade trade;

int run = 0;
int run2 = 0;

void OnTick()
   {
   // Ask Preis berechnen 
   double ask = SymbolInfoDouble(_Symbol,SYMBOL_ASK);
   
   // Bid Preis berechnen
   double bid = SymbolInfoDouble(_Symbol,SYMBOL_BID);     
   double bid2 = bid * 1.01; // Erhöhung um ca. 1%

   if(run == 0)
      {

        // Anzahl, auf aktuellem Chart, zum ask-Preis, S/L , T/P, comment
        trade.Buy(1, NULL, ask );
        run++;
      }

  if(run2 == 0)
        {
        trade.Sell(1, NULL, bid2 );
        run2++;
        }
  }
                

Es soll ja erstmal zum Test nur 1x gekauft (ask) werden und dann bei Erhöhung um ~1% verkauft (bid2) werden. Aber das klappt ja schon leider nicht so recht.
Als Test hatte ich "run2++" auskommentiert. Dann wurde richtigerweise eine Aktie gekauft, aber 999999999 verkauft.

 
Hast Du schon mit dem Debugger (Strg+F5) versucht, die Entwicklung der Werte zu verfolgen?
 

Ich habe es mit meinem Demokonto in Echtzeit getestet. Im Chart als Comment stehen die Daten, die so auch erfüllt wurden. Kauf war bei 3225,01, aktuell ist der Kurs bei 3226,00 und verkauft werden soll bei 3225,74.

Das ist auch alles so eingetreten. Aber wie im Bild unten zu erkennen unter Werkzeuge>Handel, verschwinden die Positionen nicht. Wenn ich eine Aktie mit Buy und T/P anlege, verschwindet diese Aktie aus dem Fenster Werkzeuge>Handel. Das ist das Problem. Die Aktie ist also nicht "abgeschlossen" oder so.

Dateien:
BuySell.JPG  684 kb
 

Mit Deinem Code schließt Du keine Position, Du öffnest ein Buy und ein Sell.

Schau Dir einfach die Beispiele an im Verzeichnis \Experts\Examples\ wie die dort mit Öffnen und Schließen umgehen.

 
Ok,danke. Also beutetet dass für ein "einfaches" Kaufen/Verkaufen: Position öffnen, kaufen, warten auf höheren Kurs, verkaufen, Position schliessen?? Es wird also immer eine Position benötigt?
 

Auf Nettigkonten gibt es je Symbol nur eine Position, da würde Dein Code die offene Position schließen, auf Hedgekonten bleiben beide offen, bis sie jew. geschlossen werden. Schau Dir Beispiele an im o.a. Ordner oder auch in der CodeBase.
Da gibt es viele intelligente Lösung von Leuten mit viel Erfahrung, von denen man viel schnell lernen kann!

Hier ist ein Artikel über hedging: https://www.mql5.com/de/articles/2299

Aber such selber 'mal nach hedging account: https://www.mql5.com/de/search#!keyword=hedging%20account

MQL5 Code Base
MQL5 Code Base
  • www.mql5.com
Ein Kanal ist ein Handelsbereich zwischen Unterstützungs- und Widerstandslevel, in dem ein Aktienkurs für einen bestimmten Zeitraum schwankt. Dieser Indikator zeichnet die Widerstands- und Unterstützungslinien basierend auf den Hochs und Tiefs, die sich innerhalb eines definierten Zeitraums befinden. Volume Profile + Range v6.0 (former TPO...
 
Mhh, da bin ich wohl doch zu untalentiert. Ein "einfaches" OrderOpen, PositionOpen, Buy, PositionGetTicket, Sell, PositionClose scheint es dort als Beispiel nicht zu geben. 
Hast du vllt. einen konkreten Link zu einem Tutorial, wo Positionen geöffnet, gekauft, verkauft und wieder geschlossen werden?
 
In \Experts\Examples gibt es EAs die beispielhaft Handeln, zB. MACD
Grund der Beschwerde: