Страницы: 1
Ответить

Индикатор TSF (Time Siries Forecast)

 
:quest: :shock:
Добрый день !
Кто знает формулу для расчета Индикатора TSF (Time Siries Forecast)
 
Для Метаса вроде здесь trader.online.pl/MSZ/e-st-Time_S ... _Test.html

НП, Владимир.
 
А для понимания в нормальном человеческом описании ??? :ispug:
 
Цитата
kircomА для понимания в нормальном человеческом описании ??? :ispug:


О-о-о, как все запущено! ;)
Ну давайте разбираться. Для начала, что понимается под "нормальным человеческим описанием"?

НП, Владимир.
 
Извиняюсь не понял как добавить файлы, поэтому исходники:

//+------------------------------------------------------------------+
//| TSF1.mq4 |
//| Copyright © 2007 Mulyadi |
//| |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2007 Mulyadi Santoso"
#property link "musanto@yahoo.com"

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 HotPink

//---- input parameters
extern int TSFper=20;
extern int Level = 0;
//---- buffers
double ExtMapBuffer1[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
bool start;
double sigma;
int init()
{string shortname;
//---- indicators
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,ExtMapBuffer1);
shortname="TSF ("+DoubleToStr(TSFper,0)+")";
IndicatorShortName(shortname);
SetIndexLabel(0,shortname);
start=true;

//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
int limit;

//----

limit = Bars - counted_bars;

if (start) limit = limit - TSFper;
start=false;
for (int i=limit;i>=0;i--)
{
ExtMapBuffer1 = Lreg(i,i+TSFper-1)+Level*Point;
}//for
return(0);

//----
return(0);
}
//+------------------------------------------------------------------+
double Lreg(int st0, int st1)
{ double Sx=0,Sxx=0,Sxy=0,Sy;
double Beta,Alfa,x,y,c,value,rv;
int i,n;

rv = 0.0;
n = st1 - st0 + 1 ; //int n=m_pos-m_pos+1;
Sy =iClose(NULL,0,st0); //double sumy=value;
Sx = 0.0; // double sumx=0.0;
Sxy = 0.0; // double sumxy=0.0;
Sxx = 0.0; // double sumx2=0.0;
for (i=1;i<n;i++) //for(i=1; i<n>=0;i--)
{
ExtMapBuffer1 = Lreg(i,i+TSFper-1)+Level*Point;
}//for
return(0);

//----
return(0);
}
//+------------------------------------------------------------------+
double Lreg(int st0, int st1)
{ double Sx=0,Sxx=0,Sxy=0,Sy;
double Beta,Alfa,x,y,c,value,rv;
int i,n;

rv = 0.0;
n = st1 - st0 + 1 ; //int n=m_pos-m_pos+1;
Sy =iClose(NULL,0,st0); //double sumy=value;
Sx = 0.0; // double sumx=0.0;
Sxy = 0.0; // double sumxy=0.0;
Sxx = 0.0; // double sumx2=0.0;
for (i=1;i<n;i++) //for(i=1; i<n; i++)
{
x = i;
y = iClose(NULL,0,st0+i); //value = Close+i];
Sx = Sx + x; //sumx+ = i;
Sy = Sy + y; //sumy+ = value
Sxx = Sxx + (x* x); //sumx2+ = i*i
Sxy = Sxy + (x* y); //sumxy+ = value*i;
}
c = Sxx*n - Sx * Sx; //c=sumx2*n-sumx*sumx;
if (c==0.0) return; //if(c==0.0) return;
Beta = (n*Sxy-Sx*Sy)/c; //b=(sumxy*n-sumx*sumy)/c;
Alfa = (Sy-Beta*Sx)/n; //a=(sumy-sumx*b)/n;
rv = Alfa;
return(rv);
}
 
и на основе алгоритма ещё один:

//+------------------------------------------------------------------+
//| TSCD.mq4 |
//| Copyright © 2007 Mulyadi |
//| Time Series Convergen Divergen |
//| indi ini menunjukkan Conv.Div. dari 2 TSF |
//| Enter price , diatur oleh BarS & BarC |
//| BarS : jumlah total seleksi Bars |
//| BarC : Bar patokan harga |
//| Test aja supaya mengerti |
//| Test it, you'll love it
//+------------------------------------------------------------------+
#property copyright "Copyright © 2007 Mulyadi Santoso"
#property link "musanto@yahoo.com"
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_width1 4
#property indicator_color2 DodgerBlue
#property indicator_width2 2

#define MaxMarkHL 50

//---- input parameters
extern int TSFfast = 20;
extern int TSFslow = 220;
extern int TSFma1 = 5;
extern int maxbar = 300;
extern bool MarkEnable = true;
extern int BarS = 4;
extern int BarC = 50;

//---- buffers
double CdBuffer[];
double MaBuffer[];


//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
bool awal,FlagMaxMarkHL;
double sigma;
double MarkHL;
datetime lastHi,lastLo;

int init()
{
//---- indicators
SetIndexStyle(0,DRAW_HISTOGRAM);
SetIndexBuffer(0,CdBuffer);
SetIndexStyle(1,DRAW_LINE);
SetIndexBuffer(1,MaBuffer);
IndicatorShortName("TSCD");
SetIndexLabel(0,"TSCD");
SetIndexLabel(1,"MA");
awal=true;FlagMaxMarkHL=false;
MarkHL = 0;lastLo=0;lastHi=0;
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{ string st;
//----
if (FlagMaxMarkHL) MarkHL=MaxMarkHL;
for (int i=MarkHL;i>=0;i--)
{
st = "Mark"+StringTrimRight(DoubleToStr(i,0));
ObjectDelete(st);
}
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
int limit,i;

//----


if (awal)
{
limit = maxbar ;
} else
limit = Bars - counted_bars;

for (i=limit;i>=0;i--)
{
CdBuffer = Lreg(i,i+TSFfast-1)-Lreg(i,i+TSFslow-1);
if (awal && limit-i <TSFma1>0.0
&& MarkEnable
&& MaBuffer>CdBuffer
&& MaBuffer<CdBuffer> High
&& Time > lastHi+60*60
)
{
MarkHi(i);
lastHi = Time;
}
if ( CdBuffer<0.0 && MaBuffer<CdBuffer>=CdBuffer
&& Low<Low>lastLo+60*60
)
{
MarkLo(i);
lastLo = Time;
}
}
}
awal=false;

//----
return(0);
}
//+------------------------------------------------------------------+
double Lreg(int st0, int st1)
{ double Sx=0,Sxx=0,Sxy=0,Sy;
double Beta,Alfa,x,y,c,rv;
int i,n;

rv = 0.0;
n = st1 - st0 + 1 ; //int n=m_pos-m_pos+1;
Sy = (iOpen(NULL,0,st0)+iHigh(NULL,0,st0)+iLow(NULL,0,st0)+
iClose(NULL,0,st0))/4; //double sumy=value;
//Sy = iClose(NULL,0,st0); //double sumy=value;

Sx = 0.0; // double sumx=0.0;
Sxy = 0.0; // double sumxy=0.0;
Sxx = 0.0; // double sumx2=0.0;
for (i=1;i<n;i++) //for(i=1; i<n>50) {MarkHL=0;FlagMaxMarkHL=true;}
ObjectCreate(st,OBJ_ARROW,0,0,0);
ObjectSet(st,OBJPROP_TIME1,Time);
ObjectSet(st,OBJPROP_PRICE1,Low);
ObjectSet(st,OBJPROP_ARROWCODE,241);
ObjectSet(st,OBJPROP_COLOR,Red);
ObjectCreate("comment_label",OBJ_LABEL,0,0,0);
ObjectSet("comment_label",OBJPROP_XDISTANCE,5);
ObjectSet("comment_label",OBJPROP_YDISTANCE,50);
ObjectSetText("comment_label","BULL ",8,"Arial",Lime);
if (i == 0)
{
Alert("TSCD buy: ",Symbol()," ",Period(),"");
}
}

void MarkHi(int i)

{ string st;
st = "Mark"+StringTrimRight(DoubleToStr(MarkHL,0));MarkHL++;
if (MarkHL>50) {MarkHL=0;FlagMaxMarkHL=true;}
ObjectCreate(st,OBJ_ARROW,0,0,0);
ObjectSet(st,OBJPROP_TIME1,Time);
ObjectSet(st,OBJPROP_PRICE1,High+8*Point);
ObjectSet(st,OBJPROP_ARROWCODE,242);
ObjectSet(st,OBJPROP_COLOR,Red);
ObjectCreate("comment_label",OBJ_LABEL,0,0,0);
ObjectSet("comment_label",OBJPROP_XDISTANCE,5);
ObjectSet("comment_label",OBJPROP_YDISTANCE,50);
ObjectSetText("comment_label","BEAR ",8,"Arial",Red);
if (i == 0)
{
Alert("TSCD sell: ",Symbol()," ",Period(),"");
}
}
 
Меня очень интересует данная тема, если кого ещё, могу выложить эксперта, и поделиться настройками.
Кстати настройки индюка TSCD для евры М5!
Удачи!
 
DmFX выкладывай всё!
Посмотрим что из него можно выжать!
Страницы: 1
Ответить
Читают тему (гостей: 1)

Вход