Aide au codage - page 290

 
mladen:
C'est simple :

Placez quelque chose comme ceci au début de la procédure start() de votre EA et cela l'empêchera de fonctionner si la perte (ou le profit) déjà réalisé ce jour-là dépasse un certain montant :

double totalProfit=0;

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

{

if (!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) continue;

if (OrderSymbol() != Symbol()) continue;

if (OrderMagicNumber() != someMagicNumber) continue;

if (iBarShift(Symbol(),PERIOD_D1,OrderCloseTime())==0)

if (OrderType()==OP_BUY || OrderType()==OP_SELL)

totalProfit += OrderProfit()+OrderCommission()+OrderSwap();

}

if (totalProfit < someProfitLossLimit) return(0);

[/PHP]

Cher Monsieur MLADEN....

THANKSSSSS A LOT pour les codes ci-dessus.... Reconnaissance de dette 2 crédits.....

[PHP]

double totalProfit=0 ;

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

{

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

si (OrderSymbol() == Symbol()) continue ;

si (OrderMagicNumber() == someMagicNumber) continue ;

si (iBarShift(Symbol(),PERIOD_D1,OrderCloseTime())==0)

si (OrderType()==OP_BUY || OrderType()==OP_SELL)

totalProfit += OrderProfit()+OrderCommission()+OrderSwap() ;

}

si (totalProfit < someProfitLossLimit) return(0) ;

Juste pour vérifier..... ce code empêchera-t-il d'autres ordres à partir d'une paire de devises spécifique et du MagicNumber.... si la PERTE cumulée d'aujourd'hui dépasse une certaine limite de perte de profit.....

Merci pour la réponse très-très rapide....

meilleures salutations

AZRUL...

 
12BPRO:
Cher Monsieur MLADEN....

THANKSSSSS A LOT pour les codes ci-dessus.... Reconnaissance de dette 2 crédits.....

double totalProfit=0;

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

{

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

if (OrderSymbol() == Symbol()) continue;

if (OrderMagicNumber() == someMagicNumber) continue;

if (iBarShift(Symbol(),PERIOD_D1,OrderCloseTime())==0)

if (OrderType()==OP_BUY || OrderType()==OP_SELL)

totalProfit += OrderProfit()+OrderCommission()+OrderSwap();

}

if (totalProfit < someProfitLossLimit) return(0);

[/PHP]

Just to check..... will this code prevent any more orders from a specific currency pair and MagicNumber.... if today's ACCUMULATED LOSS exceed someProfitLossLimit....

Thanks for the very-very fast reply....

best regrads

AZRUL...

Oui

Cela empêchera la poursuite du traitement du code si le profit accumulé des ordres fermés est inférieur à un certain montant. Vous pouvez remplacer la dernière ligne par celle-ci :

[PHP]if (totalProfit < 0 && totalProfit < someProfitLossLimit) return(0) ;

Pour être sûr que cela ne soit fait que dans les cas où le "profit" cumulé est négatif (lorsqu'il y a eu des pertes).

 
mladen:
Oui

Il empêchera la poursuite du traitement du code si le profit accumulé des ordres fermés est inférieur à un certain montant. Vous pouvez remplacer la dernière ligne par celle-ci :

if (totalProfit < 0 && totalProfit < someProfitLossLimit) return(0);
Pour être sûr que cela ne soit fait que dans les cas où le "profit" cumulé est négatif (lorsqu'il y a eu des pertes).

Cher Monsieur MLADEN...

Je suis désolé Monsieur... Je pense que je n'ai pas été assez clair pour vous.....

Mon intention est qu'un code pour garder un œil sur la PERTE ACCUMULÉE seulement pour une paire de devises spécifique et MagicNumber..... Sans inclure les profits qu'il réalise... Seule la perte compte...

DÉSOLÉ POUR LA CONFUSION...

Meilleures salutations...

AZRUL...

 
12BPRO:
Cher Monsieur MLADEN...

Désolé, Monsieur... Je pense que je n'ai pas été assez clair pour vous.....

Mon intention est qu'un code pour garder les onglets sur la PERTE ACCUMULÉE seulement pour une paire de devises spécifiques et MagicNumber..... Sans inclure les profits qu'il réalise... Seule la perte compte...

DÉSOLÉ POUR LA CONFUSION...

Meilleures salutations...

AZRUL...

AZRUL

Le profit peut être négatif (==perte) Dans la liste fermée d'otrders il y a un fichier appelé Order() profit qui garde le "profit" : positif pour les ordres gagnants et négatif pour les trades perdants. Ce bout de code fait exactement ce dont vous avez besoin

 

Cher Monsieur MLADEN,

La théorie est la suivante.... si aujourd'hui le marché se trouve être un SIDEWAY, je finirai par perdre une partie du profit (s'il y en a un) qui a été fait et X$ de RISQUE sur mon capital..... Ce n'est pas une protection contre un très MAUVAIS JOUR de trading.....

La raison en est que je suis prêt à RISQUER à X$ par jour du trading d'aujourd'hui....

Les codes ci-dessus vont consommer tous les profits (s'il y en a) de la journée et aussi mon RISQUE (capital)...

MERCI

Meilleures salutations...

AZRUL...

 
mladen:
AZRUL Le profit peut être négatif (==perte) Dans la liste des ordres fermés il y a un fichier appelé Order() profit qui garde le "profit" : positif pour les ordres gagnants et négatif pour les trades perdants. Ce petit bout de code fait exactement ce dont vous avez besoin

Cher Monsieur MLADEN...

Merci de m'éclairer sur la suggestion ci-dessus...

Je vais essayer de rechercher tout résultat....

Meilleures salutations

AZRUL...

 

Cher Monsieur MLADEN,

Est-ce que les codes suivants feront l'affaire...

Garder un œil sur la PERTE ACCUMULÉE uniquement pour une paire de devises spécifique et le MagicNumber..... Sans inclure les profits qu'il réalise... Seule la perte compte...

extern double LossAmount = -500.00

...............

int start()

if(LossRisk()<=LossAmount)

return(0);

...............

void LossRisk()

double totalLoss=0;

{

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

{

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

if (OrderSymbol() == Symbol()) continue;

if (OrderMagicNumber() == someMagicNumber) continue;

if (iBarShift(Symbol(),PERIOD_D1,OrderCloseTime())==0)

if (OrderType()==OP_BUY || OrderType()==OP_SELL)

totalLoss -= OrderProfit()+OrderCommission()+OrderSwap();

}

return(totalLoss);

}

Vos connaissances sont très appréciées...

Votre serviteur

AZRUL....

 
12BPRO:
Cher Monsieur MLADEN,

Est-ce que les codes suivants feront l'affaire...

Garder un œil sur la PERTE ACCUMULÉE seulement pour une paire de devises spécifique et le MagicNumber..... Sans inclure les profits qu'il réalise... Seule la perte compte...

extern double LossAmount = -500.00

...............

int start()

if(LossRisk()<=LossAmount)

return(0);

...............

void LossRisk()

double totalLoss=0;

{

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

{

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

if (OrderSymbol() == Symbol()) continue;

if (OrderMagicNumber() == someMagicNumber) continue;

if (iBarShift(Symbol(),PERIOD_D1,OrderCloseTime())==0)

if (OrderType()==OP_BUY || OrderType()==OP_SELL)

totalLoss -= OrderProfit()+OrderCommission()+OrderSwap();

}

return(totalLoss);

}

[/PHP]

Your Knowledge is highly appreciated...

yours truly

AZRUL....

Non, ce n'est pas le cas

Si vous voulez additionner seulement les pertes vous devez ajouter

&& (OrderProfit()+OrderCommission()+OrderSwap()<0)

La fonction ressemblera donc à ceci :

[PHP]void LossRisk()

double totalLoss=0 ;

{

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

{

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

si (OrderSymbol() == Symbol()) continue ;

si (OrderMagicNumber() == someMagicNumber) continue ;

si (iBarShift(Symbol(),PERIOD_D1,OrderCloseTime())==0)

si (OrderType()==OP_BUY || OrderType()==OP_SELL && (OrderProfit()+OrderCommission()+OrderSwap())<0)

totalLoss += OrderProfit()+OrderCommission()+OrderSwap() ;

}

return(totalLoss) ;

}

 

Cher Monsieur MLADEN....

J'utilise actuellement ces codes dans mon EA qui fonctionne sur une période de M15...

Il ouvrira un nouvel ordre après la période M15...

bool AddP()

{int _num=0; int _ot=0;

for (int j=0;j<OrdersTotal();j++)

{if(OrderSelect(j,SELECT_BY_POS)==true && OrderSymbol()==Symbol() && OrderType()<3 && ((OrderMagicNumber()==Magic) || Magic==0))

{

_num++;if(OrderOpenTime()>_ot) _ot=OrderOpenTime();

}

}

if(_num==0) return(true);

if(_num>0 && ((Time[0]-_ot))>0)

return(true);

else return(false);

}

Pourriez-vous modifier ce code pour passer un ordre toutes les 5 minutes après l'ordre précédent....

bien que je sois sur un timeframe M15....

J'ESPÈRE QUE VOUS N'ÊTES PAS OFFENSÉ PAR L'ENVOI DE TANT DE QUESTIONS....

Meilleures salutations

AZRUL...

 
mladen:
Non, il ne sera pas

Si vous voulez additionner uniquement les pertes, vous devez ajouter

&& (OrderProfit()+OrderCommission()+OrderSwap()<0)

Ainsi la fonction ressemblera à ceci :

void LossRisk()

double totalLoss=0;

{

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

{

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

if (OrderSymbol() == Symbol()) continue;

if (OrderMagicNumber() == someMagicNumber) continue;

if (iBarShift(Symbol(),PERIOD_D1,OrderCloseTime())==0)

if (OrderType()==OP_BUY || OrderType()==OP_SELL && (OrderProfit()+OrderCommission()+OrderSwap())<0)

totalLoss += OrderProfit()+OrderCommission()+OrderSwap();

}

return(totalLoss);

}

Cher Monsieur MLADEN,

Vous savez comment faire les choses par ici....

Je suis TRES HEUREUX de recevoir une réponse de votre part SIR....

Envoyez-moi un message s'il y a quelque chose que je peux faire en retour... sauf pour le codage....

Merci

Meilleures salutations

AZRUL...