작업 종료됨
명시
Hi.
I want to change this indicator to a multi time frame version(1). Add some different arrow Types(2).Option to change the distance between the arraw and Bars(3).
No other change in the calculation .
send me please the required fee for it.....
thanks
//+------------------------------------------------------------------+
//| |
//| |
//| |
//+------------------------------------------------------------------+
#property copyright ""
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 LimeGreen
#property indicator_color2 Red
//---- input parameters
extern int D1RSIPer=13;
extern int D2StochPer=8;
extern int D3tunnelPer=8;
extern double hot=0.4;
extern int sigsmooth=0;
//---- buffers
double sig1n[];
double sig2n[];
double upX[],dnX[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
string short_name;
//---- indicator line
IndicatorBuffers(4);
SetIndexBuffer(2,sig1n);
SetIndexBuffer(3,sig2n);
SetIndexStyle(0,DRAW_ARROW);
SetIndexArrow(0,159);
SetIndexBuffer(0,upX);
SetIndexStyle(1,DRAW_ARROW);
SetIndexArrow(1,159);
SetIndexBuffer(1,dnX);
//----
SetIndexDrawBegin(0,D1RSIPer+D2StochPer+D3tunnelPer+hot+sigsmooth);
SetIndexDrawBegin(1,D1RSIPer+D2StochPer+D3tunnelPer+hot+sigsmooth);
//----
return(0);
}
//+------------------------------------------------------------------+
//| CCI_Woodies |
//+------------------------------------------------------------------+
int start()
{
int i,i2,counted_bars=IndicatorCounted();
double rsi,maxrsi,minrsi,storsi,E3D,
sig1,sig2,sk,ss,sk2;
double cs;
bool init=true;
//----
cs= D1RSIPer+D2StochPer+D3tunnelPer+hot+sigsmooth;
if(Bars<=cs) return(0);
//if (init)
//{
ss=sigsmooth;
if (ss<2) ss=2;
sk = 2 / (ss + 1);
sk2=2/(ss*0.8+1);
init=false;
//};
//---- initial zero
if(counted_bars<1)
{
for(i=1;i<=cs;i++) sig1n[Bars-i]=0.0;
for(i=1;i<=cs;i++) sig2n[Bars-i]=0.0;
for(i=1;i<=cs;i++) upX[Bars-i]=0.0;
for(i=1;i<=cs;i++) dnX[Bars-i]=0.0;
}
i=Bars-cs-1;
if (counted_bars>=cs) i=300; //i=Bars-counted_bars-1;
while (i>=0)
{
rsi=iRSI(NULL,0,D1RSIPer,PRICE_CLOSE,i);
maxrsi=rsi;
minrsi=rsi;
for (i2=i+D2StochPer;i2>=i; i2--)
{
rsi=iRSI(NULL,0,D1RSIPer,PRICE_CLOSE,i2);
if (rsi>maxrsi) maxrsi=rsi;
if (rsi<minrsi) minrsi=rsi;
//maxrsi=Maximum(rsi,maxrsi);
//minrsi=min(rsi,minrsi);
}
storsi=((rsi-minrsi)/(maxrsi-minrsi)*200-100);
E3D=hot*iCCI(NULL,0,D3tunnelPer,PRICE_TYPICAL,i)+(1-hot)*storsi;
sig1n[i]=sk*E3D+(1-sk)*sig1;
sig2n[i]=sk2*sig1+(1-sk2)*sig2;
sig1=sig1n[i];
sig2=sig2n[i];
if (sig1n[i]>sig2n[i] && sig1n[i+1]<sig2n[i+1]) upX[i]=Low[i]-iATR(NULL,0,15,i)/2.0;
if (sig1n[i]<sig2n[i] && sig1n[i+1]>sig2n[i+1]) dnX[i]=High[i]+iATR(NULL,0,15,i)/2.0;
i--;
}
return(0);
}
//+------------------------------------------------------------------+
//+-------------------------------------------------------------------
//|
//+-------------------------------------------------------------------
//
//
//
//
//