Ema Cross! - 页 66

 
codersguru:
我正在写第三版的EMA Cross!

有什么新的想法吗?

有什么意见吗?

感谢所有与我分享这个主题的人

你能不能写一个工作原理相同的版本,但我可以设定一个设置,告诉它不买也不卖。 我不想在卖出时买入更多,只是不想做任何事情。

交易时间足够长,如果有这个功能会很有帮助,因为我可以随时用利息进行交易。

 
witchazel:
你能不能写一个版本,工作原理相同,但我可以设置告诉它不要买入和不要卖出。 我不想在卖出时买入更多的东西,只是不想做任何事情 交易时间足够长,如果能有这样的功能,我就可以一直用利息进行交易了。

你们好。

首先,感谢您的努力

是否可以编写一个函数,每天发送一次 "当天的结果"(当天的盈利/亏损)的电子邮件,即在晚上9点?

再次感谢您的辛勤工作

 
原文由 codersguru 发表

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

有什么新的想法吗?

有什么意见吗?

感谢所有与我分享这个主题的人!

我已经花了一些时间研究这个EA。它在很大程度上依赖于回撤。要想真正做到这一点,需要有一种方法来检测什么时候不可能有足够的回撤,并且不在需要回撤到TP的方向上入仓。如果你能做到这一点,你将真正拥有一些东西。我也一直在使用一个类似的EA,它在信号的方向上一次只开一个头寸。它有同样的问题,即它没有检测到通道模式的极限,并最终导致像这个EA一样被放弃的位置。理论上的修改很简单,不允许在强通道阻力位附近做多,也不允许在强通道支撑位附近做空。让程序不要进入这些位置。让它着眼于通道的内部而不是外部来获取利润。当它看向通道外时,它就会产生放弃的头寸,这对它是不利的。

如何检测通道?我还不知道有什么方法可以做到这一点...

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

 

史香兰

亲爱的Aaragon,这是指标

附加的文件:
 
expertlive:
亲爱的Aaragon,这是指标

谢谢你的建议, expertlive!

我有一个问题,就是要最关注哪个时间段的通道线。我真正需要知道的是如何将这个指标纳入我正在使用的EA的执行逻辑中。我对如何编程的学习还不是很深入。我想用这些通道线来限制EA进入必须在通道外收盘的位置。我在5米图表中工作,但该TF中的通道太小。

15米图显示通道大小为65,斜率为0.53,而30米图显示通道大小为246,斜率为-1.62。这是相当大的分歧。我知道如何处理这种困境的唯一方法是把回测的拇指旋钮放下来,并能够改变指标的设置,以使用哪个TF,看看哪个效果最好。

我还发现了这个突破指标。

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

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

}

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

我不知道什么是最有效的。我知道有一种方法可以找出 ,把它们都建立起来并进行测试!

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

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

好吧,这个人没有在每个时间段给我不同的斜率。这取决于我在多远的地方画线来决定斜率是多少......

哼,现在有三种方法可以做了...

一种是使用最高点和最低点,一种是以分歧的方式进行倾斜,还有一种是....,我对在每个TF中提供分歧倾斜的方式感到害羞。如果我用它来做一个过滤器,我无法理解斜率的变化是如此的波动。

 

石家庄-V.2新版

亲爱的Aaragorn ... 这是一个新的版本和一个图片图表,你知道如何使用它。

附加的文件:
 
expertlive:
亲爱的Aaragorn ......这是一个新版本和一个图片图表,你知道如何使用它。

谢谢你的工作, expertlive。我在让它成功加载到平台上时遇到了麻烦。

我把它解压到指标文件夹中,但当我重新启动平台时,它并没有出现。我不知道为什么。

你能不能把它附在上面,或者直接把代码贴在这里,不要压缩,这样也许能行?

这应该放在专家文件夹还是指标文件夹中?这实际上是在执行买入/卖出订单,还是只是一个指标?

从你发布的图片可以看出,你明白我在这里要做什么。把程序放在通道内。你知道如何编程才能做到这一点吗?

 

shi shanel v.2 new

Aaragorn:
谢谢你的工作 expertlive。我很难让它在平台上成功加载。

我把它解压缩到指标文件夹中,但当我重新启动平台时,它并没有出现。我不知道为什么。

你能不能直接把它附在上面,或者直接把代码贴在这里,不要压缩,也许这样就可以了?

这应该放在专家文件夹还是指标文件夹中?这实际上是在执行买入/卖出订单,还是只是一个指标?

从你发布的图片可以看出,你明白我在这里要做什么。把程序保持在通道内。你知道如何编程来做这件事吗?

使用这个,如果它不工作,告诉我再次发送

附加的文件:
 

这很好用,谢谢你! expertlive你能以同样的方式修改这个指标吗?我想我更喜欢这个指标而不是Shi,尽管它们如此相似,这个指标对我来说似乎更稳定。你能指导我如何使修改后的指标成为EA的一部分,这样我就可以回测它了吗? 或者你能做到吗?我想把它作为这两个EA的一个过滤器(见附件)。

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

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

.GIF图片显示了两者在图表上的区别。它所看的条数 也会改变它在图表中的移动方式。Shi在图表中显示的是什么语言?能否显示英文?

关于EMA CROSS,我不只是想把止损设置在过滤水平上,我不希望EMA CROSS开仓,因为它必须在通道外收盘。这将取决于TP目标,但这就是我希望过滤器在EMA CROSS和 "任何 "EA上工作的方式。

我很佩服你的编程能力,我希望我知道如何做得更多。

附加的文件:
原因: