Comment coder ? - page 278

 

Je l'ai backtesté pendant 20 jours et il semble que j'ai perdu de l'argent.

Je vais backtester pendant un an, voyons voir

mais tout d'abord, j'ai besoin de savoir si je peux modifier les temps en changeant juste la valeur de la chaîne externe begin et de la chaîne externe end ?

 

J'ai également remarqué que l'EA effectue des transactions plusieurs fois par jour. Nous devons donc dire à l'EA de n'effectuer qu'une seule transaction lors de la première sortie de cette fourchette Min-Max -/+ 5 pips. Nous devons également incorporer un stop suiveur au lieu d'un simple stop loss.

J'ai aussi une question sur les chiffres. 300 n'est-il pas égal à 300 pips ? Nous avons besoin d'un stop de 30 pips et d'un take profit de 50 pips. De même, que signifie magis = 123 ?

Même question pour ce if(Bid<=(low-0.005)) 0.005 ici n'est pas 50 pips ?

n'est pas extern double stopLoss = 300.0;

extern double takeProfit = 500.0;

chaîne externe Begin="02:00" ;

extern string End="10:00" ;

extern double distance = 80 ;

bool isECN = true ;

bool cond = false ;

bool cond2 = false ;

double low ;

double high ;

extern double lots = 0.1 ;

int magic = 123 ;

int slippage = 1 ;

string comment = "" ;

int ticket ;

 
Avasys:
J'ai également remarqué que l'EA effectue des transactions plusieurs fois par jour. Nous devons donc dire à l'EA de n'effectuer qu'une seule transaction à la première sortie de cette fourchette Min-Max -/+ 5 pips. Nous devons également incorporer un stop suiveur au lieu d'un simple stop loss.

J'ai aussi une question sur les chiffres. 300 n'est-il pas égal à 300 pips ? Nous avons besoin d'un stop de 30 pips et d'un take profit de 50 pips. De même, que signifie magis = 123 ?

même question pour ce if(Bid<=(low-0.005)) 0.005 ici n'est pas 50 pips ?

n'est pas extern double stopLoss = 300.0;

extern double takeProfit = 500.0;

chaîne externe Begin="02:00" ;

extern string End="10:00" ;

extern double distance = 80 ;

bool isECN = true ;

bool cond = false ;

bool cond2 = false ;

double low ;

double high ;

extern double lots = 0.1 ;

int magic = 123 ;

int slippage = 1 ;

string comment = "" ;

int ticket ;

[lang=pl]Vous avez raison, il devrait y avoir 0.0005 au lieu de 0.005. 300 et 500 parce que j'ai utilisé un courtier à cinq chiffres, ce qui signifie 300 pips, donc 30 pips.

S'il vous plaît dites-moi le type de trailing stop dont vous avez besoin ? à propos du chiffre magique. Comme vous pouvez le voir, j'ai changé le chiffre magique si vous n'aimez pas 123 [/lang]

Dossiers :
simple_ea.mq4  4 kb
 
g.pociejewski:
[Vous avez raison, il devrait y avoir 0.0005 au lieu de 0.005. 300 et 500 parce que j'utilise un courtier à cinq chiffres, ce qui signifie 300 pips, donc 30 pips. S'il vous plaît dites-moi le type de trailing stop dont vous avez besoin ? à propos du chiffre magique. Comme vous pouvez le voir, je change le chiffre magique si vous n'aimez pas 123 [/lang]

Merci

Alors, est-ce que cet EA ne fait des transactions qu'une seule fois par jour, donc la sortie des niveaux peut se produire plusieurs fois dans la journée mais il ne peut y avoir qu'une seule transaction.

De plus, en ce qui concerne l'EURJPY, qui est une devise de grande valeur, je continue à utiliser la même numérotation ou je change de numéro ?

Et aussi, puis-je changer ou modifier les numéros stop loss, take profit, les temps

concernant le trailing stop. Je voudrais que lorsque le profit augmente de 35 pips, le trailing stop doit suivre pour verrouiller le profit.

Alors que se passe-t-il si je change ici :

extern double stopLoss = 300.0; (J'utilise un courtier à 4 chiffres donc, dois-je modifier ceci ?)

extern double takeProfit = 500.0;

extern string Begin="0:00" ; (que se passe-t-il si je veux faire la plage de temps 22:00 du jour précédent et 06:00 du jour actuel ?)

extern string End="08:15" ;

extern double distance = 60 ;

bool isECN = true ;

bool cond = false ;

bool cond2 = false ;

double low ;

double high ;

extern double lots = 0.1 ;

int magic = 123 ;

int slippage = 1 ;

string comment = "" ;

int ticket ;

Et si je modifie ceci

if(Bid<=(low-0.005))

Cela ne devrait pas affecter la fonctionnalité du code, n'est-ce pas ?

Le seul problème qu'il a quand j'essaie de backtester, c'est que comme si l'EA exécutait plusieurs transactions en un jour, alors pouvez-vous gérer dans le code pour exécuter seulement une transaction pour une paire par jour ?

 

Bonjour à nouveau

OK j'ai découvert que la distance ne doit pas être de 80 pour les paires comme GBPUSD qui a une valeur plus faible que les paires JPY donc dans le cas des paires JPY la distance doit être 10X que pour les paires à faible valeur.

et encore une fois, je n'ai pas pu comprendre une chose lorsque je l'ai backtesté dans le résultat il indique comme si EA a négocié plusieurs fois dans une journée sur la même paire.

Alors est-il possible que si l'EA est entré en position, cette position ne doit être qu'une seule ce jour-là ?

Merci

De plus, quelle est la signification de ce qui suit :

int slippage= 1 ;

string comment = "" ;

int ticket ;

Et aussi, puis-je ajouter un script dans l'EA et lorsque le trade est exécuté, il m'est envoyé par sms ou par e-mail ?

Merci

 

StopTrading pour aujourd'hui, si un ordre est dans l'historique listé

Bonjour,

Quelqu'un peut peut-être me guider :

- L'ordre est exécuté, fermé en profit ou perte et listé dans l'historique.

- Je veux maintenant désactiver le trading/arrêter l'ouverture de nouveaux ordres sur cette paire (symbole) pour toute la journée.

- le jour suivant, un nouvel ordre peut être exécuté

c'est comme une fonction"Max Trades Per Bar", mais basée sur l'historique.

J'ai testé plusieurs bouts de code sans succès, car je n'ai pas de compétences étendues en matière de codage.

exemple :

1 2008.01.07 02:36 sell 1 0.10 1.4730 0.0000 0.0000 0.00 10000.00

2 2008.01.07 03:14 fermer 1 0.10 1.4714 0.0000 0.0000 16.00 10016.00

3 2008.01.07 03:14 vendre 2 0.10 1.4712 0.0000 0.0000 0.00 10016.00

4 2008.01.07 07:54 fermer 2 0.10 1.4672 0.0000 0.0000 40.00 10056.00

5 07.01.07 07:54 vendre 3 0.10 1.4671 0.0000 0.0000 0.00 10056.00

6 9.01.2008 15:56 fermer 3 0.10 1.4663 0.0000 0.0000 7.04 10063.04

7 2008.01.10 14:24 acheter 4 0.10 1.4708 0.0000 0.0000 0.00 10063.04

8 2008.01.10 14:47 fermer 4 0.10 1.4748 0.0000 0.0000 40.50 10103.54

toute aide est très appréciée

salutations

Michael

 
ixbone:
Salut,

Quelqu'un peut peut-être me guider :

- L'ordre est exécuté, fermé en profit ou perte et listé dans l'historique.

- Maintenant, je veux désactiver le trading/arrêter l'ouverture de nouveaux ordres sur cette paire (symbole) pour toute la journée.

- le jour suivant, un nouvel ordre peut être exécuté

c'est comme une fonction "Max Trades Per Bar", mais basée sur l'historique.

J'ai testé plusieurs bouts de code sans succès, car je n'ai pas de compétences étendues en codage.

exemple :

1 2008.01.07 02:36 sell 1 0.10 1.4730 0.0000 0.0000 0.00 10000.00

2 2008.01.07 03:14 fermer 1 0.10 1.4714 0.0000 0.0000 16.00 10016.00

3 2008.01.07 03:14 vendre 2 0.10 1.4712 0.0000 0.0000 0.00 10016.00

4 2008.01.07 07:54 fermer 2 0.10 1.4672 0.0000 0.0000 40.00 10056.00

5 07.01.07:54 vente 3 0.10 1.4671 0.0000 0.0000 0.00 10056.00

6 9.01.2008 15:56 fermer 3 0.10 1.4663 0.0000 0.0000 7.04 10063.04

7 2008.01.10 14:24 acheter 4 0.10 1.4708 0.0000 0.0000 0.00 10063.04

8 2008.01.10 14:47 fermer 4 0.10 1.4748 0.0000 0.0000 40.50 10103.54

toute aide est très appréciée

Salutations

Michael

[lang=pl]Bonjour Michael,

Une question, devez-vous arrêter d'ouvrir de nouvelles positions si l'une des positions du jour est fermée, ou n'autorisez-vous pas par exemple l'ouverture d'une position courte si une position courte est fermée lors du stop ?

est fermé sur le stop ? Il n'y a pas d'exemple de comment le faire dans le cas de OP_BUY (pour les autres, c'est similaire).

int time ;

bool cond = true ;

double stopLoss = 50 ;

double takeProfit = 70 ;

double lots = 0.1 ;

int orders = 0 ;

int magic = 123 ;

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

//| fonction d' initialisation de l'expert

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

int init()

{

//----

//----

return(0) ;

}

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

//| fonction de désinitialisation experte |

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

int deinit()

{

//----

//----

return(0) ;

}

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

//| fonction de démarrage expert |

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

int start()

{

Print(countOrders(magic, OP_BUY)) ;

if(orders !=countOrders(magic,OP_BUY)) cond = false ;

if(time != DayOfWeek()) cond = true ;

if(cond) {

OrderSend(Symbol(),OP_BUY,lots,Ask, 1,sltpValue(Ask - stopLoss*Point, stopLoss),sltpValue(Bid+ takeProfit*Point,takeProfit),"",magic) ;

}

orders = countOrders(magic,OP_BUY) ;

time = DayOfWeek() ;

//----

return(0) ;

}

int countOrders(int oMagic,int oType) {

int count=0 ;

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

if(OrderSelect(i,SELECT_BY_POS)) {

if(OrderMagicNumber()==oMagic) {

if(OrderSymbol()==Symbol()) {

if(OrderType()==oType || oType<0) {

compte++ ;

}

}

}

}

}

return(count) ;

}

double sltpValue(double w1, int w2){

si(w2 == 0)

return(0) ;

return (NormalizeDouble(w1, Digits)) ;

}

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

J'espère que c'est clair. En cas de questions, n'hésitez pas à me contacter.

Salutations,

Grzesiek[/lang]

 

Salut Grzesiek,

oui, seulement l'arrêt de l'ouverture de nouvelles positions dans la journée en cours, peu importe s'il s'agit d'un ordre d'achat, de vente, en attente ou annulé :

- si un ordre est clôturé en profit, en perte, annulé ou en attente, supprimé et noté dans l'historique - aucune nouvelle transaction de quelque nature que ce soit n'est autorisée pour ce symbole() à la date du jour.

- si nous avons un nouveau jour, toutes sortes de nouveaux ordres peuvent être exécutés.

Ce que j'ai fait ne fonctionne pas :

extern bool Only1OrderPerDay=true ;

si(Only1OrderPerDay==true){

CountHistoryOrders() ;

}

void CountHistoryOrders(){

for(int d=0;d<OrdersHistoryTotal();d++){

OrderSelect(d,SELECT_BY_POS,MODE_HISTORY);{

if(OrderSymbol()==Symbol() && (OrderMagicNumber()==Magic || Magic==0))d++ ;

Print("Ordres historiques "+DoubleToStr(d,0)) ;

{

if(d>0 ....time ?...){

retour ;

}}}}}

Merci pour votre aide

Michael

g.pociejewski:
[lang=pl]Bonjour Michael,

Une question, devez-vous arrêter d'ouvrir de nouvelles positions si une position du jour est fermée, ou n'autorisez-vous pas par exemple l'ouverture d'une position courte si une position courte est fermée lors du stop ?

est fermé sur le stop ? Il n'y a pas d'exemple de comment le faire dans le cas de OP_BUY (pour les autres, c'est similaire).

int time ;

bool cond = true ;

double stopLoss = 50 ;

double takeProfit = 70 ;

double lots = 0.1 ;

int orders = 0 ;

int magic = 123 ;

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

//| fonction d'initialisation de l'expert

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

int init()

{

//----

//----

return(0) ;

}

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

//| fonction de désinitialisation experte |

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

int deinit()

{

//----

//----

return(0) ;

}

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

//| fonction de démarrage expert |

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

int start()

{

Print(countOrders(magic, OP_BUY)) ;

if(orders !=countOrders(magic,OP_BUY)) cond = false ;

if(time != DayOfWeek()) cond = true ;

if(cond) {

OrderSend(Symbol(),OP_BUY,lots,Ask, 1,sltpValue(Ask - stopLoss*Point, stopLoss),sltpValue(Bid+ takeProfit*Point,takeProfit),"",magic) ;

}

orders = countOrders(magic,OP_BUY) ;

time = DayOfWeek() ;

//----

return(0) ;

}

int countOrders(int oMagic,int oType) {

int count=0 ;

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

if(OrderSelect(i,SELECT_BY_POS)) {

if(OrderMagicNumber()==oMagic) {

if(OrderSymbol()==Symbol()) {

if(OrderType()==oType || oType<0) {

compte++ ;

}

}

}

}

}

return(count) ;

}

double sltpValue(double w1, int w2){

si(w2 == 0)

return(0) ;

return (NormalizeDouble(w1, Digits)) ;

}

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

J'espère que c'est clair. En cas de questions, n'hésitez pas à me contacter.

Merci,

Grzesiek[/lang]
 

Glisser et Déposer le Stop Loss

Bonjour

J'ai le script Drag and Drop Stop Loss, et j'adore l'utiliser. Mais avec mon courtier, il ne fonctionne pas pour 2 ordres dans un même scart, seulement pour un ordre. Je veux définir un stop loss pour 2 ordres au même endroit.

Quel est le problème ? Il fonctionne bien avec les autres courtiers.

Merci de m'aider

int start()

{

//----

int digits = MarketInfo(Symbol(),MODE_DIGITS) ;

double valeur = NormalizeDouble(WindowPriceOnDropped(),digits) ;

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

{

if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES))

continuer ;

if(OrderSymbol()!=Symbol())

continuer ;

Rafraîchir les taux() ;

if(OrderType()==OP_BUY)

if(value<Bid)

OrderModify(OrderTicket(),OrderOpenPrice(),value, OrderTakeProfit(),OrderExpiration(),White) ;

if(OrderType()==OP_SELL)

if(valeur>Ask)

OrderModify(OrderTicket(),OrderOpenPrice(),value, OrderTakeProfit(),OrderExpiration(),White) ;

if((OrderType()==OP_BUYSTOP) || (OrderType()==OP_BUYLIMIT))

if(value<OrderOpenPrice())

OrderModify(OrderTicket(),OrderOpenPrice(),value, OrderTakeProfit(),OrderExpiration(),White) ;

if((OrderType()==OP_SELLSTOP) || (OrderType()==OP_SELLLIMIT))

if(value>OrderOpenPrice())

OrderModify(OrderTicket(),OrderOpenPrice(),value, OrderTakeProfit(),OrderExpiration(),White) ;

}

return(0) ;

}

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

 

Comment puis-je trouver la position de la co ordonnée X Y de deux indicateurs dissemblables dans un EA pour acheter et vendre où le croisement de deux indicateurs est possible ?

disons un Macd et un autre indicateur dans la même sous-fenêtre ?

Raison: