PDA

Afficher la version compl?te : Proc?dure de profit quotidien



Dok
17/02/2013, 13h13
Je cherche une proc?dure, mql4, qui me dira vrai ou faux quand je atteindrai la limite de profit quotidienne pour une paire. J'ai essay? le code suivant mais il retourne toujours faux.
Code ins?r? bool funcGetTodaysProfit () {int int DailyProfitPips = 100; double dblReturnValue = 0, dblDailyProfitPips = intDailyProfitPips * Point; for (int i = 0; ilt; OrdersTotal (); i ) {//1 cycle par recherche d???ordre si (OrderSelect (i, SELECT_BY_POS, MODE_HISTORY) == false) break; if (OrderMagicNumber ()! = intOrderMagicNumber) continue; if (TimeYear (Time # 91; 0 # 93;)!! TimeYear (OrderOpenTime ()) TimeDay (Heure # 91; 0 # 93;)! = TimeDay (OrderOpenTime ()) TimeMonth (Heure # 91; 0 # 93; )! = TimeMonth (OrderOpenTime ())) continue;/pas aujourd'hui profit. if (OrderType () == OP_BUY) {dblReturnValue = dblReturnValue (OrderClosePrice () - OrderOpenPrice ());} (Profit aujourd'hui jusqu'? pr?sent:, DoubleToStr (dblReturnValue, Digits), \ n, Cible de profit:, DoubleToStr (dblDailyProfitPips, Digits)); if (dblReturnValuegt; dblDailyProfitPips) {return (true);} return (false); }
Si quelqu'un peut aider, je l'appr?cierais.

aipkl153
11/12/2021, 23h29
Je cherche une proc?dure, mql4, qui me dira vrai ou faux quand je atteindrai la limite de profit quotidienne pour une paire. J'ai essay? le code suivant mais il retourne toujours faux. [code] bool funcGetTodaysProfit () {int int DailyProfitPips = 100; double dblReturnValue = 0, dblDailyProfitPips = intDailyProfitPips * Point; for (int i = 0; ilt; OrdersTotal (); i ) {//1 cycle par recherche d???ordre si (OrderSelect (i, SELECT_BY_POS, MODE_HISTORY) == false) break; if (OrderMagicNumber ()! = intOrderMagicNumber) continue; if (TimeYear (Time [0])!! TimeYear (OrderOpenTime ()) ... ...
nondisclosure00- La premi?re chose que je remarque est que vous avez dit que vous voulez obtenir la limite de profit quotidienne pour une paire, mais e part vous ne comparez les symboles lorsque vous passez en boucle les commandes. Deuxi?mement, vous avez ceci: int int DailyProfitPips = 100; qui ne compile pas En ce qui concerne la v?rifiion du b?n?fice quotidien, il m'a ?t? sugg?r? d'utiliser iBarShift ().

Dok
12/12/2021, 00h49
D'accord. fait le changement donc il compile et a ?galement sorti le nombre magique que j'utilise plus loin dans mon code et utilise maintenant le symbole. Mais j'obtiens toujours le m?me r?sultat. Comment utiliser iBarShift () en boucle dans les positions ferm?es pour trouver le profit de la journ?e? Code ins?r? bool funcGetTodaysProfit () {int intDailyProfitPips = 100; double dblReturnValue = 0, dblDailyProfitPips = intDailyProfitPips * Point; for (int i = 0; ilt; OrdersTotal (); i ) {//1 cycle par recherche d???ordre si (OrderSelect (i, SELECT_BY_POS, MODE_HISTORY) == false) break; if (OrderSymbol ()! = Symbol () continue; if (TimeYear (Time # 91; 0 # 93;).!! TimeYear (OrderOpenTime ()) TimeDay (Time # 91; 0 # 93;)! = TimeDay (OrderOpenTime ( )) TimeMonth (Time # 91; 0 # 93;)! = TimeMonth (OrderOpenTime ())) continue;/pas le profit actuel. If (OrderType () == OP_BUY) {dblReturnValue = dblReturnValue (OrderType () == Order_Pose () - OrderOpenPrice () - });}} if (OrderType () == OP_SELL) {dblReturnValue = dblReturnValue (OrderOpenPrice () - OrderClosePrice ());}} Commentaire (B?n?fice jusqu'? pr?sent:, DoubleToStr (dblReturnValue, d DoubleToStr (dblDailyProfitPips, Digits)); if (dblReturnValuegt; dblDailyProfitPips) {return (true);} return (false);}

- La premi?re chose que je remarque, c???est que vous vouliez obtenir la limite de profit quotidienne pour une paire, mais vous ne comparez e part les symboles lorsque vous passez en revue les commandes. Deuxi?mement, vous avez ceci: int int DailyProfitPips = 100; qui ne compile pas En ce qui concerne la v?rifiion du b?n?fice quotidien, il m'a ?t? sugg?r? d'utiliser iBarShift ().

- La premi?re chose que je remarque, c???est que vous vouliez obtenir la limite de profit quotidienne pour une paire, mais vous ne comparez e part les symboles lorsque vous passez en revue les commandes. Deuxi?mement, vous avez ceci: int int DailyProfitPips = 100; qui ne compile pas En ce qui concerne la v?rifiion du b?n?fice quotidien, il m'a ?t? sugg?r? d'utiliser iBarShift ().

aipkl153
12/12/2021, 02h10
D'accord. fait le changement donc il compile et a ?galement sorti le nombre magique que j'utilise plus loin dans mon code et utilise maintenant le symbole. Mais j'obtiens toujours le m?me r?sultat. Comment utiliser iBarShift () en boucle dans les positions ferm?es pour trouver le profit de la journ?e? Code ins?r? bool funcGetTodaysProfit () {int intDailyProfitPips = 100; double dblReturnValue = 0, dblDailyProfitPips = intDailyProfitPips * Point; for (int i = 0; ilt; OrdersTotal (); i ) {//1 cycle par recherche d???ordre si (OrderSelect (i, SELECT_BY_POS, MODE_HISTORY) == false) break; if (OrderSymbol ()! = Symbol () continue; if (TimeYear (Time # 91; 0 # 93;).!! TimeYear (OrderOpenTime ()) TimeDay (Time # 91; 0 # 93;)! = TimeDay (OrderOpenTime ( )) TimeMonth (Time # 91; 0 # 93;)! = TimeMonth (OrderOpenTime ())) continue;/pas le profit actuel. If (OrderType () == OP_BUY) {dblReturnValue = dblReturnValue (OrderType () == Order_Pose () - OrderOpenPrice () - });}} if (OrderType () == OP_SELL) {dblReturnValue = dblReturnValue (OrderOpenPrice () - OrderClosePrice ());}} Commentaire (B?n?fice jusqu'? pr?sent:, DoubleToStr (dblReturnValue, d DoubleToStr (dblDailyProfitPips, Digits)); if (dblReturnValuegt; dblDailyProfitPips) {return (true);} return (false);}
nondisclosure00- Vous allez avoir besoin des deux. Je ne voulais pas que vous en retiriez une remplac?e par une autre. Quoi qu'il en soit, voici mon id?e de ce que vous essayez de faire. Il y a probablement quelque chose que j'ai rat? mais cela devrait vous donner quelques id?es. Code ins?r?/ --------------------------------------------- ------------------------------- /// ------------- -------------------------------------------------- ------------- double GetTodaysProfit () {double TotProf = 0; int total = HistoryTotal (); pour (int i = 0; ilt; total; i ) {OrderSelect (i, SELECT_BY_POS, MODE_HISTORY); if (OrderSymbol () == Symbol () OrderMagicNumber () == MagicNumber) {int BarsCnt = iBarShift (NULL, PERIOD_D1, OrderCloseTime ()); if (BarsCntlt; 2) {TotProf = OrderProfit (); }}} return (TotProf); }

Dok
12/12/2021, 03h31
Merci, mais ne fonctionnera pas dans un test de retour sur un graphique ? barres d'une heure. Cela me donnera quelque chose ? penser cependant ...

- Vous allez avoir besoin des deux. Je ne voulais pas que vous en retiriez une remplac?e par une autre. Quoi qu'il en soit, voici mon id?e de ce que vous essayez de faire. Il y a probablement quelque chose que j'ai rat? mais cela devrait vous donner quelques id?es. [code]/ ------------------------------------------------ -------------------------------- /// ------------ -------------------------------------------------- -------------- double GetTodaysProfit () {double TotProf = 0; int total = HistoryTotal (); pour (int i = 0; ilt; total; i ) {OrderSelect (i, SELECT_BY_POS, ...

- Vous allez avoir besoin des deux. Je ne voulais pas que vous en retiriez une remplac?e par une autre. Quoi qu'il en soit, voici mon id?e de ce que vous essayez de faire. Il y a probablement quelque chose que j'ai rat? mais cela devrait vous donner quelques id?es. [code]/ ------------------------------------------------ -------------------------------- /// ------------ -------------------------------------------------- -------------- double GetTodaysProfit () {double TotProf = 0; int total = HistoryTotal (); pour (int i = 0; ilt; total; i ) {OrderSelect (i, SELECT_BY_POS, ...

Alazchalodlgzz
12/12/2021, 04h52
Ci-dessous un exemple utilisant le total du jour, y compris les transactions ouvertes en cours: Code ins?r? double daily_profit () {double prof = 0; commerce international; int trades = OrdersHistoryTotal (); for (trade = 0; tradelt; trade; trade ) {OrderSelect (trade, SELECT_BY_POS, MODE_HISTORY); if (OrderMagicNumber () == MagicNumber OrderSymbol () == Symbol ()) {if (OrderCloseTime () gt; = iTime (Symbol (), 1440,0)) prof = OrderProfit () OrderSwap () OrderCommission ( ) }} pour (trade = 0; tradelt; OrdersTotal (); trade ) {OrderSelect (trade, SELECT_BY_POS, MODE_TRADES); if (OrderMagicNumber () == MagicNumber OrderSymbol () == Symbol ()) {if (OrderOpenTime () gt; = iTime (Symbol (), 1440,0)) prof = OrderProfit () OrderSwap () OrderCommission ( ) }} return (prof); }

Dok
12/12/2021, 06h12
Merci Ferru. Longtemps! Je re?ois le b?n?fice calcul? correctement le m?me jour. Mais il voit toujours le profit du dernier jour et l'ajoute au profit des jours actuels. Ajoutez ? cela le r?sultat dans ma fonction est toujours faux. Des id?es.

Ci-dessous un exemple utilisant le total d'aujourd'hui, y compris les transactions actuellement ouvertes: [code] double daily_profit () {double prof = 0; commerce international; int trades = OrdersHistoryTotal (); for (trade = 0; tradelt; trade; trade ) {OrderSelect (trade, SELECT_BY_POS, MODE_HISTORY); if (OrderMagicNumber () == MagicNumber OrderSymbol () == Symbol ()) {if (OrderCloseTime () gt; = iTime (Symbol (), 1440,0)) prof = OrderProfit () OrderSwap () OrderCommission ( ) }} pour (trade = 0; tradelt; OrdersTotal (); trade ) {OrderSelect (trade, SELECT_BY_POS, MODE_TRADES); if (OrderMagicNumber () ...)

Ci-dessous un exemple utilisant le total d'aujourd'hui, y compris les transactions actuellement ouvertes: [code] double daily_profit () {double prof = 0; commerce international; int trades = OrdersHistoryTotal (); for (trade = 0; tradelt; trade; trade ) {OrderSelect (trade, SELECT_BY_POS, MODE_HISTORY); if (OrderMagicNumber () == MagicNumber OrderSymbol () == Symbol ()) {if (OrderCloseTime () gt; = iTime (Symbol (), 1440,0)) prof = OrderProfit () OrderSwap () OrderCommission ( ) }} pour (trade = 0; tradelt; OrdersTotal (); trade ) {OrderSelect (trade, SELECT_BY_POS, MODE_TRADES); if (OrderMagicNumber () ...)

Alazchalodlgzz
12/12/2021, 07h33
Merci Ferru. Longtemps! Je re?ois le b?n?fice calcul? correctement le m?me jour. Mais il voit toujours le profit du dernier jour et l'ajoute au profit des jours actuels. Ajoutez ? cela le r?sultat dans ma fonction est toujours faux. Des id?es.
Au d?but de la fonction, vous devez d?finir le b?n?fice sur 0 pour que le calcul ne soit valide que pour cet appel. Il est ?galement important de ne rechercher que les commandes ouvertesferm?es apr?s le d?but de la journ?e (comme indiqu? dans mon exemple).

Dok
12/12/2021, 08h54
Oui. Faire cela: double dblReturnValue = 0

Au d?but de la fonction, vous devez d?finir le b?n?fice sur 0 pour que le calcul ne soit valide que pour cet appel. Il est ?galement important de ne rechercher que les commandes ouvertesferm?es apr?s le d?but de la journ?e (comme indiqu? dans mon exemple).

Au d?but de la fonction, vous devez d?finir le b?n?fice sur 0 pour que le calcul ne soit valide que pour cet appel. Il est ?galement important de ne rechercher que les commandes ouvertesferm?es apr?s le d?but de la journ?e (comme indiqu? dans mon exemple).

Dok
12/12/2021, 10h15
Ferru, je l'ai. J'ai ajout? ces lignes: Code ins?r? string strCurrentDate = StringConenate (TimeYear (Time # 91; 0 # 93;),., TimeMonth (Time # 91; 0 # 93;).,., TimeDay (Time # 91; 0 # 93; )); dateheure dtCurrentDate = StrToTime (strCurrentDate); Remplac? ces lignes: Code ins?r? si (TimeYear (OrderOpenTime ())!! = TimeYear (Time # 91; 0 # 93;) TimeDay (OrderOpenTime ())! = TimeDay (Time # 91; 0 # 93;) TimeMont (OrderOpenTime ( ))!! = TimeMonth (Time # 91; 0 # 93;)) continue;/pas aujourd'hui profit. Avec cette ligne: Inserted Code if (OrderOpenTime () lt; dtCurrentDate) continue; Tout fonctionne comme souhait?! Merci!

Au d?but de la fonction, vous devez d?finir le b?n?fice sur 0 pour que le calcul ne soit valide que pour cet appel. Il est ?galement important de ne rechercher que les commandes ouvertesferm?es apr?s le d?but de la journ?e (comme indiqu? dans mon exemple).

Au d?but de la fonction, vous devez d?finir le b?n?fice sur 0 pour que le calcul ne soit valide que pour cet appel. Il est ?galement important de ne rechercher que les commandes ouvertesferm?es apr?s le d?but de la journ?e (comme indiqu? dans mon exemple).

Alazchalodlgzz
12/12/2021, 11h35
Ce n'est pas la fa?on la plus simple, mais si cela fonctionne ... tout va bien!