Demandez ! - page 76

 

Question sur l'EA

Salut Codersguru,

J'essaie d'apprendre la programmation et j'utilise votre matériel, laissez-moi vous dire qu'il est excellent ! étape par étape et simple à suivre, merci pour cela.

J'ai une question, puisque vous utilisez le cross over ema comme exemple pour l'EA, je pensais utiliser l'indicateur stepMA_7.2 au lieu de l'ema. Pensez-vous que le stepMA_7.2 fonctionnera ? ou le code devra-t-il être réarrangé ou un code supplémentaire sera-t-il nécessaire ?

Je pensais qu'un simple changement d'indicateur dans le code devrait suffire.

Merci d'avance

Merci.

 
Michel:
C'est faux : les barres précédentes sont positives comptées
MA_EXIT_1=iMA(NULL,PERIOD_H1,MA_Exit,0,MODE_LWMA,PRICE_WEIGHTED,-1);[/PHP] Use this instead:[PHP]MA_EXIT_1=iMA(NULL,PERIOD_H1,MA_Exit,0,MODE_LWMA,PRICE_WEIGHTED,1);

Merci.

 
 

J'ai encore quelques problèmes. Les ordres d'achat sont ouverts correctement, mais ils sont tous fermés au niveau du stoploss, sans tenir compte des conditions de sortie.

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

//| EA Stripped Down.mq4 |

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

#property copyright ""

#property link ""

extern double StopLoss =13.0;

extern double MA_Open =12.0;

extern double MA_Close =12.0;

extern double MA_Exit =6.0;

extern double Lots =50.0;

#define MAGICMA 20050610

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

int init()

{

return(0);

}

int deinit()

{

return(0);

}

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

int start()

{

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

double MA_CLOSE;

double MA_OPEN;

double MA_EXIT_0;

double MA_EXIT_1;

int res;

if(Volume[0]>1) return;

MA_CLOSE=iMA(NULL,0,MA_Close,1,MODE_SMA,PRICE_CLOSE,0);

MA_OPEN=iMA(NULL,0,MA_Open,1,MODE_SMA,PRICE_OPEN,0);

MA_EXIT_0=iMA(NULL,0,MA_Exit,1,MODE_LWMA,PRICE_WEIGHTED,0);

MA_EXIT_1=iMA(NULL,0,MA_Exit,1,MODE_LWMA,PRICE_WEIGHTED,1);

if((MA_CLOSE-MA_OPEN>=1*Point) && MA_EXIT_0>MA_EXIT_1)

{

res=OrderSend(Symbol(),OP_BUY,Lots,Ask,5,Ask-StopLoss*Point,0,"",MAGICMA,0,Blue);

return;

}

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

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

if(Volume[0]>1) return;

MA_EXIT_0=iMA(NULL,PERIOD_H1,MA_Exit,1,MODE_LWMA,PRICE_WEIGHTED,0);

MA_EXIT_1=iMA(NULL,PERIOD_H1,MA_Exit,1,MODE_LWMA,PRICE_WEIGHTED,1);

if(OrderType()==OP_BUY)

{

if(MA_EXIT_0<=MA_EXIT_1) OrderClose(OrderTicket(),OrderLots(),Bid,3,White);

return;

}

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

}
 
 

Moyennemobile d'un autre indicateur

J'ai compris.

 

vérifier les positions ouvertes dans une fourchette

J'essaie de vérifier les positions ouvertes dans une fourchette de x pips, si aucune position n'est ouverte, il en ouvre une. Cela ne fonctionne pas et ouvre des positions en continu, quelqu'un peut-il m'aider ?

if(buyingPosition)

{

weBeBuying = true ;

totalorders = OrdersTotal() ;

for(i=0;i<totalorders;i++)

{

OrderSelect(i,SELECT_BY_POS) ;

if((OrderSymbol()==Symbol()) && (OrderMagicNumber()==magicNumber))

{

type = OrderType() ;

if((type == OP_BUY) || (type == OP_BUYLIMIT))

{

si(((Bid+spread) - OrderOpenPrice()) > -0.0013)

weBeBuying = false ;

}

}

}

}

if(weBeBuying==true)

OrderSend(Symbol(),OP_BUY,lots,Bid+spread,slippage,0,0,NULL,magicNumber,0,Green) ;

 

MA d'un indicateur iCustom

Comment coder l'instruction dans un ea pour référencer une Moyenne Mobile de 7, Lisse, d'un indicateur iCustom ? Ce qui équivaut à utiliser une moyenne mobile en utilisant les données du premier indicateur. Vous pouvez le faire en affichant un indicateur iCustom et en ayant une MA de l'indicateur (en utilisant les données du premier indicateur), mais comment le coder dans une application ?

S'il vous plaît aidez-moi sur cette déclaration !

Je vous remercie d'avance pour votre aide !

Dave

Quelqu'un peut-il m'aider avec ceci ???? S'il vous plaît !!!!

Je crois que j'ai compris !

LR0=iCustom(NULL,0, "Laguerre RSI LONG & SHORT ENTRY",0,0) ; //GAMMA INFÉRIEUR

J'ai toujours besoin d'aide sur ce sujet - Pouvez-vous m'aider !

 

Ici, vous pouvez poster vos questions relatives à MQL4, et je ferai de mon mieux pour y répondre.

pour le code d'erreur.

Je viens de me rendre compte que sur tous mes experts, j'ai un code d'erreur "OrderModify error 1", même avec un expert comme celui de Coders Guru, ci-dessous,

pourquoi ?

Merci !

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

//| PriceCross.mq4 |

//| Coders Guru |

//| https://www.mql5.com/en/forum |

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

#property copyright "Coders Guru"

#property link "https://www.forex-tsd.com"

//---- Includes

#include

//---- Limites des transactions

extern double TakeProfit = 200 ;

extern double TrailingStop = 50 ;

extern double StopLoss = 50 ;

extern double Lots = 0.1 ;

extern int Slippage = 5 ;

//--- Options externes

extern int CurrentBar = 1 ;

extern int HedgeLevel = 6 ;

extern double Expiration = 7200 ;

extern int Size = 4 ;

extern int Step = 1 ;

extern bool UseClose = true ;

//--- Paramètres des indicateurs

extern int MaMode = 3 ;

extern int MaPeriod = 24 ;

//--- Variables globales

int MagicNumber = 101090 ;

string ExpertComment = "PriceCross" ;

bool LimitPairs = true ;

bool LimitFrame = true ;

int TimeFrame = 60 ;

string LP[] = {"EURUSD", "USDCHF", "GBPUSD", "USDJPY"} ; // ajoutez/supprimez les paris que vous voulez limiter.

bool Optimize = true ;

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 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);} }.

}

trend = iMA(NULL,0,MaPeriod,0,MaMode,PRICE_CLOSE,CurrentBar) ;

//--- Conditions de trading

bool BuyCondition = false , SellCondition = false , CloseBuyCondition = false , CloseSellCondition = false ;

si (Open[1]trend)

BuyCondition = true ;

si (Open[1]>tendance && Close[1]<tendance)

SellCondition = true ;

si (Open[1]>tendance && Close[1]<tendance)

CloseBuyCondition = true ;

si (Open[1]trend)

CloseSellCondition = true ;

total = OrdersTotal() ;

if(total < 1 || isNewSymbol(Symbol()))

{

if(BuyCondition) //<-- condition BUY

{

ticket = OpenOrder(OP_BUY) ; //<-- Ouverture d'un ordre BUY

CheckError(ticket, "BUY") ;

for(n=0 ; n< Taille ; n++)

{

ticket = OpenPendingOrder(OP_BUYSTOP,Lots,HedgeLevel+(n*Step+1),Slippage,StopLoss,TakeProfit,ExpertComment,MagicNumber,CurTime() + Expiration) ;

}

return(0) ;

}

if(SellCondition) //<-- condition de VENTE

{

ticket = OpenOrder(OP_SELL) ; //<-- Ouvrir un ordre de VENTE

CheckError(ticket, "SELL") ;

for(n=0 ; n < Taille ; n++)

{

ticket = OpenPendingOrder(OP_SELLSTOP,Lots,HedgeLevel+(n*Step+1),Slippage,StopLoss,TakeProfit,ExpertComment,MagicNumber,CurTime() + Expiration) ;

}

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

}

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

....

 

Bonjour,

Est-il possible de savoir si un ordre est déjà clôturé ?

L'illustration est la suivante :

J'ouvre 2 ordres en attente.

open #182 buy limit 0.17 EURUSD at 1.3005 sl : 1.2970 tp : 1.3013

open #183 buy limit 0.17 EURUSD at 1.3000 sl : 1.2968 tp : 1.3011

puis

l'ordre #182, achat 0,17 EURUSD est ouvert à 1,3005

prise de profit #182 à 1.3013 (1.3013 / 1.3015)

Je veux supprimer l'ordre n°183 après la clôture de l'ordre n°182. Le déclencheur est le suivant : si l'ordre n°182 est clôturé, l'ordre n°183 sera supprimé.

Salutations

Raison: