molanis.com/forum - Tools for MetaTrader : The place to ask about the best expert advisor builder, expert advisor downloads, and expert advisor programming

AFTER YOU REGISTER SEND US AN EMAIL TO ACTIVATE YOUR ACCOUNT - Before posting:-1- Please read the user guide -2- Try the examples -3- Search in the forum
It is currently Mon Apr 29, 2024 7:02 am

All times are UTC - 5 hours




Post new topic Reply to topic  [ 4 posts ] 
Author Message
 Post subject: EA trade problem
PostPosted: Wed Feb 24, 2010 11:28 pm 
Offline

Joined: Mon Feb 15, 2010 5:54 pm
Posts: 12
For the life of me I can't figure out why this EA won't take Long trades? Anyone???


Attachments:
AscTrend2.mol [8.78 KiB]
Downloaded 815 times
Top
 Profile  
 
 Post subject: Re: EA trade problem
PostPosted: Thu Feb 25, 2010 10:35 am 
Offline

Joined: Tue Dec 22, 2009 12:22 am
Posts: 1761
It looks good to me. But we need the "AscTrend2" indicator to test it. Can you upload it please? (.mql or .ex4)


Top
 Profile  
 
 Post subject: Re: EA trade problem
PostPosted: Thu Feb 25, 2010 6:46 pm 
Offline

Joined: Mon Feb 15, 2010 5:54 pm
Posts: 12
//+------------------------------------------------------------------+
//| AscTrend2.mq4 |
//| Copyright © 2006, Nick Bilak |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006, Nick Bilak"

//---- indicator settings
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Aqua
#property indicator_color2 Magenta
//---- indicator parameters
extern int Risk=5;
extern double MONYRISK=2.0;
//---- indicator buffers
double e1[];
double e2[];

int i,value2=1,Counter,DCounter,TrueCount=0,MRO1=0,MRO2=0,MRO3=0,MRO4=0;
double value3=18,value4=0,value5=0,value6=0,value7=0,value8=0,value9=0,
value10=10,value11=10000,value12=0,value13=0,value14=0,value19=0,
value4_1=0,value4_2=0,value9_1=0,value10_1=0,value11_1=0,value12_1=0,
Range=0,AvgRange=0,AvgRange_1=0,AvgRange_2=0,
val1=0,val2=0,NumBars=0;

//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- drawing settings
SetIndexStyle(0,DRAW_ARROW);
SetIndexStyle(1,DRAW_ARROW);
SetIndexArrow(0,159);
SetIndexArrow(1,159);
SetIndexEmptyValue(0,0);
SetIndexEmptyValue(1,0);
if(
!SetIndexBuffer(0,e1) ||
!SetIndexBuffer(1,e2)
)
Print("cannot set indicator buffers!");
//---- name for DataWindow and indicator subwindow label
IndicatorShortName("AscT2("+Risk+")");
//---- initialization done
return(0);

}

int start() {

int counted_bars=IndicatorCounted();
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
int limit=Bars-20-counted_bars;
double spread=Ask-Bid;
for(i=limit; i>=0; i--) {
Range=0;
AvgRange=0;
for (Counter=i; Counter<=i+9; Counter++) {
AvgRange=AvgRange+MathAbs(spread+High[Counter]-Low[Counter]);
}
Range=AvgRange/10.0;
if (i==Bars-20) {
value2=1; value3=18; value10=10000; value10_1=0;
value19=MONYRISK*Range*Point;
value2=Risk;
value3=18+3*value2;
value9=0;
}
Counter=i;
AvgRange=0;
for (Counter=i; Counter<=i+9-1; Counter++) {
AvgRange=AvgRange+Close[Counter];
}
value11=AvgRange/9.0;
// -----
//value12=UserFunction("AverageClose",value3,i);
Counter=i;
AvgRange=0;
for (Counter=i; Counter<=i+value3-1; Counter++) {
AvgRange=AvgRange+Close[Counter];
}
value12=AvgRange/value3;
// -----
value13=Range;
// -----
//value4=UserFunction("JESSD",High[i],Low[i],High[i+value2],Low[i+value2],Close[i+value2]);
AvgRange=(spread+High[i]+Low[i])/2.0;
if (Close[i+value2]<AvgRange) {
value4=2*AvgRange-Low[i+value2];
} else {
value4=2*AvgRange-spread+High[i+value2];
}
// -----
Counter=i;
TrueCount=0;
while (Counter<i+2 && TrueCount<1) {
//value4=UserFunction("JESSD",High[Counter],Low[Counter],High[Counter+value2],Low[Counter+value2],Close[Counter+value2]);
AvgRange=(spread+High[Counter]+Low[Counter])/2.0;
if (Close[Counter+value2]<AvgRange) {
value4=2*AvgRange-Low[Counter+value2];
} else {
value4=2*AvgRange-spread+High[Counter+value2];
}
value4=NormalizeDouble(value4,2);
//value4_1=UserFunction("JESSD",High[Counter+1],Low[Counter+1],High[Counter+value2],Low[Counter+value2],Close[Counter+value2]);
AvgRange_1=(spread+High[Counter+1]+Low[Counter+1])/2.0;
if (Close[Counter+1+value2]<AvgRange_1) {
value4_1=2*AvgRange_1-Low[Counter+1+value2];
} else {
value4_1=2*AvgRange_1-spread+High[Counter+1+value2];
}
value4_1=NormalizeDouble(value4_1,2);
//value4_2=UserFunction("JESSD",High[Counter+2],Low[Counter+2],High[Counter+value2],Low[Counter+value2],Close[Counter+value2]);
AvgRange_2=(spread+High[Counter+2]+Low[Counter+2])/2.0;
if (Close[Counter+2+value2]<AvgRange_2) {
value4_2=2*AvgRange_2-Low[Counter+2+value2];
} else {
value4_2=2*AvgRange_2-spread+High[Counter+2+value2];
}
value4_2=NormalizeDouble(value4_2,2);
if (value4>value4_1 && value4_1<value4_2) TrueCount=TrueCount+1;
Counter=Counter+1;
}
if (TrueCount>=1) MRO1=Counter-i-1; else MRO1=-1;
// -----
Counter=i;
TrueCount=0;
while (Counter<i+2 && TrueCount<1) {
//value4=UserFunction("JESSD",High[Counter],Low[Counter],High[Counter+value2],Low[Counter+value2],Close[Counter+value2]);
AvgRange=(spread+High[Counter]+Low[Counter])/2.0;
if (Close[Counter+value2]<AvgRange) {
value4=2*AvgRange-Low[Counter+value2];
} else {
value4=2*AvgRange-spread+High[Counter+value2];
}
value4=NormalizeDouble(value4,2);
//value4_1=UserFunction("JESSD",High[Counter+1],Low[Counter+1],High[Counter+value2],Low[Counter+value2],Close[Counter+value2]);
AvgRange_1=(spread+High[Counter+1]+Low[Counter+1])/2.0;
if (Close[Counter+1+value2]<AvgRange_1) {
value4_1=2*AvgRange_1-Low[Counter+1+value2];
} else {
value4_1=2*AvgRange_1-spread+High[Counter+1+value2];
}
value4_1=NormalizeDouble(value4_1,2);
//value4_2=UserFunction("JESSD",High[Counter+2],Low[Counter+2],High[Counter+value2],Low[Counter+value2],Close[Counter+value2]);
AvgRange_2=(spread+High[Counter+2]+Low[Counter+2])/2.0;
if (Close[Counter+2+value2]<AvgRange_2) {
value4_2=2*AvgRange_2-Low[Counter+2+value2];
} else {
value4_2=2*AvgRange_2-spread+High[Counter+2+value2];
}
value4_2=NormalizeDouble(value4_2,2);
if (value4<value4_1 && value4_1>value4_2) TrueCount=TrueCount+1;
Counter=Counter+1;
}
if (TrueCount>=1) MRO2=Counter-i-1; else MRO2=-1;
// -----
//value4_1=UserFunction("JESSD",High[i+1],Low[i+1],High[i+1+value2],Low[i+1+value2],Close[i+1+value2]);
AvgRange_1=(spread+High[i+1]+Low[i+1])/2.0;
if (Close[i+1+value2]<AvgRange_1) {
value4_1=2*AvgRange_1-Low[i+1+value2];
} else {
value4_1=2*AvgRange_1-spread+High[i+1+value2];
}
// -----
if (MRO1>-1 && Low[i+1]>value4_1) value5=value4_1-value13;
if (MRO2>-1 && spread+High[i+1]<value4_1) value6=value4_1+value13;
// -----
//value11_1=UserFunction("AverageClose",9,i+1);
Counter=i;
AvgRange=0;
for (Counter=i+1; Counter<=i+1+9-1; Counter++) {
AvgRange=AvgRange+Close[Counter];
}
value11_1=AvgRange/9.0;
// -----
//value12_1=UserFunction("AverageClose",value3,i+1);
Counter=i;
AvgRange=0;
for (Counter=i+1; Counter<=i+1+value3-1; Counter++) {
AvgRange=AvgRange+Close[Counter];
}
value12_1=AvgRange/value3;
// -----
if (value11_1<value12_1 && value11>value12) {
//value5=UserFunction("TrueLow",i)-value13;
if (Close[i+1]<Low[i]) {
value5=Close[i+1]-value13;
} else {
value5=Low[i]-value13;
}
}
if (value11_1>value12_1 && value11<value12) {
//value5=UserFunction("TrueHigh",i)+value13;
if (Close[i+1]>spread+High[i]) {
value5=Close[i+1]+value13;
} else {
value5=spread+High[i]+value13;
}
}
// -----
if (MathAbs(Open[i]-Close[i+1])>=1.618*value13) {
if (value11>value12) value5=Low[i]-value13;
if (value11<value12) value14=spread+High[i]+value13;
}
// -----
//value7=UserFunction("BS105",Low[i],2.40,value13,value9);
if (Low[i]-2.40*value13<value9) {
value7=value9;
} else {
value7=Low[i]-2.40*value13;
}
// -----
//value8=UserFunction("SS105",High[i],2.40,value13,value10);
if (spread+High[i]+2.40*value13>value10) {
value8=value10;
} else {
value8=spread+High[i]+2.40*value13;
}
// -----
//value9=UserFunction("BS0",Low[i],60,value7,RISK,value19);
value9=value7;
// -----
//value10=UserFunction("SS0",High[i],60,value8,RISK,value19);
value10=value8;
// -----
if (Low[i]-value9>value19/Point) value9=Low[i]-(1.50+0.1*Risk)*value13;
if (value10-spread+High[i]>value19/Point) value10=spread+High[i]+(1.50+0.1*Risk)*value13;
if (value11>=value12 && value5>=value9) value9=value5;
if (value11<=value12 && value6<=value10) value10=value6;
if (value11<=value12 && value5<=value9) value9=value5;
if (value11>=value12 && value6>=value10) value10=value6;
// -----
Counter=i;
TrueCount=0;
while (Counter<i+2 && TrueCount<2) {
//value11=UserFunction("AverageClose",9,Counter);
DCounter=Counter;
AvgRange=0;
for (DCounter=Counter; DCounter<=Counter+9-1; DCounter++) {
AvgRange=AvgRange+Close[DCounter];
}
value11=AvgRange/9.0;
//value12=UserFunction("AverageClose",value3,Counter);
DCounter=Counter;
AvgRange=0;
for (DCounter=Counter; DCounter<=Counter+value3-1; DCounter++) {
AvgRange=AvgRange+Close[DCounter];
}
value12=AvgRange/value3;
if (value11>=value12) TrueCount=TrueCount+1;
Counter=Counter+1;
}
if (TrueCount>=2) MRO3=Counter-i-1; else MRO3=-1;
// -----
Counter=i;
TrueCount=0;
while (Counter<i+2 && TrueCount<2) {
//value11=UserFunction("AverageClose",9,Counter);
DCounter=Counter;
AvgRange=0;
for (DCounter=Counter; DCounter<=Counter+9-1; DCounter++) {
AvgRange=AvgRange+Close[DCounter];
}
value11=AvgRange/9.0;
//value12=UserFunction("AverageClose",value3,Counter);
DCounter=Counter;
AvgRange=0;
for (DCounter=Counter; DCounter<=Counter+value3-1; DCounter++) {
AvgRange=AvgRange+Close[DCounter];
}
value12=AvgRange/value3;
if (value11<=value12) TrueCount=TrueCount+1;
Counter=Counter+1;
}
if (TrueCount>=2) MRO4=Counter-i-1; else MRO4=-1;
// -----
if (MRO3>-1 && value9<=value9_1) value9=value9_1;
if (MRO4>-1 && value10>=value10_1) value10=value10_1;
// -----
//value11=UserFunction("AverageClose",9,i);
Counter=i;
AvgRange=0;
for (Counter=i; Counter<=i+9-1; Counter++) {
AvgRange=AvgRange+Close[Counter];
}
value11=AvgRange/9.0;
// -----
//value12=UserFunction("AverageClose",value3,i);
Counter=i;
AvgRange=0;
for (Counter=i; Counter<=i+value3-1; Counter++) {
AvgRange=AvgRange+Close[Counter];
}
value12=AvgRange/value3;
// -----
val1=0;
val2=0;
if (value9>0 && value11>=value12 && value9<=spread+High[i]) {
val1=value9;
}
if (value10>0 && value10<1000000000 && value11<=value12 && value10>=Low[i]) {
val2=value10;
}
// -----
value9_1=value9;
value10_1=value10;
e1[i]=val1; //SetIndexValue(i,val1);
e2[i]=val2; //SetIndexValue2(i,val2);
// -----
}
}


Top
 Profile  
 
 Post subject: Re: EA trade problem
PostPosted: Thu Feb 25, 2010 9:00 pm 
Offline

Joined: Tue Dec 22, 2009 12:22 am
Posts: 1761
On thing to change is the custom fields : "AscTrend2",5,2 is the right one - When you add the custom indicator to a graph, go to the input tab and there you will find the indicator parameters (5 and 2 in this case). We'll try to make this discovery easier in the next version.

This indicator is a bit complex. You see two colors in the screen which means you have two indicator signals (Aqua and Magenta). When adding the indicator to a graph (or editing its properties) go to colors - there you will see the two color and a column number #.
0 Aqua
1 Magenta
This means that to get the Aqua signal you need to select Mode 0 and to get the Magenta signal you need to select mode 1

On the parameters of the custom indicators (right below "AscTrend2",5,2) change the mode to 1 and 0.
Looking at the graph it seems that If you are above Aqua (Mode 0) you should buy

Nice indicator BTW


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 4 posts ] 

All times are UTC - 5 hours


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by Molanis © 2009