Login Page - Create Account

Support Board


Date/Time: Thu, 13 Feb 2025 02:54:56 +0000



[Programming Help] - Trigger line indicator

View Count: 942

[2020-04-16 20:40:29]
User922854 - Posts: 10
Does anyone know if theres a sierra chart indicator for the indicator thats on this chart with the red arrows pointing towards it.

Its called Trigger Lines on other trading platforms was wondering if Sierra Charts has it.
imageCapture.PNG / V - Attached On 2020-04-16 20:35:08 UTC - Size: 208.12 KB - 328 views
imageCapture.PNG / V - Attached On 2020-04-16 20:39:56 UTC - Size: 188.8 KB - 323 views
[2020-11-22 23:28:44]
User922854 - Posts: 10
Here is the code....can someone code it to sierra charts


//+------------------------------------------------------------------+
//| NT Trigger Lines Recoded.mq4 |
//| Copyright 2013, William Kreider (Madhatt30) |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, William Kreider (Madhatt30)"
#property link "http://www.metaquotes.net"

#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 Green
#property indicator_color2 Green
#property indicator_color3 Red
#property indicator_color4 Red
#property indicator_width1 2
#property indicator_width2 2
#property indicator_width3 2
#property indicator_width4 2
//--- input parameters
extern int length=80;
extern int trigAvg=20;
//--- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double ExtMapBuffer3[];
double ExtMapBuffer4[];
double c;
//---- additional calculating buffers
double LRBuffer[],EMABuffer[];
bool bTrigWasRising=false;
bool firstrun=true;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
IndicatorBuffers(6);
//---- indicators
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,ExtMapBuffer1);
SetIndexStyle(1,DRAW_LINE);
SetIndexBuffer(1,ExtMapBuffer2);
SetIndexStyle(2,DRAW_LINE);
SetIndexBuffer(2,ExtMapBuffer3);
SetIndexStyle(3,DRAW_LINE);
SetIndexBuffer(3,ExtMapBuffer4);
//---- Counting buffers same as DataSeries in NinjaTrader
SetIndexBuffer(4,LRBuffer);
SetIndexBuffer(5,EMABuffer);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int i;
int counted_bars=IndicatorCounted();
if(counted_bars < 0) return(-1);
if(counted_bars>0) counted_bars--;
int limit=Bars-counted_bars;
if(counted_bars==0) limit-=1+length;
//----
if(firstrun)
{
for(i=limit;i>=0;i--)
{
LRBuffer=linreg(length,i);
}
for(i=limit;i>=0;i--)
{
EMABuffer=iMAOnArray(LRBuffer,0,trigAvg,0,MODE_EMA,i);
}
firstrun=false;
}
RefreshRates();
WindowRedraw();
for(i=0;i<=limit;i++)
{
LRBuffer=linreg(length,i);
EMABuffer=iMAOnArray(LRBuffer,0,trigAvg,0,MODE_EMA,i);
if(EMABuffer>=LRBuffer)
{
if(bTrigWasRising)
{
ExtMapBuffer1=LRBuffer;
ExtMapBuffer2=EMABuffer;
ExtMapBuffer3=EMPTY_VALUE;
ExtMapBuffer4=EMPTY_VALUE;
}
else
{
ExtMapBuffer3=LRBuffer;
ExtMapBuffer4=EMABuffer;
ExtMapBuffer1=LRBuffer;
ExtMapBuffer2=EMABuffer;
}
bTrigWasRising=false;
}
else
{
if(!bTrigWasRising)
{
ExtMapBuffer3=LRBuffer;
ExtMapBuffer4=EMABuffer;
ExtMapBuffer1=LRBuffer;
ExtMapBuffer2=EMABuffer;
}
else
{
ExtMapBuffer1=LRBuffer;
ExtMapBuffer2=EMABuffer;
ExtMapBuffer3=EMPTY_VALUE;
ExtMapBuffer4=EMPTY_VALUE;
}
bTrigWasRising=true;
}
}
//----
RefreshRates();
WindowRedraw();
return(0);
}
//+------------------------------------------------------------------+
//| linreg |
//+------------------------------------------------------------------+
double linreg(int p,int i)
{
double SumY=0;
double Sum1=0;
double Slope=0;
//double c;

for(int x=0; x<=p-1;x++)
{
c=Close[x+i];
SumY+=c;
Sum1+=x*c;
}
double SumBars=p*(p-1)*0.5;
double SumSqrBars=(p-1)*p*(2*p-1)/6;
double Sum2=SumBars*SumY;
double Num1=p*Sum1-Sum2;
double Num2=SumBars*SumBars-p*SumSqrBars;
if(Num2!=0) Slope=Num1/Num2;
else Slope=0;
double Intercept=(SumY-Slope*SumBars)/p;
double linregval=Intercept+Slope*(p-1);
return(linregval);
}
//+------------------------------------------------------------------+

[2020-11-22 23:29:53]
User922854 - Posts: 10
Here is the second indicator code....can someone convert to sierra charts


//+------------------------------------------------------------------+
//| NT Trigger Lines Recoded.mq4 |
//| Copyright 2013, William Kreider (Madhatt30) |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, William Kreider (Madhatt30)"
#property link "http://www.metaquotes.net"

#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 Lime
#property indicator_color2 Lime
#property indicator_color3 Red
#property indicator_color4 Red
#property indicator_width1 1
#property indicator_width2 1
#property indicator_width3 1
#property indicator_width4 1
//--- input parameters
extern int length=20;
extern int trigAvg=5;
//--- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double ExtMapBuffer3[];
double ExtMapBuffer4[];
double c;
//---- additional calculating buffers
double LRBuffer[],EMABuffer[];
bool bTrigWasRising=false;
bool firstrun=true;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
IndicatorBuffers(6);
//---- indicators
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,ExtMapBuffer1);
SetIndexStyle(1,DRAW_LINE);
SetIndexBuffer(1,ExtMapBuffer2);
SetIndexStyle(2,DRAW_LINE);
SetIndexBuffer(2,ExtMapBuffer3);
SetIndexStyle(3,DRAW_LINE);
SetIndexBuffer(3,ExtMapBuffer4);
//---- Counting buffers same as DataSeries in NinjaTrader
SetIndexBuffer(4,LRBuffer);
SetIndexBuffer(5,EMABuffer);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int i;
int counted_bars=IndicatorCounted();
if(counted_bars < 0) return(-1);
if(counted_bars>0) counted_bars--;
int limit=Bars-counted_bars;
if(counted_bars==0) limit-=1+length;
//----
if(firstrun)
{
for(i=limit;i>=0;i--)
{
LRBuffer=linreg(length,i);
}
for(i=limit;i>=0;i--)
{
EMABuffer=iMAOnArray(LRBuffer,0,trigAvg,0,MODE_EMA,i);
}
firstrun=false;
}
RefreshRates();
WindowRedraw();
for(i=limit;i>=0;i--)
{
LRBuffer=linreg(length,i);
EMABuffer=iMAOnArray(LRBuffer,0,trigAvg,0,MODE_EMA,i);
if(EMABuffer>=LRBuffer)
{
if(bTrigWasRising)
{
ExtMapBuffer1=LRBuffer;
ExtMapBuffer2=EMABuffer;
ExtMapBuffer3=EMPTY_VALUE;
ExtMapBuffer4=EMPTY_VALUE;
}
else
{
ExtMapBuffer3=LRBuffer;
ExtMapBuffer4=EMABuffer;
ExtMapBuffer1=LRBuffer;
ExtMapBuffer2=EMABuffer;
}
bTrigWasRising=false;
}
else
{
if(!bTrigWasRising)
{
ExtMapBuffer3=LRBuffer;
ExtMapBuffer4=EMABuffer;
ExtMapBuffer1=LRBuffer;
ExtMapBuffer2=EMABuffer;
}
else
{
ExtMapBuffer1=LRBuffer;
ExtMapBuffer2=EMABuffer;
ExtMapBuffer3=EMPTY_VALUE;
ExtMapBuffer4=EMPTY_VALUE;
}
bTrigWasRising=true;
}
}
//----
RefreshRates();
WindowRedraw();
return(0);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
double linreg(int p,int i)
{
double SumY=0;
double Sum1=0;
double Slope=0;
//double c;

for(int x=0; x<=p-1;x++)
{
c=Close[x+i];
SumY+=c;
Sum1+=x*c;
}
double SumBars=p*(p-1)*0.5;
double SumSqrBars=(p-1)*p*(2*p-1)/6;
double Sum2=SumBars*SumY;
double Num1=p*Sum1-Sum2;
double Num2=SumBars*SumBars-p*SumSqrBars;
if(Num2!=0) Slope=Num1/Num2;
else Slope=0;
double Intercept=(SumY-Slope*SumBars)/p;
double linregval=Intercept+Slope*(p-1);
return(linregval);
}
//+------------------------------------------------------------------+

To post a message in this thread, you need to log in with your Sierra Chart account:

Login

Login Page - Create Account