Nützliche Funktionen von KimIV - Seite 120

 

Guten Tag.

Ich habe die Funktion GetProfitOpenPosInCurrency() so geändert, dass sie die schlechteste Verlustposition zurückgibt. Können Sie bitte mitteilen, welche Funktionen geeignet wären, um die Eröffnungszeit dieser Position (OrderOpenTime()) zurückzugeben?

double GetMaxLoseOpenPosInCurrency(string sy="", int op=-1, int mn=-1) {
  double p=0;
  int    i, k=OrdersTotal();

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if ((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (mn<0 || OrderMagicNumber()==mn) 
            if(p > OrderProfit() + OrderSwap() + OrderCommission()){
            p=OrderProfit()+OrderCommission()+OrderSwap();
          }
        }
      }
    }
  }
  return(p);
}
 
abeiks:

Guten Tag.

Ich habe die Funktion GetProfitOpenPosInCurrency() so geändert, dass sie die schlechteste Verlustposition zurückgibt. Können Sie bitte mitteilen, welche Funktionen geeignet wären, um die Eröffnungszeit dieser Position (OrderOpenTime()) zurückzugeben?


Geben Sie die Ticketnummer zurück und Sie können mit den Standardfunktionen
 
Vinin:

Geben Sie die Ticketnummer zurück und Sie können auf die Standardfunktionen verzichten

Ich danke Ihnen.
 

KimIV , hallo.Suche--Kann nicht finden, das Skript--Löschen Sie alle ausstehenden Aufträge auf das Symbol--und Schleppnetzauf das Symbol, vielleicht gibt es---Post........ nicht betrachten es unverschämt.Vielen Dank im Voraus .

 

Guten Tag.

Ich verwende die Funktion isTradeTimeInt() von KimIV. Ich werde viele Zeitintervalle verwenden und für jedes Intervall verschiedene Variablen zuweisen. Ich habe diesen Code dafür erstellt (bisher 2 Intervalle). Die Frage ist, ob dies die richtige Lösung ist oder ob ich die Aufgabe anders angehen sollte.

extern int OH1=9;extern int OM1=0;extern int CH1=12;extern int CM1=0;
extern int OH2=13;extern int OM2=0;extern int CH2=15;extern int CM2=0;

int HourOpenTime()
{
int trade = 0;
if(isTradeTimeInt(OH1,OM1,CH1,CM1))trade = 1;
if(isTradeTimeInt(OH2,OM2,CH2,CM2))trade = 2;
return (trade);
}
 
bestseich:

Lieber Igor Kim, helfen Sie mir, eine Funktion wie OrderCloseBy() zu schreiben , aber sie sollte auf verschiedenen Paaren und OrderProfit()funktionieren , und es spielt keine Rolle, ob die Aufträge unterschiedlich gerichtet sind oder nicht, wie ein OrderProfit() > ein anderes, ein anderes Paar, um wie viele Punkte und beide, genau, nur diese zwei, gleichzeitig schließen. Meine Variante sieht folgendermaßen aus:

for (int i=OrdersTotal()-1;i>=0;i--)

{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()!=Symbol()||OrderSymbol()==Symbol())
{
if(OrderProfit()>=pr*Point)//pr ist in den Parametern, Punkte Gewinn
int ot=OrderTicket();double op=OrderProfit();
if(OrderProfit()<=pru*(-1)*Point)//pru-es steht in den Parametern, Verlustpunkte
int otu=OrderTicket();double opu=OrderProfit();
if(op>opu*v*(-1)&&(OrderType()==OP_BUY||OrderType()==OP_SELL))
//v ist ein Gewinn/Verlust-Verhältnis, d. h. 1,5
OrderClose(otu,OrderLots(),Bid,sleep,Blue);
OrderClose(ot,OrderLots(),Bid,sleep,Blue);
OrderClose(otu,OrderLots(),Ask,sleep,Blue);
OrderClose(ot,OrderLots(),Ask,sleep,Blue);

}}}

Wird es funktionieren? Korrigieren Sie diese oder schlagen Sie eine eigene Lösung vor, wenn Sie nichts dagegen haben.

 

Lieber Igor!

Könnten Sie uns bitte mitteilen, ob Sie eine Funktion haben, die das Losvolumen in Abhängigkeit vom Kontostand berechnet, nachdem Sie den letzten Auftrag geschlossen haben und bevor Sie den nächsten eröffnen?

Ich danke Ihnen im Voraus.

 
vasabu2012:

Lieber Igor!

Könnten Sie uns bitte mitteilen, ob Sie eine Funktion haben, um das Losvolumen in Abhängigkeit vom Kontostand zu berechnen, nachdem Sie den letzten Auftrag geschlossen haben und bevor Sie den nächsten eröffnen?

Ich danke Ihnen im Voraus.

Hier ist die Funktion von Igor.

Dateien:
b-lots.mqh  3 kb
 

Im Update hat die Funktion PriceOpenLastPos aufgehört, in den Bedingungen zu funktionieren, das hat mir fast das Hirn zerbrochen, sie gibt Werte in den Kommentaren aus, funktioniert aber nicht in den Bedingungen, eine kleine Bearbeitung hat das Problem gelöst.

double PriceOpenLastPos(string sy="", int op=-1, int mn=-1) {
datetime t;
double r=0, r2=0;
int i, k=OrdersTotal();

if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==sy || sy=="") {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (op<0 || OrderType()==op) {
if (mn<0 || OrderMagicNumber()==mn) {
if (t<OrderOpenTime()) {
t=OrderOpenTime();
r=OrderOpenPrice();
}
}
}
}
}
}
}

r2 = DoubleToStr(r, 4);

return(r2);
}


 
Bitte helfen Sie, den EA neu zu kompilieren e-CloseByEquity.rar mit Programmieränderungen in MetaEditor