Comment coder ? - page 97

 
matrixebiz:
Ok, j'essaierai quand je serai chez moi, mais alors pourquoi cela fonctionne-t-il déjà avec les ordres d'achat ? Merci.

Vous pouvez être dans un ordre de vente, mais le prix remplit la condition pour le code de changement de stop d'achat, donc il est changé, et ne remplit plus les conditions pour la section de vente, donc il n'est pas changé là.

Big Be

 

Merci Big Be pour votre aide mais je viens de réaliser que mon ancien code fonctionne mais que je dois activer l'utilisation d'un StopLoss pour les ordres SELL pour qu'ils soient modifiés .

C'est bizarre, je n'ai pas besoin d'activer un TakeProfit pour MoveStopOnce pour travailler avec un ordre BUY mais je dois activer un StopLoss pour MoveStopOnce pour modifier l'ordre SELL.

Oh, eh bien, je vais devoir regarder le code un peu plus profondément pour comprendre celui-là, à moins que vous ne sachiez pourquoi.

EDIT : si vous changez pour ;

if(0 < OrderOpenPrice() - Point * MoveStopTo) {

[/code]

instead of;

[code]

if(OrderStopLoss() < OrderOpenPrice() - Point * MoveStopTo) {

Cela semble bien fonctionner.

Merci

 

Besoin d'aide avec le calculateur de dimensionnement des postes

OK,

Je suis en train de construire un calculateur de taille de position comme une fonction basée sur la "Formule de Kelly".

(Taux de gain-((1-Win Rate)/(Avg Win/Avg Loss)

J'ai réussi à faire fonctionner l'ensemble du code et des calculs avec des entrées manuelles (externes) pour les variables requises et j'essaie maintenant de faire fonctionner la fonction de manière dynamique en appelant certaines informations du compte (je veux notamment calculer le taux de cohérence gagnant (%), le nombre moyen de pips par transaction gagnante et le nombre moyen de pips par transaction perdante).

J'aurais besoin de toute aide pour faire fonctionner les trois fonctions (WinRate, AvgWin et AvgLoss). J'utilise la variante de saisie manuelle depuis des mois et cela fonctionne très bien. Voici le code complet de cette version (automatisée) jusqu'à présent... lors des tests, je n'obtiens aucune sortie dynamique, tout revient au réglage par défaut (50, 40, 20). Je l'ai configuré comme son propre EA pour le test et la modularisation facile dans n'importe quel EA existant. une fois attaché à n'importe quel graphique, la sortie est imprimée dans l'onglet log/expert. l'utilisation de fractales est intentionnelle de sorte que la croissance maximale du compte (ou la perte minimale) soit exploitée. comme une note la plupart des courtiers offrant la plate-forme MT trader permettent le commerce fractale pour soit mini ou std lots. Cela s'avérera très utile à l'avenir avec la gestion de l'argent qui peut enlever des positions de lot partiel (c'est-à-dire : enlever 25% d'un lot). de toute façon...

Afin de collecter les informations de compte en temps réel dont j'ai besoin, j'essaie de...

1. de compter toutes les transactions

2. de compter les transactions qui sont rentables

etc. etc.

Je ne m'y prends peut-être pas de la bonne façon.

Merci d'avance pour votre aide...

SeaWolf

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

//| KellyFormula.mq4 |

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

#property copyright "seawolf"

#property link "seawolf"

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

//| ENTRÉE D'INFORMATIONS EXTERNES |

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

extern int MyAccount = 1001 ; //------>>>> ID du compte

extern int ExpertID = 500001 ; //------>>>> Numéro magique pour cette EA

extern double PipValue= 1.00 ; //------>>>> utiliser pour TOUS les calculs

extern double LotCost= 50.0 ; //------>>>> utiliser pour TOUS les calculs

extern double PercentMax= 24.0 ; //------>>>> % maximum du compte avec effet de levier à un moment donné

extern int TradesMax= 3 ; //------>>>> maximum de trades simultanés (exemple : 24%/3 trades = 8% par trade)

extern bool UseKelly= true ; //------>>>> Activation de l'override manuel

extern double ManualLots= 1.0 ; //------>>>> # lots si "UseKelly" est faux

extern double mWinRate= 50.00 ; //------>>>> constance des gains en % (contrôle manuel)

extern int mAvgWin= 40 ; //------>>>> moyenne de pips par trade gagnant (manuel)

extern int mAvgLoss= 20 ; //------>>>> moyenne de pips par trade perdant (manuel)

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

//| fonction d'initialisation de l'expert |

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

int init()

{

//----

//----

return(0) ;

}

int deinit()

{

//----

//----

return(0) ;

}

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

//| fonction de démarrage expert |

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

int start()

{

//----

PositionSize() ;

{

Print("Lots=",PositionSize()," WinRate=",WinRate()," AvgWin=",AvgWin()," AvgLoss=",AvgLoss()) ;

}

Comment("L'heure actuelle est ",TimeToStr(TimeCurrent(),TIME_MINUTES)," GMT ",TimeToStr(TimeCurrent(),TIME_DATE)," ... Win Rate= ",WinRate()," Avg Win= ",AvgWin()," Avg Loss= ",AvgLoss()) ;

//----

return(0) ;

}

//----

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

//| CALCULER LA TAILLE DE LA POSITION POUR TOUTES LES NOUVELLES TRANSACTIONS |

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

//------------------------>>>>

double PositionSize()

{

//------------------------>>>> NE PAS UTILISER LA FORMULE KELLY, UTILISER LE TAUX FORFAITAIRE

if(UseKelly == true)

{

double KelyForm = WinRate()-((1-WinRate())/(AvgWin()/AvgLoss())) ;

double PerTrade ;

double Lots ;

si(KelyForm > PercentMax)

{

PerTrade = (PercentMax/10)/TradesMax ;

}

else if(KelyForm < PercentMax)

{

PerTrade = (KelyForm/10)/TradesMax ;

}

sinon si(KelyForm == PercentMax)

{

PerTrade = (KelyForm/10)/TradesMax ;

}

Lots = (PerTrade * AccountBalance()/LotCost) ;

return(MathRound(Lots)/10) ;

}

}

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

//| COLLECTE DES INFORMATIONS DE COMPTE EN TEMPS RÉEL |

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

//------------------------>>>>

double WinRate()

{

double Ticket ;

double CountWins = 0 ;

for(Ticket=0;Ticket<OrdersTotal();Ticket++)

{

OrderSelect(Ticket,SELECT_BY_TICKET,MODE_HISTORY) ;

if(MyAccount==AccountNumber() && OrderSymbol()==Symbol() && OrderMagicNumber() == ExpertID)

{

//------>>>>

si(OrderType()==OP_BUY))

{

if(OrderClosePrice() >= OrderOpenPrice())

CountWins++ ;

}

sinon, si(OrderType()==OP_SELL)

{

si(OrderClosePrice() <= OrderOpenPrice())

CountWins++ ;

}

}

}

si(CountWins > 0)

return(MathRound(CountWins/OrdersHistoryTotal())*10) ;

sinon

Print("Real Time WinRate not Available") ;

return(mWinRate) ;

}

//------>>>>

//------------------------>>>>

double AvgWin()

{

double Ticket ;

double CountTrades = 0 ;

double CountPips = 0 ;

for(Ticket=0;Ticket<OrdersTotal();Ticket++)

{

OrderSelect(Ticket,SELECT_BY_TICKET,MODE_HISTORY) ;

if(MyAccount==AccountNumber() && OrderSymbol()==Symbol() && OrderMagicNumber() == ExpertID)

{

//------>>>>

if(OrderType()==OP_BUY && OrderClosePrice()>=OrderOpenPrice())

CountTrades++ ;

{

si(OrderProfit() >= 0)

CountPips++ ;

}

si(OrderType()==OP_SELL && OrderClosePrice()<=OrderOpenPrice())

CountTrades++ ;

{

si(OrderProfit() >= 0)

CountPips++ ;

}

}

}

si(CountPips > 0)

return(MathRound(CountPips/CountTrades)*10) ;

sinon

Print("Real Time AvgWin not Available") ;

return(mAvgWin) ;

}

//------>>>>

//------------------------>>>>

double AvgLoss()

{

double Ticket ;

double CountTrades = 0 ;

double CountPips = 0 ;

for(Ticket=0;Ticket<OrdersTotal();Ticket++)

{

OrderSelect(Ticket,SELECT_BY_TICKET,MODE_HISTORY) ;

if(MyAccount==AccountNumber() && OrderSymbol()==Symbol() && OrderMagicNumber() == ExpertID)

{

//------>>>>

if(OrderType()==OP_BUY && OrderClosePrice()<OrderOpenPrice())

CountTrades++ ;

{

si(OrderProfit() < 0)

CountPips++ ;

}

if(OrderType()==OP_SELL && OrderClosePrice()>OrderOpenPrice())

CountTrades++ ;

{

si(OrderProfit() < 0)

CountPips++ ;

}

}

}

si(CountPips > 0)

return(MathRound(CountPips/CountTrades)*10) ;

sinon

Print("Real Time AvgLoss not Available") ;

return(mAvgLoss) ;

}

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

 

A : Matricebiz

EDIT: if you change to;

if(0 < OrderOpenPrice() - Point * MoveStopTo) {

[/code]

instead of;

[code]

if(OrderStopLoss() < OrderOpenPrice() - Point * MoveStopTo) {

Il semble que cela fonctionne bien.

Merci

Vous êtes le bienvenu.

Big Be

 

Fxpro, demander

Bonjour à tous... Je veux juste demander comment configurer les lots EA dans FxPro....

Je suis confus parce qu'il y a 6 chiffres (1 chiffre supplémentaire), j'ai fixé le S/L et le T/P mais je ne peux pas changer le lot...

toujours 0.4 par transaction... même si je le change en 0.1 ou 0.3

J'ai utilisé 10points 3 EA...

S'il vous plaît aidez-moi ... email moi à hansen_hardrocker@yahoo.co.id

ou je peux vous envoyer un message.

cheerz tous...

 

Ask_change Lot (fxpro)

Fxpro,demande

Bonjour à tous... Je veux juste demander comment configurer les lots EA dans FxPro....

Je suis confus parce qu'il y a 6 chiffres (1 chiffre supplémentaire). J'ai fixé le S/L et le T/P mais je ne peux pas changer le lot...

toujours 0.4 par transaction... même si je le change en 0.1 ou 0.3

J'ai utilisé 10points 3 EA...

S'il vous plaît aidez-moi ... email moi à hansen_hardrocker@yahoo.co.id

ou je peux vous envoyer un message.

cheerz tous...

 

Je le veux aussi. Veuillez m'envoyer à omidchart@yahoo.com.

 

C'est probablement parce que vous avez activé le Money Management dans l'EA.

 

Thx

matrixebiz:
C'est probablement parce que vous avez activé le Money Management dans l'EA.

Thx bro...

Je suis novice...

 

Pouvez-vous modifier cette EA ?

Bonjour aux programmeurs,

J'ai cette EA qui place des ordres stop au-dessus et au-dessous du prix actuel. Ce dont j'ai besoin, c'est d'un EA qui place des ordres à cours limité au lieu d'ordres stop au-dessus et au-dessous du prix actuel. Pouvez-vous modifier cette EA pour qu'elle le fasse tout en gardant les mêmes paramètres ?

Merci d'avance,

Paul

Dossiers :
Raison: