Aide au codage - page 423

 

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 :

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).
Dossiers :
 
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 :

Veuillez lire mon message précédent

Cette ouverture n'a rien à voir avec un manque de vérification des symboles - vous devez avoir une vérification supplémentaire pour désactiver les ordres d'ouverture sur le même symbole et sur la même barre. Si vous avez le même EA sur les mêmes symboles et sur des horizons temporels différents, alors même cette vérification ne vous aidera pas (puisque les barres seront différentes dans certains cas pour les différents horizons temporels du même symbole).

 

Merci beaucoup mladen,

J'ai essayé d'ajouter un code que tu m'as conseillé il y a quelques années....mais il semble ne pas fonctionner..... le code si tu te souviens va de cette façon...

static datetime lastAlerted=0 ;

si(lastalerted!=Time[0] ;

open().......

aidez-moi à ajouter le bon code à l'endroit approprié !

mladen:
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.
 
Mastercash:
Merci beaucoup mladen,

J'ai essayé d'ajouter un code que vous m'avez conseillé il y a quelques années....mais il semble ne pas fonctionner..... le code si vous vous souvenez va de cette façon...

static datetime lastAlerted=0 ;

si(lastalerted!=Time[0] ;

open().......

aidez-moi à ajouter le bon code à l'endroit approprié !

Mastercash

Comme je l'ai dit dans le post précédent : si vous attachez cet EA au même symbole et à différents cadres temporels, il n'y a aucun moyen d'empêcher un EA de cadre temporel inférieur d'ouvrir un ordre sur la barre actuelle de cadre temporel supérieur (qui a déjà ouvert un ordre).

Il faudrait analyser toutes les barres actuelles des horizons temporels, ce qui aboutirait à la barre actuelle de l'horizon temporel le plus élevé - mais même dans ce cas, vous n'avez aucune idée de l'horizon temporel qui a ouvert la barre.

Vous pourriez utiliser le champ de commentaire de l'ordre pour le marquer, mais le champ de commentaire peut être modifié par le courtier, il n'y a donc pas de moyen fiable de le faire.

 

ok monsieur...

Mais je n'ai jamais fait mon ea multi cadres temporels. Quoi qu'il en soit, j'ai joint le code ci-dessous...veuillez m'aider avec un ajustement pour que ce trading répété sur la même devise s'arrête : et si j'ai besoin de faire un engagement supplémentaire pour le faire, vous pouvez me le faire savoir par e-mail.tnks

mladen:
Mastercash

Comme je l'ai dit dans le post précédent : si vous attachez cet EA au même symbole et à des horizons temporels différents, il n'y a aucun moyen d'empêcher un EA d'horizon temporel inférieur d'ouvrir un ordre sur la barre actuelle d'horizon temporel supérieur (qui a déjà un ordre ouvert).

Vous devez scanner toutes les barres actuelles des cadres temporels, ce qui vous amène à la barre actuelle du cadre temporel le plus élevé - mais même dans ce cas, vous n'avez aucune idée de quel cadre temporel a ouvert la barre.

Vous pourriez utiliser le champ de commentaire de l'ordre pour le marquer, mais le champ de commentaire peut être modifié par le courtier, il n'y a donc aucun moyen fiable de le faire.
Dossiers :
 
Mastercash:
J'ai joint le code ci-dessous, mais je n'ai jamais fait d'EA multi-temporels... Aidez-moi à faire un ajustement pour que ce trading répété sur la même devise s'arrête : et si j'ai besoin de faire un engagement supplémentaire pour que cela soit fait, vous pouvez me le faire savoir en m'envoyant un e-mail.

En fait cet EA est un EA multi time frame (il utilise des indicateurs sur des données de 5 minutes) mais peu importe : ici vous avez une version qui ne permet pas d'ouvrir plus d'un ordre par barre nicetrader_1.021.mq4

Dossiers :
 

Bonjour à tous,

Quelqu'un peut-il m'aider à coder un ea simple basé sur un indicateur xcode, car je suis novice en codage.

J'ai juste besoin d'ordres d'achat et de vente après la fermeture de la barre de signal, l'option de changement de période de signal de l'indicateur, l'option de changement des heures et des jours de trading.

Les entrées d'achat et de vente sont simples, comme décrit dans la capture d'écran. n'importe quelle période, n'importe quelle paire, option de prise de profit, option de trailing stop.

Je sais que ce n'est pas le Saint Graal et qu'on en est loin (car le Saint Graal n'existe pas ), mais on peut essayer d'en tirer quelque chose.

Par exemple : 0.01,0.01,0.02,0.02,0.04,0.04,0.08,0.08 et ainsi de suite...

Dossiers :
xcode.jpg  346 kb
xcode.mq4  11 kb
 
mladen:
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

}

Salut Mladen,

Merci beaucoup pour votre aide ! J'ai implémenté votre code comme suggéré.

Maintenant cela fonctionne

Puis-je vous poser une autre petite question ?

Que pensez-vous du filtre CCI, est-ce la bonne approche pour filtrer les marchés latéraux dans ce cas ?

Devrais-je lui donner une fourchette comme (CCIFilter>80 && CCIFilter<100) ?

Peut-être pourriez-vous me conseiller ?

if(openedOrders<=0)

{

double CCIFilter=iCCI(NULL,0,CCIPeriod,CCIMethod,0);

double trendc = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,1); //buffer, signal candle, up

double trendp = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,2); //buffer, signal candle, down

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 80)) OpenBuy(); // (CCIFilter>80 && CCIFilter<100) maybe better?

if(cshorts < maxshorttrades && trendc==-1 && (CCIFilter<-80)) OpenSell(); //(CCIFilter-100)

// Check the CCI condition

// it is not symetrical to buy condition

}

}

P.S, j'espère que vous n'êtes pas affecté par la faillite d'Alpari, il y a pas mal de turbulences.

Merci d'avance et bon week-end !

Avec mes salutations distinguées,

TFI

Dossiers :
backtest2.jpg  160 kb
 
tfi_markets:
Bonjour Mladen,

Merci beaucoup pour votre aide ! J'ai implémenté votre code comme suggéré.

Maintenant cela fonctionne

Puis-je vous poser une autre petite question ?

Que pensez-vous du filtre CCI ? Est-ce la bonne approche pour filtrer les marchés latéraux dans ce cas ?

Devrais-je lui donner une fourchette comme (CCIFilter>80 && CCIFilter<100) ?

Peut-être pourriez-vous me conseiller ?

if(openedOrders<=0)

{

double CCIFilter=iCCI(NULL,0,CCIPeriod,CCIMethod,0);

double trendc = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,1); //buffer, signal candle, up

double trendp = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,2); //buffer, signal candle, down

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 80)) OpenBuy(); // (CCIFilter>80 && CCIFilter<100) maybe better?

if(cshorts < maxshorttrades && trendc==-1 && (CCIFilter<-80)) OpenSell(); //(CCIFilter-100)

// Check the CCI condition

// it is not symetrical to buy condition

}

}

P.S, j'espère que vous n'êtes pas affecté par la faillite d'Alpari, il y a pas mal de turbulences.

Merci d'avance et bon week-end !

Avec mes salutations distinguées,

TFI

TFI

A propos d'Alpari : Je suis leur client depuis longtemps. Mais je ferme mes comptes de temps en temps (quand ce que je considère comme une masse critique est atteinte) et cette fois-ci j'ai fermé mon compte avec eux il y a environ un mois, et je n'en ai pas ouvert un nouveau (ayant un compte encore ouvert avec un autre courtier aussi). Franchement, même si j'ai eu de la chance et que je n'ai pas été affecté par ce qui s'est passé, je dois dire que je suis triste pour ce qui leur est arrivé : je n'ai jamais eu aucun problème (même pas le plus petit) avec eux, et dans les cas où certaines choses avaient besoin d'être clarifiées ou corrigées, ils l'ont toujours fait en temps opportun.

_______________________

Du filtre CCI : habituellement, les valeurs entre -100 et +100 sont considérées comme une "zone normale" pour les CCI (ce qui signifierait une fourchette) mais beaucoup de traders négocient les CCI exclusivement sur une croix de zéro avec un paramètre de longueur par défaut (14). Cela augmente la possibilité d'être frappé par un whipsaw, mais ceux qui utilisent des croisements zéro l'utilisent généralement sur des cadres de temps courts. Pour éviter ce genre d'utilisation, réglez la période sur une période plus longue (essayez 50 par exemple), ce qui est un bon réglage pour les signaux zero cross sur un grand nombre de symboles et de cadres temporels.

 
mladen:
TFI

D'Alpari : je suis leur client depuis longtemps. Mais je ferme mes comptes de temps en temps (lorsque ce que je considère comme une masse critique est atteinte) et cette fois-ci, j'ai fermé mon compte chez eux il y a environ un mois, et je n'en ai pas ouvert de nouveau (ayant également un compte encore ouvert chez un autre courtier). Franchement, même si j'ai eu de la chance et que je n'ai pas été affecté par ce qui s'est passé, je dois dire que je suis triste pour ce qui leur est arrivé : je n'ai jamais eu aucun problème (même pas le plus petit) avec eux, et dans les cas où certaines choses avaient besoin d'être clarifiées ou corrigées, ils l'ont toujours fait en temps opportun.

_______________________

A propos du filtre CCI : généralement, les valeurs entre -100 et +100 sont considérées comme une "zone normale" pour les CCI (ce qui signifie qu'il s'agit d'une fourchette), mais beaucoup de traders négocient les CCI exclusivement sur une croix zéro avec un paramètre de longueur par défaut (14). Cela augmente la possibilité d'être frappé par un whipsaw, mais ceux qui utilisent des croisements zéro l'utilisent généralement sur des cadres de temps courts. Pour éviter ce genre d'utilisation, réglez la période sur une période plus longue (essayez 50 par exemple) qui est un bon paramètre pour les signaux zero cross sur un grand nombre de symboles et de cadres temporels.

Bonjour Mladen,

Je tiens à vous remercier une fois de plus pour votre aide. Vous êtes très bien informé. Je l'apprécie vraiment, les personnes qui aident et partagent leurs connaissances sont plutôt rares de nos jours. Je vais également mettre en œuvre et tester vos suggestions concernant le CCI.

Je n'ai heureusement pas été affecté par l'affaire Alpari car je suis toujours en train de développer mon EA (il devrait trader pendant que je suis au bureau et générer un revenu supplémentaire pour moi et ma famille). J'ai utilisé Alpari comme plateforme de test, car ils ont laissé le compte de démonstration ouvert pendant une durée illimitée. J'ai ouvert un compte chez IG markets il y a quelques jours, mais je n'ai pas encore transféré d'argent. Je dois d'abord avoir un fonctionnement fiable et sans bug de l'EA.

Je vous souhaite bonne chance et continuez votre excellent travail !

Avec mes salutations distinguées,

TFI