Список форумов AmiSite.ru AmiSite.ru
Форум по Ами
 FAQ  •  Поиск  •  Пользователи  •  Группы   •  Регистрация  •  Профиль  •  Войти и проверить личные сообщения  •  Вход
 Digital MACD Следующая тема
Предыдущая тема
Начать новую тему  Ответить на тему
Автор Сообщение
X-Story



Зарегистрирован: 29.01.2008
Сообщения: 158

СообщениеДобавлено: Пн Июл 01, 2013 3:53 pm Ответить с цитатой Вернуться к началу

Есть такой индикатор Digital MACD, одна из модификаций обычного MACD. но как я понимаю, в нем использована сстема фильтрации шума, что в итоге дает более чистые сигналы. Имеется исходник этого индикатора в МТ4.

Надо перевести его без искажений и потерь в Ами. КОд в МТ4 прилагаю ниже. Заранее Спасибо! Smile

Код:

//+------------------------------------------------------------------+
//|                                                 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

СообщениеДобавлено: Сб Июл 20, 2013 4:42 pm Ответить с цитатой Вернуться к началу

Можно написать примерно так, но коэффициенты генератором формируются для каждой конкретной ситуации.
_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,-Cool
+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,-1Cool
+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,-2Cool
+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,-3Cool
-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,-4Cool
-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,-5Cool
+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,-6Cool
+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,-7Cool
+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,-8Cool
-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,-9Cool
-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();
Посмотреть профиль Отправить личное сообщение
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



Следующая тема
Предыдущая тема
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете вкладывать файлы
Вы не можете скачивать файлы


Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme :: Часовой пояс: GMT + 3

File Attachment © by Meik Sievertsen