Jump to content

REQ: Trend Signal software


Recommended Posts

Hi

 

Looked at this many years ago. They did have a version for TS but I did not buy it.

 

There are some discussions on Forums on the web I recall.

 

In order to code it you need to know what those indicators are:

 

My guess is Kenter channel, Stepped Average, Exp Moving Average.....

 

If you can work this out - or get a copy of the Tradestation version then you have a chance of being able

to get it coded up as the coding is not the hard part....

 

See what you can find out.

Link to comment
Share on other sites

Hi

 

Just did a search and found this ?? Maybe you can tell me if it works

 

 

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

//| trendsignal.mq4

//| contact [email protected]

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

 

 

#property indicator_chart_window

#property indicator_buffers 2

#property indicator_color1 DodgerBlue

#property indicator_color2 Magenta

 

//---- input parameters

extern int RISK=3;

extern int CountBars=350;

extern int Alert_Delay_In_Seconds=0;

extern bool Enablemail = true;

extern string subjectUp="Buy signal";

extern string subjectDown="Sell signal";

extern string textUp="Long ";

extern string textDown="Short ";

int SSP=9;

int PrevAlertTime=0;

//---- buffers

double val1[];

double val2[];

double alertBar;

 

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

//| Custom indicator initialization function |

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

int init()

{

string short_name;

//---- indicator line

IndicatorBuffers(2);

SetIndexStyle(0,DRAW_ARROW);

SetIndexArrow(0,233);

SetIndexStyle(1,DRAW_ARROW);

SetIndexArrow(1,234);

SetIndexBuffer(0,val1);

SetIndexBuffer(1,val2);

//----

return(0);

}

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

//| SilverTrend_Signal |

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

int start()

{

if (CountBars>=Bars) CountBars=Bars;

SetIndexDrawBegin(0,Bars-CountBars+SSP);

SetIndexDrawBegin(1,Bars-CountBars+SSP);

int i,shift,counted_bars=IndicatorCounted();

int i1,i2,K;

double Range,AvgRange,smin,smax,SsMax,SsMin,price;

bool uptrend,old;

//----

 

if(Bars<=SSP+1) return(0);

//---- initial zero

if(counted_bars<SSP+1)

{

for(i=1;i<=SSP;i++) val1[CountBars-i]=0.0;

for(i=1;i<=SSP;i++) val2[CountBars-i]=0.0;

}

//----

 

K=33-RISK;

for (shift = CountBars-SSP; shift>=0; shift--)

{

 

Range=0;

AvgRange=0;

for (i1=shift; i1<=shift+SSP; i1++)

{AvgRange=AvgRange+MathAbs(High[i1]-Low[i1]);

}

Range=AvgRange/(SSP+1);

 

SsMax=High[shift]; SsMin=Low[shift];

for (i2=shift;i2<=shift+SSP-1;i2++)

{

price=High[i2];

if(SsMax<price) SsMax=price;

price=Low[i2];

if(SsMin>=price) SsMin=price;

}

 

smin = SsMin+(SsMax-SsMin)*K/100;

smax = SsMax-(SsMax-SsMin)*K/100;

val1[shift]=0;

val2[shift]=0;

if (Close[shift]<smin)

{

uptrend = false;

}

if (Close[shift]>smax)

{

uptrend = true;

}

if (uptrend!=old && uptrend==true)

{

val1[shift]=Low[shift]-Range*0.5;

 

if (Bars>alertBar && shift==0 && (CurTime() - PrevAlertTime > Period()*Alert_Delay_In_Seconds))

{

Alert("Trendsignal ",Period()," ",Symbol()," BUY");alertBar = Bars;

if(Enablemail == true) {SendMail(subjectDown+" "+ Symbol(),textDown+" "+ Close[1]+" "+ Symbol()); }

PrevAlertTime = CurTime();

}

}

if (uptrend!=old && uptrend==false)

{

 

val2[shift]=High[shift]+Range*0.5;

if (Bars>alertBar && shift==0 && (CurTime() - PrevAlertTime > Period()*Alert_Delay_In_Seconds))

{

Alert("Trendsignal ",Period()," ",Symbol()," SELL");alertBar = Bars;

if(Enablemail == true) {SendMail(subjectUp +" "+ Symbol(),textUp+" "+ Close[1]+" " + Symbol());}

PrevAlertTime = CurTime();

 

}

}

Comment(shift);

old=uptrend;

 

}

return(0);

}

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

Link to comment
Share on other sites

Hi

 

Just did a search and found this ?? Maybe you can tell me if it works

 

 

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

//| trendsignal.mq4

//| contact [email protected]

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

 

 

#property indicator_chart_window

#property indicator_buffers 2

#property indicator_color1 DodgerBlue

#property indicator_color2 Magenta

 

//---- input parameters

extern int RISK=3;

extern int CountBars=350;

extern int Alert_Delay_In_Seconds=0;

extern bool Enablemail = true;

extern string subjectUp="Buy signal";

extern string subjectDown="Sell signal";

extern string textUp="Long ";

extern string textDown="Short ";

int SSP=9;

int PrevAlertTime=0;

//---- buffers

double val1[];

double val2[];

double alertBar;

 

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

//| Custom indicator initialization function |

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

int init()

{

string short_name;

//---- indicator line

IndicatorBuffers(2);

SetIndexStyle(0,DRAW_ARROW);

SetIndexArrow(0,233);

SetIndexStyle(1,DRAW_ARROW);

SetIndexArrow(1,234);

SetIndexBuffer(0,val1);

SetIndexBuffer(1,val2);

//----

return(0);

}

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

//| SilverTrend_Signal |

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

int start()

{

if (CountBars>=Bars) CountBars=Bars;

SetIndexDrawBegin(0,Bars-CountBars+SSP);

SetIndexDrawBegin(1,Bars-CountBars+SSP);

int i,shift,counted_bars=IndicatorCounted();

int i1,i2,K;

double Range,AvgRange,smin,smax,SsMax,SsMin,price;

bool uptrend,old;

//----

 

if(Bars<=SSP+1) return(0);

//---- initial zero

if(counted_bars<SSP+1)

{

for(i=1;i<=SSP;i++) val1[CountBars-i]=0.0;

for(i=1;i<=SSP;i++) val2[CountBars-i]=0.0;

}

//----

 

K=33-RISK;

for (shift = CountBars-SSP; shift>=0; shift--)

{

 

Range=0;

AvgRange=0;

for (i1=shift; i1<=shift+SSP; i1++)

{AvgRange=AvgRange+MathAbs(High[i1]-Low[i1]);

}

Range=AvgRange/(SSP+1);

 

SsMax=High[shift]; SsMin=Low[shift];

for (i2=shift;i2<=shift+SSP-1;i2++)

{

price=High[i2];

if(SsMax<price) SsMax=price;

price=Low[i2];

if(SsMin>=price) SsMin=price;

}

 

smin = SsMin+(SsMax-SsMin)*K/100;

smax = SsMax-(SsMax-SsMin)*K/100;

val1[shift]=0;

val2[shift]=0;

if (Close[shift]<smin)

{

uptrend = false;

}

if (Close[shift]>smax)

{

uptrend = true;

}

if (uptrend!=old && uptrend==true)

{

val1[shift]=Low[shift]-Range*0.5;

 

if (Bars>alertBar && shift==0 && (CurTime() - PrevAlertTime > Period()*Alert_Delay_In_Seconds))

{

Alert("Trendsignal ",Period()," ",Symbol()," BUY");alertBar = Bars;

if(Enablemail == true) {SendMail(subjectDown+" "+ Symbol(),textDown+" "+ Close[1]+" "+ Symbol()); }

PrevAlertTime = CurTime();

}

}

if (uptrend!=old && uptrend==false)

{

 

val2[shift]=High[shift]+Range*0.5;

if (Bars>alertBar && shift==0 && (CurTime() - PrevAlertTime > Period()*Alert_Delay_In_Seconds))

{

Alert("Trendsignal ",Period()," ",Symbol()," SELL");alertBar = Bars;

if(Enablemail == true) {SendMail(subjectUp +" "+ Symbol(),textUp+" "+ Close[1]+" " + Symbol());}

PrevAlertTime = CurTime();

 

}

}

Comment(shift);

old=uptrend;

 

}

return(0);

}

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

 

 

Ive seen and tested this, its arrows on a chart where it thinks you can buy or sell, it's not what I'm looking for and doesn't work unfortunately. :)

Link to comment
Share on other sites

  • 4 weeks later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...