Comment coder ? - page 266

 
ixbone:
Bonjour à tous,

Je veux rassembler tous les ordres (achat et vente) d'une paire par magie et s'ils atteignent un seuil de rentabilité, tous les ordres doivent être fermés.

Tout conseil est le bienvenu, merci.

extern bool PairBreakeven=true;// Breakeven par paire tous les ordres de la même paire/magique

extern double Pairbreakevengain=6;// gain en pips requis pour permettre le break even

extern double Pairbreakeven=3;// break even, ordre fermé, 3 pip de profit/liquidation

double Pairmovebreakeven ;

if(PairBreakeven==true){

if(Pairbreakevengain>0)Pairmovebreakeven(Pairbreakevengain,Pairbreakeven) ;

CloseBuyOrders(Magic) ;

CloseSellOrders(Magic) ;

}

void Pairmovebreakeven(double Pairbreakevengain,double Pairbreakeven){

RefreshRates() ;

if(OrdersTotal()>0){

for(int i=OrdersTotal();i>=0;i++){

OrderSelect(i,SELECT_BY_POS,MODE_TRADES) ;

if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic ){

retour ;

}

}

}

}

int CloseBuyOrders(int Magic){ //op_sell est similaire

int total=OrdersTotal() ;

for(int cnt=total-1;cnt>=0;cnt--){

OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES) ;

if(OrderMagicNumber()==Magic && OrderSymbol()==Symbol()){

if(OrderType()==OP_BUY){

OrderClose(OrderTicket(),OrderLots(),Bid,3*mt) ;

}

}

}

return(0) ;

}

Le principal problème de ce code réside dans la fonction BE, qui ne s'arrête jamais vraiment et ne prend aucune mesure. Si vous n'exprimez pas votre intention en mots, je ne peux pas vraiment détecter ce que vous essayez de faire ici à partir du code.

Vous voulez que le code détecte tous les ordres sur votre compte qui ont un stop loss=prix d'ouverture de l'ordre et les ferme tous ? Ainsi, l'action de break even est effectuée par un autre EA ? J'aimerais vous aider mais je n'arrive pas à comprendre ce que vous voulez faire.

 
christinaLi:
Le principal problème avec ce code est dans la fonction BE, il n'a jamais vraiment bougé stop ou prendre une action. Si vous n'exprimez pas votre intention en mots, je ne peux pas vraiment détecter ce que vous essayez de faire ici à partir du code. Vous voulez que le code détecte tous les ordres sur votre compte qui ont un stop loss=prix d'ouverture de l'ordre et les ferme tous ? Ainsi, l'action de break even est effectuée par un autre EA ? J'aimerais vous aider mais je n'arrive pas à comprendre ce que vous voulez faire.

christinaLi,

Désolé, pour mon erreur.

-Je veux collecter tous les ordres d'une paire par magie et résumer les profits de tous les ordres, indépendamment de l'achat, de la vente, du tp, du sl, exemple : nous avons 8 ordres d' achat et de vente, le profit résumé est de 6 pips // extern double Pairbreakevengain=6;// gain en pips requis pour permettre le break even.

-Si le profit est de +6 pips pour tous les ordres d'une paire (achat et vente), tous les ordres (achat et vente) doivent être réglés au prix actuel -3 //extern double Pairbreakeven=3;// break even, ordre fermé, 3 pip de profit/lippage.

-Si le gain de Pairbreakeven est inférieur au gain de tous les ordres d'une paire, exemple : 8 ordres mixtes d'achat/vente, le gain est ramené de 6 à 3, tous les ordres sont fermés.

J'ai un module de fonctionnement correct pour un breakeven d'un seul ordre et j'ai essayé de le modifier par moi-même, je manque de compétences en code mt4, il y a de nombreuses années, j'ai appris l'assembleur...

Dois-je poster la fonction de breakeven d'ordre unique ?

Merci pour votre aide

IX

 

Salut, IX,

Je sais ce que vous essayez de faire maintenant. C'est possible.

Les choses sont quelque peu compliquées par le fait que vous pouvez avoir des achats et des ventes en même temps. Car lorsque vous parlez de "prix actuel", pour les achats, il s'agit de l'offre, pour les ventes, il s'agit de la demande, car seuls ces prix sont réalistes pour clôturer les ordres. Vous pouvez donc voir qu'à tout moment, lorsque vous ajustez le stop loss de vos ordres, les achats et les ventes ont un prix différent. Si votre spread n'est pas constant, il y a beaucoup de chances que vos ordres ne soient pas fermés en même temps, parfois il est possible que la moitié de vos ordres ne soient pas fermés.

Je pense que la bonne façon de procéder n'est pas de déplacer le stop loss, mais l'EA activera une mémoire une fois que le profit global de 6 pips sera atteint, puis fermera simplement tous les ordres au marché lorsque le profit global tombera à 3 pips. Dans ce cas, l'EA force la clôture des ordres, ils ne sont pas arrêtés par MT4.

 
christinaLi:
Salut, IX,

Je sais ce que vous essayez de faire maintenant. C'est possible.

Les choses sont quelque peu compliquées par le fait que vous pouvez avoir des achats et des ventes en même temps. Parce que lorsque vous parlez de "prix actuel", pour les achats, cela signifie Bid, pour les ventes, cela signifie Ask, parce que seuls ces prix sont réalistes pour fermer les ordres. Vous pouvez donc voir qu'à tout moment, lorsque vous ajustez le stop loss de vos ordres, les achats et les ventes ont un prix différent. Si votre spread n'est pas constant, il y a beaucoup de chances que vos ordres ne soient pas fermés en même temps, parfois il est possible que la moitié de vos ordres ne soient pas fermés.

Je pense que la bonne façon de procéder n'est pas de déplacer le stop loss, mais plutôt que l'EA active une mémoire une fois que le profit global de 6 pips est atteint, puis ferme simplement tous les ordres au marché lorsque le profit global tombe à 3 pips. Dans ce cas, l'EA force la clôture des ordres, ils ne sont pas arrêtés par MT4.

Bonjour christinaLi,

Je suis d'accord à 100%, c'est trop compliqué, je comprends ce que vous voulez dire, peut-être qu'un calcul par paire (panier) sans déplacer un stoploss est la solution, comme :

- sélectionner tous les ordres par paire et par magie

- résumer le profit de tous les ordres

- si la somme des profits est = 6pips

- fermer tous les ordres, si aucun slippage ne se produit, le breakeven sera un "profit" de 6pips, si le slippage est de 3pips, le résultat pour le breakeven est un "profit" de 3pips.

1) l'avantage est le suivant : pas de problème du tout

2) inconvénient : pas de place (3pips) pour tous les ordres, si j'ai 7 ordres d'achat et 6 ordres de vente couverts, si l'un des ordres d'achat augmente de 6 pips, tous les ordres sont fermés, y a-t-il une option pour marquer tous les ordres en mémoire pour être fermés si 6 pips sont atteints (breakeven=true) par une diminution de 3pips (6-3= 3pips de profit) (breakevencloseorders=true) ?

Les ordres hedged 7buy et 6sell ne peuvent pas monter au-delà de 6 pips avec #1, ils sont toujours fermés.

Avec le #2, 6 pips sont seulement un marqueur d'activation, si la baisse est de 3 pips, fermez tous les ordres, si la hausse est supérieure à 6 pips, par exemple jusqu'à 15 pips, il y a de la place de +3pips à 15pips ce qui donne un profit de 12 pips.

le spread n'est pas calculé à ce moment là ! car 7buys & 6sells résument avec 2pips de spread à 26pips pour atteindre le breakeven "0" doit avoir pour un ordre d'achat et pour avoir 32 pips avec #1 et 29 pips doit avoir avec #2 pour un ordre d'achat - ai-je raison ?

merci pour vos suggestions

IX

 
ixbone:
Salut christinaLi,

Je suis d'accord à 100%, c'est trop compliqué, je comprends ce que vous voulez dire, peut-être qu'un calcul par paire (panier) sans déplacer un stoploss est la solution, comme :

- sélectionner tous les ordres par paire et par magie

- résumer le profit de tous les ordres

- si la somme des profits est = 6pips

- fermer tous les ordres, si aucun slippage ne se produit, le breakeven sera un "profit" de 6pips, si le slippage est de 3pips, le résultat pour le breakeven est un "profit" de 3pips.

1) l'avantage est le suivant : pas de problème du tout

2) inconvénient : pas de place (3pips) pour tous les ordres, si j'ai 7 ordres d'achat et 6 ordres de vente couverts, si l'un des ordres d'achat augmente de 6 pips, tous les ordres sont fermés, y a-t-il une option pour marquer tous les ordres en mémoire pour être fermés si 6 pips sont atteints (breakeven=true) par une diminution de 3pips (6-3= 3pips de profit) (breakevencloseorders=true) ?

Les ordres hedged 7buy et 6sell ne peuvent pas monter au-delà de 6 pips avec #1, ils sont toujours fermés.

Avec le #2, 6 pips sont seulement un marqueur d'activation, si la baisse est de 3 pips, fermez tous les ordres, si la hausse est supérieure à 6 pips, par exemple jusqu'à 15 pips, il y a de la place de +3pips à 15pips ce qui donne un profit de 12 pips.

le spread n'est pas calculé à ce moment là ! car 7buys & 6sells résument avec 2pips de spread à 26pips pour atteindre le breakeven "0" doit avoir pour un ordre d'achat et pour avoir 32 pips avec #1 et 29 pips doit avoir avec #2 pour un ordre d'achat - ai-je raison ?

merci pour vos suggestions

IX

Je pense que vous m'avez mal compris, ce que vous voulez peut être réalisé avec précision, seulement pas de modification réelle du stop loss. Je vais trouver un peu de temps pour faire le code aujourd'hui et vous faire une démonstration. Christina

 
ixbone:
Bonjour christinaLi,

Je suis d'accord à 100%, c'est trop compliqué, je comprends ce que vous voulez dire, peut-être qu'un calcul par paire (panier) sans déplacer un stoploss est la solution, comme :

- sélectionner tous les ordres par paire et par magie

- résumer le profit de tous les ordres

- si la somme des profits est = 6pips

- fermer tous les ordres, si aucun slippage ne se produit, le breakeven sera un "profit" de 6pips, si le slippage est de 3pips, le résultat pour le breakeven est un "profit" de 3pips.

1) l'avantage est le suivant : pas de problème du tout

2) inconvénient : pas de place (3pips) pour tous les ordres, si j'ai 7 ordres d'achat et 6 ordres de vente couverts, si l'un des ordres d'achat augmente de 6 pips, tous les ordres sont fermés, y a-t-il une option pour marquer tous les ordres en mémoire pour être fermés si 6 pips sont atteints (breakeven=true) par une diminution de 3pips (6-3= 3pips de profit) (breakevencloseorders=true) ?

Les ordres hedged 7buy et 6sell ne peuvent pas monter au-delà de 6 pips avec #1, ils sont toujours fermés.

Avec le #2, 6 pips sont seulement un marqueur d'activation, si la baisse est de 3 pips, fermez tous les ordres, si la hausse est supérieure à 6 pips, par exemple jusqu'à 15 pips, il y a de la place de +3 pips à 15 pips, ce qui donne un profit de 12 pips.

le spread n'est pas calculé à ce moment là ! car 7buys & 6sells résument avec 2pips de spread à 26pips pour atteindre le breakeven "0" doit avoir pour un ordre d'achat et pour avoir 32 pips avec #1 et 29 pips doit avoir avec #2 pour un ordre d'achat - ai-je raison ?

merci pour vos suggestions

IX

En fait, maintenant que j'y ai réfléchi un peu plus, ce que vous demandez ne peut pas être fait.

C'est assez intéressant, j'ai codé beaucoup de fonctions similaires, vous pouvez calculer le BE interne du montant en dollars ou des pips, mais ils sont tous le même type d'ordre. On ne peut pas le faire avec les achats et les ventes. Par exemple, si vous avez x achats (ils peuvent être de taille différente), à un moment donné, tous les bénéfices en dollars additionnés sont égaux à 0, donc vous êtes maintenant au BE. Ensuite, s'il s'agit d'achats, si vous voulez 3 pips de profit, il vous suffit d'ajouter 3 pips à l'offre actuelle, et vous avez un prix cible. Si tout est vendu, vous soustrayez 3 pips de l'offre actuelle, et vous avez un prix cible. Mais si vous avez à la fois des achats et des ventes, que faites-vous ? ajouter ou soustraire ?

Comment définir que vous avez 3 pips de profit dans la situation suivante ? 1 lot d'achat à 1.4100, 2 lots de vente à 1.4150 ?

La seule chose que l'on puisse faire est d'utiliser le profit en dollars, pas en pips, je pense.

 
christinaLi:
Je pense que vous m'avez mal compris, ce que vous voulez peut être réalisé avec précision, seulement pas de modification réelle du stop loss. Je vais trouver un peu de temps pour faire le code aujourd'hui et vous faire une démonstration. Christina

Merci Christina,

j'apprécie beaucoup votre savoir !

Michael

 
christinaLi:
En fait, maintenant que j'y ai réfléchi un peu plus, ce que vous demandez ne peut pas être fait.

C'est assez intéressant, j'ai codé beaucoup de fonctions similaires, vous pouvez calculer le BE interne du montant en dollars ou des pips, mais ils sont tous le même type d'ordre. On ne peut pas le faire avec les achats et les ventes. Par exemple, si vous avez x achats (ils peuvent être de taille différente), à un moment donné, tous les bénéfices en dollars additionnés sont égaux à 0, donc vous êtes maintenant au BE. Ensuite, s'il s'agit d'achats, si vous voulez 3 pips de profit, il vous suffit d'ajouter 3 pips à l'offre actuelle, et vous avez un prix cible. Si tout est vendu, vous soustrayez 3 pips de l'offre actuelle, et vous avez un prix cible. Mais si vous avez à la fois des achats et des ventes, que faites-vous ? ajouter ou soustraire ?

Comment définir que vous avez 3 pips de profit dans la situation suivante ? 1 lot d'achat à 1.4100, 2 lots de vente à 1.4150 ?

La seule chose qui puisse être faite est d'utiliser le profit en dollars, et non le profit en pip, je pense.

Christina,

Ajouter ou soustraire n'a pas d'importance, car la somme des lots de 7 ordres d' achat et de 6 ordres de vente est suffisante pour atteindre des profits normaux, le BE pour tous les ordres d'une paire devrait fonctionner comme un dispositif de sécurité :

Avec cette fonction de couverture, vous économisez beaucoup de marge, avec des pas entre 50 pips, votre compte ne peut pas être effacé, si les profits normaux ne sont pas atteints, BE devrait fermer tous les ordres et commencer avec un nouveau signal et le premier ordre.

Pour les signaux d'achat et de vente, j'utilise l'action des prix.

Dossiers :
unbenannt.png  7 kb
 
ixbone:
Christina,

Ajouter ou soustraire n'a pas d'importance, parce que la somme de 7 ordres d'achat contre 6 ordres de vente est suffisante pour atteindre des profits normaux, BE pour tous les ordres d'une paire devrait fonctionner comme une fonction de sécurité :

Avec cette fonction de couverture, vous économisez beaucoup de marge, avec des pas entre 50 pips, votre compte ne peut pas être effacé, si les profits normaux ne sont pas atteints, BE devrait fermer tous les ordres et commencer avec un nouveau signal et un premier ordre.

Pour les signaux d'achat et de vente, j'utilise l'action des prix.

Informations supplémentaires :

- Je trade 8-10 majors en même temps pour la diversification (corrélation partielle), donc il est mieux de trader 10 paires avec 0.01 qu'une paire avec 0.1.

- Je double mes pas entre les ordres par, 25,50,100,200,400,

exemple :

1er ordre 1.5000

2ème ordre 1.5025

3ème.........1.050

4ème.........1.100

et ainsi de suite

 

J'aimerais vous aider avec cette fonction dont vous parlez mais il semble que je ne puisse pas simplement comprendre votre logique. Cela n'a vraiment rien à voir avec les autres logiques de la stratégie.

Je voudrais simplement savoir ceci.

Si vous avez 1 lot d'achat à 1,4110 et 2 lots de vente à 1,4200. A quel prix pensez-vous avoir un gain de 6 pips ?

Raison: