[ARCHIVE] Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 3. - page 533

 
001:

Je n'arrive pas à comprendre la logique du compilateur. J'ai une fonction. Je déclare une variable externe.

int start ;

en outre, le corps de la fonction

double B()
{

int i=0, k=OrdersHistoryTotal() ;
for (i=k-1 ; i<=k ; i++) {
si (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)!=false) {
if(OrderType()==OP_SELL) {
si(OrderProfit()< 0) {start=1;}

}

}

}

}

La valeur de la variable de départ doit être mémorisée et assimilée à zéro en cas de besoin. Mais dans ce cas, si OrderProfit()<0 , alors start=1, et si OrderProfit()> 0 , alors automatiquement start=0.

pas de

si OrderProfit()> 0, la variable stockera la même valeur
.

 
Tantrik:
Pouvez-vous me dire où le trouver ? Tout est en anglais.
Si vous ne parvenez pas à configurer MetaEditor en russe, utilisez le lien Documentation
 
ilunga:

pas de

Si OrderProfit()> 0, ce qui était dans la variable reste
.


Voici la fonction .

//+------------------------------------------------------------------+
double Balans()
{

int i=0, k=OrdersHistoryTotal() ;
for (i=k-1 ; i<=k ; i++) {
//------------------------------------------------------------
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)!=false) {
if (OrderType()==OP_SELL) {
if(OrderProfit()<0) {start=true;}
}
}

//-----------------------------------------------------------
}
Print(" start= ",start) ;
if(lots<0.01) lots=0.01 ;
lots=NormalizeDouble(lots,2) ;
return(lots) ;
}
//+------------------------------------------------------------------+

Voici le journal.

16:01:36 2007.07.12 00:01 Bars_Trader GBPUSD,M1 : start= 0
16:01:36 2007.07.12 00:01 Bars_Trader GBPUSD,M1 : start= 0
16:01:36 2007.07.12 00:01 Bars_Trader GBPUSD,M1 : open #1 sell 0.01 GBPUSD à 2.03190 tp : 2.03100 ok
16:01:36 2007.07.12 04:01 Bars_Trader GBPUSD,M1 : close #1 vendre 0.01 GBPUSD à 2.03190 tp : 2.03100 au prix 2.03210
16:01:36 2007.07.07.13 04:04 Bars_Trader GBPUSD,M1 : start= 1
16:01:36 2007.07.13 04:04 Bars_Trader GBPUSD,M1 : start= 1
16:01:36 2007.07.13 04:04 Bars_Trader GBPUSD,M1 : open #2 sell 0.01 GBPUSD à 2.02860 tp : 2.02770 ok
16:01:36 2007.07.13 08:00 Bars_Trader GBPUSD,M1 : close #2 vendre 0.01 GBPUSD à 2.02860 tp : 2.02770 au prix 2.02890
16:01:36 2007.07.07.16 20:00 Bars_Trader GBPUSD,M1 : start= 1
16:01:36 2007.07.16 20:00 Bars_Trader GBPUSD,M1 : start= 1
16:01:36 2007.07.16 20:00 Bars_Trader GBPUSD,M1 : open #3 sell 0.01 GBPUSD à 2.03640 tp : 2.03550 ok
16:01:36 2007.07.17 00:05 Bars_Trader GBPUSD,M1 : close #3 vendre 0.01 GBPUSD à 2.03640 tp : 2.03550 au prix 2.03630
16:01:36 2007.07.18 16:00 Bars_Trader GBPUSD,M1 : start= 0
16:01:36 2007.07.18 16:00 Bars_Trader GBPUSD,M1 : start= 0
16:01:36 2007.07.18 16:00 Bars_Trader GBPUSD,M1 : open #4 sell 0.01 GBPUSD à 2.04880 tp : 2.04790 ok
16:01:36 2007.07.18 20:00 Bars_Trader GBPUSD,M1 : close #4 vendre 0.01 GBPUSD à 2.04880 tp : 2.04790 au prix de 2.05430
16:01:36 2007.07.19 04:00 Bars_Trader GBPUSD,M1 : start= 1
16:01:36 2007.07.19 04:00 Bars_Trader GBPUSD,M1 : start= 1
16:01:36 2007.07.19 04:00 Bars_Trader GBPUSD,M1 : open #5 sell 0.01 GBPUSD à 2.05140 tp : 2.05050 ok
16:01:36 2007.07.19 08:00 Bars_Trader GBPUSD,M1 : close #5 vendre 0.01 GBPUSD à 2.05140 tp : 2.05050 au prix 2.05200
16:01:36 2007.07.19 16:00 Bars_Trader GBPUSD,M1 : start= 1
16:01:36 2007.07.19 16:00 Bars_Trader GBPUSD,M1 : start= 1
16:01:36 2007.07.19 16:00 Bars_Trader GBPUSD,M1 : open #6 sell 0.01 GBPUSD at 2.04840 tp : 2.04750 ok
16:01:36 2007.07.19 17:33 Tester : take profit #6 à 2.04750 (2.04760 / 2.04790)
16:01:36 2007.07.20 04:00 Bars_Trader GBPUSD,M1 : start= 0
16:01:36 2007.07.20 04:00 Bars_Trader GBPUSD,M1 : start= 0
16:01:36 2007.07.20 04:00 Bars_Trader GBPUSD,M1 : open #7 sell 0.01 GBPUSD at 2.04810 tp : 2.04720 ok
16:01:36 2007.07.20 08:00 Bars_Trader GBPUSD,M1 : close #7 sell 0.01 GBPUSD at 2.04810 tp : 2.04720 at price 2.04900
16:01:36 2007.07.25 00:00 Bars_Trader GBPUSD,M1 : start=1
16:01:36 2007.07.25 00:00 Bars_Trader GBPUSD,M1 : start= 1
16:01:36 2007.07.25 00:00 Bars_Trader GBPUSD,M1 : open #8 sell 0.01 GBPUSD at 2.06160 tp : 2.06070 ok
16:01:36 2007.07.25 02:12 Tester : prise de profit #8 à 2.06070 (2.06040 / 2.06070)
16:01:36 2007.07.26 08:00 Bars_Trader GBPUSD,M1 : start= 0
16:01:36 2007.07.26 08:00 Bars_Trader GBPUSD,M1 : start= 0

 
001:


Voici la fonction .

//+------------------------------------------------------------------+
double Balans()
{

int i=0, k=OrdersHistoryTotal() ;
for (i=k-1 ; i<=k ; i++) {
//------------------------------------------------------------
si (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)!=false) {
if(OrderType()==OP_SELL) {
si(OrderProfit()<0) {start=true;}
}
}

//-----------------------------------------------------------
}
Print(" start= ",start) ;
si(lots<0.01) lots=0.01 ;
lots=NormaliserDouble(lots,2) ;
retour(lots) ;
}
//+------------------------------------------------------------------+

Voici le journal.

16:01:36 2007.07.12 00:01 Bars_Trader GBPUSD,M1 : start= 0
16:01:36 2007.07.12 00:01 Bars_Trader GBPUSD,M1 : start= 0
16:01:36 2007.07.12 00:01 Bars_Trader GBPUSD,M1 : open #1 sell 0.01 GBPUSD at 2.03190 tp : 2.03100 ok
16:01:36 2007.07.12 04:01 Bars_Trader GBPUSD,M1 : close #1 vendre 0.01 GBPUSD à 2.03190 tp : 2.03100 au prix 2.03210
16:01:36 2007.07.13 04:04 Bars_Trader GBPUSD,M1 : start= 1
16:01:36 2007.07.13 04:04 Bars_Trader GBPUSD,M1 : start= 1
16:01:36 2007.07.13 16:04 Bars_Trader GBPUSD,M1 : open #2 sell 0.01 GBPUSD at 2.02860 tp : 2.02770 ok
16:01:36 2007.07.13 08:00 Bars_Trader GBPUSD,M1 : close #2 vendre 0.01 GBPUSD à 2.02860 tp : 2.02770 au prix de 2.02890
16:01:36 2007.07.16 20:00 Bars_Trader GBPUSD,M1 : start= 1
16:01:36 2007.07.16 20:00 Bars_Trader GBPUSD,M1 : start= 1
16:01:36 2007.07.16 20:00 Bars_Trader GBPUSD,M1 : open #3 sell 0.01 GBPUSD at 2.03640 tp : 2.03550 ok
16:01:36 2007.07.17 00:05 Bars_Trader GBPUSD,M1 : close #3 vendre 0.01 GBPUSD à 2.03640 tp : 2.03550 au prix 2.03630
16:01:36 2007.07.18 16:00 Bars_Trader GBPUSD,M1 : start= 0
16:01:36 2007.07.18 16:00 Bars_Trader GBPUSD,M1 : start= 0
16:01:36 2007.07.18 16:00 Bars_Trader GBPUSD,M1 : open #4 sell 0.01 GBPUSD at 2.04880 tp : 2.04790 ok
16:01:36 2007.07.18 20:00 Bars_Trader GBPUSD,M1 : close #4 vendre 0.01 GBPUSD à 2.04880 tp : 2.04790 au prix 2.05430
16:01:36 2007.07.19 04:00 Bars_Trader GBPUSD,M1 : start= 1
16:01:36 2007.07.19 04:00 Bars_Trader GBPUSD,M1 : start= 1
16:01:36 2007.07.19 04:00 Bars_Trader GBPUSD,M1 : ouvrir #5 vendre 0.01 GBPUSD à 2.05140 tp : 2.05050 ok
16:01:36 2007.07.19 08:00 Bars_Trader GBPUSD,M1 : close #5 vendre 0.01 GBPUSD à 2.05140 tp : 2.05050 au prix de 2.05200
16:01:36 2007.07.19 16:00 Bars_Trader GBPUSD,M1 : start= 1
16:01:36 2007.07.19 16:00 Bars_Trader GBPUSD,M1 : start= 1
16:01:36 2007.07.19 16:00 Bars_Trader GBPUSD,M1 : open #6 sell 0.01 GBPUSD at 2.04840 tp : 2.04750 ok
16:01:36 2007.07.19 17:33 Testeur : prise de profit n°6 à 2.04750 (2.04760 / 2.04790)
16:01:36 2007.07.20 04:00 Bars_Trader GBPUSD,M1 : start= 0
16:01:36 2007.07.20 04:00 Bars_Trader GBPUSD,M1 : start= 0
16:01:36 2007.07.20 04:00 Bars_Trader GBPUSD,M1 : open #7 sell 0.01 GBPUSD at 2.04810 tp : 2.04720 ok
16:01:36 2007.07.20 08:00 Bars_Trader GBPUSD,M1 : close #7 vendre 0.01 GBPUSD à 2.04810 tp : 2.04720 au prix de 2.04900
16:01:36 2007.07.25 00:00 Bars_Trader GBPUSD,M1 : start= 1
16:01:36 2007.07.25 00:00 Bars_Trader GBPUSD,M1 : start= 1
16:01:36 2007.07.25 00:00 Bars_Trader GBPUSD,M1 : open #8 sell 0.01 GBPUSD at 2.06160 tp : 2.06070 ok
16:01:36 2007.07.25 02:12 Testeur : prise de profit n°8 à 2.06070 (2.06040 / 2.06070)
16:01:36 2007.07.26 08:00 Bars_Trader GBPUSD,M1 : start= 0
16:01:36 2007.07.26 08:00 Bars_Trader GBPUSD,M1 : start= 0

Montrer le code de façon plus complète. Par exemple, pour l'instant, vous ne pouvez pas voir où cette variable est déclarée.

 
ilunga:

montrent le code de façon plus complète. Par exemple, pour l'instant, vous ne pouvez pas voir où cette variable est déclarée.


extern int TF ;
extern int TP ;
extern int BARS ;
int externe BarrierMinute ;
extern int Step=0 ;
//--------
extern double ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ ;
extern double Decrease=2 ;
extern inttern Wait=2 ;
extern inttern Répéter ;
int externe int MA_Sell ;
externe int Applied_Price_Sell ;
//extern int MAPeriod_1 ;
//extern int Calc=8 ;
extern double Lots=5 ;
//----
statique int PrevTime=0 ;
lots doubles ;
int wait,start,step,repeat ;
datetime openTime=0 ;
double lot=0.1 ;
 
sergovan 26.01.2012 07:27 | interdit | supprimer

Bonjour, pouvez-vous me dire comment changer les ordres OP_ BUYSTOP et OP_SELLSTOP dans mon EA pour OP_SELLLIMIT et OP_BUYLIMIT ? J'ai essayé et mes ordres BUYLIMIT sont placés, mais ceux de SELLLIMIT ne le sont même pas, peut-être que je fais quelque chose de mal ?


Fichiers joints:
Expertd10.mq4 (5.82 KB) supprimer
 

Bonjour mes amis, pouvez-vous m'aider à résoudre ce problème ?

J'écris un Expert Advisor avec un logiciel stoploss, le schéma de base de l'algorithme est le suivant :


int start()
{double x, PreProfit, TekProfit ;
for (x=0 ; x<1 ; x++) //L'opérateur de boucle For (en théorie) devrait être exécuté 1 fois
{PreviousProfit=(-20);}// Assigner une valeur à 1 temps (en théorie) !

TextProfit=OrderProfit();//trouve le profit de l'ordre sélectionné
if (PredPreviousProfit<TekProfit)//si le profit actuel est supérieur au précédent, alors...
{WeakProfit=TekProfit;}// Attribuer une nouvelle valeur à la variable PredCompetitive !
//alors la variable PredCompanyProfit devrait contenir la valeur de profit la plus élevée de tous les temps !
}


Le problème est que la valeur de la variable "x" est remise à zéro à chaque nouveau tic-tac et que la valeur (-20) est attribuée à la variable "PredPreCompetition" à chaque nouveau tic-tac ! Ainsi, tout le sens de l'algorithme est perdu ! La variable "PreProfit" a été conçue pour conserver en permanence la valeur maximale du profit de l'ordre jusqu'à ce que cette valeur soit "réinitialisée" à la clôture de l'ordre.

Quelle est l'erreur ? Peut-être existe-t-il d'autres solutions pour ce problème ? Je vous en suis très reconnaissant à l'avance !

 
bis:

Le problème est que la valeur de la variable "x" est remise à zéro à chaque nouveau tick et que l'affectation de la valeur (-20) à la variable "PredPreprofit" est effectuée à chaque nouveau tick ! Ainsi, tout le sens de l'algorithme est perdu ! La variable "PrevProfit" a été conçue pour conserver en permanence la valeur maximale de profit de l'ordre jusqu'à la "réinitialisation" forcée de cette valeur lors de la clôture de l'ordre.

Quelle est l'erreur ? Peut-être existe-t-il d'autres solutions pour ce problème ? Merci d'avance !

Voir https://docs.mql4.com/ru/basis/variables/static
 
FAQ:
sergovan 26.01.2012 07:27 | interdit | supprimer

Bonjour, pouvez-vous me dire comment changer les ordres OP_ BUYSTOP et OP_SELLSTOP dans mon EA pour OP_SELLLIMIT et OP_BUYLIMIT ? J'ai essayé de changer les ordres BUYLIMIT mais SELLLIMIT ne le pense même pas, peut-être que je fais quelque chose de mal ?


Expertd10.mq4 (5.82 KB) Supprimer


N'avez-vous pas oublié les offres et les demandes lorsque vous les avez modifiées ?
 

Qui sait comment rendre un indicateur standard visible dans le testeur de stratégie?

Raison: