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

 
utiliser les variables globales en option
 

C'est ainsi que j'ai réalisé une prise de bénéfices dans un de mes EA :

extern double ProfitAutoClose = 100.0 ; // Incrément pour la prise de bénéfices

double Depo ;

int init()
{
//----
Depo=AccountEquity() ;
GlobalVariableSet("Depo",Depo) ;
//----
return(0) ;
}

int start()
{

Depo=GlobalVariableGet("Depo") ;

if(AccountEquity()-Depo>ProfitAutoClose)
{

ClosePositions("0",-1, Mn);//fermer toutes les positions

Depo=AccountEquity() ;

GlobalVariableSet("Depo",Depo) ;

}

...

 
Rita >> :

C'est précisément la difficulté. Comment déterminez-vous l'équité dans la ou les étapes précédentes ?

Vous devez vous fier à une valeur d'équité antérieure. D'où vient-elle - la valeur précédente ?

OBTENIR UNE VARIABLE.

 

Merci à tous. Oui, en effet.

J'ai fermé sur la prise de bénéfices (de khorosh) et cette option fonctionne très bien. Et après avoir optimisé le paramètre ProfitAutoClose, le drawdown a considérablement diminué !


Cependant, il ne s'agit pas exactement d'une taille d'équité.

Comment ajouter l'équité de suivi ici ? Est-ce que j'introduirais une autre variable ?

 
Jetez un coup d'œil à l'équité de suivi dans le nouveau conseiller d'Igor Kim.
 

Merci, granit77!

Mais c'est la version que j'ai expérimentée à l'origine. Il ne conviendra pas, car le chalut est repoussé hors de l'équilibre et interagit avec l'équilibre. C'est le profit qui est recherché.

Dans mon EA, les fonds propres sont toujours inférieurs au solde et cette construction n'est pas adaptée.

Je l'ai déjà mentionné (dernier message de la 7e page) :

"Comment puis-je traîner l'équité si mon EA montre toujours un profit négatif ?
C'est-à-dire qu'il n'y a pas de profit, mais il y a une perte actuelle (c'est le fonctionnement spécifique de l'EA, chaque position individuelle se ferme (la plupart du temps) dans le plus, mais toutes les positions ouvertes dans ce cas sont toujours dans la perte).

 
Rita >> :

Et avec mon EA - l'équité est toujours en permanence en dessous de l'équilibre et cette construction ne convient pas.

Fermez d'abord les transactions non rentables, puis celles qui sont rentables. Le solde tombera en dessous des fonds propres (ce qui est équivalent aux fonds propres au-dessus du solde).

// Cela n'affectera en rien la rentabilité.

Sinon, j'en déduis que vous avez tendance à être nerveux sur le fait même de "équité<équilibre". Si frustré, en fait, que vous ralentissez un peu. ;)

En gros, vous pouvez m'envoyer le code source (si vous ne voulez pas le rendre public) et je le corrigerai pour vous.

 

Rita, voici un aperçu du code (à titre d'exemple), que j'ai fait moi-même, sans l'utiliser, mais qui a fonctionné comme je m'en souviens maintenant :)

pas de liens avec les bilans, les bénéfices des bilans et autres choses inutiles

(vérifier soigneusement avant utilisation, modifier selon vos besoins)

if (!GlobalVariableCheck("StopTrading")) {if (!GlobalVariableCheck("TrStopEquity")) { int sl=SL_Equity; int tp=TP_Equity; if (( sl!=0 && AccountEquity()<=sl) || (tp!=0 && AccountEquity()>=tp)){ GlobalVariableSet("StopTrading",1); Sleep(500); ClosePositions(); if ( ShowComment){ comm="Commerce terminé. Tous les échanges sont fermés.\n"; comm=comm+"Expert Advisors arrêté à : "+TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS); Commentaire( pref, comm);}} } }si (!GlobalVariableCheck("StopTrading")) {bool tr_stop=TrStop_Equity; int tr_step=TrStep_Equity; int tr_dist=TrDist_Equity; int tr_lvl =TrStartLvl_Equity;if (( tr_stop)||( tr_lvl!=0 && AccountEquity()>=tr_lvl)||(GlobalVariableCheck("trStopEquity")) { if (!GlobalVariableCheck("TrStopEquity")){ GlobalVariableSet("TrStopEquity",1);} Sleep(500); si (!GlobalVariableCheck("SL_Equity")){ GlobalVariableSet("SL_Equity",(AccountEquity()-tr_dist));} Sleep(500); sl=GlobalVariableGet("SL_Equity"); si (AccountEquity()<=sl){ GlobalVariableSet("StopTrading",1); Sleep(500); GlobalVariableDel("TrStopEquity"); Sleep(500); GlobalVariableDel("SL_Equity"); Sleep(500); ClosePositions(); if ( ShowComment){ comm="Commerce terminé. Tous les échanges sont fermés.\n"; comm=comm+"Expert Advisors arrêté à : "+TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS); Commentaire( pref, comm);}} else{si (AccountEquity()>( sl+tr_dist+tr_step)GlobalVariableSet("SL_Equity",(AccountEquity()-tr_dist);Dormir(500);if ( ShowComment) { comm="Le Trailing Stop est en cours d'exécution :\n"; comm=comm+"Niveau Stop Loss : "+DoubleToStr(NormalizeDouble( sl,2),2)+"\n"; comm=comm+TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS);Commentaire( pref, comm); } }} 
Les fonctions utilisées sont celles de Kim, trouvez-les sur le forum si vous ne les avez pas déjà.
 

Si vous avez un trawl pour l'équité, s'il vous plaît, envoyez-nous un simple one- fermer toutes les positions et supprimer tous les ordres si l'équité = ХХХХ, c'est-à-dire que si mon solde était de 10000 avant d'ouvrir des positions, je fixe l'équité à 10500 dans le trawl et dès que l'équité = 10500, fermer tous les ordres et les positions ouvertes).

J'ai regardé celui de Kim ... Je pense que tout cela a l'air un peu compliqué ...) ci-dessus dans ce fil ...) Merci d'avance :)

 

Ah, c'est ça, je crois que je l'ai trouvé juste au-dessus... stCloseOrders semble être le bon :)

Mais si quelqu'un a quelque chose de similaire, qu'il le fasse... on n'est jamais trop utile :)

Raison: