[Archive] Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Je ne peux aller nulle part sans toi - 2. - page 239

 
IgorM:

iHighest et iLowest pour vous aider, et lisez l'algorithme pour construire ZZ

SZY : pas la tâche la plus facile, le code sera petit, mais l'algorithme est complexe, je n'arrive pas à trouver le code, mais j'ai donc cherché un pic à High : High[iHighest(NULL,0,MODE_HIGH,i)

1. Qu'est-ce que le "33" ?

2. High[iHighest(NULL,0,MODE_HIGH,i) donnera un point. Comment obtenir le second ?

iLowest != deuxième point.

 
charter:

1. Qu'est-ce que le "33" ?

2. High[iHighest(NULL,0,MODE_HIGH,i) donnera un point. Comment obtenir le second ?


1. Zig Zag.

2. il ne le fera pas, il vous donnera seulement la possibilité de trouver un sommet pour la ligne supérieure et vous devrez alors choisir deux de ces sommets pour tracer la ligne.

 
charter:

La difficulté est de trouver les points par lesquels la ligne sera ensuite tracée.

Il n'est pas difficile de tracer des lignes lorsque vous pouvez voir ces points. Comment les "voir" de manière programmatique ?

Merci, corrigé !

 
charter:

La difficulté est de trouver les points par lesquels la ligne sera ensuite tracée.

Il n'est pas difficile de tracer des lignes lorsque vous pouvez voir ces points. Comment les "voir" de manière programmatique ?

Merci, corrigé !

 

Bonne journée à tous les connaisseurs !

Veuillez m'aider à corriger le code dans l'Expert Advisor https://www.mql5.com/ru/code - Ilan.

L'idée est que l'EA a un paramètre ajustable pour l'equity drawdown, qui ferme tous les ordres !

Cependant, cette fonction avec des positions de lot est apparue plus tard, donc notre EA a fermé tous les ordres ouverts en suivant la tendance et laisse les positions de verrouillage intactes. Alors, comment faire en sorte que tous les ordres soient fermés à un niveau de fonds propres donné ?

Voici la section où les ordres sont fermés (les ordres de tendance et de perte ont des numéros magiques différents). Tout fonctionne ici. Le conseiller expert ferme tous les ordres. Le prélèvement est 4 fois ou plus élevé que celui prévu, jusqu'au point de vidange du dépôt :

if (UseEquityStop) {

if (CurrentPairProfit < 0.0 && MathAbs(CurrentPairProfit) > TotalEquityRisk / 100.0 * AccountEquityHigh()) {

CloseThisSymbolAll(MagicNumber);

CloseThisSymbolAll(LMagN);

PrintF("Closed All due to Stop Out");

NewOrdersPlaced = FALSE;

Il s'avère que les ordres perdants sont couverts mais qu'ils ne sont pas pris en compte dans le calcul du bénéfice et des fonds propres actuels ! Voici le segment qui calcule le bénéfice actuel :

double CalculateProfit() {

double ld_ret_0 = 0;

for (cnt = OrdersTotal() - 1; cnt >= 0; cnt--) {

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber) continue;

if (OrderSymbol() == Symbol())

if (OrderMagicNumber() == MagicNumber || OrderMagicNumber() == LMagN)

if (OrderType() == OP_BUY || OrderType() == OP_SELL) ld_ret_0 += OrderProfit();

}

return (ld_ret_0);

Et voici le segment qui calcule les fonds propres :

double AccountEquityHigh() {

if ((CountTrades(MagicNumber) == 0) && (CountTrades(LMagN) == 0)) AccountEquityHighAmt = AccountEquity();

if (AccountEquityHighAmt < PrevEquity) AccountEquityHighAmt = PrevEquity;

else AccountEquityHighAmt = AccountEquity();

PrevEquity = AccountEquity();

return (AccountEquityHighAmt);

J'ai souligné en noir les sections que j'ai ajoutées. Qu'ai-je oublié ? ? ???? Pourquoi ça ne marche pas ?????

 
polsvv:

Bonne journée à tous les connaisseurs !

Veuillez m'aider à corriger le code dans l'Expert Advisor https://www.mql5.com/ru/code - Ilan.

L'idée est que l'EA a un paramètre ajustable pour l'equity drawdown, qui ferme tous les ordres !

Cependant, cette fonction avec des positions de lot est apparue plus tard, donc notre EA a fermé tous les ordres ouverts en suivant la tendance et laisse les positions de verrouillage intactes. Alors, comment faire en sorte que tous les ordres soient fermés à un niveau de fonds propres donné ?

Voici la section où les ordres sont fermés (les ordres de tendance et de perte ont des numéros magiques différents). Tout fonctionne ici. Le conseiller expert ferme tous les ordres. Le prélèvement est 4 fois ou plus élevé que celui prévu, jusqu'au point de vidange du dépôt :

if (UseEquityStop) {

if (CurrentPairProfit < 0.0 && MathAbs(CurrentPairProfit) > TotalEquityRisk / 100.0 * AccountEquityHigh()) {

CloseThisSymbolAll(MagicNumber);

CloseThisSymbolAll(LMagN);

PrintF("Closed All due to Stop Out");

NewOrdersPlaced = FALSE;

Il s'avère que les ordres perdants sont couverts mais qu'ils ne sont pas pris en compte dans le calcul du bénéfice et des fonds propres actuels ! Voici le segment qui calcule le bénéfice actuel :

double CalculateProfit() {

double ld_ret_0 = 0;

for (cnt = OrdersTotal() - 1; cnt >= 0; cnt--) {

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber) continue;

if (OrderSymbol() == Symbol())

if (OrderMagicNumber() == MagicNumber || OrderMagicNumber() == LMagN)

if (OrderType() == OP_BUY || OrderType() == OP_SELL) ld_ret_0 += OrderProfit();

}

return (ld_ret_0);

Et voici le segment qui calcule les fonds propres :

double AccountEquityHigh() {

if ((CountTrades(MagicNumber) == 0) && (CountTrades(LMagN) == 0)) AccountEquityHighAmt = AccountEquity();

if (AccountEquityHighAmt < PrevEquity) AccountEquityHighAmt = PrevEquity;

else AccountEquityHighAmt = AccountEquity();

PrevEquity = AccountEquity();

return (AccountEquityHighAmt);

J'ai souligné en noir les sections que j'ai ajoutées. Qu'ai-je oublié ? ? ???? Pourquoi cela ne fonctionne pas ?????

Peut-être que ça devrait ? :

//===================================================================================
double CalculateProfit() 
{
   double ld_ret_0 = 0;
   for (int cnt = 0;  cnt < OrdersTotal(); cnt++) {
      if (OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) {
         if (OrderSymbol()!=Symbol())           continue;
         if (OrderType()>1)                     continue;
         if (OrderMagicNumber()==MagicNumber || 
             OrderMagicNumber() == LMagN)       ld_ret_0 += OrderProfit();
         }
      else if (!OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) {
         Print ("Func: CalculateProfit(), Select Order Error = ", GetLastError());
         break;
         }
      }
   return (ld_ret_0);
}
//===================================================================================
 
artmedia70:

Peut-être que c'est comme ça que ça devrait être ?

Voici comment insérer le code pour qu'il puisse être lu.
 
eddy:
c'est comme ça que tu mets le code pour que tu puisses le lire.
Ah, oui ? C'est toute la différence que vous avez pu voir ???
 
Bonjour à tous !

Ce week-end, j'utilise le testeur de stratégie pour la première fois. Je n'arrive pas à comprendre à quoi sert la fonction "Optimisation". J'ai sélectionné différents paramètres optimisables, mais l'équilibre ne change pas. Que cherche-t-il essentiellement à optimiser et comment ? Est-ce que quelqu'un l'utilise ? :)
 
AndrejFX:
Bonjour à tous !

Ce week-end, pour la première fois, j'utilise le testeur de stratégie. Je n'arrive pas à comprendre à quoi sert la fonction "Optimisation". J'ai sélectionné différents paramètres optimisables, mais l'équilibre ne change pas. Que cherche-t-il essentiellement à optimiser et comment ? Est-ce que quelqu'un l'utilise ? :)

Essayez d'utiliser F1 pour commencer.

Recherchez Interface utilisateur -> Testeur.

Peut-être que https://www.mql5.com/ru/articles/mt4/tester vous aidera

Raison: