Ema Cross ! - page 66

 
codersguru:
Je suis en train d'écrire la version 3 de l'EMA Cross !

De nouvelles idées ?

Des commentaires ?

MERCI À TOUS LES POEPLES QUI M'ONT PARTAGÉ CE FIL !

Pourriez-vous écrire une version qui fonctionne de la même manière, mais je peux définir un paramètre pour lui dire de ne pas acheter et de ne pas vendre. Je ne veux pas acheter plus lorsque la vente est désactivée, mais simplement ne rien faire.

Les transactions sont suffisamment longues pour que cela soit utile car je peux toujours négocier avec les intérêts.

 
witchazel:
Pourriez-vous écrire une version qui fonctionne de la même manière, mais je peux définir un paramètre pour lui dire de ne pas acheter et de ne pas vendre. Je ne veux pas acheter davantage lorsque la vente est terminée, mais simplement ne rien faire. Les transactions sont assez longues et il serait utile d'avoir cette fonction car je pourrais toujours négocier avec les intérêts.

Bonjour à tous,

tout d'abord, merci pour tous vos efforts

Serait-il possible de coder une fonction pour envoyer un email une fois par jour avec "le résultat du jour" (profit/perte du jour) c'est à dire à 21h ?

Encore merci pour votre travail

 
Posté à l'origine par codersguru

I'm writing the version 3 of the EMA Cross!

De nouvelles idées ?

Des commentaires ?

MERCI POUR TOUTES LES PERSONNES QUI ONT PARTAGÉ CE FIL DE DISCUSSION !

J'ai passé un certain temps à étudier cet EA. Il s'appuie fortement sur le retracement. Pour que cela fonctionne vraiment, il doit y avoir une méthode pour détecter quand un retracement suffisant est improbable et ne pas entrer des positions dans la direction qui devra être retracée jusqu'au TP. Si vous pouvez faire cela, vous aurez vraiment quelque chose ici. J'ai également travaillé avec un EA similaire qui n'ouvre qu'une seule position à la fois dans la direction du signal. Il a le même problème en ce sens qu'il ne détecte pas les limites des modèles de canalisation et se retrouve dans des positions qui sont abandonnées comme le fait cet EA. La modification est simple en théorie, n'autorisez pas les positions longues à proximité des niveaux de résistance des canaux forts et n'autorisez pas les positions courtes à proximité des niveaux de support des canaux forts. Empêchez le programme d'entrer dans ces niveaux. Faites en sorte qu'il regarde l'intérieur du canal et non l'extérieur pour réaliser ses profits. C'est lorsqu'il regarde à l'extérieur du canal qu'il crée des positions abandonnées qui lui nuisent.

comment détecter les canaux ? Je ne sais pas encore ce qui fonctionne pour cela...

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

 

Shi Chanel

Cher Aaragon, c'est l'indicateur

Dossiers :
 
expertlive:
Cher Aaragon C'est l'indicateur

Merci pour cela expertlive !

J'ai une question sur les lignes de canal de la trame temporelle auxquelles il faut prêter le plus d'attention. Ce que j'ai vraiment besoin de savoir c'est comment inclure cet indicateur dans la logique d'exécution de l'ea avec laquelle je travaille. Je ne suis pas encore très avancé dans mon apprentissage de la programmation. J'aimerais utiliser ces lignes de canal pour empêcher l'EA de prendre des positions qui devraient être clôturées en dehors du canal. Je travaille dans un graphique de 5m mais le canal dans ce TF est trop petit.

Le graphique 15m montre une taille de canal de 65 et une pente de .53 alors que le graphique 30m montre une taille de canal de 246 et une pente de -1.62. C'est assez divergent. La seule façon que je connaisse pour gérer ce genre de dilemme est de mettre les vis à oreilles du backtest et d'être capable de changer les paramètres de l'indicateur pour savoir quelle TF est utilisée et voir laquelle fonctionne le mieux.

J'ai aussi trouvé cet indicateur de breakout...

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

//| 5dayBreakout.mq4 |

//| Bill Sica |

//| http://www.tetsuyama.com |

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

#property copyright "Bill Sica"

#property link "http://www.tetsuyama.com"

#property indicator_chart_window

//---- input parameters

extern int DAYS=5;

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

//| Custom indicator initialization function |

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

int init()

{

//---- indicators

//---- indicators

//----

return(0);

}

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

//| Custom indicator iteration function |

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

int start()

{

double daily_high1[20];

double daily_low1[20];

double yesterday_close;

double phigh,plow;

int i=1;

//---- TODO: add your code here

ArrayResize(daily_high1,DAYS);

ArrayResize(daily_low1,DAYS);

ArrayInitialize(daily_high1,0);

ArrayInitialize(daily_low1,0);

ArrayCopySeries(daily_low1, MODE_LOW, Symbol(), PERIOD_D1);

ArrayCopySeries(daily_high1, MODE_HIGH, Symbol(), PERIOD_D1);

/* initialise */

plow=daily_low1[1];

phigh=daily_high1[1];

for(i=1;i<DAYS;i++)

{

if(plow>daily_low1)

{

plow =daily_low1;

}

}

for(i=1;i<DAYS;i++)

{

if(phigh<daily_high1)

{

phigh =daily_high1;

}

}

Comment("\n5dayH ",phigh,"\n5dayL ",plow);

ObjectDelete("5dayHigh1");

ObjectDelete("5dayLow1");

ObjectCreate("5dayHigh1", OBJ_HLINE,0, CurTime(),phigh);

ObjectSet("5dayHigh1",OBJPROP_COLOR,SpringGreen);

ObjectSet("5dayHigh1",OBJPROP_STYLE,STYLE_SOLID);

ObjectCreate("5dayLow1", OBJ_HLINE,0, CurTime(),plow);

ObjectSet("5dayLow1",OBJPROP_COLOR,Red);

ObjectSet("5dayLow1",OBJPROP_STYLE,STYLE_SOLID);

ObjectsRedraw();

return(0);

}

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

Je ne sais pas ce qui fonctionnerait le mieux. Je sais qu'il y a un moyen de le découvrir construire les deux et les tester !

 
#property copyright "ANG3110@latchess.com"

//----------------------------------

#property indicator_chart_window

//----------------------------------

extern int Hours=24;

extern color col=SkyBlue;

//------------------

double lr,lr0,lrp;

double sx,sy,sxy,sx2,aa,bb;

int p,sName,fs;

int f,f0,f1;

double dh,dl,dh_1,dl_1,dh_2,dl_2;

int ai_1,ai_2,bi_1,bi_2;

double hai,lai,dhi,dli,dhm,dlm,ha0,hap,la0,lap;

double price_p1,price_p0,price_p2,price_01,price_00,price_02;

int p1,p0,p2,fp;

//*****************************************

int init() {

p=Hours*60/Period();

if (fs==0) {sName=CurTime(); fs=1;}

return(0);}

//*******************************

int deinit() {

ObjectDelete("1"+sName);

ObjectDelete("0"+sName);

ObjectDelete("2"+sName); }

//*******************************

int start() {

int i,n;

//------------------------------------------------------------------------------

if (f==1) {

p1=iBarShift(Symbol(),Period(),ObjectGet("1"+sName,OBJPROP_TIME1));

p0=iBarShift(Symbol(),Period(),ObjectGet("0"+sName,OBJPROP_TIME1));

p2=iBarShift(Symbol(),Period(),ObjectGet("2"+sName,OBJPROP_TIME1));

if (fp==0 && p!=p1) {p=p1; fp=1;}

if (fp==0 && p!=p0) {p=p0; fp=1;}

if (fp==0 && p!=p2) {p=p2; fp=1;}

}

//====================================================

sx=0; sy=0; sxy=0; sx2=0;

for (n=0; n<=p; n++) {sx+=n; sy+=Close[n]; sxy+=n*Close[n]; sx2+=MathPow(n,2);}

aa=(sx*sy-(p+1)*sxy)/(MathPow(sx,2)-(p+1)*sx2); bb=(sy-aa*sx)/(p+1);

//----------------------------------------------------

for (i=0; i<=p; i++) {

lr=bb+aa*i;

dh=High-lr; dl=Low-lr;

//----------------------------------------------------

if (i<p/2) {if (i==0) {dh_1=0.0; dl_1=0.0; ai_1=i; bi_1=i;}

if (dh>=dh_1) {dh_1=dh; ai_1=i;}

if (dl<=dl_1) {dl_1=dl; bi_1=i;}}

//----------------------------------------------------

if (i>=p/2) {if (i==p/2) {dh_2=0.0; dl_2=0.0; ai_2=i; bi_2=i;}

if (dh>=dh_2) {dh_2=dh; ai_2=i;}

if (dl<=dl_2) {dl_2=dl; bi_2=i;}}}

//-------------------------------------

lr0=bb; lrp=bb+aa*(i+p);

//===================================================

if (MathAbs(ai_1-ai_2)>MathAbs(bi_1-bi_2)) f=1;

if (MathAbs(ai_1-ai_2)<MathAbs(bi_1-bi_2)) f=2;

if (MathAbs(ai_1-ai_2)==MathAbs(bi_1-bi_2)) {if (MathAbs(dh_1-dh_2)=MathAbs(dl_1-dl_2)) f=2;}

//=================================================

if (f==1) {

for (n=0; n<=20; n++) { f1=0;

for (i=0; i<=p; i++) {hai=High[ai_1]*(i-ai_2)/(ai_1-ai_2)+High[ai_2]*(i-ai_1)/(ai_2-ai_1);

if (i==0 || i==p/2) dhm=0.0;

if (High-hai>dhm && i<p/2) {ai_1=i; f1=1;}

if (High-hai>dhm && i>=p/2) {ai_2=i; f1=1;} }

if (f==0) break;}

//----------------------------

for (i=0; i<=p; i++) {hai=High[ai_1]*(i-ai_2)/(ai_1-ai_2)+High[ai_2]*(i-ai_1)/(ai_2-ai_1);

dli=Low-hai;

if (i==0) dlm=0.0; if (dli<dlm) dlm=dli;}

ha0=High[ai_1]*(0-ai_2)/(ai_1-ai_2)+High[ai_2]*(0-ai_1)/(ai_2-ai_1);

hap=High[ai_1]*(p-ai_2)/(ai_1-ai_2)+High[ai_2]*(p-ai_1)/(ai_2-ai_1);

//----------------------------

price_p1=hap;

price_p0=hap+dlm/2;

price_p2=hap+dlm;

price_01=ha0;

price_00=ha0+dlm/2;

price_02=ha0+dlm;

}

//=================================================

if (f==2) {

for (n=0; n<=20; n++) { f1=0;

for (i=0; i<=p; i++) {lai=Low*(i-bi_2)/(bi_1-bi_2)+Low*(i-bi_1)/(bi_2-bi_1);

if (i==0 || i==p/2) dlm=0.0;

if (Low-lai<dlm && i<p/2) {bi_1=i; f1=1;}

if (Low-lai=p/2) {bi_2=i; f1=1;}}

if (f==0) break;}

//----------------------------

for (i=0; i<=p; i++) {lai=Low*(i-bi_2)/(bi_1-bi_2)+Low*(i-bi_1)/(bi_2-bi_1);

dhi=High-lai;

if (i==0) dhm=0.0; if (dhi>dhm) dhm=dhi;}

la0=Low*(0-bi_2)/(bi_1-bi_2)+Low*(0-bi_1)/(bi_2-bi_1);

lap=Low*(p-bi_2)/(bi_1-bi_2)+Low*(p-bi_1)/(bi_2-bi_1);

//----------------------------------------------------------------

price_p1=lap;

price_p0=lap+dhm/2;

price_p2=lap+dhm;

price_01=la0;

price_00=la0+dhm/2;

price_02=la0+dhm;

}

//===================================================================================

ObjectCreate("1"+sName,2, 0,Time[p],price_p1,Time[0],price_01);

ObjectCreate("0"+sName,2, 0,Time[p],price_p0,Time[0],price_00);

ObjectCreate("2"+sName,2, 0,Time[p],price_p2,Time[0],price_02);

//-----------------------------------------------------------------

ObjectSet("1"+sName,OBJPROP_COLOR,col);

ObjectSet("0"+sName,OBJPROP_COLOR,col);

ObjectSet("0"+sName,OBJPROP_STYLE,STYLE_DOT);

ObjectSet("2"+sName,OBJPROP_COLOR,col);

//---------------------------------------------

ObjectSet("1"+sName,OBJPROP_TIME1,Time[p]);

ObjectSet("1"+sName,OBJPROP_PRICE1,price_p1);

ObjectSet("1"+sName,OBJPROP_TIME2,Time[0]);

ObjectSet("1"+sName,OBJPROP_PRICE2,price_01);

ObjectSet("0"+sName,OBJPROP_TIME1,Time[p]);

ObjectSet("0"+sName,OBJPROP_PRICE1,price_p0);

ObjectSet("0"+sName,OBJPROP_TIME2,Time[0]);

ObjectSet("0"+sName,OBJPROP_PRICE2,price_00);

ObjectSet("2"+sName,OBJPROP_TIME1,Time[p]);

ObjectSet("2"+sName,OBJPROP_PRICE1,price_p2);

ObjectSet("2"+sName,OBJPROP_TIME2,Time[0]);

ObjectSet("2"+sName,OBJPROP_PRICE2,price_02);

//==================================================================

f=1; p1=p; p0=p; p2=p; fp=0;

//*************************************************************************************

return(0);}

//=====================================================================================

Ok, celui-là ne me donne pas de pentes différentes pour chaque période. Cela dépend de la distance à laquelle je trace les lignes pour déterminer la pente...

Hum, ça fait trois façons de faire maintenant...

une qui utilise les plus hauts et les plus bas, une qui donne des pentes divergentes et celle-ci.... Je suis timide sur celle qui donne des pentes divergentes dans chaque TF. Si je fais un filtre à partir de cela, je ne peux pas m'imaginer que la pente change de façon aussi volatile.

 

shi shanel-v.2 nouveau

Cher Aaragorn ... c'est une nouvelle version et un tableau d'images pour que vous sachiez comment l'utiliser.

Dossiers :
 
expertlive:
cher Aaragorn ... il s'agit d'une nouvelle version et d'un graphique en image pour que vous sachiez comment l'utiliser.

Merci pour votre travail, Expertlive. J'ai du mal à le charger avec succès dans la plateforme.

Je l'ai décompressé dans le dossier de l'indicateur mais il n'apparaît pas lorsque je redémarre la plateforme. Je ne sais pas pourquoi.

Pourriez-vous simplement le joindre ou poster le code ici directement sans le zipper et peut-être que cela pourrait fonctionner ?

Ce code doit-il être placé dans le dossier des experts ou dans celui des indicateurs ? Exécute-t-il réellement des ordres d'achat/de vente ou s'agit-il simplement d'un indicateur ?

Il est clair, d'après l'image que vous avez postée, que vous comprenez ce que j'essaie de faire ici. Garder le programme à l'intérieur du canal. Savez-vous comment le programmer pour faire cela ?

 

shi shanel v.2 nouveau

Aaragorn:
Merci pour votre travail, Expertlive. J'ai du mal à le charger avec succès dans la plateforme.

Je l'ai décompressé dans le dossier des indicateurs mais il n'apparaît pas lorsque je redémarre la plateforme. Je ne sais pas pourquoi.

Pourriez-vous simplement le joindre ou poster le code ici directement sans le zipper et cela pourrait peut-être fonctionner ?

Ce code est-il censé se trouver dans le dossier des experts ou dans celui des indicateurs ? Est-ce que cela exécute réellement des ordres d'achat/de vente ou est-ce juste un indicateur ?

Il est clair, d'après l'image que vous avez postée, que vous comprenez ce que j'essaie de faire ici. Garder le programme à l'intérieur du canal. Savez-vous comment le programmer pour faire ça ?

Utilisez-le si ça ne marche pas, dites-moi de le renvoyer.

 

cela fonctionne très bien expertlive, merci ! Pourriez-vous modifier cet indicateur de la même manière ? Je pense que j'aime plus cet indicateur que le shi même s'ils sont si similaires, celui-ci me semble plus stable. Pouvez-vous m'indiquer comment intégrer l'indicateur modifié dans un EA pour que je puisse le backtester ? ou pourriez-vous le faire ? Je voudrais ajouter ceci comme un filtre pour ces deux EA (voir ci-joint).

#property copyright "ANG3110@latchess.com"

//----------------------------------

#property indicator_chart_window

//----------------------------------

extern int Hours=24;

extern color col=SkyBlue;

//------------------

double lr,lr0,lrp;

double sx,sy,sxy,sx2,aa,bb;

int p,sName,fs;

int f,f0,f1;

double dh,dl,dh_1,dl_1,dh_2,dl_2;

int ai_1,ai_2,bi_1,bi_2;

double hai,lai,dhi,dli,dhm,dlm,ha0,hap,la0,lap;

double price_p1,price_p0,price_p2,price_01,price_00,price_02;

int p1,p0,p2,fp;

//*****************************************

int init() {

p=Hours*60/Period();

if (fs==0) {sName=CurTime(); fs=1;}

return(0);}

//*******************************

int deinit() {

ObjectDelete("1"+sName);

ObjectDelete("0"+sName);

ObjectDelete("2"+sName); }

//*******************************

int start() {

int i,n;

//------------------------------------------------------------------------------

if (f==1) {

p1=iBarShift(Symbol(),Period(),ObjectGet("1"+sName,OBJPROP_TIME1));

p0=iBarShift(Symbol(),Period(),ObjectGet("0"+sName,OBJPROP_TIME1));

p2=iBarShift(Symbol(),Period(),ObjectGet("2"+sName,OBJPROP_TIME1));

if (fp==0 && p!=p1) {p=p1; fp=1;}

if (fp==0 && p!=p0) {p=p0; fp=1;}

if (fp==0 && p!=p2) {p=p2; fp=1;}

}

//====================================================

sx=0; sy=0; sxy=0; sx2=0;

for (n=0; n<=p; n++) {sx+=n; sy+=Close[n]; sxy+=n*Close[n]; sx2+=MathPow(n,2);}

aa=(sx*sy-(p+1)*sxy)/(MathPow(sx,2)-(p+1)*sx2); bb=(sy-aa*sx)/(p+1);

//----------------------------------------------------

for (i=0; i<=p; i++) {

lr=bb+aa*i;

dh=High-lr; dl=Low-lr;

//----------------------------------------------------

if (i<p/2) {if (i==0) {dh_1=0.0; dl_1=0.0; ai_1=i; bi_1=i;}

if (dh>=dh_1) {dh_1=dh; ai_1=i;}

if (dl<=dl_1) {dl_1=dl; bi_1=i;}}

//----------------------------------------------------

if (i>=p/2) {if (i==p/2) {dh_2=0.0; dl_2=0.0; ai_2=i; bi_2=i;}

if (dh>=dh_2) {dh_2=dh; ai_2=i;}

if (dl<=dl_2) {dl_2=dl; bi_2=i;}}}

//-------------------------------------

lr0=bb; lrp=bb+aa*(i+p);

//===================================================

if (MathAbs(ai_1-ai_2)>MathAbs(bi_1-bi_2)) f=1;

if (MathAbs(ai_1-ai_2)<MathAbs(bi_1-bi_2)) f=2;

if (MathAbs(ai_1-ai_2)==MathAbs(bi_1-bi_2)) {if (MathAbs(dh_1-dh_2)=MathAbs(dl_1-dl_2)) f=2;}

//=================================================

if (f==1) {

for (n=0; n<=20; n++) { f1=0;

for (i=0; i<=p; i++) {hai=High[ai_1]*(i-ai_2)/(ai_1-ai_2)+High[ai_2]*(i-ai_1)/(ai_2-ai_1);

if (i==0 || i==p/2) dhm=0.0;

if (High-hai>dhm && i<p/2) {ai_1=i; f1=1;}

if (High-hai>dhm && i>=p/2) {ai_2=i; f1=1;} }

if (f==0) break;}

//----------------------------

for (i=0; i<=p; i++) {hai=High[ai_1]*(i-ai_2)/(ai_1-ai_2)+High[ai_2]*(i-ai_1)/(ai_2-ai_1);

dli=Low-hai;

if (i==0) dlm=0.0; if (dli<dlm) dlm=dli;}

ha0=High[ai_1]*(0-ai_2)/(ai_1-ai_2)+High[ai_2]*(0-ai_1)/(ai_2-ai_1);

hap=High[ai_1]*(p-ai_2)/(ai_1-ai_2)+High[ai_2]*(p-ai_1)/(ai_2-ai_1);

//----------------------------

price_p1=hap;

price_p0=hap+dlm/2;

price_p2=hap+dlm;

price_01=ha0;

price_00=ha0+dlm/2;

price_02=ha0+dlm;

}

//=================================================

if (f==2) {

for (n=0; n<=20; n++) { f1=0;

for (i=0; i<=p; i++) {lai=Low*(i-bi_2)/(bi_1-bi_2)+Low*(i-bi_1)/(bi_2-bi_1);

if (i==0 || i==p/2) dlm=0.0;

if (Low-lai<dlm && i<p/2) {bi_1=i; f1=1;}

if (Low-lai=p/2) {bi_2=i; f1=1;}}

if (f==0) break;}

//----------------------------

for (i=0; i<=p; i++) {lai=Low*(i-bi_2)/(bi_1-bi_2)+Low*(i-bi_1)/(bi_2-bi_1);

dhi=High-lai;

if (i==0) dhm=0.0; if (dhi>dhm) dhm=dhi;}

la0=Low*(0-bi_2)/(bi_1-bi_2)+Low*(0-bi_1)/(bi_2-bi_1);

lap=Low*(p-bi_2)/(bi_1-bi_2)+Low*(p-bi_1)/(bi_2-bi_1);

//----------------------------------------------------------------

price_p1=lap;

price_p0=lap+dhm/2;

price_p2=lap+dhm;

price_01=la0;

price_00=la0+dhm/2;

price_02=la0+dhm;

}

//===================================================================================

ObjectCreate("1"+sName,2, 0,Time[p],price_p1,Time[0],price_01);

ObjectCreate("0"+sName,2, 0,Time[p],price_p0,Time[0],price_00);

ObjectCreate("2"+sName,2, 0,Time[p],price_p2,Time[0],price_02);

//-----------------------------------------------------------------

ObjectSet("1"+sName,OBJPROP_COLOR,col);

ObjectSet("0"+sName,OBJPROP_COLOR,col);

ObjectSet("0"+sName,OBJPROP_STYLE,STYLE_DOT);

ObjectSet("2"+sName,OBJPROP_COLOR,col);

//---------------------------------------------

ObjectSet("1"+sName,OBJPROP_TIME1,Time[p]);

ObjectSet("1"+sName,OBJPROP_PRICE1,price_p1);

ObjectSet("1"+sName,OBJPROP_TIME2,Time[0]);

ObjectSet("1"+sName,OBJPROP_PRICE2,price_01);

ObjectSet("0"+sName,OBJPROP_TIME1,Time[p]);

ObjectSet("0"+sName,OBJPROP_PRICE1,price_p0);

ObjectSet("0"+sName,OBJPROP_TIME2,Time[0]);

ObjectSet("0"+sName,OBJPROP_PRICE2,price_00);

ObjectSet("2"+sName,OBJPROP_TIME1,Time[p]);

ObjectSet("2"+sName,OBJPROP_PRICE1,price_p2);

ObjectSet("2"+sName,OBJPROP_TIME2,Time[0]);

ObjectSet("2"+sName,OBJPROP_PRICE2,price_02);

//==================================================================

f=1; p1=p; p0=p; p2=p; fp=0;

//*************************************************************************************

return(0);}

//=====================================================================================

L'image .gif montre la différence entre les deux sur un graphique. Le nombre de barres que cela regarde change la façon dont il se déplace dans le graphique aussi. quelle langue est shi montrant sur le graphique ? Pourrait-il s'agir de l'anglais ?

Sur l'EMA CROSS, je ne veux pas seulement que le stop loss soit fixé au niveau du filtre, je ne veux pas que l'EMA CROSS ouvre une position qui devrait clôturer en dehors du canal. Cela dépendrait de l'objectif du TP mais c'est ainsi que j'aimerais que le filtre fonctionne sur l'EMA CROSS et sur l'EA "quelconque".

J'admire votre capacité à programmer, j'aimerais savoir comment le faire davantage.

Dossiers :
Raison: