PDA

View Full Version : Dinapoli Stochastic


delta88
09-25-2007, 10:14 PM
I programmed my first indicator, the "Dinapoli Stochastic". Nothing really fancy about it, but it is a stochastic based on an EMA instead of a SMA. I found this indicator on the GFT-Dealbook platform. And here it is.
I also implemented a color-background with opacity ("alpha" parameter) which looks better and which can be changed in the indicator properties (in the "General" section).
One parameter specifies behavior of the color background (called "extremes" in the "General" section of the properties).
For example: If the K-line crosses the D-line from below anywhere on the indicator pane, the background changes to green (and to red vice versa). If you switch the parameter "extremes" in the properties to "true", the behavior changes. Extreme zones (over 80, below 20) are respected now. That means the same cross wouldn`t change the background color to green, if the D-line is still below the 20 zone ("overbought"). Instead it "waits" until the D-line crosses above 20 (and vice versa for 80) . See my pics for explanation.
I have a problem with my indicator export. So I compiled an archive on my own, which imports well on my platform, so this shouldn't be a problem. But you never know.
Please comment, if anyone has a problem with it.

buderim
09-25-2007, 10:41 PM
I programmed my first indicator, the "Dinapoli Stochastic". Nothing really fancy about it, but it is a stochastic based on an EMA instead of a SMA. I found this indicator on the GFT-Dealbook platform. And here it is.
I also implemented a color-background with opacity ("alpha" parameter) which looks better and which can be changed in the indicator properties (in the "General" section).
One parameter specifies behavior of the color background (called "extremes" in the "General" section of the properties).
For example: If the K-line crosses the D-line from below anywhere on the indicator pane, the background changes to green (and to red vice versa). If you switch the parameter "extremes" in the properties to "true", the behavior changes. Extreme zones (over 80, below 20) are respected now. That means the same cross wouldn`t change the background color to green, if the D-line is still below the 20 zone ("overbought"). Instead it "waits" until the D-line crosses above 20 (and vice versa for 80) . See my pics for explanation.
I have a problem with my indicator export. So I compiled an archive on my own, which imports well on my platform, so this shouldn't be a problem. But you never know.
Please comment, if anyone has a problem with it.

Hi Delta,

Thanks for the indicator ,it looks really good.

I am having a problem getting it to work on timeframes lower than 30 min charts.

EDIT, I have NT6 running on 2 machines ,I can see the indicator on lower timeframes on FX my charts from Gain. But for some reason I cant get it to display on charts under M30 on my other machine that is connected to IB,
a bit odd really .

Thanks
Ian

delta88
09-26-2007, 12:52 AM
I'm sorry to hear that. What does your log say when you put the indicator on the chart? Does it say something funny?

I don't have an IB account, so I cannot reproduce the error.

buderim
09-26-2007, 01:27 AM
I'm sorry to hear that. What does your log say when you put the indicator on the chart? Does it say something funny?

I don't have an IB account, so I cannot reproduce the error.

Hi Delta,

I dont get any error message in the log, I will have a play about to try and see why.

It looks good on the M30 .

Thanks
Ian

prostyle
09-26-2007, 10:45 AM
Hello,

I see the smoothness of the lines in your chart example,
do you mind sharing your settings?

I tried to get the same smoothness and it always comes
out very choppy compared to your example???

thanks in advance

Colin

delta88
09-26-2007, 11:16 AM
Thanks for your compliments.
I used the default values for Period(14), LineK_Period(6), LineD_Period(6), Price(close).

Maybe your timeframe is too fast (below 30min), that means you may want to extend the Period to maybe 25 or even 30. Also you may need to adjust the smoothing period of the D and K line from 6 to maybe 10 or 12. This should result in less "choppiness".

Or could this be another bug? I don't know.

Delta88

PrTester
09-28-2007, 01:16 PM
Hi Delta,

I dont get any error message in the log, I will have a play about to try and see why.

It looks good on the M30 .

Thanks
Ian

Do you Try

if (CurrentBar < period)
return;

mrlucky1x
09-28-2007, 11:07 PM
I dont' think this is zipped corrected because the zip file only contains @EMA.cs
@MAX.cs
@MIN.cs
and no dinStoch file.

Hank777
02-03-2008, 08:21 AM
I was hoping somebody could help me.
I like the Dinapoli Stochastics but when I use
it in a strategy it always defaults to the
original inputs of (6,6,14) no matter where in the
strategy I try to change them.

Any suggestions?

Thanks

Hank777

NinjaTrader_Josh
02-03-2008, 10:52 AM
When you are adding the strategy you should be able to change the settings.

Hank777
02-03-2008, 11:52 AM
I have change the variables once the strategy has been applied
and from inside the strategy itself. It gives me the same result.
It will only use the indicators default values(6,6,14). It also takes a
long time to load if inputs are changed... up to 20 seconds ...strange..
It is just a simple cross over strat made with the Strat. Wizard.

Maybe there is something wrong with the indicator.?

Pete S
02-03-2008, 03:28 PM
Yep, I took a look at the code and it is setting those values in the Initialize section. If you delete these 3 lines:

Period = 14;
LineK_Period = 6;
LineD_Period = 6;

it should work for you.

winJR
02-03-2008, 04:00 PM
Hello, i cant get it to plot. the log has error message that says
'Error on plotting indicator 'DinapoliStochastic'. Please check the 'Plot' method:Overflow error. can anyone help? would love to get this to work and check it out.

ct
02-03-2008, 11:52 PM
It works on a 1,000 and 5,000 volume chart but doesn't work on a 300 or 100 (very small). It doesn't work on a 1 minute ES chart either.

I did get to work on a 400 volume chart.

Regards

Cliff

Hank777
02-04-2008, 09:01 AM
Pete_S.

Thank you for the help. It seems to be working fine now.

Hank

boboinuk
02-13-2008, 04:35 PM
Hi,
Does any one have the Dinapoli indicators developed from the correct formulas in his book? If any one is interested in developing these, please get in touch. So long you are ready to code it, I can explain it.
Cheers.

Virge666
02-13-2008, 05:25 PM
They are already on the site... do a search and you can get them.

The MACD is the only problem as it only takes period INTEGERS and not decimals...

thrunner
02-13-2008, 08:12 PM
They are already on the site... do a search and you can get them.The MACD is the only problem as it only takes period INTEGERS and not decimals...I see you have a DinoDetrend but I don't seem to be able to find it with the search and I imagined others couldn't either, so here is another version:


protectedoverridevoid OnBarUpdate()
{
// input: nLength(7); Sample TS EL code
// var: Detrend(0);
//
// Detrend = Close - Average(Close, nLength);
// plot1(Detrend, "Detrend");
Value.Set(CurrentBar < Period ? Input[0] :Input[0] - SMA (Input , Period)[0] );
}

Regarding MACD decimal periods, you could also calculate Dinapoli DEMA smoothed MACD this way, something easier to visualize and bypassing the decimal periodicity:
{DiNapoli DEMA Smoothed MACD} in MS code
Dinap:= Dema(close,8) - Dema(close,17);
Signal:= Dema(Dinap,9);
Dinap;Signal; {end}

boboinuk
02-14-2008, 01:55 AM
Hi all,
Thanks for your very kind posts. I have looked at the code for the stochastic on this thread......it has the wrong formula. Dinapoli stochastic does not use EMA. I not only have Dinapoli's book, I have spoken to him and he actually gave me his own CQG file of indicators (I will never devulge anything that is not already public). I know next to nothing about coding but can explain most aspect of Dinapoli method. I now wish to use ninjatrader hence the need for correct dinapoli indicators on Ninjatrader.

The detrend posted by "Thrunner" is correct but I would have liked the period to be open rather than tied to 7. This way, one would be able to experiment.

The code provided for DEMA MACD is confusing to me: what do I do with it? Cut and past in the formula part of a new DEMA indicator? Please some one help!

May I ask someone to tell me where to find the various types of Averages that can be used in Ninjatrader codes? For example, EMA, SMA....etc.

One other thing: what woud happen if one copied the current MACD and changed all the interger word to decimal word...would it then accept decimal periods?

Once again thanks all for sparing your time to post.

Virge666
02-14-2008, 05:33 AM
There are two parts in the formula - just change EMA to SMA and you will be OK.

I am also a bit lost on the MACD . . !!!

Thrunner . . .Help !

thrunner
02-14-2008, 08:05 AM
As Virge has pointed out, you can reuse as much code as possible. For example, TEMA can be mod to DEMA with the following changes and attached please find DEMA.zip.

protectedoverridevoid OnBarUpdate()
{
ema1.Set(EMA(Input, Period)[0]);
ema2.Set(EMA(ema1, Period)[0]);
//ema3.Set(EMA(ema2, Period)[0]);
//Value.Set(3 * ema1[0] - 3 * ema2[0] + ema3[0]);
Value.Set(2 * ema1[0] - ema2[0]);
}

You should now be able to mod MACD to do DEMA smoothed MACD.

Bobo, you can also change the period in the DinapoliDetrend indicator (from 7 to other integer).

boboinuk
02-15-2008, 03:47 AM
Hi all,
This post has been shared into two because it is too long for one post.


May be this will help: Dinapoli stochastic does not use EMA or SMA. It uses Modified Moving average which is calculated from this formula:
http://www.aspenres.com/Documents/help/userguide/help/images/aspen00000329.gif
Where:
n = number of bars
MAt = current moving average value
MAt-1 = previous moving average value
Pt = current price
For any one trying to code this, please be reminder that the first point is as good as a mere SMA while every other point is modified.

On the other hand, I have downloaded Thrunner's DEMA and can add it to a chart but I cannot see it via the editor. I had wanted to see the code to know if it is mathematically correct. I say so because it still does not accept decimal imputs which the DEMA ought to do.
Below, I have added the correct metatrader codes for both the DEMA and stochastic so anyone who can understand they can get the idea of what is needed.
Here is the correct DEMA code from metatrader:
//---- indicator settings
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Silver
#property indicator_color2 Red
//---- indicator parameters
extern double FastEMA=8.3896;
extern double SlowEMA=17.5185;
extern double SignalEMA=9.0503;
//---- indicator buffers
double Macd_buffer[];
double Sign_buffer[];
double Fast_buffer[];
double Slow_buffer[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- drawing settings
IndicatorBuffers(4);
SetIndexBuffer(0,Macd_buffer);
SetIndexBuffer(1,Sign_buffer);
SetIndexBuffer(2,Fast_buffer);
SetIndexBuffer(3,Slow_buffer);
SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,1);
//SetIndexDrawBegin(0,Bars-1);
//SetIndexDrawBegin(1,Bars-1);
//IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS));
//---- indicator buffers mapping
if(!SetIndexBuffer(0,Macd_buffer) && !SetIndexBuffer(1,Sign_buffer))
Print("cannot set indicator buffers!");
//---- name for DataWindow and indicator subwindow label
IndicatorShortName("MACD(DEMA)DiNapoli("+FastEMA+","+SlowEMA+","+SignalEMA+")");
SetIndexLabel(0,"MACD(DEMA)");
SetIndexLabel(1,"Signal");
//---- initialization done
return(0);
}
//+------------------------------------------------------------------+
//| MACD (DEMA) DiNapoli |
//+------------------------------------------------------------------+
int start()
{


for(int i=Bars; i>=0; i--)
{
Fast_buffer[i]=0.0;
Slow_buffer[i]=0.0;
Macd_buffer[i]=0.0;
Sign_buffer[i]=0.0;
if (i==Bars) {Fast_buffer[i]=Close[i];Slow_buffer[i]=Close[i];}
}
//---- macd counted in the 1-st buffer
for( i=Bars-1; i>=0; i--)
{
Fast_buffer[i]=Fast_buffer[i+1]+2.0/(1.0+FastEMA)*(Close[i]-Fast_buffer[i+1]);
Slow_buffer[i]=Slow_buffer[i+1]+2.0/(1.0+SlowEMA)*(Close[i]-Slow_buffer[i+1]);
Macd_buffer[i]=Fast_buffer[i]-Slow_buffer[i];
}
//---- signal line counted in the 2-nd buffer
for(i=Bars-1; i>=0; i--)
Sign_buffer[i]=Sign_buffer[i+1]+2.0/(1.0+SignalEMA)*(Macd_buffer[i]-Sign_buffer[i+1]);
//---- done
return(0);
}

The stochastic in metatrader code is:
//+------------------------------------------------------------------+
//| StochasticDiNapoli.mq4 |
//| Copyright © 2006, TrendLaboratory Ltd. |
//| http://finance.groups.yahoo.com/group/TrendLaboratory |
//| E-mail: igorad2004@list.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2005, TrendLaboratory Ltd."
#property link "http://finance.groups.yahoo.com/group/TrendLaboratory"

#property indicator_separate_window
#property indicator_minimum 0
#property indicator_maximum 100

#property indicator_level1 20
#property indicator_level2 80
#property indicator_level3 50

#property indicator_buffers 2
#property indicator_color1 DodgerBlue
#property indicator_color2 Blue
//---- input parameters
extern int FastK=8;
extern int SlowK=3;
extern int SlowD=3;
//---- buffers
double StoBuffer[];
double SigBuffer[];
//double MdBuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
string short_name;
//---- indicator line
SetIndexStyle(0,DRAW_LINE);
SetIndexStyle(1,DRAW_LINE);

SetIndexBuffer(0,StoBuffer);
SetIndexBuffer(1,SigBuffer);

//---- name for DataWindow and indicator subwindow label
short_name="Stochastic DiNapoli("+FastK+","+SlowK+","+SlowD+")";
IndicatorShortName(short_name);
SetIndexLabel(0,"Stoch");
SetIndexLabel(1,"Signal");
//----
SetIndexDrawBegin(0,FastK);
SetIndexDrawBegin(1,FastK);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Stochastic DiNapoli |
//+------------------------------------------------------------------+
int start()
{
int i,counted_bars=IndicatorCounted();
double high,low;
//----
if(Bars<=FastK) return(0);
//---- initial zero
if(counted_bars<1)
for(i=1;i<=FastK;i++)
{StoBuffer[Bars-i]=0.0;SigBuffer[Bars-i]=0.0;}
//----
i=Bars-FastK-1;
if(counted_bars>=FastK) i=Bars-counted_bars-1;
while(i>=0)
{
low=Low[Lowest(NULL,0,MODE_LOW,FastK,i)];
high=High[Highest(NULL,0,MODE_HIGH,FastK,i)];
double Fast=(Close[i]-low)/(high-low)*100;
StoBuffer[i]=StoBuffer[i+1]+(Fast-StoBuffer[i+1])/SlowK;
SigBuffer[i]=SigBuffer[i+1]+(StoBuffer[i]-SigBuffer[i+1])/SlowD;
i--;
}
return(0);
}
//+------------------------------------------------------------------+


Here is the metatrader dinapoli detrended oscillator for comparing to Thrunner's Ninjatrader version so as to help understand how to port the codes:
//+------------------------------------------------------------------+
//| DiNapoli Detrend Oscillator.mq4
//| Ramdass - Conversion only
//+------------------------------------------------------------------+

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Blue



extern int x_prd=14;
extern int CountBars=300;
//---- buffers
double dpo[];


//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
string short_name;
//---- indicator line
IndicatorBuffers(1);
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,dpo);
//----
return(0);
}
//+------------------------------------------------------------------+
//| DPO |
//+------------------------------------------------------------------+
int start()
{
if (CountBars>=Bars) CountBars=Bars;
SetIndexDrawBegin(0,Bars-CountBars+x_prd+1);
int i,counted_bars=IndicatorCounted();
double t_prd;
//----
if(Bars<=x_prd) return(0);
//---- initial zero
if(counted_bars<x_prd)
{
for(i=1;i<=x_prd;i++) dpo[CountBars-i]=0.0;
}
//----
i=CountBars-x_prd-1;
t_prd=x_prd/2+1;

while(i>=0)
{
dpo[i]=Close[i]-iMA(NULL,0,7,MODE_SMA,0,PRICE_CLOSE,i);


i--;
}
return(0);
}
//+------------------------------------------------------------------+

boboinuk
02-15-2008, 03:50 AM
THERE IS EVEN THE DINAPOLI FIBO:
//+------------------------------------------------------------------+
#property copyright "Rob"
#property link "http://www.viac.ru/"

#property indicator_chart_window
#property indicator_buffers 0
//---- input parameters

extern double PointA=0;
extern double PointB=0;
extern double PointC=0;
extern double PointF=0;
extern double PointF1_blue=0;
extern double PointF2_pink=0;
extern double PointF3_brown=0;
extern double PointF4_silver=0;

double COP=0,OP=0,XOP=0;
double Start=0,Stop=0,f1g=0,F1R=0,f2g=0,F2R=0,f3g=0,F3R=0 ,f4g=0,F4R=0;

int shift = 0,counted_bars=0;

//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{

return(0);
}
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//---- TODO: add your code here

ObjectDelete("COP Label");
ObjectDelete("COP Line");
ObjectDelete("OP Label");
ObjectDelete("OP Line");
ObjectDelete("XOP Label");
ObjectDelete("XOP Line");

ObjectDelete("Start Label");
ObjectDelete("Start Line");
ObjectDelete("Stop Label");
ObjectDelete("Stop Line");

ObjectDelete("f1g Label");
ObjectDelete("f1g Line");
ObjectDelete("F1R Label");
ObjectDelete("F1R Line");
ObjectDelete("f2g Label");
ObjectDelete("f2g Line");
ObjectDelete("F2R Label");
ObjectDelete("F2R Line");
ObjectDelete("f3g Label");
ObjectDelete("f3g Line");
ObjectDelete("F3R Label");
ObjectDelete("F3R Line");
ObjectDelete("f4g Label");
ObjectDelete("f4g Line");
ObjectDelete("F4R Label");
ObjectDelete("F4R Line");

//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted(),CountBars;
if (CountBars>=Bars) CountBars=Bars;
//SetIndexDrawBegin(0,Bars-CountBars);
//SetIndexDrawBegin(1,Bars-CountBars);
for (shift=1;shift<=0;shift--) {
}

//---- Calculate Lines

COP = (PointB-PointA)*0.618+PointC;
OP = PointB-PointA+PointC;
XOP = (PointB-PointA)*1.618+PointC;

f1g = PointF-(PointF-PointF1_blue)*0.382;
F1R = PointF-(PointF-PointF1_blue)*0.618;
f2g = PointF-(PointF-PointF2_pink)*0.382;
F2R = PointF-(PointF-PointF2_pink)*0.618;
f3g = PointF-(PointF-PointF3_brown)*0.382;
F3R = PointF-(PointF-PointF3_brown)*0.618;
f4g = PointF-(PointF-PointF4_silver)*0.382;
F4R = PointF-(PointF-PointF4_silver)*0.618;

//---- Set line labels on chart window
{

if(ObjectFind("COP Label") != 0)
{
ObjectCreate("COP Label", OBJ_TEXT, 0, Time[40], COP);
ObjectSetText("COP Label", "COP", 11, "Arial", Yellow);
}
else
{
ObjectMove("COP Label", 0, Time[40], COP);
}

if(ObjectFind("OP Label") != 0)
{
ObjectCreate("OP Label", OBJ_TEXT, 0, Time[40], OP);
ObjectSetText("OP Label", " OP", 11, "Arial", Yellow);
}
else
{
ObjectMove("OP Label", 0, Time[40], OP);
}

if(ObjectFind("XOP Label") != 0)
{
ObjectCreate("XOP Label", OBJ_TEXT, 0, Time[40], XOP);
ObjectSetText("XOP Label", "XOP", 11, "Arial", Gold);
}
else
{
ObjectMove("XOP Label", 0, Time[40], XOP);
}

//-------------------------------------------------------------------
if(ObjectFind("f1g Label") != 0)
{
ObjectCreate("f1g Label", OBJ_TEXT, 0, Time[45], f1g);
ObjectSetText("f1g Label", " f1g", 11, "Arial", DodgerBlue);
}
else
{
ObjectMove("f1g Label", 0, Time[45], f1g);
}

if(ObjectFind("F1R Label") != 0)
{
ObjectCreate("F1R Label", OBJ_TEXT, 0, Time[45], F1R);
ObjectSetText("F1R Label", " F1R", 11, "Arial", DodgerBlue);
}
else
{
ObjectMove("F1R Label", 0, Time[45], F1R);
}
//---------------------------------------------
if(ObjectFind("f2g Label") != 0)
{
ObjectCreate("f2g Label", OBJ_TEXT, 0, Time[50], f2g);
ObjectSetText("f2g Label", " f2g", 11, "Arial", DeepPink);
}
else
{
ObjectMove("f2g Label", 0, Time[50], f2g);
}

if(ObjectFind("F2R Label") != 0)
{
ObjectCreate("F2R Label", OBJ_TEXT, 0, Time[50], F2R);
ObjectSetText("F2R Label", " F2R", 11, "Arial", DeepPink);
}
else
{
ObjectMove("F2R Label", 0, Time[50], F2R);
}
//------------------------------------------------
if(ObjectFind("f3g Label") != 0)
{
ObjectCreate("f3g Label", OBJ_TEXT, 0, Time[55], f3g);
ObjectSetText("f3g Label", " f3g", 11, "Arial", Peru);
}
else
{
ObjectMove("f3g Label", 0, Time[55], f3g);
}

if(ObjectFind("F3R Label") != 0)
{
ObjectCreate("F3R Label", OBJ_TEXT, 0, Time[55], F3R);
ObjectSetText("F3R Label", " F3R", 11, "Arial", Peru);
}
else
{
ObjectMove("F3R Label", 0, Time[55], F3R);
}
//----------------------------------------------------------
if(ObjectFind("f4g Label") != 0)
{
ObjectCreate("f4g Label", OBJ_TEXT, 0, Time[60], f4g);
ObjectSetText("f4g Label", " f4g", 11, "Arial", Silver);
}
else
{
ObjectMove("f4g Label", 0, Time[60], f4g);
}

if(ObjectFind("F4R Label") != 0)
{
ObjectCreate("F4R Label", OBJ_TEXT, 0, Time[60], F4R);
ObjectSetText("F4R Label", " F4R", 11, "Arial", Silver);
}
else
{
ObjectMove("F4R Label", 0, Time[60], F4R);
}


//--- Draw lines on chart


if(ObjectFind("COP Line") != 0)
{
ObjectCreate("COP Line", OBJ_HLINE, 0, Time[40], COP);
ObjectSet("COP Line", OBJPROP_STYLE, STYLE_DOT);
ObjectSet("COP Line", OBJPROP_COLOR, Yellow);
}
else
{
ObjectMove("COP Line", 0, Time[40], COP);
}

if(ObjectFind("OP Line") != 0)
{
ObjectCreate("OP Line", OBJ_HLINE, 0, Time[40], OP);
ObjectSet("OP Line", OBJPROP_STYLE, STYLE_DASH);
ObjectSet("OP Line", OBJPROP_COLOR, Gold);
}
else
{
ObjectMove("OP Line", 0, Time[40], OP);
}

if(ObjectFind("XOP Line") != 0)
{
ObjectCreate("XOP Line", OBJ_HLINE, 0, Time[40], XOP);
ObjectSet("XOP Line", OBJPROP_STYLE, STYLE_DOT);
ObjectSet("XOP Line", OBJPROP_COLOR, Yellow);
}
else
{
ObjectMove("XOP Line", 0, Time[40], XOP);
}

//----------------------------------------------------------------
if(ObjectFind("f1g Line") != 0)
{
ObjectCreate("f1g Line", OBJ_HLINE, 0, Time[45], f1g);
ObjectSet("f1g Line", OBJPROP_STYLE, STYLE_DOT);
ObjectSet("f1g Line", OBJPROP_COLOR, LawnGreen);
}
else
{
ObjectMove("f1g Line", 0, Time[45], f1g);
}

if(ObjectFind("F1R Line") != 0)
{
ObjectCreate("F1R Line", OBJ_HLINE, 0, Time[45], F1R);
ObjectSet("F1R Line", OBJPROP_STYLE, STYLE_DOT);
ObjectSet("F1R Line", OBJPROP_COLOR, OrangeRed);
}
else
{
ObjectMove("F1R Line", 0, Time[45], F1R);
}
//----------------------------------------------
if(ObjectFind("f2g Line") != 0)
{
ObjectCreate("f2g Line", OBJ_HLINE, 0, Time[50], f2g);
ObjectSet("f2g Line", OBJPROP_STYLE, STYLE_DOT);
ObjectSet("f2g Line", OBJPROP_COLOR, LawnGreen);
}
else
{
ObjectMove("f2g Line", 0, Time[50], f2g);
}

if(ObjectFind("F2R Line") != 0)
{
ObjectCreate("F2R Line", OBJ_HLINE, 0, Time[50], F2R);
ObjectSet("F2R Line", OBJPROP_STYLE, STYLE_DOT);
ObjectSet("F2R Line", OBJPROP_COLOR, OrangeRed);
}
else
{
ObjectMove("F2R Line", 0, Time[50], F2R);
}
//-------------------------------------------------
if(ObjectFind("f3g Line") != 0)
{
ObjectCreate("f3g Line", OBJ_HLINE, 0, Time[55], f3g);
ObjectSet("f3g Line", OBJPROP_STYLE, STYLE_DOT);
ObjectSet("f3g Line", OBJPROP_COLOR, LawnGreen);
}
else
{
ObjectMove("f3g Line", 0, Time[55], f3g);
}

if(ObjectFind("F3R Line") != 0)
{
ObjectCreate("F3R Line", OBJ_HLINE, 0, Time[55], F3R);
ObjectSet("F3R Line", OBJPROP_STYLE, STYLE_DOT);
ObjectSet("F3R Line", OBJPROP_COLOR, OrangeRed);
}
else
{
ObjectMove("F3R Line", 0, Time[55], F3R);
}
//-----------------------------------------------------
if(ObjectFind("f4g Line") != 0)
{
ObjectCreate("f4g Line", OBJ_HLINE, 0, Time[60], f4g);
ObjectSet("f4g Line", OBJPROP_STYLE, STYLE_DOT);
ObjectSet("f4g Line", OBJPROP_COLOR, LawnGreen);
}
else
{
ObjectMove("f4g Line", 0, Time[60], f4g);
}

if(ObjectFind("F4R Line") != 0)
{
ObjectCreate("F4R Line", OBJ_HLINE, 0, Time[60], F4R);
ObjectSet("F4R Line", OBJPROP_STYLE, STYLE_DOT);
ObjectSet("F4R Line", OBJPROP_COLOR, OrangeRed);
}
else
{
ObjectMove("F4R Line", 0, Time[60], F4R);
}
//------------------------------------------------------

}
//---- End of Lines Draw
//---- End Of Program
return(0);
}
//+------------------------------------------------------------------+
I hope some one understands it all and has the time to help.

Virge666
02-25-2008, 07:17 PM
Hey Thrunner,

Thanks for teh DEMA code, got it worked out and am now a happy camper.

Cheers

Pete S
03-03-2008, 07:36 AM
thrunner, there is a DLL in that zip you posted which I believe is against the TOS on this board per the sticky.

thrunner
03-03-2008, 04:43 PM
thrunner, there is a DLL in that zip you posted which I believe is against the TOS on this board per the sticky.You are right, the indicator was mistakenly exported with the wrong switch, all the code are open as shown.

kissaki
12-09-2009, 06:09 AM
Hi, is any one get the Modified Moving Average (MAV) ? is MAV = Smoothed Moving Average? I find the formula in http://en.wikipedia.org/wiki/Moving_average and DiNapoli book. Still got luck to find the indicator. This MAV is also the base indicator to make DiNapoli Stochastic. This MAV, DiNapoli Stoch & DEMA Macd are very worthy.. Please help. thank you
8211

Ruien
05-04-2011, 09:32 AM
A couple years ago I wrote all of the DiNapoli indicators for Ninjatrader.

I probably stole parts of the code from other places, and perhaps from this thread (I can't remember now). But what I do know is that these indicators:

* Are correct, exactly defined according to the book's formulas.
* Are updated to work with Ninjatrader 7.
* Are not viruses (I wrote them myself; I know they're safe).

I have attached them to this message.

I still actively trade with these indicators. Hopefully someone else finds them useful too.

Don't forget to apply the displaced moving averages (3x3, 7x5, 25x5) as well.

Also, if you would like to see a video tutorial I made explaining the concepts behind DiNapoli trading, that's available too (assuming this link isn't broken):

http://download.ryansanden.com/static/DinapoliOptions.mp4 (http://download.ryansanden.com/static/DinapoliOptions.mp4)

Hope that helps!

Regards,
Ryan S.