Автор |
Сообщение |
X-Story
Зарегистрирован: 29.01.2008
Сообщения: 158
|
Есть такой индикатор Digital MACD, одна из модификаций обычного MACD. но как я понимаю, в нем использована сстема фильтрации шума, что в итоге дает более чистые сигналы. Имеется исходник этого индикатора в МТ4.
Надо перевести его без искажений и потерь в Ами. КОд в МТ4 прилагаю ниже. Заранее Спасибо!
Код: |
//+------------------------------------------------------------------+
//| Digital MACD.mq4 |
//| Digital MACD rewritten by CrazyChart |
//| |
//+------------------------------------------------------------------+
#property copyright "Digital MACD rewritten by CrazyChart"
#property link " "
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 YellowGreen
#property indicator_color2 White
//---- input parameters
extern int CountBars=300;
extern int SignalMAPeriod=5;
//---- buffers
double ExtGraph[];
double ExtSignal[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
SetIndexStyle(0,DRAW_HISTOGRAM);
SetIndexBuffer(0,ExtGraph);
SetIndexStyle(1,DRAW_LINE);
SetIndexBuffer(1,ExtSignal);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//---- TODO: add your code here
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
//---- TODO: add your code here
int shift,cnt,loop,AccountedBars;
double value1,value2,AVG;
bool firstTime=true;
if (firstTime) {
AccountedBars = Bars-CountBars;
loop = CountBars-SignalMAPeriod-1;
firstTime=false;
};
for (shift=Bars-2;shift>=0;shift--) {
value1 =
0.2149840610*Close[shift+0]
+0.2065763732*Close[shift+1]
+0.1903728890*Close[shift+2]
+0.1675422436*Close[shift+3]
+0.1397053150*Close[shift+4]
+0.1087951881*Close[shift+5]
+0.0768869405*Close[shift+6]
+0.0460244906*Close[shift+7]
+0.0180517395*Close[shift+8]
-0.0055294579*Close[shift+9]
-0.0236660212*Close[shift+10]
-0.0358140055*Close[shift+11]
-0.0419497760*Close[shift+12]
-0.0425331450*Close[shift+13]
-0.0384279507*Close[shift+14]
-0.0307917433*Close[shift+15]
-0.0209443384*Close[shift+16]
-0.0102335925*Close[shift+17]
+0.0000932767*Close[shift+18]
+0.0089950015*Close[shift+19]
+0.0157131144*Close[shift+20]
+0.0198149331*Close[shift+21]
+0.0211989019*Close[shift+22]
+0.0200639819*Close[shift+23]
+0.0168532934*Close[shift+24]
+0.0121825067*Close[shift+25]
+0.0067474241*Close[shift+26]
+0.0012444305*Close[shift+27]
-0.0037087682*Close[shift+28]
-0.0076300416*Close[shift+29]
-0.0102110543*Close[shift+30]
-0.0113306266*Close[shift+31]
-0.0110462105*Close[shift+32]
-0.0095662166*Close[shift+33]
-0.0072080453*Close[shift+34]
-0.0043494435*Close[shift+35]
-0.0013771970*Close[shift+36]
+0.0013575268*Close[shift+37]
+0.0035760416*Close[shift+38]
+0.0050946166*Close[shift+39]
+0.0058339574*Close[shift+40]
+0.0058160431*Close[shift+41]
+0.0051486631*Close[shift+42]
+0.0039984014*Close[shift+43]
+0.0025619380*Close[shift+44]
+0.0010531475*Close[shift+45]
-0.0003481453*Close[shift+46]
-0.0014937154*Close[shift+47]
-0.0022905986*Close[shift+48]
-0.0027000514*Close[shift+49]
-0.0027359080*Close[shift+50]
-0.0024543322*Close[shift+51]
-0.0019409837*Close[shift+52]
-0.0012957482*Close[shift+53]
-0.0006179734*Close[shift+54]
+0.0000057542*Close[shift+55]
+0.0005111297*Close[shift+56]
+0.0008605279*Close[shift+57]
+0.0010441921*Close[shift+58]
+0.0010775684*Close[shift+59]
+0.0009966494*Close[shift+60]
+0.0008537300*Close[shift+61]
+0.0007142855*Close[shift+62]
+0.0006599146*Close[shift+63]
-0.0008151017*Close[shift+64];
value2 =
0.0825641231*Close[shift+0]
+0.0822783080*Close[shift+1]
+0.0814249974*Close[shift+2]
+0.0800166909*Close[shift+3]
+0.0780735197*Close[shift+4]
+0.0756232268*Close[shift+5]
+0.0727009740*Close[shift+6]
+0.0693478349*Close[shift+7]
+0.0656105823*Close[shift+8]
+0.0615409157*Close[shift+9]
+0.0571939540*Close[shift+10]
+0.0526285643*Close[shift+11]
+0.0479025123*Close[shift+12]
+0.0430785482*Close[shift+13]
+0.0382152880*Close[shift+14]
+0.0333706133*Close[shift+15]
+0.0286021160*Close[shift+16]
+0.0239614376*Close[shift+17]
+0.0194972056*Close[shift+18]
+0.0152532583*Close[shift+19]
+0.0112682658*Close[shift+20]
+0.0075745482*Close[shift+21]
+0.0041980052*Close[shift+22]
+0.0011588603*Close[shift+23]
-0.0015292889*Close[shift+24]
-0.0038593393*Close[shift+25]
-0.0058303888*Close[shift+26]
-0.0074473108*Close[shift+27]
-0.0087203043*Close[shift+28]
-0.0096645874*Close[shift+29]
-0.0102995666*Close[shift+30]
-0.0106483424*Close[shift+31]
-0.0107374524*Close[shift+32]
-0.0105952115*Close[shift+33]
-0.0102516944*Close[shift+34]
-0.0097377645*Close[shift+35]
-0.0090838346*Close[shift+36]
-0.0083237046*Close[shift+37]
-0.0074804382*Close[shift+38]
-0.0065902734*Close[shift+39]
-0.0056742995*Close[shift+40]
-0.0047554314*Close[shift+41]
-0.0038574209*Close[shift+42]
-0.0029983549*Close[shift+43]
-0.0021924972*Close[shift+44]
-0.0014513858*Close[shift+45]
-0.0007848072*Close[shift+46]
-0.0001995891*Close[shift+47]
+0.0003009728*Close[shift+48]
+0.0007162164*Close[shift+49]
+0.0010478905*Close[shift+50]
+0.0012994016*Close[shift+51]
+0.0014755433*Close[shift+52]
+0.0015824007*Close[shift+53]
+0.0016272598*Close[shift+54]
+0.0016185271*Close[shift+55]
+0.0015648336*Close[shift+56]
+0.0014747659*Close[shift+57]
+0.0013569946*Close[shift+58]
+0.0012193896*Close[shift+59]
+0.0010695971*Close[shift+60]
+0.0009140878*Close[shift+61]
+0.0007591540*Close[shift+62]
+0.0016019033*Close[shift+63];
ExtGraph[shift]=value1-value2;
if (shift>0) AccountedBars=AccountedBars+1;
};
for (shift=loop;shift>=0;shift--) {
AVG = 0;
for (cnt=0;cnt<=SignalMAPeriod-1;cnt++) {
AVG = AVG + ExtGraph[shift+cnt];
};
ExtSignal[shift]=AVG/SignalMAPeriod;
if (shift>0) loop = loop-1;
};
//----
return(0);
}
//+------------------------------------------------------------------+
|
|
|
|
Посмотреть профиль Отправить личное сообщение |
|
Tinych
Зарегистрирован: 08.02.2012
Сообщения: 41
|
Можно написать примерно так, но коэффициенты генератором формируются для каждой конкретной ситуации.
_SECTION_BEGIN("sysS1");
sysS1= -0.15050869*Ref(C,-0)
-0.13404583*Ref(C,-1)
-0.11534917*Ref(C,-2)
-0.09470778*Ref(C,-3)
-0.07244922*Ref(C,-4)
-0.04892523*Ref(C,-5)
-0.02451389*Ref(C,-6)
+0.00039374*Ref(C,-7)
+0.02539355*Ref(C,-
+0.05008105*Ref(C,-9)
+0.07405359*Ref(C,-10)
+0.09691993*Ref(C,-11)
+0.11830594*Ref(C,-12)
+0.13786058*Ref(C,-13)
+0.15526309*Ref(C,-14)
+0.17022652*Ref(C,-15)
+0.18250496*Ref(C,-16)
+0.19189536*Ref(C,-17)
+0.19824332*Ref(C,-1
+0.20144353*Ref(C,-19);
_SECTION_END();
_SECTION_BEGIN("sysS2");
sysS2= 0.20144353*Ref(C,-20)
+0.19824332*Ref(C,-21)
+0.19189536*Ref(C,-22)
+0.18250496*Ref(C,-23)
+0.17022652*Ref(C,-24)
+0.15526309*Ref(C,-25)
+0.13786058*Ref(C,-26)
+0.11830594*Ref(C,-27)
+0.09691993*Ref(C,-2
+0.07405359*Ref(C,-29)
+0.05008105*Ref(C,-30)
+0.02539355*Ref(C,-31)
+0.00039374*Ref(C,-32)
-0.02451389*Ref(C,-33)
-0.04892523*Ref(C,-34)
-0.07244922*Ref(C,-35)
-0.09470778*Ref(C,-36)
-0.11534917*Ref(C,-37)
-0.13404583*Ref(C,-3
-0.15050869*Ref(C,-39);
_SECTION_END();
_SECTION_BEGIN("sysS3");
sysS3= -0.16448245*Ref(C,-40)
-0.17575894*Ref(C,-41)
-0.18417147*Ref(C,-42)
-0.18960536*Ref(C,-43)
-0.19199287*Ref(C,-44)
-0.19131919*Ref(C,-45)
-0.18761799*Ref(C,-46)
-0.18097499*Ref(C,-47)
-0.17152134*Ref(C,-4
-0.15943522*Ref(C,-49)
-0.14493519*Ref(C,-50)
-0.12827913*Ref(C,-51)
-0.10975611*Ref(C,-52)
-0.08968572*Ref(C,-53)
-0.06840650*Ref(C,-54)
-0.04627800*Ref(C,-55)
-0.02366420*Ref(C,-56)
-0.00093912*Ref(C,-57)
+0.02153143*Ref(C,-5
+0.04338391*Ref(C,-59);
_SECTION_END();
_SECTION_BEGIN("sysS4");
sysS4=0.06427635*Ref(C,-60)
+0.08387882*Ref(C,-61)
+0.10189513*Ref(C,-62)
+0.11805096*Ref(C,-63)
+0.13211415*Ref(C,-64)
+0.14388292*Ref(C,-65)
+0.15320218*Ref(C,-66)
+0.15995451*Ref(C,-67)
+0.16407161*Ref(C,-6
+0.16552408*Ref(C,-69)
+0.16433274*Ref(C,-70)
+0.16055685*Ref(C,-71)
+0.15430128*Ref(C,-72)
+0.14570654*Ref(C,-73)
+0.13495348*Ref(C,-74)
+0.12225132*Ref(C,-75)
+0.10784314*Ref(C,-76)
+0.09198898*Ref(C,-77)
+0.07497671*Ref(C,-7
+0.05709927*Ref(C,-79);
_SECTION_END();
_SECTION_BEGIN("sysS5");
sysS5= 0.03866674*Ref(C,-80)
+0.01998444*Ref(C,-81)
+0.00136549*Ref(C,-82)
-0.01689524*Ref(C,-83)
-0.03450301*Ref(C,-84)
-0.05119171*Ref(C,-85)
-0.06670401*Ref(C,-86)
-0.08081857*Ref(C,-87)
-0.09333262*Ref(C,-8
-0.10408173*Ref(C,-89)
-0.11292713*Ref(C,-90)
-0.11977330*Ref(C,-91)
-0.12455105*Ref(C,-92)
-0.12723476*Ref(C,-93)
-0.12782805*Ref(C,-94)
-0.12637459*Ref(C,-95)
-0.12294599*Ref(C,-96)
-0.11765005*Ref(C,-97)
-0.11061707*Ref(C,-9
-0.10201156*Ref(C,-99);
_SECTION_END();
_SECTION_BEGIN("sysS6");
sysS6= -0.09200865*Ref(C,-100)
-0.08081403*Ref(C,-101)
-0.06863761*Ref(C,-102)
-0.05571008*Ref(C,-103)
-0.04225693*Ref(C,-104)
-0.02851992*Ref(C,-105)
-0.01472380*Ref(C,-106)
-0.00110374*Ref(C,-107)
+0.01213129*Ref(C,-108)
+0.02476875*Ref(C,-109)
+0.03662500*Ref(C,-110)
+0.04752577*Ref(C,-111)
+0.05732696*Ref(C,-112)
+0.06589656*Ref(C,-113)
+0.07313918*Ref(C,-114)
+0.07897438*Ref(C,-115)
+0.08335575*Ref(C,-116)
+0.08625645*Ref(C,-117)
+0.08768078*Ref(C,-118)
+0.08765422*Ref(C,-119);
_SECTION_END();
_SECTION_BEGIN("sysS7");
sysS7= 0.08623024*Ref(C,-120)
+0.08347516*Ref(C,-121)
+0.07948911*Ref(C,-122)
+0.07437478*Ref(C,-123)
+0.06826280*Ref(C,-124)
+0.06128514*Ref(C,-125)
+0.05359688*Ref(C,-126)
+0.04534333*Ref(C,-127)
+0.03669195*Ref(C,-128)
+0.02779034*Ref(C,-129)
+0.01880831*Ref(C,-130)
+0.00988756*Ref(C,-131)
+0.00118096*Ref(C,-132)
-0.00717909*Ref(C,-133)
-0.01506238*Ref(C,-134)
-0.02236479*Ref(C,-135)
-0.02898171*Ref(C,-136)
-0.03483678*Ref(C,-137)
-0.03986066*Ref(C,-138)
-0.04400801*Ref(C,-139)
;
_SECTION_END();
_SECTION_BEGIN("sysS8");
sysS8= 0.08623024*Ref(C,-120)
+0.08347516*Ref(C,-121)
+0.07948911*Ref(C,-122)
+0.07437478*Ref(C,-123)
+0.06826280*Ref(C,-124)
+0.06128514*Ref(C,-125)
+0.05359688*Ref(C,-126)
+0.04534333*Ref(C,-127)
+0.03669195*Ref(C,-128)
+0.02779034*Ref(C,-129)
+0.01880831*Ref(C,-130)
+0.00988756*Ref(C,-131)
+0.00118096*Ref(C,-132)
-0.00717909*Ref(C,-133)
-0.01506238*Ref(C,-134)
-0.02236479*Ref(C,-135)
-0.02898171*Ref(C,-136)
-0.03483678*Ref(C,-137)
-0.03986066*Ref(C,-138)
-0.04400801*Ref(C,-139);
_SECTION_END();
_SECTION_BEGIN("sysS9");
sysS9= -0.04724773*Ref(C,-140)
-0.04956379*Ref(C,-141)
-0.05095954*Ref(C,-142)
-0.05145905*Ref(C,-143)
-0.05108515*Ref(C,-144)
-0.04989315*Ref(C,-145)
-0.04793625*Ref(C,-146)
-0.04529017*Ref(C,-147)
-0.04202520*Ref(C,-148)
-0.03823698*Ref(C,-149)
-0.03400411*Ref(C,-150)
-0.02943667*Ref(C,-151)
-0.02460808*Ref(C,-152)
-0.01963297*Ref(C,-153)
-0.01459456*Ref(C,-154)
-0.00958527*Ref(C,-155)
-0.00468438*Ref(C,-156)
+0.00002187*Ref(C,-157)
+0.00447252*Ref(C,-158)
+0.00859977*Ref(C,-159);
_SECTION_END();
_SECTION_BEGIN("sysS10");
sysS10= 0.01235393*Ref(C,-160)
+0.01568935*Ref(C,-161)
+0.01856449*Ref(C,-162)
+0.02097453*Ref(C,-163)
+0.02289095*Ref(C,-164)
+0.02430927*Ref(C,-165)
+0.02524780*Ref(C,-166)
+0.02570790*Ref(C,-167)
+0.02571613*Ref(C,-168)
+0.02529740*Ref(C,-169)
+0.02449841*Ref(C,-170)
+0.02334893*Ref(C,-171)
+0.02190786*Ref(C,-172)
+0.02018282*Ref(C,-173)
+0.01828401*Ref(C,-174)
+0.01620024*Ref(C,-175)
+0.01400885*Ref(C,-176)
+0.01176192*Ref(C,-177)
+0.00950431*Ref(C,-178)
+0.00726288*Ref(C,-179);
_SECTION_END();
_SECTION_BEGIN("sysS11");
sysS11= 0.00508620*Ref(C,-180)
+0.00300876*Ref(C,-181)
+0.00107225*Ref(C,-182)
-0.00068438*Ref(C,-183)
-0.00232501*Ref(C,-184)
-0.00364395*Ref(C,-185)
-0.00484010*Ref(C,-186)
-0.00583488*Ref(C,-187)
-0.00658474*Ref(C,-188)
-0.00710778*Ref(C,-189)
-0.00742092*Ref(C,-190)
-0.00755284*Ref(C,-191)
-0.00750952*Ref(C,-192)
-0.00730913*Ref(C,-193)
-0.00695474*Ref(C,-194)
-0.04134525*Ref(C,-195);
_SECTION_END();
_SECTION_BEGIN("SATL2");
DMACD = (sysS1+ sysS2+ sysS3+sysS4+ sysS5+ sysS6+ sysS7+ sysS8+ sysS9+ sysS10+ sysS11);
Plot(DMACD," DMACD ",colorBlue, styleThick);
_SECTION_END(); |
|
|
Посмотреть профиль Отправить личное сообщение |
|
|
|
Следующая тема
Предыдущая тема
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы не можете скачивать файлы
|
|