Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 1559

 
Tsaryoff5614:

Bonjour messieurs les programmateurs ! !!

Veuillez aider un débutant avec une fonction.

La fonction compte le bénéfice total par historique.

Le problème est que cela fonctionne pour un courtier et que cela ne veut pas fonctionner pour un autre.

Il fonctionne sur Hercic mais pas sur RoboForex. J'ai un compte ECN sur RoboForex.

Je ne sais pas quel est le problème. Voici le code :

double lastloss()

{

int typ = -1,cnt = 0 ;

double lastloss = 0 ;

for(int i = OrdersHistoryTotal()-1 ; i>=0 ; i--)

{

if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))

{

if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)

{

if(cnt == 0) typ = OrderType() ;

if(cnt > 0 && OrderType()!= typ) break ;

lastlos += OrderProfit() + + OrderSwap() + OrderCommission() ;

cnt++ ;

}

}

}

retour(lastlos) ;

}

Je me demande si le compilateur ne jure pas à cette ligne ?

lastlos += OrderProfit() + + OrderSwap() + OrderCommission();

Peut-être faut-il enlever un + pour qu'il fonctionne correctement ?

Et pourquoi ajoutez-vous le swap et la commission aux bénéfices ? Même si
OrderProfit()

Cela pourrait être négatif aussi...

Et de quel type de bénéfice total parlons-nous si vous ne traitez qu'un ou quelques ordres correspondants, mais pas tous ?

Suivant :

 if(cnt > 0 && OrderType()!= typ) break;

l'arrêt du cycle.

 
MakarFX:

1)A grande vitesse ou si ce n'est pas sur les ticks dans le testeur, il fermera au premier prix disponible.

2) Vous avez beaucoup d'augmentation en cours et avec un grand lot, 1 point peut être plus que le niveau autorisé.

3) Je ne comprends pas ce que vous voulez, qu'avez-vous besoin de suivre si vous faites un zérotage après chaque transaction ?

3)Je ne comprends pas ce que vous voulez suivre si vous mettez à zéro après chaque transaction ?

Je parle de suivre les profits/pertes "à l'intérieur" de chaque transaction, c'est-à-dire que pendant que le prix "oscille" entre le stop et la prise, le montant des profits et des pertes de la transaction en cours change également. Il arrive souvent que le prix arrive dans la zone de profit mais n'atteigne pas le point de prise - il se retourne et la transaction est conclue au niveau du stop. J'ai besoin de tracer les profits et les pertes (en argent) afin de pouvoir les corriger en temps voulu sans déplacer un stop et un take, c'est-à-dire sans enfreindre les paramètres définis du take et du stop. Ceci est pertinent pour les grands lots avec un Martin activé.

Lorsqu'une affaire est conclue, le suivi s'arrête et recommence pour une nouvelle affaire.

 
законопослушный гражданин:

3) Je ne comprends pas ce que vous voulez suivre si vous mettez à zéro après chaque transaction ?

Je parle du suivi des profits/pertes "à l'intérieur" de chaque transaction, c'est-à-dire que pendant que le prix "oscille" entre le stop et le take, le montant des profits et des pertes de la transaction en cours change. Il arrive souvent que le prix arrive dans la zone de profit mais n'atteigne pas le point de prise - il se retourne et la transaction est conclue au niveau du stop. J'ai besoin de tracer les profits et les pertes (en argent) afin de pouvoir les corriger en temps voulu sans déplacer un stop et un take, c'est-à-dire sans enfreindre les paramètres définis du take et du stop. Ceci est pertinent pour les grands lots avec un Martin activé.

Lorsqu'une transaction est fermée, le suivi s'arrête et recommence pour une nouvelle transaction.

Vous n'avez qu'à spécifier les paramètres de profit et de perte moins le stoploss et le takeprofit, à savoir

si le TakeProfit est de 200 pips 0,1 lot, alors le profit est de 20 $, définissez le niveau de profit de 15 $ et la transaction sera fermée plus tôt.

 
Mihail Matkovskij:

Et pourquoi ajoutez-vous le swap avec commission au profit ? Avec
OrderProfit()

peut aussi être négatif...

Merci pour ça, j'ai fait cette chose stupide aussi.

 
MakarFX:

Tout ce que vous avez à faire est de spécifier les paramètres de profit et de perte moins stoploss et takeprofit, c'est-à-dire

Si le TakeProfit est de 200 pips 0,1 lot, alors le profit est de 20 $, définissez le niveau de profit à 15 $ et la transaction sera fermée plus tôt.


Ok, merci, je vais y réfléchir et l'exécuter dans le testeur.

 
Avez-vous un lien vers une fonction qui calcule les bénéfices en fonction de l'historique des commandes?
 

Je demande l'aide de la communauté...
Comment déclarer et créer correctement des objets globaux MQL5 ?

Si je le fais de cette façon :

int OnInit()
{
   CIsNewBar* NB_M1=new CIsNewBar(_Symbol,PERIOD_M1);  // Эта строка потом будет в цикле для разных символов
}

void OnTick()
{
    if (NB_M1.IsNewBar())  // (1) Если появился новый бар M1
        {....}
    ......
}

Le compilateur se plaint de la ligne dans OnTick() : 'NB_M1' - identifiant non déclaré, ce qui est logique, car une variable locale est créée dans OnInit().

Si vous insérez la déclaration globale avant OnInit() :

CIsNewBar* NB_M1;

il compile sans erreurs et l'expert travaille. Il semble que l'objet soit créé deux fois - lors de la déclaration globale et dans OnInit().
Mais lecompilateur a cetavertissement

la déclaration de 'NB_M1' cache la variable globale -> par ligne dans OnInit()

voir la déclaration précédente de 'NB_M1'

Cela signifie-t-il qu'une variable locale (dans une fonction) est créée dans OnInit() qui cache une variable globale avec le même nom ?
Et si oui, comment cette variable locale peut-elle être "vue" par une autre fonction, OnTick() ?


 
MakarFX:

Merci pour ça, j'ai fait cette chose stupide aussi.

Makar, vous aviez l'habitude de faire la bonne chose et maintenant vous voulez faire la chose stupide...

Repensez à vos maths de cinquième année environ. Combien y a-t-il de (-3)-(-7) et combien y a-t-il de (-3)+(-7) ?

C'est difficile de vérifier sur une calculatrice, Excell pour vous aider.


 
Mihail Matkovskij:
Bonjour. Connaissez-vous une bibliothèque disponible dans MQL pour écrire des structures de données dans un fichier et les charger ensuite ? Idéalement, une bibliothèque qui fonctionne avec le format json, un parseurjson, etc.

Je ne sais pas comment vous dire de lire la documentation. Si vous l'avez lu et que la fonction standard ne convient pas pour une raison quelconque, vous auriez dû le dire tout de suite...

 
Alexey Viktorov:

Makar, vous aviez l'habitude de faire la bonne chose et maintenant vous voulez faire la chose stupide...

Repensez à vos maths de cinquième année environ. Combien y a-t-il de (-3)-(-7) et combien y a-t-il de (-3)+(-7) ?

C'est difficile de vérifier sur une calculatrice, Excell pour vous aider.


Oui, merci. J'ai tiré des conclusions hâtives. Je l'ai bien compris)