Vérifiez - qu'est-ce que j'ai fait de mal ? - page 2

 
Natalya Smirnova #:

Comme j'écris pour les options binaires, j'ai fait les choses un peu différemment :


Ce serait probablement correct ?

Voici le problème
Il y a 2 lignes dans le terminal pour 1 ordre


Et pour l'ordre qui a été placé par le conseiller expert, Profit == 0.

 
Natalya Smirnova #:

Je pense que c'est le problème
Il y a 2 lignes dans le terminal pour 1 ordre


Et sur l'ordre qui a été placé par le Conseiller Expert, Profit == 0

où avez-vous trouvé un prix inférieur à zéro - comment montrer une capture d'écran ?

Vous ne le voyez pas dans cette capture d'écran

 
Alexey Viktorov #:

Vous avez déjà reçu des conseils sur l'ensemble de l'algorithme, je ne veux pas interférer et je n'ai même pas regardé votre code et les mêmes conseils... Mais ceci

a attiré mon attention. Ma question est donc la suivante : n'est-il pas plus facile et plus lisible d'utiliser l'opérateur de commutation ?

Je pense que c'est plus facile à lire et à comprendre. Peut-être que ça marche aussi un peu plus vite.
Peut-être qu'au lieu d'une fonction, on peut utiliser un tableau volume[n] ?
Cependant, si vous payez pour chaque ligne de code, vous feriez mieux de laisser les choses ainsi :))
 
Nikolai Semko #:
Peut-être qu'au lieu d'une fonction, il suffit d'utiliser un tableau volume[n] ?
Bien que si vous payez pour chaque ligne de code, il est préférable que cela reste ainsi :))

Peut-être... Je suis d'accord.

 
Renat Akhtyamov #:

Où avez-vous trouvé un prix inférieur à zéro, montrez-moi une capture d'écran ?

Il n'y a rien de tel sur cette capture d'écran.


J'essaie d'obtenir OrderProfit() - cela donne 0

voici une confirmation du profit trouvé -0.01 lorsqu'il sort de cette ligne supplémentaire

 
Alexey Viktorov #:

Peut-être... Je suis d'accord.

Je ne suis pas payé, c'est pour moi et pour mon développement personnel. Après le travail, c'est intéressant de faire une quête du Graal.
 

Je ne comprends pas le prix négatif, il n'est toujours pas là.

compter le bénéfice total comme ceci (extrait)

Ce dont vous avez besoin est mis en évidence

   for(i=0;i<OrdersHistoryTotal();i++)

   {

      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))

      {

         if(OrderType()==ORDER_TYPE_BALANCE && OrderCloseTime()>startDate)Withdrawal=Withdrawal+OrderProfit()+OrderCommission()+OrderSwap();

         if((OrderType()==ORDER_TYPE_BUY || OrderType()==ORDER_TYPE_SELL))

         {

            if(OrderCloseTime()>iTime(Symbol(),PERIOD_D1,0))hystCurrDay=hystCurrDay+OrderProfit()+OrderCommission()+OrderSwap();

            if(OrderCloseTime()<iTime(Symbol(),PERIOD_D1,0) && OrderCloseTime()>iTime(Symbol(),PERIOD_D1,1))hystPrevDay=hystPrevDay+OrderProfit()+OrderCommission()+OrderSwap();

         }

      }

   }



 
Natalya Smirnova #:
Je ne suis pas payé, c'est pour moi et pour mon développement personnel. Après le travail, c'est intéressant de faire une recherche de Graal.

Ne faites pas attention à moi. C'est juste moi et Nikolay qui avons une petite réunion...

L'essence de votre problème : puisque OrderProfit() dans le courtage forex ne donne pas de valeur réelle, vous devez définir un ordre fermé positivement/négativement comme la différence entre le prix de clôture et le prix d'ouverture de l'ordre. On vous en a déjà parlé

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégie

Vérifier ce que j'ai fait de mal ?

Renat Akhtyamov, 2021.12.21 09:27

ne comprennent pas la logique qui se cache derrière

Comment cela se fait-il ?

bool profit = false;
         if(OrderClosePrice() > 0)
            profit = true;

         bool loss = false;
         if(OrderClosePrice() < 0)
            loss = true;

comment le prix de clôture de l'ordre peut être inférieur à zéro ?

l'ordre BUY sera en position plus si le prix de clôture est supérieur au prix d'ouverture.

voici la condition de plus à l'achat (hors commissions et swap) :

OrderClosePrice() > OrderOpenPrice()
Si c'est l'inverse, c'est un moins.

 
Natalya Smirnova #:
Je ne suis pas payé autant pour moi et mon développement personnel. Après le travail, c'est amusant de partir à la quête du Graal.

Oui, Natalia - c'était juste un mème de la série "Quand on est payé pour une ligne de code".

C'est le genre d'humour des programmeurs.


Vous n'avez pas besoin d'une fonction dans votre cas.

double SelectVolume(int n)

Il suffit de former les variables Volume1 ... Les variables Volume10 doivent être initialement formées comme un tableau volume[10]
et se référer ensuite à ses éléments volume[n] par l'indice n.
Ne vous inquiétez pas - presque tous les programmeurs sont passés par là.
L'essentiel est que vous aimiez vraiment la programmation. Je peux le sentir.
Alors vous irez loin.

 
Je suis d'accord. La programmation colle vraiment et c'est à très long terme !!!
Tout le monde ne se retrouve pas avec une grêle....
Raison: