Comment coder ? - page 176

 

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.

Dossiers :
 

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.

 
chiwing:
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 ?

merci

Utilisez 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

Dossiers :
how_to_code.jpg  134 kb
 

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

Calvon:
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) ;

}