Trailing-Fonds-Funktion (Aktien) - hat jemand eine fertige Funktion gefunden? - Seite 4

 

Mein Vorschlag:

//+------------------------------------------------------------------+
//|Трал по эквити                                                    |
//+------------------------------------------------------------------+
bool EcvitiTral3(double EqvTralStep){
if(OrdersTotal()<1){ gEqviti=AccountBalance();return(false);}
if(!GlobalVariableCheck("step")){ EqvTralStep= EqvTralStep;}
  else{ EqvTralStep=GlobalVariableGet("step");}
EqvTralStep= EqvTralStep*(GlobalVariableGet("multi")-GlobalVariableGet("disable"));
  if( WithoutLoss){
    if(AccountEquity()>=AccountBalance()){
      if(AccountEquity()-AccountBalance()>((AccountBalance()/100)*( EqvTralStep*2))){ EqvTralStep= EqvTralStep*2;}
      if(AccountEquity()>( gEqviti+( gEqviti/100* EqvTralStep))){
        gEqviti= gEqviti+( gEqviti/200* EqvTralStep);
        eqvtrade=true;
        if(!GlobalVariableCheck("stop")){GlobalVariableSet("stop",0);}
      }
      if(AccountEquity()<= gEqviti){ CloseAll();Print("CloseAll");GlobalVariableDel("stop");return(false);}
      else{Comment(AccountFreeMargin()+AccountMargin(),"\n",
                 "EQUITY TRALING MODE\n",
                 "EQUITY TRALING STEP   =", EqvTralStep," %",
                 "\n ACCOUNT BALANS         = ",AccountBalance(),
                 "\n CLOSE LEVEL                  = ", gEqviti,
                 "\n ACCOUNT EQUITY        = ",AccountEquity(),
                 "\n NEXT STEP                     = ", gEqviti+( gEqviti/100* EqvTralStep));
                 return(true);
      }
    }else{GlobalVariableDel("stop");} 
  }else{
    if(AccountEquity()>AccountBalance()){
      if(AccountEquity()-AccountBalance()>((AccountBalance()/100)*( EqvTralStep*2))){ EqvTralStep= EqvTralStep*2;}      
      if(AccountEquity()>( gEqviti+( gEqviti/100* EqvTralStep))){
        gEqviti= gEqviti+( gEqviti/200* EqvTralStep);
        eqvtrade=true;
        if(!GlobalVariableCheck("stop")){GlobalVariableSet("stop",0);}
      }
      if(AccountEquity()<= gEqviti){ CloseAll();Print("CloseAll");GlobalVariableDel("stop");return(false);}
      else{Comment(AccountFreeMargin()+AccountMargin(),"\n",
                 "EQUITY TRALING MODE\n",
                 "EQUITY TRALING STEP   =", EqvTralStep," %",
                 "\n ACCOUNT BALANS         = ",AccountBalance(),
                 "\n CLOSE LEVEL                  = ", gEqviti,
                 "\n ACCOUNT EQUITY        = ",AccountEquity(),
                 "\n NEXT STEP                     = ", gEqviti+( gEqviti/100* EqvTralStep));
                 return(true);
      }
    }else{GlobalVariableDel("stop");}  
  }
return(false);
}
Der Call wird an den Anfang gestellt und überlappt den Rest der EA-Blöcke für die Schleppnetzzeit, der Trailing-Schritt ist variabel - quadratisch, was erlaubt, gut mit Aktiensprüngen zu arbeiten und den maximalen Gewinn zu erzielen. Der CU-Modus erlaubt es, unrentable Aufträge im Keim zu ersticken.
 
xrust >>:

Mein Vorschlag:

Der Trailing-Schritt ist variabel und ermöglicht es, Equity-Sprünge abzuarbeiten, um den maximalen Gewinn zu erzielen. Der CUE-Modus ermöglicht es, unrentable Aufträge im Keim zu ersticken.

Guten Tag,xrust! Bitte erklären Sie uns etwas mehr über die Funktionsweise dieses Geräts. Ich kann es nicht zum Laufen bringen.

Ich kann es nicht zum Laufen bringen.

1. Funktion CloseAll(), es muss eine f-Funktion sein, die alle Aufträge löscht und/oder die Positionen schließt.

Ich habe ein Analogon dieser Funktion, und hier gibt es kein Problem.

2. ich habe es in den Eigenschaften definiert.

extern bool WithoutLoss = true;

- Was ist dieser Parameter?

3.

extern double gEqviti=200;// - ist dies die Größe des zu erreichenden Eigenkapitals, bei der das Schleppnetz zu arbeiten beginnt?

4. Ich habe auch -

bool eqvtrade;

Was muss noch eingestellt werden? Wie wird der Parameter EqvTralStep; eingestellt?

Und beschreiben Sie bitte (wenn es nicht schwierig ist) in 2-3 Worten, wie die Funktion in allgemeiner Form funktioniert.

 
Die Funktion wird ganz am Anfang des EA unmittelbar nach int Start() aufgerufen:
//удаляем запрет на торговлю после удаления всех ордеров 
  if(OrdersTotal()<1){
    if(GlobalVariableCheck("stop")){GlobalVariableDel("stop");}  
    gEqviti=AccountBalance(); 
  } 
//тралим эквити
  if( EcvitiTral3( EqwTralStep)){return(0);}
  if(GlobalVariableCheck("stop")){return(0);}

wenn eqviti über den Saldo gestiegen ist, blockiert es alle Stahlfunktionen und Schleppnetze von EA.

Nun zu den Variablen: in globalen Variablen static double gEqviti;

extern double EqwTralStep=0.03; Nachlaufschritt in Prozent des Eigenkapitals extern bool WithoutLoss=false; ermöglicht die Anwendung der Breakeven-Methode

So funktioniert diese Funktion: Wenn das Eigenkapital den Saldo übersteigt, wird der Saldo auf Null gesetzt, was bedeutet, dass er geschlossen werden muss. Wenn das Eigenkapital den Saldo um EqwTralStep in Prozenten übersteigt, wird der Saldo nach oben verschoben.

 
Ich danke Ihnen! Ich werde es ausprobieren.
 

Bitte zögern Sie nicht, wenn Sie irgendwelche Schwierigkeiten haben...

 

Erledigt. Es läuft und läuft. Bis jetzt funktioniert es gut. Ich bin seit einer zweiten Woche online.

Aber. Von Zeit zu Zeit kommt es zu seltenen Pannen.

Normalerweise habe ich 3-10 Positionen gleichzeitig auf dem Markt.

Aber - Wenn eine Position im Markt ist, schließt sie plötzlich mit einem Gewinn =1-2 Pips, ohne ersichtlichen Grund!

Ich verstehe nicht, warum. Der Basiscode meines Expert Advisors sieht eine solche Situation nicht vor.

 

Solche Glattstellungen können durch einen starken Kursausschlag und eine Bewegung auf ein neues Schlussniveau verursacht werden, was zur Folge hat, dass die Position geschlossen wird.

Tun Sie das:

организуйте в функции стическую переменную static double prewlewel;

потом перед , или за комментами 

  if( prewlewel!= gEqviti){
    prewlewel= gEqviti;
    Print( prewlewel);
  } 

А здесь добавьте обнуление переменной 
if(OrdersTotal()<1){ gEqviti=AccountBalance(); prewlewel=0;return(false);}
 

xrust - Ichhabe eine Anregung/Bitte an Sie - können Sie den Code Ihrer Version des Equity Trawl als eigenständigen EA bringen.

Es wäre ein sehr nützliches Instrument für Handelstreibende.

Ich bin schon lange auf der Suche nach einem solchen Tool, habe aber nichts Geeignetes gefunden, und ich selbst bin nicht gut im Programmieren (oder eher schwach).

 
ToKa_TuXa писал(а) >>

xrust - Ichhabe einen Vorschlag an Sie - können Sie den Code Ihrer Version des Equity Trawl als eigenständigen EA bringen.

Es wäre ein sehr nützliches Instrument für Handeltreibende.

Gute Idee! Ich unterstütze Sie...

In der Tat. Ein solches Design wird nicht unbemerkt bleiben.

 
Probieren Sie es aus. Einfach zu bedienen. Ich benutze es selbst. Sie müssen lediglich den gewünschten Gewinn und den Prozentsatz des zulässigen Drawdowns nach Erreichen des Gewinns angeben.