You are missing trading opportunities:
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
Registration
Log in
You agree to website policy and terms of use
If you do not have an account, please register
I'm writing the version 3 of the EMA Cross!
Any new ideas?
Any comments?
THANKS FOR ALL THE POEPLES SHARED ME THIS THREAD !Might you be able to write a version that works the same but i can set a setting to tell it not to buy and not to sell. I dont want to buy more when sell is off, just not do anything
Trades are long enough it would help to have this as i could always trade with the interest
Might you be able to write a version that works the same but i can set a setting to tell it not to buy and not to sell. I dont want to buy more when sell is off, just not do anything Trades are long enough it would help to have this as i could always trade with the interest
Hi there,
first, thanks for all your effort
Would it be possible to code a function to send an email once a day with "the days result" (profit/loss for the day) i.e. at 9 pm?
Again thanks for the hard work
I'm writing the version 3 of the EMA Cross!
Any new ideas?
Any comments?
THANKS FOR ALL THE POEPLES SHARED ME THIS THREAD !I have spent some time studying this EA. It relies on retracement heavily. To really make this work there needs to be a method of detecting when sufficient retracement is unlikely and not enter positions in the direction which will need to be retraced to TP. If you can do that you'll really have something here. I have also been working with a similar EA that only opens one position at a time in the direction of the signal. It has the same problem in that it doesn't detect the limits of channeling patterns and ends up in positions which become abandoned like this EA does. The modification is simple in theory, don't allow long positions when near strong channel resistance levels and don't allow short positions near strong channel support levels. Keep the program from entering these. Keep it looking to the inside of the channel not the outside to make it's profits. It's when it looks outside the channel that it creates abandoned positions which hurt it.
how to detect channels? I don't know what works for that yet...
https://www.mql5.com/en/forum/general
Shi Chanel
Dear Aaragon This Is Indicator
Dear Aaragon This Is Indicator
Thanks for that expertlive!
I have a question about which time frame channel lines to pay most attention to. What I really need to know is how to include this indicator in the executing logic of the ea I'm working with. I'm not that far with my learning how to program yet. I'd like to use these channel lines to limit the EA from getting into positions that would have to close outside the channel. I am working in a 5m chart but the channel in that TF is too small.
the 15m chart shows a channel size of 65 and slope of .53 while the 30m chart shows a channel size of 246 and slope of -1.62. That's quite divergent. The only way I know how to manage this sort of dilemma is to put the backtest thumbscrews down on it and be able to change the settings of the indicator as to which TF is uses and see which works the best.
I also found this breakout indicator..
//| 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);
}
//+------------------------------------------------------------------I don't know what would work best. I know there is a way to find out build em both and test em!
//----------------------------------
#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 this one doesn't give me different slopes on each time frame. It depends on how far back I draw the lines as to what the slope is...
hum, that's three ways to do it now...
one that uses highest highs and lowest lows, one that slopes divergent ways and this one....I'm shy on the one what gives divergent slopes in each TF. If I'm making a filter from it I can't wrap my mind around the slope changing so volitily.
shi shanel-v.2 new
dear Aaragorn ... this is a new version and a picture chart to you know how to use it
dear Aaragorn ... this is a new version and a picture chart to you know how to use it
thankyou for your work expertlive. I am having trouble getting it to load in the platform successfully.
I unzip it into the indicator folder but it doesn't appear when I restart the platform. I'm not sure why.
Could you please just attach it or post the code here directly without zipping and maybe that might work?
Is this supposed to go in the experts folder or the indicators folder? Does this actually execute buy/sell orders or is this just the indicator?
It is clear from the image you posted that you understand what I'm trying to do here. Keep the program within the channel. Do you know how to program it to do this?
shi shanel v.2 new
thankyou for your work expertlive. I am having trouble getting it to load in the platform successfully.
I unzip it into the indicator folder but it doesn't appear when I restart the platform. I'm not sure why.
Could you please just attach it or post the code here directly without zipping and maybe that might work?
Is this supposed to go in the experts folder or the indicators folder? Does this actually execute buy/sell orders or is this just the indicator?
It is clear from the image you posted that you understand what I'm trying to do here. Keep the program within the channel. Do you know how to program it to do this?use this if it not work tell me to send again
that works great expertlive, thankyou! Could you modify this indicator the same way? I think I like this indicator more than the shi even though they are so similar, this one seems more stable to me. Can you instruct me in how to make the modified indicator part of an EA so I can backtest it? or could you do it? I would like to add this as a filter for these two EA's (see attached)
//----------------------------------
#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);}
//=====================================================================================the .gif image shows the difference in the two on a chart. The number of bars this looks at changes how it moves in the chart too. what language is shi showing on the chart? Could it show english?
On the EMA CROSS I don't just want the stop loss set at the filter level I don't want the EMA CROSS to open a position at all which would have to close outside the channel. That would depend on the TP goal but that's how I'd like the filter to work on the EMA CROSS and on the 'whatever' EA.
I admire your ability to program I wish I knew how to do it more.