Duizend excuses als dit elders is afgehandeld. Ik wil een versie van MACD op de prijsgrafiek uitzetten. Ik heb geprobeerd hiervoor een nieuw interieur te maken. Het resultaat wordt niet weergegeven, hoewel het op de grafiek tussen de cijfers staat vermeld. Ik erken dat een of ander amendement het zal oplossen. Help alstublieft om het te wijzigen als u kunt.
Hier is de code:
// ------------------------------------------------------------ -------------------
//| MACDChart.mq4 |
//| Copyright 2014, MetaQuotes Software Corp. |
//|
http://www.mql5.com|
// ------------------------------------------------------------ -------------------
#property copyright Copyright 2014, MetaQuotes Software Corp.
#property-link http://www.mql5.com
#property versie 1.00
#eigendom streng
#property indior_chart_window
// ------------------------------------------------------------ -------------------
#propertyindior_buffers 3
#propertyindior_color1 Blauw
#propertyindior_color2 Rood
#propertyindior_color3 Groen
//---- invoerparameters
extern int FastMAPeriod=12;
extern int SlowMAPeriod=26;
extern int SignalMAPeriod=9;
//---- buffers
dubbele MACDLineBuffer[];
dubbele SignaalLijnBuffer[];
dubbele histogrambuffer[];
//---- variabelen
dubbele alfa = 0;
dubbele alpha_1 = 0;
// ------------------------------------------------------------ -------------------
//| Aangepaste interne initialisatiefunctie |
// ------------------------------------------------------------ -------------------
int begin()
{
IndiorDigits(MarketInfo(Symbol(),MODE_DIGITS) 1);
//---- binnenshuis
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,MACDLineBuffer);
SetIndexDrawBegin(0,SlowMAPeriod);
SetIndexStyle(1,DRAW_LINE,STYLE_DOT);
SetIndexBuffer(1,SignaallijnBuffer);
SetIndexDrawBegin(1,SlowMAPeriod SignalMAPeriod);
SetIndexStyle(2,DRAW_HISTOGRAM);
SetIndexBuffer(2,HistogramBuffer);
SetIndexDrawBegin(2,SlowMAPeriod SignalMAPeriod);
//---- naam voor DataWindow en indior subwindow label
IndiorShortName(MACD( FastMAPeriod , SlowMAPeriod , SignalMAPeriod ));
SetIndexLabel(0,MACD);
SetIndexLabel(1,Signaal);
//----
alfa = 2,0(SignalMAPeriod 1,0);
alfa_1 = 1,0 - alfa;
//----
terug(0);
}
// ------------------------------------------------------------ -------------------
//| Aangepaste interne deinitialisatiefunctie |
// ------------------------------------------------------------ -------------------
int deinit()
{
//----
//----
terug(0);
}
// ------------------------------------------------------------ -------------------
//| Aangepaste interne iteratiefunctie |
// ------------------------------------------------------------ -------------------
int begin()
{
int limiet;
int counted_bars = IndiorCounted();
//---- controleer op mogelijke fouten
if (counted_barslt;0) return(-1);
//---- laatst getelde balk wordt opnieuw geteld
if (counted_barsgt;0) counted_bars--;
limiet = Bars - counted_bars;
for(int i=limiet; igt;=0; i--)
{
MACDLineBuffer[i] = iMA(NULL,0,FastMAPeriod,0,MODE_EMA,PRICE_CLOSE,i) - iMA(NULL,0,SlowMAPeriod,0,MODE_EMA,PRICE_CLOSE,i);
SignalLineBuffer[i] = alpha*MACDLineBuffer[i] alpha_1*SignalLineBuffer[i 1];
HistogramBuffer[i] = MACDLineBuffer[i] - SignalLineBuffer[i];
}
//----
terug(0);
}
// ------------------------------------------------------------ -------------------