Thread: Ema Cross!
View Single Post
  #664 (permalink)  
Old 06-27-2006, 07:06 PM
Aaragorn's Avatar
Aaragorn Aaragorn is offline
Senior Member
 
Join Date: Jun 2006
Location: USA
Posts: 801
Aaragorn is on a distinguished road
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)

PHP Code:
#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==&& p!=p1) {p=p1fp=1;}
if (
fp==&& p!=p0) {p=p0fp=1;}
if (
fp==&& p!=p2) {p=p2fp=1;}
}
//====================================================
sx=0sy=0sxy=0sx2=0
for (
n=0n<=pn++) {sx+=nsy+=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=0i<=pi++) {
lr=bb+aa*i;
dh=High[i]-lrdl=Low[i]-lr;
//----------------------------------------------------
if (i<p/2) {if (i==0) {dh_1=0.0dl_1=0.0ai_1=ibi_1=i;} 
if (
dh>=dh_1) {dh_1=dhai_1=i;}
if (
dl<=dl_1) {dl_1=dlbi_1=i;}}  
//----------------------------------------------------
if (i>=p/2) {if (i==p/2) {dh_2=0.0dl_2=0.0ai_2=ibi_2=i;} 
if (
dh>=dh_2) {dh_2=dhai_2=i;}
if (
dl<=dl_2) {dl_2=dlbi_2=i;}}} 
//-------------------------------------
lr0=bblrp=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=1; if (MathAbs(dh_1-dh_2)>=MathAbs(dl_1-dl_2)) f=2;} 
//=================================================
if (f==1) {
for (
n=0n<=20n++) { f1=0;
for (
i=0i<=pi++) {hai=High[ai_1]*(i-ai_2)/(ai_1-ai_2)+High[ai_2]*(i-ai_1)/(ai_2-ai_1);  
if (
i==|| i==p/2dhm=0.0
if (
High[i]-hai>dhm && i<p/2) {ai_1=if1=1;}
if (
High[i]-hai>dhm && i>=p/2) {ai_2=if1=1;} }
if (
f==0) break;} 
//----------------------------
for (i=0i<=pi++) {hai=High[ai_1]*(i-ai_2)/(ai_1-ai_2)+High[ai_2]*(i-ai_1)/(ai_2-ai_1);  
dli=Low[i]-hai
if (
i==0dlm=0.0; if (dli<dlmdlm=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=0n<=20n++) { f1=0;
for (
i=0i<=pi++) {lai=Low[bi_1]*(i-bi_2)/(bi_1-bi_2)+Low[bi_2]*(i-bi_1)/(bi_2-bi_1); 
if (
i==|| i==p/2dlm=0.0
if (
Low[i]-lai<dlm && i<p/2) {bi_1=if1=1;}
if (
Low[i]-lai<dlm && i>=p/2) {bi_2=if1=1;}} 
if (
f==0) break;}
//----------------------------
for (i=0i<=pi++) {lai=Low[bi_1]*(i-bi_2)/(bi_1-bi_2)+Low[bi_2]*(i-bi_1)/(bi_2-bi_1); 
dhi=High[i]-lai;
if (
i==0dhm=0.0; if (dhi>dhmdhm=dhi;}   
la0=Low[bi_1]*(0-bi_2)/(bi_1-bi_2)+Low[bi_2]*(0-bi_1)/(bi_2-bi_1); 
lap=Low[bi_1]*(p-bi_2)/(bi_1-bi_2)+Low[bi_2]*(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,20,Time[p],price_p1,Time[0],price_01);
ObjectCreate("0"+sName,20,Time[p],price_p0,Time[0],price_00);
ObjectCreate("2"+sName,20,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=1p1=pp0=pp2=pfp=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.
Attached Images
File Type: gif shi and autoch.gif (12.5 KB, 1637 views)
Attached Files
File Type: mq4 EMA_CROSSmodv4.mq4 (11.5 KB, 511 views)
File Type: mq4 whatever.mq4 (2.3 KB, 376 views)

Last edited by Aaragorn; 06-27-2006 at 07:29 PM.
Reply With Quote