![MQL5 - Langage des stratégies de trading intégré au terminal client MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
J'ai eu des achats et des ventes.
Ce backtesting a donné des achats et des ventes ou seulement l'un d'entre eux ? Avec moi j'ai eu seulement des achats (ou seulement des ventes quand j'ai changé le code). Je n'ai vraiment rien vu qui montre une erreur.
ce RSIFilter_v1... Je n'en sais rien...
le code que vous montrez ici doit le faire...
Voici ce que j'ai fait... voir les pièces jointes.
Alors, c'est bon ?
double Sg=iCustom(NULL,0, "RSIFilter_v1",5,5,0,1) ;
if ( Sg>0) Order = SIGNAL_BUY ;
if (Sg<0 ) Order = SIGNAL_SELL ;La qualité de la modélisation doit être de 90%, je ne sais pas pourquoi elle n'apparaît pas.
Je pense que c'est dû aux erreurs non concordantes. Backtester a ce problème depuis quelques versions. J'ai entendu dire que c'était dû à de mauvaises données.
FerruFx
erreur de correspondance booléenne
Bonjour à tous, j'ai cette erreur et je ne comprends pas comment la résoudre, je pense que c'est un problème de correspondance de différents types de variables
voici le snippet du code
double
BuyCondition,
SellCondition,
StopLong,
StopSell ;
les indicateurs sont
double indicateur1,
indicateur2
indicateur 3 ; (mais il est int)
Je veux donc ces conditions
StopLong = ((SellValueCurrent !=0 && SellValueCurrent2 !=0) || (TrendEnvDown != EMPTY_VALUE));
StopSell = ((BuyValueCurrent !=0 && BuyValueCurrent2 !=0) || (TrendEnvUp != EMPTY_VALUE));alors pourquoi parfois je n'ai pas 0 alors que j'ai besoin de 1 et parfois j'ai les deux 1 alors que l'un d'entre eux devrait être 1 ? cela n'a aucun sens pour moi, pourquoi ? aidez-moi s'il vous plaît !
p.s. sellvalue et buyvalue sont doubles
besoin de plus de code pour corriger cela...
si vous le souhaitez, publiez votre mq4
Bonjour à tous, j'ai cette erreur et je ne comprends pas comment la résoudre, je pense que c'est un problème de correspondance entre les différents types de variables.
voici le snippet du code
double
BuyCondition,
SellCondition,
StopLong,
StopSell ;
les indicateurs sont
double indicateur1,
indicateur2
indicateur 3 ; (mais il est int)
Je veux donc ces conditions
StopLong = ((SellValueCurrent !=0 && SellValueCurrent2 !=0) || (TrendEnvDown != EMPTY_VALUE));
StopSell = ((BuyValueCurrent !=0 && BuyValueCurrent2 !=0) || (TrendEnvUp != EMPTY_VALUE));alors pourquoi parfois je n'ai pas 0 alors que j'ai besoin de 1 et parfois j'ai les deux 1 alors que l'un d'entre eux devrait être 1 ? cela n'a aucun sens pour moi, pourquoi ? aidez-moi s'il vous plaît !
p.s. sellvalue et buyvalue sont doublesQuelque chose ne va pas. Le compte de démonstration a été complètement effacé.
Voici une petite partie du journal de l'expert, avec des centaines de ces "prix invalides pour la fonction OrderClose" :
GBPJPY à 209.23 sl : 212.23 tp : 208.23 ok
10:00:04 2730_BasketVentilatorVoorProg_2 GBPCHF,H1 : prix invalide 2.02750000
pour la fonction OrderClose
10:00:04 2730_BasketVentilatorVoorProg_2 EURUSD,H1 : prix invalide 1.55750000
pour la fonction OrderClose
10:00:04 2730_BasketVentilatorVoorProg_2 GBPCHF,H1 : clôture #11685361 vendre
0.10 GBPCHF à 2.0270 sl : 2.0570 tp : 2.0170 au prix de 2.0275
10:00:05 2730_BasketVentilatorVoorProg_2 USDCHF,H1 : prix invalide 1.03350000
pour la fonction OrderClose
10:00:05 2730_BasketVentilatorVoorProg_2 EURUSD,H1 : prix invalide 1.55740000
pour la fonction OrderClose
C'est la partie de l'ea pour l'OrderClose,
Je ne vois pas ce qui ne va pas, peut-être que quelqu'un peut aider ?
//---------------------
int l_ord_total_72 = OrdersTotal() ;
for (int l_pos_76 = 0 ; l_pos_76 < l_ord_total_72 ; l_pos_76++) {
if (OrderSelect(l_pos_76, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol() == Symbol()) {
l_cmd_80 = OrderType() ;
if (l_cmd_80 == OP_BUY) {
l_count_56++ ;
si (l_isar_48 > Close[0]) OrderClose(OrderTicket(), OrderLots(), Bid, 3, Violet) ;
}
si (l_cmd_80 == OP_SELL) {
l_count_60++ ;
si (l_isar_48 < Close[0]) OrderClose(OrderTicket(), OrderLots(), Ask, 3, Violet) ;
}
}
}
}
//--------------------Peut-être avez-vous reçu de nouveaux prix du courtier, essayez d'utiliser la fonction RefreshRates avant OrderClose si vous obtenez une erreur.
Erreur de OrderClose
Quelque chose ne va pas. Le compte de démonstration a été complètement effacé.
Voici une petite partie du journal de l'expert, avec des centaines de ces "prix invalides pour la fonction OrderClose" :
GBPJPY à 209.23 sl : 212.23 tp : 208.23 ok
10:00:04 2730_BasketVentilatorVoorProg_2 GBPCHF,H1 : prix invalide 2.02750000
pour la fonction OrderClose
10:00:04 2730_BasketVentilatorVoorProg_2 EURUSD,H1 : prix invalide 1.55750000
pour la fonction OrderClose
10:00:04 2730_BasketVentilatorVoorProg_2 GBPCHF,H1 : clôture #11685361 vendre
0.10 GBPCHF à 2.0270 sl : 2.0570 tp : 2.0170 au prix de 2.0275
10:00:05 2730_BasketVentilatorVoorProg_2 USDCHF,H1 : prix invalide 1.03350000
pour la fonction OrderClose
10:00:05 2730_BasketVentilatorVoorProg_2 EURUSD,H1 : prix invalide 1.55740000
pour la fonction OrderClose
C'est la partie de l'ea pour l'OrderClose,
Je ne vois pas ce qui ne va pas, peut-être que quelqu'un peut aider ?
//---------------------
int l_ord_total_72 = OrdersTotal() ;
for (int l_pos_76 = 0 ; l_pos_76 < l_ord_total_72 ; l_pos_76++) {
if (OrderSelect(l_pos_76, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol() == Symbol()) {
l_cmd_80 = OrderType() ;
if (l_cmd_80 == OP_BUY) {
l_count_56++ ;
si (l_isar_48 > Close[0]) OrderClose(OrderTicket(), OrderLots(), Bid, 3, Violet) ;
}
si (l_cmd_80 == OP_SELL) {
l_count_60++ ;
si (l_isar_48 < Close[0]) OrderClose(OrderTicket(), OrderLots(), Ask, 3, Violet) ;
}
}
}
}
//--------------------
La compilation ne donne pas lieu à une erreur.
j'ai besoin de plus de code pour résoudre ce problème... si vous le souhaitez, publiez votre mq4
non je ne veux pas tout publier mais je pense qu'il y a un problème avec la correspondance des types de variables je vais essayer d'expliquer davantage
Indicateur 1 et 2 sont des doubles droits
Donc j'ai buyvaluecurrent = icustom(indicateur1 etc etc) ;
buyvaluecurrent2 = icustom(indicateur2 etc etc) ;
sellvaluecurrent = icustom(indicateur1 etc etc) ; //doubles right ?
trenendvup =icustom (indicateur3 etc etc) ; //int
et ainsi de suite
donc buycondition= ((buyvaluecurrent !=0 && buyvaluecurrent2 !=0) && (trendenvup != Empty_Value) ;
ce statut ne fonctionne que parfois et pourrait aussi être un problème, donc ma question est pourquoi ? je veux que buycondition retourne 1 ou 0 peu importe le type de bool ou double.
Peut-être avez-vous reçu de nouveaux prix du courtier, essayez d'utiliser la fonction RefreshRates avant OrderClose si vous obtenez une erreur.
oui, merci !
en fonction de ce que les indicateurs iCustom envoient...
double buyvaluecurrent = iCustom(indicateur1) ;
double buyvaluecurrent2 = iCustom(indicateur2) ;
double sellvaluecurrent = iCustom(indicateur1) ;
int trenendvup = iCustom(indicateur3) ;
donc...
if((buyvaluecurrent !=0 && buyvaluecurrent2 !=0) && (trendenvup !=0)) {buycondition=0;}
if((buyvaluecurrent !=0 && buyvaluecurrent2 !=0) && (trendenvup !=1)) {buycondition=1;}
vous ne pouvez pas obtenir un bool dans votre buycondition seulement en utilisant "&&" et certaines conditions, utilisez la fonction if()...
j'espère que cela vous aidera, sinon c'est un petit pas en avant![](https://c.mql5.com/forextsd/smiles/wink.png)
non je ne veux pas tout publier mais je pense qu'il y a un problème avec la correspondance des types de variables je vais essayer d'expliquer davantage
les indicateurs 1 et 2 sont doubles
donc j'ai buyvaluecurrent = icustom(indicator1 etc etc) ;
buyvaluecurrent2 = icustom(indicateur2 etc etc) ;
sellvaluecurrent = icustom(indicateur1 etc etc) ; //doubles right ?
trenendvup =icustom (indicateur3 etc etc) ; //int
et ainsi de suite
donc buycondition= ((buyvaluecurrent !=0 && buyvaluecurrent2 !=0) && (trendenvup != Empty_Value) ;
cette déclaration ne fonctionne que parfois et pourrait aussi être un problème, donc ma question est pourquoi ? je veux que buycondition retourne 1 ou 0 peu importe le type bool ou double