Aide au codage - page 422

 
Mastercash:
J'ai mis le paramètre use moneymanagement à false.... mais concernant les paramètres Lots, il ne s'agit pas des Lots mais du nombre d'ordres ouverts. Je ne veux pas que l'ea ouvre plus de 5 ordres...... à un moment donné, c'est pourquoi j'ai mis le paramètre NumberofTrades à 5, sur les paramètres d'entrée mais il va quand même me défier, et prendre plus de 5 ordres, menaçant ainsi mes moneymanagements !

Mastercash

Voici le résultat de nos tests :

Comme vous pouvez le voir, il n'a jamais ouvert plus de 5 ordres pour le même symbole et le même numéro magique en même temps.

Dossiers :
5_test.gif  87 kb
 

ok, je vois...je ne veux pas qu'il prenne plus de 5 ordres pour différents symboles....e.g, disons qu'il y a des signaux de trading de 10 symboles dans les 20 dernières minutes.... l'ea devrait prendre seulement les 5 premiers signaux de trading, puis quand l'un de ces cinq ordres se ferme, il peut en prendre un de plus, en s'assurant que les ordres en cours d'exécution à travers les différents symboles ne dépassent pas 5.Mais il continue à dépasser 5, peu importe..... Parfois il prend 5 mêmes ordres du même symbole ce qui est également faux.

mladen:
Mastercash

C'est le résultat de nos tests :

Comme vous pouvez le voir, il n'a jamais ouvert plus de 5 ordres pour le même symbole et le même numéro magique en même temps.
 
Mastercash:
ok, je vois...je ne veux pas qu'il prenne plus de 5 ordres pour différents symboles....e.g, disons qu'il y a des signaux de trading de 10 symboles dans les 20 dernières minutes.... l'EA devrait prendre seulement les 5 premiers signaux de trading, puis quand l'un de ces cinq ordres se ferme, il peut en prendre un de plus, en s'assurant que les ordres en cours sur les différents symboles ne dépassent pas 5. Mais il continue à dépasser 5, peu importe..... Parfois il prend 5 mêmes ordres du même symbole ce qui est également faux.

Si vous voulez qu'il ait un maximum de 5 ordres sur tous les symboles, allez à la ligne 144(if( OrderSymbol() != Symbol() ) continue ;) et supprimez-la. Et gardez le même nombre magique pour toutes les instances sur tous les symboles (pour qu'il puisse compter les ordres ouverts uniquement par cet EA sur tous les symboles).

 

Bonjour Mladen

J'ai une belle indication qui ne se rafraîchit pas lorsqu'elle est fixée à un TF plus élevé.

Comme vous pouvez le voir sur le graphique lorsque je n'édite pas, il reste bloqué. Pourriez-vous m'aider à résoudre ce problème ?

J'ai ajouté l'indicateur et une capture d'écran

 
wolfsch:
Bonjour Mladen

J'ai une belle indication qui ne se rafraîchit pas lorsqu'elle est fixée à un TF plus élevé.

Comme vous pouvez le voir sur le graphique, lorsque je n'édite pas, il reste bloqué. Pourriez-vous m'aider à résoudre ce problème ?

J'ai ajouté l'indicateur et une capture d'écran

wolfsch

Cela ne peut se produire qu'en backtest visuel (c'est une erreur que metatrader n'a pas corrigée depuis au moins 7-8 mois, et c'est une erreur de metatrader et non de l'indicateur) et cela se produit pour tous les indicateurs multi-temporels lorsqu'ils sont backtestés visuellement.

En utilisation normale, il fonctionne bien (je l'ai testé maintenant, juste au cas où, et tout fonctionne comme il est censé fonctionner sur des graphiques réguliers).

 

Merci, je vais travailler sur ce point et je vous recontacterai à l'adresse .......

mladen:
Si vous voulez qu'il ait un maximum de 5 ordres sur tous les symboles, allez à la ligne 144(if( OrderSymbol() != Symbol() ) continue ;) et supprimez-la. Et gardez le même nombre magique pour toutes les instances sur tous les symboles (pour qu'il puisse compter les ordres ouverts uniquement par cet EA sur tous les symboles).
 
mladen:
TFI

Le tampon 3 est le bon (c'est le tampon "tendance" qui a les valeurs 1 pour une pente ascendante et -1 pour une pente descendante). Vous utilisez les décalages 1 et 2, d'où le test de la première barre fermée.

La partie achat du code est correcte.

Vous avez omis l'élément

if(trendc!=trendp)

de la partie vendue qui pourrait vous causer un problème

Bonjour Mladen,

Merci beaucoup pour votre aide. J'ai changé le code selon

J'ai modifié le code selon votre suggestion, le trading se déroule sans problème, le calcul des pip est également correct.

Mais maintenant, il n'ouvre plus de positions courtes (cela pourrait être aussi une stratégie ;-)).

Il ne fait que fermer les positions longues.

Pourriez-vous me conseiller à nouveau ?

extern double maxshorttrades = 2;

extern double maxlongtrades = 2;

//+-----------------------------------------------------+

//| BUY |

//+-----------------------------------------------------+

for (i=OrdersTotal()-1;i>=0; i--)

if(OrderType()==OP_BUY && OP_BUY<maxlongtrades) break; // Check Traded Positions.

{

if(trendc!=trendp)

{

if(trendc==1 && (CCIFilter<80)) // code for buy

OpenBuy();

return(0);

}

openedOrders++;

}

//+----------------------------------------------------+

//| SELL |

//+----------------------------------------------------+

for (i=OrdersTotal()-1;i>=0; i--)

if(OrderType()==OP_SELL && OP_SELL<maxshorttrades) break; // Check Traded Positions.

{

if(trendc!=trendp)

{

if(trendc==-1 && (CCIFilter>80)) // code for sell

OpenSell();

return(0);

}

openedOrders++;

}

}

Veuillez consulter la capture d'écran ci-jointe pour plus de détails.

Merci d'avance !

Avec mes salutations distinguées,

TFI

Dossiers :
backtest.jpg  163 kb
 
tfi_markets:
Bonjour Mladen,

Merci beaucoup de m'avoir aidé. J'ai modifié le code selon

J'ai modifié le code selon votre suggestion, le trading est fluide, le calcul des pip est également correct.

Mais maintenant, il n'ouvre plus de positions courtes (cela pourrait aussi être une stratégie ;-)).

Il ne fait que fermer les positions longues.

Pourriez-vous me conseiller à nouveau ?

extern double maxshorttrades = 2;

extern double maxlongtrades = 2;

//+-----------------------------------------------------+

//| BUY |

//+-----------------------------------------------------+

for (i=OrdersTotal()-1;i>=0; i--)

if(OrderType()==OP_BUY && OP_BUY<maxlongtrades) break; // Check Traded Positions.

{

if(trendc!=trendp)

{

if(trendc==1 && (CCIFilter<80)) // code for buy

OpenBuy();

return(0);

}

openedOrders++;

}

//+----------------------------------------------------+

//| SELL |

//+----------------------------------------------------+

for (i=OrdersTotal()-1;i>=0; i--)

if(OrderType()==OP_SELL && OP_SELL<maxshorttrades) break; // Check Traded Positions.

{

if(trendc!=trendp)

{

if(trendc==-1 && (CCIFilter>80)) // code for sell

OpenSell();

return(0);

}

openedOrders++;

}

}

Veuillez consulter la capture d'écran ci-jointe pour plus de détails.

Merci d'avance !

Avec mes salutations distinguées,

TFI

TFI

Essayez quelque chose comme ceci :

extern double maxshorttrades = 2;

extern double maxlongtrades = 2;

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

//

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

int clongs = 0;

int cshorts = 0;

for (i=OrdersTotal()-1;i>=0; i--)

{

if(OrderType()==OP_BUY) clongs++; // Check Long Traded Positions.

if(OrderType()==OP_SELL) cshorts++; // Check Short Traded Positions.

}

if(trendc!=trendp)

{

if(clongs < maxlongtrades && trendc== 1 && (CCIFilter<80)) OpenBuy();

if(cshorts 80)) OpenSell();

// Check the CCI condition

// it is not symetrical to buy condition

}

 

mladen,

J'ai fait le changement dans le numéro 144 et j'ai unifié le numéro magique, "MagicNumber" à travers les instances....It prend maintenant un maximum de 5 trades à la fois, mais il répète maintenant les trades sur le même symbole en même temps, par exemple, si vous recevez un signal de vente sur EURUSD, il va placer cet ordre de vente EURUSD 5 fois. Voir l'image de l'ordre en direct qu'il a pris comme ça :

Mastercash:
Merci, je vais travailler sur ce point et je vous recontacterai à l'adresse .......
Dossiers :
apcorrimage.png  39 kb
 
Mastercash:
mladen, j'ai fait le changement dans le numéro 144 et j'ai unifié le numéro magique, "MagicNumber" à travers les instances....It prend maintenant un maximum de 5 trades à la fois mais il répète maintenant les trades sur le même symbole en même temps, par exemple, si vous recevez un signal de vente sur EURUSD, il placera cet ordre de vente EURUSD 5 fois. Voir l'image de l'ordre en direct qu'il a pris comme ça :

Cela ne dépend pas de cette partie du code

Vous devez ajouter une vérification dans le reste du code pour ne pas ouvrir un ordre sur la même barre et le même symbole.

Raison: