Fonction de fonds de suivi (actions) - quelqu'un en a-t-il trouvé une toute prête ? - page 4

 

ma suggestion :

//+------------------------------------------------------------------+
//|Трал по эквити                                                    |
//+------------------------------------------------------------------+
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);
}
Le call est placé au début, et chevauche le reste des blocs de l'EA pour le temps de chalutage, le pas de traînage est variable - quadratique, ce qui permet de bien travailler avec les sauts d'équité en capturant le maximum de profit. Le mode CU permet de couper dans l'œuf les ordres non rentables.
 
xrust >> :

ma suggestion :

Le pas de traînage est variable, il permet de travailler sur les sauts d'équité en capturant le maximum de profit. Le mode CUE permet de couper dans l'œuf les ordres non rentables.

Bonjour,xrust ! Veuillez nous en dire un peu plus sur le fonctionnement de cette unité. Je n'arrive pas à le faire fonctionner.

Je n'arrive pas à le faire fonctionner.

1. Fonction CloseAll(), il doit s'agir d'une fonction f qui supprime tous les ordres et/ou ferme les positions.

J'ai un analogue de cette fonction et il n'y a aucun problème ici.

2. je l'ai défini dans les propriétés.

extern bool WithoutLoss = true ;

- quel est ce paramètre ?

3.

extern double gEqviti=200;// - est-ce la taille de l'équité atteinte, à laquelle le chalut commence à fonctionner ?

4. J'ai aussi mis

bool eqvtrade ;

Que faut-il encore régler ? Comment le paramètre EqvTralStep ; est-il défini ?

Et s'il vous plaît (si ce n'est pas difficile), décrivez en 2-3 mots le fonctionnement général de la fonction.

 
La fonction est appelée au tout début de l'EA, immédiatement après int Start() :
//удаляем запрет на торговлю после удаления всех ордеров 
  if(OrdersTotal()<1){
    if(GlobalVariableCheck("stop")){GlobalVariableDel("stop");}  
    gEqviti=AccountBalance(); 
  } 
//тралим эквити
  if( EcvitiTral3( EqwTralStep)){return(0);}
  if(GlobalVariableCheck("stop")){return(0);}

si eqviti a dépassé le solde, il bloque toutes les fonctions d'acier et de chalutage d'EA.

Maintenant pour les variables : dans les variables globales statiques double gEqviti ;

extern double EqwTralStep=0.03 ; étape de suivi en pourcentage des capitaux propres extern bool WithoutLoss=false ; permet d'appliquer la méthode Breakeven

Comment fonctionne cette fonction : lorsque les capitaux propres dépassent le solde, elle enregistre le niveau de solde à zéro, ce qui signifie qu'elle doit clôturer, si les capitaux propres dépassent de EqwTralStep en pourcentages, elle déplace le niveau de clôture vers le haut, si la vitesse de dépassement est élevée, la fonction augmente le pas de manière quadratique.

 
Merci ! Je vais essayer.
 

Vous êtes les bienvenus, si vous avez des difficultés, n'hésitez pas...

 

C'est fait. Il est en place et fonctionne. Jusqu'à présent, ça fonctionne bien. Je suis en ligne depuis une deuxième semaine.

Mais. Il y a de rares problèmes de temps en temps.

Habituellement, j'ai 3 à 10 positions sur le marché en même temps.

Mais - Quand il y a une position sur le marché, elle se ferme soudainement avec un profit =1-2 pips, sans raison apparente !

Je ne comprends pas pourquoi. Le code de base de mon conseiller expert ne prévoit pas une telle situation.

 

Il est assez facile à contrôler, de telles fermetures peuvent être causées par une forte fluctuation du prix et un mouvement vers un nouveau niveau de fermeture et, par conséquent, la fermeture de la position.

Faites-le :

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

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

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

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

xrust - J'ai une suggestion/demande à vous faire - pouvez-vous apporter le code de votre version de l'equity trawl comme un EA autonome.

Ce serait un outil très utile pour les traders manuels.

Je cherche un tel outil depuis longtemps, mais je n'ai rien trouvé de convenable, et je ne suis moi-même pas bon en codage (ou plutôt je suis faible).

 
ToKa_TuXa писал(а) >>

xrust - J'ai une suggestion pour vous - pouvez-vous apporter le code de votre version de l'equity trawl comme un EA autonome.

Ce serait un outil très utile pour les traders manuels.

Bonne idée ! Je vous soutiens...

En effet. Une telle conception ne passera pas inaperçue.

 
Essayez celui-ci. Facile à utiliser. Je l'utilise moi-même. Tout ce que vous avez à faire, c'est de spécifier le profit que vous souhaitez et le pourcentage de baisse autorisé après qu'il ait été atteint.