Questions des débutants MQL5 MT5 MetaTrader 5 - page 837

 
Aleksey Vyazmikin:

Vous êtes en train de chercher à vous ressourcer ? En ce qui concerne la réduction des fonds propres, c'est comme ça que ça marche pour moi.

L'homme n'a pas besoin de tout fermer, il n'a pas besoin de chercher quoi que ce soit dans l'histoire, a-t-il écrit :

Forum sur le trading, les systèmes de trading automatisés et l'essai de stratégies de trading

Questions des débutants MQL5 MT5 MetaTrader 5

Denis Pershin, 2018.03.22 21:13

J'ai déposé 500, si le solde a augmenté de 10%, je peux retirer ces 10%, à condition que le prélèvement actuel ne dépasse pas 5%. Ces entrées sont dans la fonction, cela ne fonctionne pas pour calculer exactement la croissance et le drawdown.

Et suite à cela, comme il est clair dans le message :

if(_ldd < _dd) TesterWithdrawal(_dep-_bal); // Снимаем: нач.депозит - баланс }

TesterWithdrawal

Документация по MQL5: Общие функции / TesterWithdrawal
Документация по MQL5: Общие функции / TesterWithdrawal
  • www.mql5.com
Общие функции / TesterWithdrawal - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Vitaly Muzichenko:

L'homme n'a pas besoin de tout fermer, il n'a pas besoin de chercher dans l'histoire, a-t-il écrit :

Eh bien, pour faire suite à la clarté du message :

TesterWithdrawal

Je pensais que l'homme devait prendre une décision de retrait sur le réel, ayant préalablement arrêté le commerce...

Je n'ai pas compris ce qu'il voulait.

 
Aleksey Vyazmikin:


C'est exact, je dois garder un montant sur le solde pendant le test, retirer l'augmentation, le robot est sans réinvestissement, et négocie une grille sur une base martingale, donc il y a constamment des transactions ouvertes sur le marché

 
Denis Pershin:

Très bien, j'ai besoin de garder un montant sur le solde pendant le test, retirer l'incrément, le robot n'a pas de réinvestissement, et trade une grille sur martingale, donc il y a constamment des trades ouverts sur le marché.

Quoi qu'il en soit, la logique ne change pas : mémorisez le solde initial et surveillez la croissance et le prélèvement, puis retirez... Vous avez besoin de quelque chose sur le code ?

 
Aleksey Vyazmikin:

Si vous pouvez m'aider, veuillez m'aider avec le code :

// dep=нач.депозит, growth=прирост %, _dd=допустимая просадка %
void Withdraw(double _dep=500, double _growth=10, double _dd=5) {
  double _bal=AccountInfoDouble(ACCOUNT_BALANCE);
  double _eq=AccountInfoDouble(ACCOUNT_EQUITY);
  double _ldd="что сюда?";
  
   if(_ldd < _dd) TesterWithdrawal(_bal-dep); // Снимаем: баланс - нач.депозит
 }
 
Denis Pershin:

Si ça ne vous dérange pas, aidez-moi avec le code :

Vous devez tenir compte de la marge libre, et non des fonds propres !

Vous pouvez vous trouver dans une situation où le drawdown vous permet de retirer un bénéfice du solde, mais la marge est importante et, après le retrait, le drawdown sera supérieur à vos 5 %.

Je ne peux pas vous aider avec les formules dans le code pour le moment, peut-être que quelqu'un d'autre se connectera et vous écrira un code, il n'est pas long, mais vous avez besoin d'un peu de réflexion ;)
 
Denis Pershin:

Si ça ne vous dérange pas, aidez-moi à compléter le code :

Je ne comprends pas... Avez-vous besoin d'une formule pour calculer le pourcentage des fonds à partir du solde ?

_ldd=100-_eq/_bal*100;
 
Denis Pershin:

Si ça ne te dérange pas, aide-moi à finir le code :

Voilà. La logique est celle que j'ai suggérée, et si quelque chose ne va pas, nous le corrigerons :

//===============================================================================================
//--------------------------------- Снимает прибыль в тестере ----------------------------------+
//===============================================================================================
void Withdraw(double _dep=500, double _growth=10, double _dd=5) {
 double _now_bal=0,_now_mg=0,_now_pr=0,_surplus=0,_GR=0,_DR=0;
 _now_bal= AccountInfoDouble(ACCOUNT_BALANCE);
 _now_mg = AccountInfoDouble(ACCOUNT_MARGIN_FREE);
 _now_pr = _now_bal-_dep; // Сумма к снятию
 _surplus= _now_mg-_now_pr; // Считаем остаток после снятия
 _GR = (_now_bal-_dep)/_dep*100; // Прирост %
 _DR = (_surplus-_dep)/_dep*100; // Просадка %
 //Comment(DTS(_GR,2)," = ",DTS(_DR,2));
  if(_GR>_growth && _DR<_dd) TesterWithdrawal(_now_pr); // Снимаем
 }
 
Vitaly Muzichenko:


Merci, juste ce dont j'avais besoin)
 
Nilog:

Il existe un fichier indicateur uniquement dans ex5.

Puis-je utiliser la fonction iCustom pour le transformer en un indicateur multitemporel ? Il prend donc les valeurs de ex5 d'autres périodes et les dessine sur le graphique actuel ?

C'est possible.