Initial commit: MQL5 Indicators Collection (MetaTrader 5) - Part 2
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 21 KiB |
|
After Width: | Height: | Size: 21 KiB |
@@ -0,0 +1,23 @@
|
||||
# 🚀 Unlock the Power of Trading!
|
||||
|
||||
Welcome to this open-source trading project. Here you will find powerful tools to enhance your trading journey. If you find this project useful, please consider starring ⭐, sharing, or donating to support further development!
|
||||
|
||||
---
|
||||
|
||||
**Support the project:**
|
||||
- Star this repository on GitHub
|
||||
- Share it with your trading friends
|
||||
- [Donate here](https://www.paypal.com/donate/?hosted_button_id=YOUR_BUTTON_ID) to help us grow!
|
||||
|
||||
---
|
||||
|
||||
## Files included:
|
||||
### Source Files:
|
||||
- `di_cluster.mq5`
|
||||
|
||||
### Screenshots:
|
||||

|
||||

|
||||

|
||||
|
||||
> Made with ❤️ for the trading community.
|
||||
|
After Width: | Height: | Size: 2.6 KiB |
|
After Width: | Height: | Size: 1.8 KiB |
@@ -0,0 +1,21 @@
|
||||
# 🚀 Unlock the Power of Trading!
|
||||
|
||||
Welcome to this open-source trading project. Here you will find powerful tools to enhance your trading journey. If you find this project useful, please consider starring ⭐, sharing, or donating to support further development!
|
||||
|
||||
---
|
||||
|
||||
**Support the project:**
|
||||
- Star this repository on GitHub
|
||||
- Share it with your trading friends
|
||||
- [Donate here](https://www.paypal.com/donate/?hosted_button_id=YOUR_BUTTON_ID) to help us grow!
|
||||
|
||||
---
|
||||
|
||||
## Files included:
|
||||
### Source Files:
|
||||
- `dma_jgeneralm.mq5`
|
||||
|
||||
### Screenshots:
|
||||

|
||||
|
||||
> Made with ❤️ for the trading community.
|
||||
|
After Width: | Height: | Size: 6.3 KiB |
@@ -0,0 +1,298 @@
|
||||
//------------------------------------------------------------------
|
||||
#property copyright "mladen"
|
||||
#property link "www.forex-station.com"
|
||||
#property link "mladenfx@gmail.com"
|
||||
#property version "1.00"
|
||||
//------------------------------------------------------------------
|
||||
#property indicator_chart_window
|
||||
#property indicator_buffers 2
|
||||
#property indicator_plots 1
|
||||
#property indicator_label1 "MA"
|
||||
#property indicator_type1 DRAW_COLOR_LINE
|
||||
#property indicator_color1 clrGray,clrDeepSkyBlue,clrSandyBrown
|
||||
#property indicator_width1 3
|
||||
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
|
||||
enum enPrices
|
||||
{
|
||||
pr_close, // Close
|
||||
pr_open, // Open
|
||||
pr_high, // High
|
||||
pr_low, // Low
|
||||
pr_median, // Median
|
||||
pr_typical, // Typical
|
||||
pr_weighted, // Weighted
|
||||
pr_average, // Average (high+low+open+close)/4
|
||||
pr_medianb, // Average median body (open+close)/2
|
||||
pr_tbiased, // Trend biased price
|
||||
pr_tbiased2, // Trend biased (extreme) price
|
||||
pr_haclose, // Heiken ashi close
|
||||
pr_haopen , // Heiken ashi open
|
||||
pr_hahigh, // Heiken ashi high
|
||||
pr_halow, // Heiken ashi low
|
||||
pr_hamedian, // Heiken ashi median
|
||||
pr_hatypical, // Heiken ashi typical
|
||||
pr_haweighted, // Heiken ashi weighted
|
||||
pr_haaverage, // Heiken ashi average
|
||||
pr_hamedianb, // Heiken ashi median body
|
||||
pr_hatbiased, // Heiken ashi trend biased price
|
||||
pr_hatbiased2 // Heiken ashi trend biased (extreme) price
|
||||
};
|
||||
enum enMaTypes
|
||||
{
|
||||
ma_sma, // Simple moving average
|
||||
ma_ema, // Exponential moving average
|
||||
ma_smma, // Smoothed MA
|
||||
ma_lwma // Linear weighted MA
|
||||
};
|
||||
|
||||
input int AvgPeriod = 14; // Average period
|
||||
input enMaTypes AvgType = ma_sma; // Average method
|
||||
input bool AvgDma = true; // "DMA" average?
|
||||
input enPrices Price = pr_close; // Price
|
||||
|
||||
double avg[],avgc[];
|
||||
string _avgNames[] = {"SMA","EMA","SMMA","LWMA"};
|
||||
//------------------------------------------------------------------
|
||||
//
|
||||
//------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
|
||||
int OnInit()
|
||||
{
|
||||
SetIndexBuffer(0,avg ,INDICATOR_DATA);
|
||||
SetIndexBuffer(1,avgc ,INDICATOR_COLOR_INDEX);
|
||||
IndicatorSetString(INDICATOR_SHORTNAME,"d-"+_avgNames[AvgType]+" ("+(string)AvgPeriod+")");
|
||||
return(0);
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------
|
||||
//
|
||||
//------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
|
||||
int OnCalculate(const int rates_total,
|
||||
const int prev_calculated,
|
||||
const datetime& time[],
|
||||
const double& open[],
|
||||
const double& high[],
|
||||
const double& low[],
|
||||
const double& close[],
|
||||
const long& tick_volume[],
|
||||
const long& volume[],
|
||||
const int& spread[])
|
||||
{
|
||||
for (int i=(int)MathMax(prev_calculated-1,0); i<rates_total && !IsStopped(); i++)
|
||||
{
|
||||
double ma = iCustomMa(AvgType,getPrice(Price,open,close,high,low,i,rates_total),AvgPeriod,i,rates_total,0);
|
||||
avg[i] = (AvgDma) ? 2*ma-iCustomMa(AvgType,ma,AvgPeriod,i,rates_total,1) : ma;
|
||||
avgc[i] = (i>0) ? (avg[i]>avg[i-1]) ? 1 : (avg[i]<avg[i-1]) ? 2 : 0 : 0;
|
||||
}
|
||||
return(rates_total);
|
||||
}
|
||||
|
||||
|
||||
//------------------------------------------------------------------
|
||||
//
|
||||
//------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
|
||||
#define _maInstances 2
|
||||
#define _maWorkBufferx1 1*_maInstances
|
||||
double iCustomMa(int mode, double price, double length, int r, int bars, int instanceNo=0)
|
||||
{
|
||||
switch (mode)
|
||||
{
|
||||
case ma_sma : return(iSma(price,(int)length,r,bars,instanceNo));
|
||||
case ma_ema : return(iEma(price,length,r,bars,instanceNo));
|
||||
case ma_smma : return(iSmma(price,(int)length,r,bars,instanceNo));
|
||||
case ma_lwma : return(iLwma(price,(int)length,r,bars,instanceNo));
|
||||
default : return(price);
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
|
||||
double workSma[][_maWorkBufferx1];
|
||||
double iSma(double price, int period, int r, int _bars, int instanceNo=0)
|
||||
{
|
||||
if (ArrayRange(workSma,0)!= _bars) ArrayResize(workSma,_bars); int k=1;
|
||||
|
||||
workSma[r][instanceNo+0] = price;
|
||||
double wavg = price; for(; k<period && (r-k)>=0; k++) wavg += workSma[r-k][instanceNo+0]; wavg /= (double)k;
|
||||
return(wavg);
|
||||
}
|
||||
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
|
||||
double workEma[][_maWorkBufferx1];
|
||||
double iEma(double price, double period, int r, int _bars, int instanceNo=0)
|
||||
{
|
||||
if (ArrayRange(workEma,0)!= _bars) ArrayResize(workEma,_bars);
|
||||
|
||||
workEma[r][instanceNo] = price;
|
||||
if (r>0 && period>1)
|
||||
workEma[r][instanceNo] = workEma[r-1][instanceNo]+(2.0/(1.0+period))*(price-workEma[r-1][instanceNo]);
|
||||
return(workEma[r][instanceNo]);
|
||||
}
|
||||
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
|
||||
double workSmma[][_maWorkBufferx1];
|
||||
double iSmma(double price, double period, int r, int _bars, int instanceNo=0)
|
||||
{
|
||||
if (ArrayRange(workSmma,0)!= _bars) ArrayResize(workSmma,_bars);
|
||||
|
||||
workSmma[r][instanceNo] = price;
|
||||
if (r>1 && period>1)
|
||||
workSmma[r][instanceNo] = workSmma[r-1][instanceNo]+(price-workSmma[r-1][instanceNo])/period;
|
||||
return(workSmma[r][instanceNo]);
|
||||
}
|
||||
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
|
||||
double workLwma[][_maWorkBufferx1];
|
||||
double iLwma(double price, double period, int r, int _bars, int instanceNo=0)
|
||||
{
|
||||
if (ArrayRange(workLwma,0)!= _bars) ArrayResize(workLwma,_bars);
|
||||
|
||||
workLwma[r][instanceNo] = price; if (period<1) return(price);
|
||||
double sumw = period;
|
||||
double sum = period*price;
|
||||
|
||||
for(int k=1; k<period && (r-k)>=0; k++)
|
||||
{
|
||||
double weight = period-k;
|
||||
sumw += weight;
|
||||
sum += weight*workLwma[r-k][instanceNo];
|
||||
}
|
||||
return(sum/sumw);
|
||||
}
|
||||
|
||||
|
||||
//------------------------------------------------------------------
|
||||
//
|
||||
//------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
|
||||
#define _pricesInstances 1
|
||||
#define _pricesSize 4
|
||||
double workHa[][_pricesInstances*_pricesSize];
|
||||
double getPrice(int tprice, const double& open[], const double& close[], const double& high[], const double& low[], int i,int _bars, int instanceNo=0)
|
||||
{
|
||||
if (tprice>=pr_haclose)
|
||||
{
|
||||
if (ArrayRange(workHa,0)!= _bars) ArrayResize(workHa,_bars); instanceNo*=_pricesSize;
|
||||
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
|
||||
double haOpen;
|
||||
if (i>0)
|
||||
haOpen = (workHa[i-1][instanceNo+2] + workHa[i-1][instanceNo+3])/2.0;
|
||||
else haOpen = (open[i]+close[i])/2;
|
||||
double haClose = (open[i] + high[i] + low[i] + close[i]) / 4.0;
|
||||
double haHigh = MathMax(high[i], MathMax(haOpen,haClose));
|
||||
double haLow = MathMin(low[i] , MathMin(haOpen,haClose));
|
||||
|
||||
if(haOpen <haClose) { workHa[i][instanceNo+0] = haLow; workHa[i][instanceNo+1] = haHigh; }
|
||||
else { workHa[i][instanceNo+0] = haHigh; workHa[i][instanceNo+1] = haLow; }
|
||||
workHa[i][instanceNo+2] = haOpen;
|
||||
workHa[i][instanceNo+3] = haClose;
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
|
||||
switch (tprice)
|
||||
{
|
||||
case pr_haclose: return(haClose);
|
||||
case pr_haopen: return(haOpen);
|
||||
case pr_hahigh: return(haHigh);
|
||||
case pr_halow: return(haLow);
|
||||
case pr_hamedian: return((haHigh+haLow)/2.0);
|
||||
case pr_hamedianb: return((haOpen+haClose)/2.0);
|
||||
case pr_hatypical: return((haHigh+haLow+haClose)/3.0);
|
||||
case pr_haweighted: return((haHigh+haLow+haClose+haClose)/4.0);
|
||||
case pr_haaverage: return((haHigh+haLow+haClose+haOpen)/4.0);
|
||||
case pr_hatbiased:
|
||||
if (haClose>haOpen)
|
||||
return((haHigh+haClose)/2.0);
|
||||
else return((haLow+haClose)/2.0);
|
||||
case pr_hatbiased2:
|
||||
if (haClose>haOpen) return(haHigh);
|
||||
if (haClose<haOpen) return(haLow);
|
||||
return(haClose);
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
|
||||
switch (tprice)
|
||||
{
|
||||
case pr_close: return(close[i]);
|
||||
case pr_open: return(open[i]);
|
||||
case pr_high: return(high[i]);
|
||||
case pr_low: return(low[i]);
|
||||
case pr_median: return((high[i]+low[i])/2.0);
|
||||
case pr_medianb: return((open[i]+close[i])/2.0);
|
||||
case pr_typical: return((high[i]+low[i]+close[i])/3.0);
|
||||
case pr_weighted: return((high[i]+low[i]+close[i]+close[i])/4.0);
|
||||
case pr_average: return((high[i]+low[i]+close[i]+open[i])/4.0);
|
||||
case pr_tbiased:
|
||||
if (close[i]>open[i])
|
||||
return((high[i]+close[i])/2.0);
|
||||
else return((low[i]+close[i])/2.0);
|
||||
case pr_tbiased2:
|
||||
if (close[i]>open[i]) return(high[i]);
|
||||
if (close[i]<open[i]) return(low[i]);
|
||||
return(close[i]);
|
||||
}
|
||||
return(0);
|
||||
}
|
||||
|
After Width: | Height: | Size: 2.6 KiB |
|
After Width: | Height: | Size: 1.8 KiB |
|
After Width: | Height: | Size: 19 KiB |
@@ -0,0 +1,21 @@
|
||||
# 🚀 Unlock the Power of Trading!
|
||||
|
||||
Welcome to this open-source trading project. Here you will find powerful tools to enhance your trading journey. If you find this project useful, please consider starring ⭐, sharing, or donating to support further development!
|
||||
|
||||
---
|
||||
|
||||
**Support the project:**
|
||||
- Star this repository on GitHub
|
||||
- Share it with your trading friends
|
||||
- [Donate here](https://www.paypal.com/donate/?hosted_button_id=YOUR_BUTTON_ID) to help us grow!
|
||||
|
||||
---
|
||||
|
||||
## Files included:
|
||||
### Source Files:
|
||||
- `dma.mq5`
|
||||
|
||||
### Screenshots:
|
||||

|
||||
|
||||
> Made with ❤️ for the trading community.
|
||||
|
After Width: | Height: | Size: 2.6 KiB |
|
After Width: | Height: | Size: 1.8 KiB |
|
After Width: | Height: | Size: 57 KiB |
|
After Width: | Height: | Size: 14 KiB |
@@ -0,0 +1,22 @@
|
||||
# 🚀 Unlock the Power of Trading!
|
||||
|
||||
Welcome to this open-source trading project. Here you will find powerful tools to enhance your trading journey. If you find this project useful, please consider starring ⭐, sharing, or donating to support further development!
|
||||
|
||||
---
|
||||
|
||||
**Support the project:**
|
||||
- Star this repository on GitHub
|
||||
- Share it with your trading friends
|
||||
- [Donate here](https://www.paypal.com/donate/?hosted_button_id=YOUR_BUTTON_ID) to help us grow!
|
||||
|
||||
---
|
||||
|
||||
## Files included:
|
||||
### Source Files:
|
||||
- `dmh.mq5`
|
||||
|
||||
### Screenshots:
|
||||

|
||||

|
||||
|
||||
> Made with ❤️ for the trading community.
|
||||
|
After Width: | Height: | Size: 2.6 KiB |
|
After Width: | Height: | Size: 1.8 KiB |
@@ -0,0 +1,21 @@
|
||||
# 🚀 Unlock the Power of Trading!
|
||||
|
||||
Welcome to this open-source trading project. Here you will find powerful tools to enhance your trading journey. If you find this project useful, please consider starring ⭐, sharing, or donating to support further development!
|
||||
|
||||
---
|
||||
|
||||
**Support the project:**
|
||||
- Star this repository on GitHub
|
||||
- Share it with your trading friends
|
||||
- [Donate here](https://www.paypal.com/donate/?hosted_button_id=YOUR_BUTTON_ID) to help us grow!
|
||||
|
||||
---
|
||||
|
||||
## Files included:
|
||||
### Source Files:
|
||||
- `dmi_stochastic_extreme_1.1.mq5`
|
||||
|
||||
### Screenshots:
|
||||

|
||||
|
||||
> Made with ❤️ for the trading community.
|
||||
|
After Width: | Height: | Size: 6.0 KiB |
|
After Width: | Height: | Size: 2.6 KiB |
|
After Width: | Height: | Size: 1.8 KiB |
|
After Width: | Height: | Size: 17 KiB |
@@ -0,0 +1,21 @@
|
||||
# 🚀 Unlock the Power of Trading!
|
||||
|
||||
Welcome to this open-source trading project. Here you will find powerful tools to enhance your trading journey. If you find this project useful, please consider starring ⭐, sharing, or donating to support further development!
|
||||
|
||||
---
|
||||
|
||||
**Support the project:**
|
||||
- Star this repository on GitHub
|
||||
- Share it with your trading friends
|
||||
- [Donate here](https://www.paypal.com/donate/?hosted_button_id=YOUR_BUTTON_ID) to help us grow!
|
||||
|
||||
---
|
||||
|
||||
## Files included:
|
||||
### Source Files:
|
||||
- `dmi_difference.mq5`
|
||||
|
||||
### Screenshots:
|
||||

|
||||
|
||||
> Made with ❤️ for the trading community.
|
||||
|
After Width: | Height: | Size: 2.6 KiB |
|
After Width: | Height: | Size: 1.8 KiB |
|
After Width: | Height: | Size: 19 KiB |
@@ -0,0 +1,21 @@
|
||||
# 🚀 Unlock the Power of Trading!
|
||||
|
||||
Welcome to this open-source trading project. Here you will find powerful tools to enhance your trading journey. If you find this project useful, please consider starring ⭐, sharing, or donating to support further development!
|
||||
|
||||
---
|
||||
|
||||
**Support the project:**
|
||||
- Star this repository on GitHub
|
||||
- Share it with your trading friends
|
||||
- [Donate here](https://www.paypal.com/donate/?hosted_button_id=YOUR_BUTTON_ID) to help us grow!
|
||||
|
||||
---
|
||||
|
||||
## Files included:
|
||||
### Source Files:
|
||||
- `dmx.mq5`
|
||||
|
||||
### Screenshots:
|
||||

|
||||
|
||||
> Made with ❤️ for the trading community.
|
||||
|
After Width: | Height: | Size: 2.6 KiB |
|
After Width: | Height: | Size: 1.8 KiB |
|
After Width: | Height: | Size: 19 KiB |
@@ -0,0 +1,21 @@
|
||||
# 🚀 Unlock the Power of Trading!
|
||||
|
||||
Welcome to this open-source trading project. Here you will find powerful tools to enhance your trading journey. If you find this project useful, please consider starring ⭐, sharing, or donating to support further development!
|
||||
|
||||
---
|
||||
|
||||
**Support the project:**
|
||||
- Star this repository on GitHub
|
||||
- Share it with your trading friends
|
||||
- [Donate here](https://www.paypal.com/donate/?hosted_button_id=YOUR_BUTTON_ID) to help us grow!
|
||||
|
||||
---
|
||||
|
||||
## Files included:
|
||||
### Source Files:
|
||||
- `dnc.mq5`
|
||||
|
||||
### Screenshots:
|
||||

|
||||
|
||||
> Made with ❤️ for the trading community.
|
||||
|
After Width: | Height: | Size: 2.6 KiB |
|
After Width: | Height: | Size: 1.8 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 17 KiB |
@@ -0,0 +1,22 @@
|
||||
# 🚀 Unlock the Power of Trading!
|
||||
|
||||
Welcome to this open-source trading project. Here you will find powerful tools to enhance your trading journey. If you find this project useful, please consider starring ⭐, sharing, or donating to support further development!
|
||||
|
||||
---
|
||||
|
||||
**Support the project:**
|
||||
- Star this repository on GitHub
|
||||
- Share it with your trading friends
|
||||
- [Donate here](https://www.paypal.com/donate/?hosted_button_id=YOUR_BUTTON_ID) to help us grow!
|
||||
|
||||
---
|
||||
|
||||
## Files included:
|
||||
### Source Files:
|
||||
- `dnc_bandwidth.mq5`
|
||||
|
||||
### Screenshots:
|
||||

|
||||

|
||||
|
||||
> Made with ❤️ for the trading community.
|
||||
|
After Width: | Height: | Size: 2.6 KiB |
|
After Width: | Height: | Size: 1.8 KiB |
|
After Width: | Height: | Size: 19 KiB |
|
After Width: | Height: | Size: 21 KiB |
@@ -0,0 +1,22 @@
|
||||
# 🚀 Unlock the Power of Trading!
|
||||
|
||||
Welcome to this open-source trading project. Here you will find powerful tools to enhance your trading journey. If you find this project useful, please consider starring ⭐, sharing, or donating to support further development!
|
||||
|
||||
---
|
||||
|
||||
**Support the project:**
|
||||
- Star this repository on GitHub
|
||||
- Share it with your trading friends
|
||||
- [Donate here](https://www.paypal.com/donate/?hosted_button_id=YOUR_BUTTON_ID) to help us grow!
|
||||
|
||||
---
|
||||
|
||||
## Files included:
|
||||
### Source Files:
|
||||
- `dnc_percentage.mq5`
|
||||
|
||||
### Screenshots:
|
||||

|
||||

|
||||
|
||||
> Made with ❤️ for the trading community.
|
||||
|
After Width: | Height: | Size: 2.6 KiB |
|
After Width: | Height: | Size: 1.8 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 29 KiB |
@@ -0,0 +1,22 @@
|
||||
# 🚀 Unlock the Power of Trading!
|
||||
|
||||
Welcome to this open-source trading project. Here you will find powerful tools to enhance your trading journey. If you find this project useful, please consider starring ⭐, sharing, or donating to support further development!
|
||||
|
||||
---
|
||||
|
||||
**Support the project:**
|
||||
- Star this repository on GitHub
|
||||
- Share it with your trading friends
|
||||
- [Donate here](https://www.paypal.com/donate/?hosted_button_id=YOUR_BUTTON_ID) to help us grow!
|
||||
|
||||
---
|
||||
|
||||
## Files included:
|
||||
### Source Files:
|
||||
- `dpo_modified.mq5`
|
||||
|
||||
### Screenshots:
|
||||

|
||||

|
||||
|
||||
> Made with ❤️ for the trading community.
|
||||
@@ -0,0 +1,202 @@
|
||||
//+------------------------------------------------------------------+
|
||||
//| DPO_modified.mq5 |
|
||||
//| Copyright 2000-2024, MetaQuotes Ltd. |
|
||||
//| https://www.mql5.com |
|
||||
//+------------------------------------------------------------------+
|
||||
#property copyright "Copyright 2000-2024, MetaQuotes Ltd."
|
||||
#property link "https://www.mql5.com"
|
||||
#property version "1.10"
|
||||
#property description "Detrended Price Oscillator - modified"
|
||||
#include <MovingAverages.mqh>
|
||||
//--- indicator settings
|
||||
#property indicator_separate_window
|
||||
#property indicator_buffers 3
|
||||
#property indicator_plots 1
|
||||
#property indicator_type1 DRAW_LINE
|
||||
#property indicator_color1 DodgerBlue
|
||||
#property indicator_levelstyle STYLE_DOT
|
||||
#property indicator_levelcolor DarkGray
|
||||
#property indicator_level1 0
|
||||
|
||||
//--- input parameters
|
||||
input int InpDetrendPeriod = 61; // DPO Period
|
||||
input ENUM_MA_METHOD MAmethod = MODE_SMA; // MA Method
|
||||
input ENUM_APPLIED_PRICE appliedprice = PRICE_CLOSE; // MA Applied price
|
||||
|
||||
//--- indicator buffers
|
||||
double ExtDPOBuffer[];
|
||||
double ExtMABuffer[];
|
||||
double Extprice[];
|
||||
int helpMABuffer;
|
||||
|
||||
int ExtMAPeriod;
|
||||
//+------------------------------------------------------------------+
|
||||
//| Custom indicator initialization function |
|
||||
//+------------------------------------------------------------------+
|
||||
void OnInit()
|
||||
{
|
||||
//--- get length of cycle for smoothing
|
||||
//ExtMAPeriod = InpDetrendPeriod / 2 + 1;
|
||||
ExtMAPeriod = InpDetrendPeriod; // change input period to equal MA period
|
||||
//--- indicator buffers mapping
|
||||
SetIndexBuffer(0, ExtDPOBuffer, INDICATOR_DATA);
|
||||
SetIndexBuffer(1, ExtMABuffer, INDICATOR_CALCULATIONS);
|
||||
SetIndexBuffer(2, Extprice, INDICATOR_CALCULATIONS);
|
||||
//--- set accuracy
|
||||
IndicatorSetInteger(INDICATOR_DIGITS, _Digits + 1);
|
||||
//--- set first bar from what index will be drawn
|
||||
PlotIndexSetInteger(0, PLOT_DRAW_BEGIN, ExtMAPeriod - 1);
|
||||
//--- name for DataWindow and indicator subwindow label
|
||||
string short_name = StringFormat("modified DPO(%d)", InpDetrendPeriod);
|
||||
|
||||
//--- set short name according to MA mode
|
||||
switch(MAmethod)
|
||||
{
|
||||
case MODE_EMA :
|
||||
short_name = short_name + " (EMA)";
|
||||
break;
|
||||
case MODE_LWMA :
|
||||
short_name = short_name + " (LWMA)";
|
||||
break;
|
||||
case MODE_SMA :
|
||||
short_name = short_name + " (SMA)";
|
||||
break;
|
||||
case MODE_SMMA :
|
||||
short_name = short_name + " (SMMA)";
|
||||
break;
|
||||
default :
|
||||
short_name = short_name;
|
||||
}
|
||||
|
||||
IndicatorSetString(INDICATOR_SHORTNAME, short_name);
|
||||
}
|
||||
//+------------------------------------------------------------------+
|
||||
//| Detrended Price Oscillator |
|
||||
//+------------------------------------------------------------------+
|
||||
int OnCalculate(const int rates_total,
|
||||
const int prev_calculated,
|
||||
const datetime &time[],
|
||||
const double &open[],
|
||||
const double &high[],
|
||||
const double &low[],
|
||||
const double &close[],
|
||||
const long &tick_volume[],
|
||||
const long &volume[],
|
||||
const int &spread[])
|
||||
{
|
||||
int start;
|
||||
|
||||
int begin = 0;
|
||||
int first_index = begin + ExtMAPeriod - 1;
|
||||
//--- preliminary filling
|
||||
if(prev_calculated < first_index)
|
||||
{
|
||||
ArrayInitialize(ExtDPOBuffer, 0.0);
|
||||
start = first_index;
|
||||
if(begin > 0)
|
||||
PlotIndexSetInteger(0, PLOT_DRAW_BEGIN, first_index);
|
||||
}
|
||||
else
|
||||
start = prev_calculated - 1;
|
||||
|
||||
//---get price array if chosen MA applied price is PRICE_MEDIAN, PRICE_TYPICAL, or PRICE_WEIGHTED
|
||||
if(appliedprice >= 4)getLprice(rates_total, prev_calculated, begin, open, high, low, close, Extprice, appliedprice);
|
||||
|
||||
|
||||
//--- get MA buffer based on MA applied price and MA mode
|
||||
switch(appliedprice)
|
||||
{
|
||||
case PRICE_CLOSE :
|
||||
AverageOnArray(MAmethod, rates_total, prev_calculated, begin, ExtMAPeriod, close, ExtMABuffer);
|
||||
break;
|
||||
case PRICE_OPEN :
|
||||
AverageOnArray(MAmethod, rates_total, prev_calculated, begin, ExtMAPeriod, open, ExtMABuffer);
|
||||
break;
|
||||
case PRICE_HIGH :
|
||||
AverageOnArray(MAmethod, rates_total, prev_calculated, begin, ExtMAPeriod, high, ExtMABuffer);
|
||||
break;
|
||||
case PRICE_LOW :
|
||||
AverageOnArray(MAmethod, rates_total, prev_calculated, begin, ExtMAPeriod, low, ExtMABuffer);
|
||||
break;
|
||||
case PRICE_MEDIAN :
|
||||
AverageOnArray(MAmethod, rates_total, prev_calculated, begin, ExtMAPeriod, Extprice, ExtMABuffer);
|
||||
break;
|
||||
case PRICE_TYPICAL :
|
||||
AverageOnArray(MAmethod, rates_total, prev_calculated, begin, ExtMAPeriod, Extprice, ExtMABuffer);
|
||||
break;
|
||||
case PRICE_WEIGHTED :
|
||||
AverageOnArray(MAmethod, rates_total, prev_calculated, begin, ExtMAPeriod, Extprice, ExtMABuffer);
|
||||
break;
|
||||
default :
|
||||
AverageOnArray(MAmethod, rates_total, prev_calculated, begin, ExtMAPeriod, close, ExtMABuffer);
|
||||
}
|
||||
|
||||
//--- the main loop of calculations
|
||||
for(int i = start; i < rates_total && !IsStopped(); i++)
|
||||
ExtDPOBuffer[i] = close[i] - ExtMABuffer[i];
|
||||
//--- OnCalculate done. Return new prev_calculated.
|
||||
return(rates_total);
|
||||
}
|
||||
//+------------------------------------------------------------------+
|
||||
//| calculate average on array |
|
||||
//+------------------------------------------------------------------+
|
||||
void AverageOnArray(const int mode,
|
||||
const int rates_total,
|
||||
const int prev_calculated,
|
||||
const int begin,
|
||||
const int period,
|
||||
const double& source[],
|
||||
double& destination[])
|
||||
{
|
||||
switch(mode)
|
||||
{
|
||||
case MODE_EMA:
|
||||
ExponentialMAOnBuffer(rates_total, prev_calculated, begin, period, source, destination);
|
||||
break;
|
||||
case MODE_SMMA:
|
||||
SmoothedMAOnBuffer(rates_total, prev_calculated, begin, period, source, destination);
|
||||
break;
|
||||
case MODE_LWMA:
|
||||
LinearWeightedMAOnBuffer(rates_total, prev_calculated, begin, period, source, destination);
|
||||
break;
|
||||
default:
|
||||
SimpleMAOnBuffer(rates_total, prev_calculated, begin, period, source, destination);
|
||||
}
|
||||
}
|
||||
//+------------------------------------------------------------------+
|
||||
//| get median , typical, & weighted prices (when requested) |
|
||||
//+------------------------------------------------------------------+
|
||||
int getLprice(const int rates_total,
|
||||
const int prev_calculated,
|
||||
const int begin,
|
||||
const double &op[],
|
||||
const double &hi[],
|
||||
const double &lo[],
|
||||
const double &cl[],
|
||||
double &destination[],
|
||||
ENUM_APPLIED_PRICE Lprice)
|
||||
{
|
||||
|
||||
bool as_series_destination=ArrayGetAsSeries(destination);
|
||||
ArraySetAsSeries(destination,false);
|
||||
|
||||
int start_position = prev_calculated-1;
|
||||
|
||||
if(start_position < 0){start_position = 0;}
|
||||
|
||||
//--- main loop
|
||||
for(int i = start_position; i < rates_total; i++)
|
||||
{
|
||||
if(Lprice == PRICE_WEIGHTED)destination[i] = (hi[i] + lo[i] + cl[i] * 2) / 4;
|
||||
if(Lprice == PRICE_TYPICAL)destination[i] = (hi[i] + lo[i] + cl[i]) / 3;
|
||||
if(Lprice == PRICE_MEDIAN)destination[i] = (hi[i] + lo[i]) / 2;
|
||||
}
|
||||
ArraySetAsSeries(destination,as_series_destination);
|
||||
return rates_total;
|
||||
}
|
||||
//+------------------------------------------------------------------+
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
After Width: | Height: | Size: 3.1 KiB |
|
After Width: | Height: | Size: 2.6 KiB |
|
After Width: | Height: | Size: 1.8 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 18 KiB |
@@ -0,0 +1,22 @@
|
||||
# 🚀 Unlock the Power of Trading!
|
||||
|
||||
Welcome to this open-source trading project. Here you will find powerful tools to enhance your trading journey. If you find this project useful, please consider starring ⭐, sharing, or donating to support further development!
|
||||
|
||||
---
|
||||
|
||||
**Support the project:**
|
||||
- Star this repository on GitHub
|
||||
- Share it with your trading friends
|
||||
- [Donate here](https://www.paypal.com/donate/?hosted_button_id=YOUR_BUTTON_ID) to help us grow!
|
||||
|
||||
---
|
||||
|
||||
## Files included:
|
||||
### Source Files:
|
||||
- `dpo_bar.mq5`
|
||||
|
||||
### Screenshots:
|
||||

|
||||

|
||||
|
||||
> Made with ❤️ for the trading community.
|
||||
|
After Width: | Height: | Size: 3.1 KiB |
|
After Width: | Height: | Size: 2.6 KiB |
|
After Width: | Height: | Size: 1.8 KiB |
|
After Width: | Height: | Size: 25 KiB |
@@ -0,0 +1,22 @@
|
||||
# 🚀 Unlock the Power of Trading!
|
||||
|
||||
Welcome to this open-source trading project. Here you will find powerful tools to enhance your trading journey. If you find this project useful, please consider starring ⭐, sharing, or donating to support further development!
|
||||
|
||||
---
|
||||
|
||||
**Support the project:**
|
||||
- Star this repository on GitHub
|
||||
- Share it with your trading friends
|
||||
- [Donate here](https://www.paypal.com/donate/?hosted_button_id=YOUR_BUTTON_ID) to help us grow!
|
||||
|
||||
---
|
||||
|
||||
## Files included:
|
||||
### Source Files:
|
||||
- `drcacomaia.mq5`
|
||||
|
||||
### Screenshots:
|
||||

|
||||

|
||||
|
||||
> Made with ❤️ for the trading community.
|
||||
|
After Width: | Height: | Size: 3.1 KiB |
|
After Width: | Height: | Size: 2.6 KiB |
|
After Width: | Height: | Size: 1.8 KiB |
|
After Width: | Height: | Size: 2.4 KiB |
@@ -0,0 +1,21 @@
|
||||
# 🚀 Unlock the Power of Trading!
|
||||
|
||||
Welcome to this open-source trading project. Here you will find powerful tools to enhance your trading journey. If you find this project useful, please consider starring ⭐, sharing, or donating to support further development!
|
||||
|
||||
---
|
||||
|
||||
**Support the project:**
|
||||
- Star this repository on GitHub
|
||||
- Share it with your trading friends
|
||||
- [Donate here](https://www.paypal.com/donate/?hosted_button_id=YOUR_BUTTON_ID) to help us grow!
|
||||
|
||||
---
|
||||
|
||||
## Files included:
|
||||
### Source Files:
|
||||
- `dsl_-_dema_macd.mq5`
|
||||
|
||||
### Screenshots:
|
||||

|
||||
|
||||
> Made with ❤️ for the trading community.
|
||||
|
After Width: | Height: | Size: 21 KiB |
|
After Width: | Height: | Size: 3.1 KiB |
|
After Width: | Height: | Size: 2.6 KiB |
|
After Width: | Height: | Size: 1.8 KiB |
@@ -0,0 +1,21 @@
|
||||
# 🚀 Unlock the Power of Trading!
|
||||
|
||||
Welcome to this open-source trading project. Here you will find powerful tools to enhance your trading journey. If you find this project useful, please consider starring ⭐, sharing, or donating to support further development!
|
||||
|
||||
---
|
||||
|
||||
**Support the project:**
|
||||
- Star this repository on GitHub
|
||||
- Share it with your trading friends
|
||||
- [Donate here](https://www.paypal.com/donate/?hosted_button_id=YOUR_BUTTON_ID) to help us grow!
|
||||
|
||||
---
|
||||
|
||||
## Files included:
|
||||
### Source Files:
|
||||
- `dsl_-_tema_macd.mq5`
|
||||
|
||||
### Screenshots:
|
||||

|
||||
|
||||
> Made with ❤️ for the trading community.
|
||||
|
After Width: | Height: | Size: 22 KiB |
|
After Width: | Height: | Size: 2.6 KiB |
|
After Width: | Height: | Size: 1.8 KiB |
@@ -0,0 +1,21 @@
|
||||
# 🚀 Unlock the Power of Trading!
|
||||
|
||||
Welcome to this open-source trading project. Here you will find powerful tools to enhance your trading journey. If you find this project useful, please consider starring ⭐, sharing, or donating to support further development!
|
||||
|
||||
---
|
||||
|
||||
**Support the project:**
|
||||
- Star this repository on GitHub
|
||||
- Share it with your trading friends
|
||||
- [Donate here](https://www.paypal.com/donate/?hosted_button_id=YOUR_BUTTON_ID) to help us grow!
|
||||
|
||||
---
|
||||
|
||||
## Files included:
|
||||
### Source Files:
|
||||
- `dsl_-_wpr.mq5`
|
||||
|
||||
### Screenshots:
|
||||

|
||||
|
||||
> Made with ❤️ for the trading community.
|
||||
|
After Width: | Height: | Size: 22 KiB |
|
After Width: | Height: | Size: 2.6 KiB |
|
After Width: | Height: | Size: 1.8 KiB |
@@ -0,0 +1,21 @@
|
||||
# 🚀 Unlock the Power of Trading!
|
||||
|
||||
Welcome to this open-source trading project. Here you will find powerful tools to enhance your trading journey. If you find this project useful, please consider starring ⭐, sharing, or donating to support further development!
|
||||
|
||||
---
|
||||
|
||||
**Support the project:**
|
||||
- Star this repository on GitHub
|
||||
- Share it with your trading friends
|
||||
- [Donate here](https://www.paypal.com/donate/?hosted_button_id=YOUR_BUTTON_ID) to help us grow!
|
||||
|
||||
---
|
||||
|
||||
## Files included:
|
||||
### Source Files:
|
||||
- `dsl_-_stochastic_extended.mq5`
|
||||
|
||||
### Screenshots:
|
||||

|
||||
|
||||
> Made with ❤️ for the trading community.
|
||||
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 2.6 KiB |
|
After Width: | Height: | Size: 1.8 KiB |
@@ -0,0 +1,23 @@
|
||||
# 🚀 Unlock the Power of Trading!
|
||||
|
||||
Welcome to this open-source trading project. Here you will find powerful tools to enhance your trading journey. If you find this project useful, please consider starring ⭐, sharing, or donating to support further development!
|
||||
|
||||
---
|
||||
|
||||
**Support the project:**
|
||||
- Star this repository on GitHub
|
||||
- Share it with your trading friends
|
||||
- [Donate here](https://www.paypal.com/donate/?hosted_button_id=YOUR_BUTTON_ID) to help us grow!
|
||||
|
||||
---
|
||||
|
||||
## Files included:
|
||||
### Source Files:
|
||||
- `dsl_-_stochastic.mq5`
|
||||
- `dsl_-_tema_macd.mq5`
|
||||
|
||||
### Screenshots:
|
||||

|
||||

|
||||
|
||||
> Made with ❤️ for the trading community.
|
||||
|
After Width: | Height: | Size: 20 KiB |