Hilfe bei EA Programmierung gesucht

Einloggen oder registrieren, um einen Kommentar zu schreiben
Aleksi-Trader
22
Aleksi-Trader  

Hallo,

Derzeit komme ich echt nicht weiter, zugegeben beschäftige ich mich mit der Programmierung noch nicht lange und bin noch am lernen.

Mein Ziel ist es ein einfachen EA zu schreiben der offene Positionen schließen soll wenn diese Positiv sind und ein vordefinierten Wert erreicht.

Dieser soll nur zu Testzwecken auf ein Demokonto laufen. Klar kann man TakeProfit nutzen aber dieser EA soll davon unabhängig sein.

Die offenen Positionen werden maximal 10 Stück sein.

hier mal die ersten zeilen:


#include<Trade\Trade.mqh>
CTrade trade;
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if (PositionsTotal()==10)
   CloseallpositivePositionen();
   
  }
//+------------------------------------------------------------------+
void CloseallpositivePositionen()
{
for (int i=PositionsTotal()-1; i>=0; i--)
{
int Ticket=PositionGetTicket(i);
int PositionpositivProfit=PositionGetDouble(POSITION_PROFIT);
}

Hoffe es ist bisher schon mal richtig.... jetzt ist die Frage wie ich die Positionen schließen kann wenn diese im Positive Bereich ist. z.b 0,50EUR


Danke für eure Unterstützung im vorraus.

Christian
3299
Christian  

Aleksi-Trader:

jetzt ist die Frage wie ich die Positionen schließen kann wenn diese im Positive Bereich ist. z.b 0,50EUR

Schaue mal in den Artikel -> https://www.mql5.com/de/articles/639

Wenn du dann den Profit der Position hast musst du ja nur noch mit (schematisch) dargestellt vergleichen

if ( pos_profit > 0.5)
 {
   close_pos(pos_selected);
 }

und dann die Position schließen.

PS:   Nutze die CTrade
MQL5 Cookbook: Wie man Position-Eigenschaften bekommt
MQL5 Cookbook: Wie man Position-Eigenschaften bekommt
  • www.mql5.com
Der vorangegangene Beitrag mit dem Titel "MQL5 Cookbook: Wie man unterschiedliche Print-Modi verwendet" beschrieb, wie man schnell ein Script schreiben und die benötigte Informationen mit Hilfe dreier unterschiedlicher Modi drucken kann. Jetzt werden wir ein Script erzeugen, das alle Position-Eigenschaften abruft und dem Anwender anzeigt. Dies...
Aleksi-Trader
22
Aleksi-Trader  

Hallo Christian, vielen Dank für deine schnelle Antwort.

Der derzeitige Code sieht jetzt so aus:


#include<Trade\Trade.mqh>
CTrade trade;
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   
   CloseallpositivePositionen();
   
  }
//+------------------------------------------------------------------+
void CloseallpositivePositionen()
{
for (int i=PositionsTotal()-1; i>=0; i--)

int Ticket=PositionGetTicket(i);
int PositionpositivProfit=PositionGetDouble(POSITION_PROFIT);

if ( PositionpositivProfit > 0.5)
 {
   trade.PositionClose(PositionpositivProfit);
 }
 }

Hoffe ich hab jetzt nix vergessen. Werde den mal am Montag testen hoffe das Funktioniert so.

Allerdings geben mir die 2 Warnungen im Kompiler zu denken, nur komme ich nicht drauf wo der Fehler sein soll.


Gruß

Aleksi-Trader

amando
2953
amando  
Aleksi-Trader:

Hallo Christian, vielen Dank für deine schnelle Antwort.

Der derzeitige Code sieht jetzt so aus:



Hoffe ich hab jetzt nix vergessen. Werde den mal am Montag testen hoffe das Funktioniert so.

Allerdings geben mir die 2 Warnungen im Kompiler zu denken, nur komme ich nicht drauf wo der Fehler sein soll.


Gruß

Aleksi-Trader

Ich vermute mal, die eine ist in der zeile mit der position zu schliessen. Da gehört auch sicher die ticketnummer hin und nicht der profit

Aleksi-Trader
22
Aleksi-Trader  
amando:

Ich vermute mal, die eine ist in der zeile mit der position zu schliessen. Da gehört auch sicher die ticketnummer hin und nicht der profit

stimmt , muss ja die Position schließen und nich den Profit... der ja die Bedingung ist.

#include<Trade\Trade.mqh>
CTrade trade;

input int Profitwert  = 0.5;  // Profitwert
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
    if (Profitwert)
    {
      CloseallpositivePositionen();
    }
   
  }
//+------------------------------------------------------------------+
void CloseallpositivePositionen()
{
for (int i=PositionsTotal()-1; i>=0; i--)
{
int Ticket=PositionGetTicket(i); // Ticketnummer der aktuellen Position

int PositionProfit=PositionGetDouble(POSITION_PROFIT);
trade.PositionClose(Ticket);

}
}

Was mir nur nicht einleuchtet ist das die zeile

int PositionProfit=PositionGetDouble(POSITION_PROFIT);

 mit den Fehler "possible loss of data due to type conversion    t2.mq5    31    19" die Daten kommen doch in dem Falle von

input int Profitwert  = 0.5;  // Profitwert

Von Welchen Typ sollten die Daten sein?

Christian
3299
Christian  
Aleksi-Trader:

Hallo Christian, vielen Dank für deine schnelle Antwort.

Der derzeitige Code sieht jetzt so aus:



Hoffe ich hab jetzt nix vergessen. Werde den mal am Montag testen hoffe das Funktioniert so.

Allerdings geben mir die 2 Warnungen im Kompiler zu denken, nur komme ich nicht drauf wo der Fehler sein soll.


Gruß

Aleksi-Trader

Also wenn das dein Code ist, musst du weiter unten anfangen. Du brauchst erstmal ein Verständnis wie so ein Programm strukturiert ist.


Du musst ja erstmal eine Position aufmachen bevor du etwas schließen kannst.

Das sehe ich nicht.

Wenn dann gehört das in diesen Teil des EAs

void OnTick()
  {
   
   CloseallpositivePositionen();
   
  }

Ich kann dir nur sagen schaue dir andere frei ladbare EAs hier im Forum unten an und studiere sie.

Versuche zu verstehen was wann nötig ist.

amando
2953
amando  

Lies dir mal durch welche datentypen welche werte speichern können. Das ist mal Grundlage für jede programmierung.

dann geht der 2te fehler auch von selber weg

Einloggen oder registrieren, um einen Kommentar zu schreiben