Aide au codage - page 281

 
mladen:
stevenpun Vous dites que l'achat a 0,1 lot + 0,2 lot et que la vente devrait être de 0,4 lot. Pourriez-vous le clarifier ?

Bonjour mladen, désolé pour la réponse tardive.

J'ai été malade pendant quelques jours.

J'ai fait une image

Par exemple, lorsque l'achat a 2 ordres ouverts (0.1 Lot + 0.2 Lot), mais soudainement le train a changé pour vendre.

L'ea ouvrira une vente par 0.1 Lot, mais je veux qu'il ouvre pour 0.4 Lot.

Est-il possible de le modifier ?

Dossiers :
lot_explain.jpg  121 kb
 
hermes:
Bonjour encore une fois,

J'ai essayé d'utiliser la fonction ci-dessus avec un commentaire, mais elle n'affichait que le maximum. Pouvez-vous m'aider avec deux fonctions ? L'une affichant le prix de la ligne immédiate au-dessus de l'offre et la seconde la ligne au-dessous de l'offre. Merci.

Voici le code.

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

//| SimpleGrid.mq4+

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

#include

#include

#property strict

// variables exportées

extern string GridStartingPrice = " Prix de départ pour placer des lignes " ;

extern double GSP = 0.0 ;

extern int GR = 5 ;

extern double GridStep = 5 ;

extern color CGL = Gold ;

extern color BGL = Green ;

extern color SGL = Rouge ;

extern bool ClearAllObjects = False ;

// variables locales

double PipValue=1 ; // cette variable est ici pour supporter les courtiers à 5 chiffres

bool Terminated = false ;

string LF = "\n" ; // utilisez cette variable dans les blocs personnalisés ou utilitaires où vous avez besoin de sauts de ligne.

int NDigits = 4 ; // utilisé principalement pour NormalizeDouble dans les blocs de type Flex

int ObjCount = 0 ; // compte de tous les objets créés sur le graphique, permet la création d'objets avec des noms uniques

int current = 0 ;

int init()

{

NDigits = Digits ;

if (false) ObjectsDeleteAll() ; // efface le graphique

Comment("") ; // efface le graphique

return(0) ;

}

// Démarrage de l'expert

int start()

{

si (Bars < 10)

{

Comment("Pas assez de barres") ;

retour (0) ;

}

if (Terminé == true)

{

Comment("EA Terminated.") ;

retour (0) ;

}

OnEveryTick7() ;

return (0) ;

}

void OnEveryTick7()

{

PipValue = 1 ;

if (NDigits == 3 || NDigits == 5) PipValue = 10 ;

CentreGridLine() ;

}

void CentreGridLine()

{ if (ObjectFind("CGL") == (-1) )

{

{

string objName = "CGL" ;

ObjectCreate(objName, OBJ_HLINE, 0, Time[0],GSP) ;

ObjectSet(objName, OBJPROP_PRICE1, GSP) ;

ObjectSet(objName, OBJPROP_COLOR,CGL) ;

}

TradeLine() ;

UprBnd() ;

LwrBnd() ;

}

}

void TradeLine()

{

int i ;

double GridStep1= (GridStep*2) ;

double BGSP= (GSP+((GridStep/2)*PipValue*Point)) ;

double SGSP= (GSP-((GridStep/2)*PipValue*Point)) ;

double BBGSP= (BGSP-((GridStep*(GR))*PipValue*Point)) ;

double SSGSP= (SGSP+((GridStep*(GR))*PipValue*Point)) ;

{

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

{

SGL("Vendre "+i,BBGSP+GridStep1*i*PipValue*Point) ;

}

}

{

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

{

BGL("Buy "+i,SSGSP-GridStep1*i*PipValue*Point) ;

}

}

}

void BGL(string objName, double price)

{

ObjectCreate(objName, OBJ_HLINE, 0, 0, price) ;

ObjectSet(objName, OBJPROP_STYLE, STYLE_SOLID) ;

ObjectSet(objName, OBJPROP_WIDTH, 1) ;

ObjectSet(objName, OBJPROP_COLOR, BGL) ;

}

void SGL(string objName, double price)

{

ObjectCreate(objName, OBJ_HLINE, 0, 0, price) ;

ObjectSet(objName, OBJPROP_STYLE, STYLE_SOLID) ;

ObjectSet(objName, OBJPROP_WIDTH, 1) ;

ObjectSet(objName, OBJPROP_COLOR, SGL) ;

}

void UprBnd()

{ if (ObjectFind("UPRBND") == (-1) )

{

double BGSP= (GSP+((GridStep/2)*PipValue*Point)) ;

double price= (BGSP+((GridStep*(GR))*PipValue*Point)) ;

string objName = "UPRBND" ;

ObjectCreate(objName, OBJ_HLINE, 0, Time[0], price ) ;

ObjectSet(objName, OBJPROP_PRICE1,price) ;

ObjectSet(objName, OBJPROP_COLOR, DodgerBlue) ;

ObjectSet(objName, OBJPROP_WIDTH,3) ;

}

}

void LwrBnd()

{ if (ObjectFind("LWRBND") == (-1) )

{

double SGSP= (SGSP-((GridStep/2)*PipValue*Point)) ;

double price= (SGSP-((GridStep*(GR))*PipValue*Point)) ;

string objName = "LWRBND" ;

ObjectCreate(objName, OBJ_HLINE, 0, Time[0], price ) ;

ObjectSet(objName, OBJPROP_PRICE1,price) ;

ObjectSet(objName, OBJPROP_COLOR, Tomate) ;

ObjectSet(objName, OBJPROP_WIDTH, 3) ;

}

}

int deinit()

{

if (ClearAllObjects) ObjectsDeleteAll() ;

retourne (0) ;

}

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

Hermès

Pouvez-vous joindre le fichier mq4 ?

 
mladen:
Hermès Pouvez-vous joindre le fichier mq4 ?

C'est ici. Merci

Dossiers :
simpleg.mq4  4 kb
 

Bonjour,

J'ai besoin d'aide avec une Ea que j'ai faite, elle est liée à 2 moyennes mobiles et 2 timeframes différents pour filtrer la tendance, je voudrais ajouter un indicateur RSI afin de filtrer les trades, configurer par exemple RSI période 8 niveau 50, si plus haut que RSI niveau 50 au croisement on ouvre seulement des ordres de marché de vente, si plus bas que RSI niveau 50 au croisement on ouvre seulement des ordres de marché d'achat. Je joins le Ea, au début il était lié aux keltnerchannels, mais maintenant je veux qu'il soit utilisé comme Ma1 et Ma2.

Est-ce que quelqu'un peut m'aider avec ces changements ?

Merci de votre aide.

Dossiers :
 
hermes:
Le voici. Merci

Hermès

Essayez ceci : simpleg_1.mq4

Dossiers :
simpleg_1.mq4  6 kb
 
daniel1983:
Bonjour,

J'ai besoin d'aide avec une Ea que j'ai faite, elle est liée à 2 moyennes mobiles et 2 timeframes différents pour filtrer la tendance, je voudrais ajouter un indicateur RSI afin de filtrer les trades, configuration par exemple RSI période 8 niveau 50, si plus haut que RSI niveau 50 au croisement on ouvre seulement des ordres de marché de vente, si plus bas que RSI niveau 50 au croisement on ouvre seulement des ordres de marché d'achat. Je joins le Ea, au début il était lié aux keltnerchannels, mais maintenant je veux qu'il soit utilisé comme Ma1 et Ma2.

Est-ce que quelqu'un peut m'aider avec ces changements ?

merci

daniel1983

Il est presque certain que vous n'obtiendrez jamais de croisements de mas et rsis en même temps (ce qui signifie que vous n'obtiendrez presque jamais de signaux). Essayez : créez un indicateur simple qui fait ce que vous décrivez et vous verrez à quel point ces conditions sont rares en même temps.

 
mladen:
daniel1983 Il est presque certain que vous n'obtiendrez jamais de croisements de mas et de rsis en même temps (ce qui signifie que vous n'obtiendrez presque jamais de signaux). Essayez-le : créez un indicateur simple qui fait ce que vous décrivez et vous verrez à quel point ces conditions sont rares en même temps.

Salut Mladen,

Je veux dire

- à n'importe quel niveau entre 0 et 50 seulement vendre

- à n'importe quel niveau entre 50 et 100 seulement acheter,

pas à ce même point d'intersection, le croisement peut se faire à n'importe quel niveau (43, 41, 18, 25) pour les ordres d'achat sur le marché, confirmant la tendance du cadre temporel supérieur. J'ai testé ceci et environ 80% des ordres ouverts semblent avec ce filtre ne pas s'ouvrir dans la direction opposée.

Actuellement, l'Ea ouvre un ordre d'achat lorsque le croisement commence une tendance à la baisse, avec ce filtre, dans 80% des cas, il filtrera ce croisement sans entrer l'ordre à ce point. où ces croisements Ma.

Dans cette Ea, j'ai entré une image temporelle supérieure, mais j'ai fait des tests avec de meilleurs résultats en utilisant une image temporelle inférieure pour filtrer la tendance.

Je joins une image d'un exemple de test configuré :

Pour EURUSD

Dans ce cas, j'utilise EMA 2 et EMA 67, et RSI (8) timeframe 1min et Hitimeframe 5min, dans ce cas vous avez un ordre d'achat sur le marché qui n'est pas rentable, cet ordre d'achat sur le marché se produit au croisement des EMa's mais avec RSI à un niveau inférieur à 50.

Ensuite, vous avez un ordre de marché de vente qui s'ouvre aux croisements mais avec un RSI inférieur à 50, et cet ordre est l'ordre de marché correct que je veux filtrer de tous les signaux.

Est-il possible de faire cela ?

Je vous remercie.

Daniel

Dossiers :
rsi_filter.png  32 kb
 
mladen:
Hermes Essayez ceci : simpleg_1.mq4

Bonjour Mladen,

Cela fonctionne enfin en utilisant ceci. Merci à vous

void LoopBS()

{

double max =(ObjectGet("UPRBND",OBJPROP_PRICE1)) ;

double min =(ObjectGet("LWRBND",OBJPROP_PRICE1)) ;

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

{

string name = ObjectName(i) ;

si (StringSubstr(name,0,3)=="Buy")

{

double BS=ObjectGet(name,OBJPROP_PRICE1) ;

si ((Ask<BS) && (BSmin))

{

max = ObjectGet(name,OBJPROP_PRICE1) ;

{

Commentaire(DoubleToStr(BS,Chiffres)," ") ;

}

}

}

}

}

 

Signaux imprécis

Signaux imprécis

Chers artisans ! Pourriez-vous signaler mieux à faire. M1, M5, M15

Dossiers :
.......png  31 kb
 
DMNIK:
Signaux imprécis Chers artisans ! Pourriez-vous faire de meilleurs signaux. M1, M5, M15

Il montre simplement si les 3 dernières clôtures sont supérieures ou inférieures aux 3 dernières ouvertures. Rien à améliorer dans cela

Raison: