Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Code Atr décrétant ? ??
Atr decresing - quel est le code mql4 ?
--------------------------------------------------------------------------------
Atr décrétant
Quel est le code mql4 ?
Je voudrais que mon ea n'ouvre pas de positions si
l'ATR d1 est > ATR d1 (-1)
Comment coder 3 niveaux de Trailing Stops ?
TrailingStop = 50 ;
TrailingStop_Over100 = 30 ;
TrailingStop_Over150 = 20 ;
Niveau 1 : 0-100 pip de profit - TS est de 50 pips
Niveau 2 : 101-150 pip de profit - TS passe à 30 pips
Niveau 3 : 151+ pip de profit - TS passe à 20 pips
Comment dois-je coder ceci( mouvement dedirection positive ) pour que le TS change lorsque le profit en pip augmente ?
Dave
<<<
J'apprécierais vraiment l'expertise d'un codeur.
après le premier croisement, définir la distance entre plusieurs barres
Bonjour à tous les gourous de la programmation, je suis un débutant en programmation mql4 et je suis bloqué sur un problème,
il est le suivant :
J'ai 2 EMA 5 et 20 PERIOD_15 et respectivement 5 et 20 EMA sur PERIOD_H1.
Donc quand j'entre une position avec le premier croisement PERIOD_M15, le conseiller ferme la position immédiatement dans la même barre si la prise se déplace dans l'autre sens et fait un croisement inverse. C'est programmatiquement correct, mais mon problème réel est d'attendre les 1-2 barres suivantes ou plus et ensuite fermer la position si le croisement est trouvé.
Pouvez-vous m'aider à faire cela ? Si un sujet lié au même problème se trouve ici, pouvez-vous m'envoyer un lien ?
et les modérateurs peuvent supprimer le message.
Merci d'avance !
--si vous avez déjà une position ouverte
-- si trop de croisements se produisent
-- Attendez un peu avant de sortir de cette position.
--Ceci devrait résoudre le problème des croisements répétés dans une même barre.
if(firstCross == 1)
{
---------------------------//Close, vérifiez si les prochaines barres sont imprimées après OpenOrderPrise()-----------------------------------
si(openbar <= closebar)
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Red) ; // fermer la position
return(0) ; // sortie
}sélection
return(0) ;
}
Eh bien, j'ai trouvé une solution effrayante que j'ai déjà jointe.
Si vous avez des idées d'optimisation pour le time shifting ou des idées d'optimisation dans le code, j'apprécierai toutes les suggestions, merci d'avance.
J'ai besoin de votre aide
Bonjour aux traders,
J'apprécierais vraiment si quelqu'un pouvait m'aider à développer une alerte pour cet indicateur (MT4-LevelStop-Reverse-vB0-3).
Je veux que l'alerte sonne dès que la flèche s'affiche.
Merci d'avance.
Bonjour,
J'utilise votre logiciel lucky v2, et je voudrais connaître le code pour ajouter du texte sur le graphique qui n'utilise pas l'objet--label-->voir l'image ~~.
et l'utilisateur ne peut pas supprimer le texte.
le texte est comme ça-- "Your lucky est gratuit et toujours en développement..."
comment le coder ?
merciUtilisez la commande Comment()
Commentaire - Documentation MQL4
Comment coder un texte uneliminateAble sur un graphique ?
Bonjour,
J'utilise votre logiciel lucky v2, et je voudrais connaître le code pour ajouter du texte sur le graphique qui n'utilise pas l'objet--label-->voir l'image ~~.
et l'utilisateur ne peut pas effacer le texte ~~ ~
le texte est comme ça-- "Your lucky v2 EA est gratuit et toujours en développement..."
comment le coder ?
merci
Ordre multiple et trailing multiple
Dans mon Ea j'utilise plusieurs ordres, un au marché et un autre avec une limite d'achat/vente.
Lorsque j'obtiens les 3 entrées comme dans l'exemple, je veux que le trailing commence et fonctionne ensemble.
Un exemple
1 entrée à 1.50
2 entrées à 1.4950
3 entrées à 1.4930
le trailing est de 50 points, mais je veux qu'il commence quand le prix atteint 1.5050 pas avant, si j'utilise le trailing normal quand le prix atteint 1.5001 la deuxième entrée (si elle est remplie) commence à suivre mais je ne le veux pas... je veux que le trailing commence avec 50 pip et tous au même prix donc à 1.5050
alors est-il préférable de sauvegarder le ticket pour comprendre quel ordre je dois utiliser ?
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-Point*StopLoss,Ask+TakeProfit*Point,0,0,Green);
LastClosedBar = Time[0];
RefreshRates();
OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES);
entratalong= OrderOpenPrice( );
ticket2=OrderSend(Symbol(),OP_BUYLIMIT,Lots_2ingresso,entratalong-Point*Secentrata-2*Point,3,entratalong-Point*StopLoss-2*Point,entratalong+TakeProfit*Point,NULL,1,0,Magenta); // NULL, c'e il null in + //
ticket3=OrderSend(Symbol(),OP_BUYLIMIT,Lots_3ingresso,entratalong-Point*Terzentrata-2*Point,3,entratalong-Point*StopLoss-2*Point,entratalong+TakeProfit*Point,NULL,2,0,Magenta); // buono dei test //
[/CODE]
Here the trailign stop, it don't work the trail 1 e trail 2 with at the same time i control the ticket!!!
[CODE]
int TrailStop ()
{
int cnt,result,total=OrdersTotal();
double gain2=Lots_2ingresso;
double gain3=Lots_2ingresso;
int ticket,ticket2,ticket3;
for(cnt = total-1; cnt >= 0; cnt--)
{
RefreshRates();
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if ((OrderSymbol() == Symbol()) && (OrderProfit() > 0.00))
{
if (OrderType()==OP_BUY && OrderTicket()==ticket )
{
if(Bid - OrderOpenPrice() > Point * TrailingStop )
{
if(OrderStopLoss() < Bid - Point * TrailingStop)
{
OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);
for(cnt = total-1; cnt >= 0; cnt--)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if( OrderType()!=OP_SELL && OrderType()!=OP_BUY) //&& trail==1 && OrdersTotal() > 1 )
result =OrderDelete(OrderTicket());
}
Alert("sta facendo trail");
}
}
}
// trailing 2 parte X pip dopo
if (OrderType()==OP_BUY && OrderTicket()==ticket2)
{
if(Bid - OrderOpenPrice() > Point * Trailing2)
{
if(OrderStopLoss() < Bid - Point * TrailingStop)
{
OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);
}
}
}
// trailing 3 parte X pip dopo
if (OrderType()==OP_BUY )
{
if(Bid - OrderOpenPrice() > Point * Trailing3)
{
if(OrderStopLoss() < Bid - Point * TrailingStop)
{
OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);
}
}
}// fine trailing
Veuillez modifier ce code EMA
Ceci est un excellent code par : Coders Guru. Quelqu'un peut-il le modifier pour moi ? J'ai besoin qu'il ferme uniquement les transactions ouvertes. J'ai créé un système qui me dit quand ouvrir des positions et je ne veux pas rester assis devant l'ordinateur toute la journée pour fermer des positions.
pour fermer des positions. Merci à l'équipe.
Changez le code s'il vous plaît
Ceci est un excellent code par : Coders Guru. Quelqu'un peut-il le modifier pour moi ? J'ai besoin qu'il ferme uniquement les transactions ouvertes. J'ai créé un système qui me dit quand ouvrir des positions et je ne veux pas rester assis devant l'ordinateur toute la journée pour fermer des positions. Merci à l'équipe.
//+------------------------------------------------------------------+
//| EMA_6_12.mq4 |
//| Coders Guru |
//| Forex TSD| Indicateurs Metatrader et Experts Advisors |
//+------------------------------------------------------------------+
#property copyright "Coders Guru"
#property link "https://www.forex-tsd.com"
//---- Includes
#include
//---- Limites des transactions
extern double TrailingStop = 40 ;
extern double TakeProfit = 1000 ; //tout grand nombre
extern double Lots = 1 ;
extern int Slippage = 5 ;
//--- Options externes
extern int CurrentBar = 1 ;
extern bool UseClose = true ;
//--- Paramètres des indicateurs
extern int MaMode = 1 ; /* MODE_SMA 0 MODE_EMA 1 MODE_SMMA 2 MODE_LWMA 3 */
extern int ShortEma = 4 ;
extern int LongEma = 8 ;
//--- Variables globales
int MagicNumber = 123430 ;
string ExpertComment = "EMA_4_8" ;
bool LimitPairs = false ;
bool LimitFrame = false ;
int TimeFrame = 60 ;
string LP[] = {"EURUSD", "USDJPY", "AUDUSD", "GBPUSD", "EURGBP", "USDCHF"} ; // ajoutez/supprimez les paris que vous voulez limiter.
bool Optimize = false ;
int NumberOfTries = 5 ;
//+------------------------------------------------------------------
int init()
{
retour(0) ;
}
int deinit()
{
return(0) ;
}
//+------------------------------------------------------------------
bool isNewSymbol(string current_symbol)
{
//boucle sur tous les ordres ouverts et compare les symboles
int total = OrdersTotal() ;
for(int cnt = 0 ; cnt < total ; cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES) ;
string selected_symbol = OrderSymbol() ;
si (symbole_actuel ==symbole_sélectionné && OrderMagicNumber()==NombreMagique)
retourne (Faux) ;
}
return (True) ;
}
//+------------------------------------------------------------------
int Croisé()
{
double EmaLongPrevious = iMA(NULL,0,LongEma,0,MaMode, PRICE_CLOSE, CurrentBar+1) ;
double EmaLongCurrent = iMA(NULL,0,LongEma,0,MaMode, PRICE_CLOSE, CurrentBar) ;
double EmaShortPrevious = iMA(NULL,0,ShortEma,0,MaMode, PRICE_CLOSE, CurrentBar+1) ;
double EmaShortCurrent = iMA(NULL,0,ShortEma,0,MaMode, PRICE_CLOSE, CurrentBar) ;
if (EmaShortPreviousEmaLongCurrent ) return (1) ; //tendance à la hausse
if (EmaShortPrevious>EmaLongPrevious && EmaShortCurrent<EmaLongCurrent ) return (2) ; //tendance à la baisse
return (0) ; //autre endroit
}
//+------------------------------------------------------------------+
int start()
{
int cnt, ticket, total,n ;
double tendance ;
if(Bars<100) {Print("bars less than 100") ; return(0);}
if(LimitFrame)
{
if(Period()!=TimeFrame) {Print("Cet EA ne fonctionne pas avec cette TimeFrame !") ; return(0);}
}
if(LimitPairs)
{
if(AllowedPair(Symbol()) == false) {Print("Cet EA ne fonctionne pas avec cette devise !") ; return(0);} }.
}
//--- Conditions de trading
bool BuyCondition = false , SellCondition = false , CloseBuyCondition = false , CloseSellCondition = false ;
si (Crossed() == 1 )
BuyCondition = false ;
si (Crossed()== 2 )
SellCondition = false ;
si (Crossed ()== 1)
CloseBuyCondition = true ;
si (Crossed ()== 1)
CloseSellCondition = true ;
total = OrdersTotal() ;
si(total < 1 || isNewSymbol(Symbol()))
{
if(BuyCondition) //<-- condition BUY
{
ticket = OpenOrder(OP_BUY) ; //<-- Ouverture de l'ordre BUY
CheckError(ticket, "BUY") ;
return(0) ;
}
if(SellCondition) //<-- Condition de VENTE
{
ticket = OpenOrder(OP_SELL) ; //<-- Ouvrir un ordre de VENTE
CheckError(ticket, "SELL") ;
return(0) ;
}
return(0) ;
}
for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES) ;
if(OrderType()<=OP_SELL && OrderSymbol()==Symbol())
{
if(OrderType()==OP_BUY) //<-- Une position longue est ouverte
{
if(UseClose)
{
if(CloseBuyCondition) //<-- Fermer l'ordre et sortir !
{
CloseOrder(OrderType()) ; return(0) ;
}
}
TrailOrder(OrderType()) ; return(0) ; //<-- Traîter l'ordre
}
if(OrderType()==OP_SELL) //<-- Passer en position courte
{
if(UseClose)
{
if(CloseSellCondition) //<-- Fermer l'ordre et sortir !
{
CloseOrder(OP_SELL) ; return(0) ;
}
}
TrailOrder(OrderType()) ; return(0) ; //<-- Traîter l'ordre
}
}
}
return(0) ;
}
//+------------------------------------------------------------------+
int OpenOrder(int type)
{
int ticket=0 ;
int err=0 ;
int c = 0 ;
if(type==OP_BUY)
{
for(c = 0 ; c < NumberOfTries ; c++)
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,Ask+TakeProfit*Point,ExpertComment,MagicNumber,0,Green) ;
err=GetLastError() ;
si(err==0)
{
break ;
}
sinon
{
if(err==4 || err==137 ||err==146 || err==136) //Erreurs d'occupation
{
Sleep(5000) ;
continuer ;
}
else //erreurs normales
{
pause ;
}
}
}
}
if(type==OP_SELL))
{
for(c = 0 ; c < NumberOfTries ; c++)
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0,Bid-TakeProfit*Point,ExpertComment,MagicNumber,0,Red) ;
err=GetLastError() ;
si(err==0)
{
break ;
}
sinon
{
if(err==4 || err==137 ||err==146 || err==136) //Erreurs d'occupation
{
Sleep(5000) ;
continuer ;
}
else //erreurs normales
{
pause ;
}
}
}
}
return(ticket) ;
}
bool CloseOrder(int type)
{
if(OrderMagicNumber() == MagicNumber)
{
if(type==OP_BUY)
return (OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Violet)) ;
si(type==OP_SELL)
retourne (OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Violet)) ;
}
}
void TrailOrder(int type)
{
si(TrailingStop>0){
if(OrderMagicNumber() == MagicNumber)
{
if(type==OP_BUY)
{
si(Bid-OrderOpenPrice()>Point*TrailingStop)
{
si(OrderStopLoss()<Bid-Point*TrailingStop)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green) ;
}
}
}
if(type==OP_SELL))
{
si((OrderOpenPrice()-Ask)>(Point*TrailingStop))
{
if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red) ;
}
}
}
}
}
}
void CheckError(int ticket, string Type)
{
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print(Type + " ordre ouvert : ",OrderOpenPrice()) ;
}
else Print("Erreur lors de l'ouverture de " + Type + " l'ordre : ", ErrorDescription(GetLastError()) ;)
}
bool AllowedPair(string pair)
{
bool result=false ;
for (int n = 0 ; n < ArraySize(LP) ; n++)
{
if(Symbol() == LP[n])
{
result = true ;
}
}
return (résultat) ;
}