Comment coder ? - page 101

 

J'ai eu des achats et des ventes.

panteraschoice:
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.

panteraschoice:
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 ;
 
IN10TION:
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

payback:
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 doubles
 
panteraschoice:
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) ;

}

}

}

}

//--------------------

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.

 
IN10TION:
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.

 
Kalenzo:
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

payback:
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