• Home
  • Forums
  • Trades
  • News
  • Calendar
  • Market
  • Brokers
  • Login
  • Join
  • User/Email: Password:
  • 12:29am
Menu
  • Forums
  • Trades
  • News
  • Calendar
  • Market
  • Brokers
  • Login
  • Join
  • 12:29am
Sister Sites
  • Metals Mine
  • Energy EXCH
  • Crypto Craft

Options

Bookmark Thread

First Page First Unread Last Page Last Post

Print Thread

Similar Threads

RSI and Stochastic MTF Hybrid dashboard indicator 5 replies

MTF Multi pair MA cross dashboard with alerts 4 replies

Coding Request for Multipair MTF ADR Dashboard 2 replies

how to make this RSI MTF dashboard indicator auto refresh 0 replies

need an MTF dashboard 2 replies

  • Platform Tech
  • /
  • Reply to Thread
  • Subscribe
  • 530
Attachments: MTF Dashboard thread
Exit Attachments

MTF Dashboard thread

  • Last Post
  •  
  • 1 1718Page 192021 46
  • 1 18Page 1920 46
  •  
  • Post #361
  • Quote
  • Jan 19, 2017 7:18pm Jan 19, 2017 7:18pm
  •  caksalman
  • | Joined Oct 2015 | Status: Member | 4 Posts
Hello Everyone,

Are there anybody can help me to fix this indicator and expert? The expert "sRs_Trade_Management_Robot" and the indicator "sRs_Trend_Rider_Alert" can't attach into chart. I bought it form reseller. If someone would like to share the original, I would be appreciate.

Thank you before.
Attached File
File Type: rar sRs_Trend_Rider.rar   2.1 MB | 1,014 downloads
 
 
  • Post #362
  • Quote
  • Feb 12, 2017 8:33am Feb 12, 2017 8:33am
  •  nadiakhan
  • | Joined Feb 2017 | Status: Member | 18 Posts
sir i need this indicator but in heiken ashi i,l be thankful if you make this
Attached Image (click to enlarge)
Click to Enlarge

Name: Screenshot_4.jpg
Size: 180 KB
LEARN THE PROCESS,FOLLOW THE PROCESS
 
 
  • Post #363
  • Quote
  • Edited Feb 17, 2017 8:23am Feb 13, 2017 8:13pm | Edited Feb 17, 2017 8:23am
  •  cja
  • Joined Feb 2007 | Status: Member | 1,848 Posts
This Dashboard is self contained and the Heiken Ashi indicator is coded into it so there is no need to have the Heiken Ashi in your indicator folder.

This indicator has an automatic magic number coded but if using several dashboards on the same chart and you have a display issue ( mainly when loading a dashboard on both sides of the chart ) just use the shiftsideways or shiftupdn inputs, a shift sideways value such as 3 usually will solve the display problem.

NOTE : The name of this indicator cannot be changed in any way or it will not work.
{ attachment deleted by staff, per request }
Attached Image (click to enlarge)
Click to Enlarge

Name: HA Dash.png
Size: 65 KB


The original version had possible code conflict issues if loading an indicator on both sides of a chart without using any of the shift inputs so I have coded this version to have a magic number which must be used if loading several dashboards on the same chart.
{ attachment deleted by staff, per request }
Trade what you see not what you hope
 
1
  • Post #364
  • Quote
  • Feb 14, 2017 6:08am Feb 14, 2017 6:08am
  •  nadiakhan
  • | Joined Feb 2017 | Status: Member | 18 Posts
Quoting cja
Disliked
This Dashboard is self contained and the Heiken Ashi indicator is coded into it so there is no need to have the Heiken Ashi in your indicator folder. NOTE : The name of this indicator cannot be changed in any way or it will not work. MTF Multi Signal Multi Pair HA.ex4;2185788 HA Dash.png;2185782 {image} {file}
Ignored
thanks CJA.can you also add timeframe change option.when we click any timeframe it should change timeframe and also change symbol in same chart window.THANKS FOR INDICATOR.
LEARN THE PROCESS,FOLLOW THE PROCESS
 
 
  • Post #365
  • Quote
  • Feb 14, 2017 9:14am Feb 14, 2017 9:14am
  •  simnz
  • Joined Nov 2015 | Status: Member | 2,520 Posts
Quoting cja
Disliked
This Dashboard is self contained and the Heiken Ashi indicator is coded into it so there is no need to have the Heiken Ashi in your indicator folder. NOTE : The name of this indicator cannot be changed in any way or it will not work. MTF Multi Signal Multi Pair HA.ex4;2185788 HA Dash.png;2185782 {image} {file}
Ignored
I find difficult to see all the symbols .Attached is the screen shot.
Attached Image (click to enlarge)
Click to Enlarge

Name: Heiken Ashi dashboard.png
Size: 136 KB
Practice makes a person perfect
 
 
  • Post #366
  • Quote
  • Feb 14, 2017 2:20pm Feb 14, 2017 2:20pm
  •  poruchik
  • Joined Dec 2006 | Status: Member | 719 Posts
Quoting cja
Disliked
This Dashboard
Ignored
Bro thank for indi.
Plz add ID indi for two indi on chart
Attached Image (click to enlarge)
Click to Enlarge

Name: USDCADM15о.png
Size: 49 KB
 
 
  • Post #367
  • Quote
  • Feb 14, 2017 5:29pm Feb 14, 2017 5:29pm
  •  cja
  • Joined Feb 2007 | Status: Member | 1,848 Posts
Quoting simnz
Disliked
{quote} I find difficult to see all the symbols .Attached is the screen shot. {image}
Ignored
I think your issue is the MT4 problem about not being able to handle a Windows font setup other than 100% or smaller. If you have any other OS Windows setup MT4 does not display correctly. To access this setting go to your desktop and right click, select Personalize, select Display.
Attached Image (click to enlarge)
Click to Enlarge

Name: font.png
Size: 82 KB
Trade what you see not what you hope
 
 
  • Post #368
  • Quote
  • Edited at 7:00pm Feb 14, 2017 6:30pm | Edited at 7:00pm
  •  cja
  • Joined Feb 2007 | Status: Member | 1,848 Posts
Quoting poruchik
Disliked
{quote} Bro thank for indi. Plz add ID indi for two indi on chart {image}
Ignored
I have coded a version which uses a magic number input if you would prefer to use that, it is posted on #Post 363 above. Thank you for bringing this to my attention.

The original indicator has a built in ID/Magic # however sometimes there can be some code conflict issues if simply putting one indicator display on each side of the chart, the magic uses shift values as part of the ID so try putting a number like 3 or 1 into one of the shiftsideways or shiftupdn inputs and it should work. The display below is using the original dashboard indicator you downloaded and as you can see the dashboard can usually be loaded several times without any problems.
Attached Image (click to enlarge)
Click to Enlarge

Name: HAshift.png
Size: 58 KB
Trade what you see not what you hope
 
 
  • Post #369
  • Quote
  • Feb 15, 2017 5:07am Feb 15, 2017 5:07am
  •  nadiakhan
  • | Joined Feb 2017 | Status: Member | 18 Posts
Quoting cja
Disliked
{quote} I have coded a version which uses a magic number input if you would prefer to use that, it is posted on #Post 363 above. Thank you for bringing this to my attention. The original indicator has a built in ID/Magic # however sometimes there can be some code conflict issues if simply putting one indicator display on each side of the chart, the magic uses shift values as part of the ID so try putting a number like 3 or 1 into one of the shiftsideways or shiftupdn inputs and it should work. The display below is using the original dashboard indicator...
Ignored
GREAT WORK.THANKS
LEARN THE PROCESS,FOLLOW THE PROCESS
 
 
  • Post #370
  • Quote
  • Feb 15, 2017 6:07am Feb 15, 2017 6:07am
  •  adelzadeh
  • Joined Oct 2015 | Status: loading... | 1,038 Posts
Quoting cja
Disliked
This Dashboard is self contained and the Heiken Ashi indicator is coded into it so there is no need to have the Heiken Ashi in your indicator folder. This indicator has an automatic magic number coded but if using several dashboards on the same chart and you have a display issue ( mainly when loading a dashboard on both sides of the chart ) just use the shiftsideways or shiftupdn inputs, a shift sideways value such as 3 usually will solve the display problem. NOTE : The name of this indicator cannot be changed in any way or it will not work. MTF...
Ignored
candle ha is bear but indicator show it bull
why?
Attached Image (click to enlarge)
Click to Enlarge

Name: 2017-02-15_143400.jpg
Size: 326 KB
what we want:1+1+1+1+1+1+1+1=8 what market delivers:1+2+8+7-4+0-5+8-4-5=8
 
 
  • Post #371
  • Quote
  • Feb 15, 2017 6:16am Feb 15, 2017 6:16am
  •  adelzadeh
  • Joined Oct 2015 | Status: loading... | 1,038 Posts
Use this version
it perfect
Attached Image
Attached File
File Type: ex4 MTF Price Dashboard v1_2.ex4   58 KB | 945 downloads
what we want:1+1+1+1+1+1+1+1=8 what market delivers:1+2+8+7-4+0-5+8-4-5=8
 
 
  • Post #372
  • Quote
  • Feb 15, 2017 8:53am Feb 15, 2017 8:53am
  •  Mykey
  • | Joined Nov 2015 | Status: Member | 23 Posts
Quoting cja
Disliked
{quote} I have coded a version which uses a magic number input if you would prefer to use that, it is posted on #Post 363 above. Thank you for bringing this to my attention. The original indicator has a built in ID/Magic # however sometimes there can be some code conflict issues if simply putting one indicator display on each side of the chart, the magic uses shift values as part of the ID so try putting a number like 3 or 1 into one of the shiftsideways or shiftupdn inputs and it should work. The display below is using the original dashboard indicator...
Ignored
Hi CJA,

Hope I'm not posting on the wrong forum... I have no idea on how to post directly to you. Thanks for your indicator. Below is my number... could we chat on WhatApp?

Hi... If you can...
Kindly make an arrow indicator based on the following (M1... MN)
1. Slow Stochastics K Period 13, D Period 8 and slowing 21 (my magic stochastic with all MA methods e.g Exponential, linear weighted etc)
2. CCI Period 55 (with options of Apply to... Close to first indicator's data)
3. MACD Fast EMA 13, Slow EMA 21 and MACD SMA 8 (Apply to all and/or any option)
4. EMA Period 5 Shift 5, Periods (without shift... 55, 34, 21 and 13. For the lower time frames i.e. M1, M5 and M15 Periods 144 and 610)
5. Round numbers separated by 25 pips
All the above to be one with both audio and text alerts (add divergence signals and alerts)
Thanks in advance... Can contact me on WhatsApp +254722436654 for more details and inquiries.
 
 
  • Post #373
  • Quote
  • Edited at 9:04pm Feb 15, 2017 8:17pm | Edited at 9:04pm
  •  cja
  • Joined Feb 2007 | Status: Member | 1,848 Posts
Quoting adelzadeh
Disliked
{quote} candle ha is bear but indicator show it bull why? {image}
Ignored
Thanks for bringing this to my attention it would appear I have made a coding error in the internal HA code. I have asked for the indicators on #Post 363 to be deleted to stop further downloads.

Apologies for the inconvenience to all those that downloaded the indicator/s, I am re-posting the indicator with an iCustom call using the built in MT4 Heiken Ashi indicator the only problem is it tends to make the dashboard cpu heavy but at least I know it is accurate as I have used this code in the past for other dashboard indicators.

These indicators have a magic number which must be used if loading several dashboards on the same chart.
NOTE : The name of these indicators cannot be changed in any way or they will not work.
NOTE : The Heiken Ashi indicator must be in your indicators folder for this dashboard to work.
Attached File
File Type: ex4 MTF Multi Signal Multi Pair HA v2.ex4   62 KB | 970 downloads

Smoothed version of the HA Dashboard.
NOTE : The Heiken Ashi Smoothed indicator must be in your indicators folder for this dashboard to work.
Attached File
File Type: ex4 MTF Multi Signal Multi Pair HA Smoothed.ex4   62 KB | 965 downloads

Attached File
File Type: mq4 Heiken_Ashi_Smoothed.mq4   4 KB | 857 downloads

Attached Image (click to enlarge)
Click to Enlarge

Name: HA2.png
Size: 42 KB

Attached Image (click to enlarge)
Click to Enlarge

Name: HAshift.png
Size: 58 KB
Trade what you see not what you hope
 
3
  • Post #374
  • Quote
  • Feb 15, 2017 11:22pm Feb 15, 2017 11:22pm
  •  adelzadeh
  • Joined Oct 2015 | Status: loading... | 1,038 Posts
Quoting cja
Disliked
{quote} Thanks for bringing this to my attention it would appear I have made a coding error in the internal HA code. I have asked for the indicators on #Post 363 to be deleted to stop further downloads. Apologies for the inconvenience to all those that downloaded the indicator/s, I am re-posting the indicator with an iCustom call using the built in MT4 Heiken Ashi indicator the only problem is it tends to make the dashboard cpu heavy but at least I know it is accurate as I have used this code in the past for other dashboard indicators. These indicators...
Ignored
thanks very much master CJA

REGARD OF YOU
what we want:1+1+1+1+1+1+1+1=8 what market delivers:1+2+8+7-4+0-5+8-4-5=8
 
 
  • Post #375
  • Quote
  • Feb 16, 2017 6:34am Feb 16, 2017 6:34am
  •  nadiakhan
  • | Joined Feb 2017 | Status: Member | 18 Posts
Quoting cja
Disliked
{quote} Thanks for bringing this to my attention it would appear I have made a coding error in the internal HA code. I have asked for the indicators on #Post 363 to be deleted to stop further downloads. Apologies for the inconvenience to all those that downloaded the indicator/s, I am re-posting the indicator with an iCustom call using the built in MT4 Heiken Ashi indicator the only problem is it tends to make the dashboard cpu heavy but at least I know it is accurate as I have used this code in the past for other dashboard indicators. These indicators...
Ignored
thanks you for hieken ashi smoothed dashboard.
LEARN THE PROCESS,FOLLOW THE PROCESS
 
 
  • Post #376
  • Quote
  • Feb 16, 2017 12:30pm Feb 16, 2017 12:30pm
  •  simnz
  • Joined Nov 2015 | Status: Member | 2,520 Posts
Quoting cja
Disliked
{quote} I think your issue is the MT4 problem about not being able to handle a Windows font setup other than 100% or smaller. If you have any other OS Windows setup MT4 does not display correctly. To access this setting go to your desktop and right click, select Personalize, select Display. {image}
Ignored
Thank you. Now there is no issue with the display.
Practice makes a person perfect
 
 
  • Post #377
  • Quote
  • Feb 20, 2017 10:08pm Feb 20, 2017 10:08pm
  •  abedalnasser
  • | Joined Aug 2016 | Status: Member | 21 Posts
hiiii all thank you all about this great work , really its a great

i have question

i think all indicator here work on a current bar , if i want used it on the last closed bar ... is it possible ??!!!!!
what the setting of indicator if i want use it on last bar ?

thanks advance
 
 
  • Post #378
  • Quote
  • Feb 25, 2017 10:40am Feb 25, 2017 10:40am
  •  nadiakhan
  • | Joined Feb 2017 | Status: Member | 18 Posts
SIR i,l be thankful to you if you code this indicator to same like heiken ashi dashboard indicator.the problem is heiken ashi tell only current bar but this indicator (all trend envelope) tell current swing.its is very easy to follow higher timeframe swing on lowerframe chart.i need this indicator into dashboard indicator same like your coded mtf heiken ashi dashboard indicator.sir also merge option of this indicator and setting of your heiken ashi dashboard indicator to change setting.thanks for helping new traders.indicator is not uploading i,m uploading code


//+------------------------------------------------------------------+
//| AllTrendEnvelopes_v2.1 600+.mq4 |
//| Copyright 2009-14, TrendLaboratory |
//| http://finance.groups.yahoo.com/group/TrendLaboratory |
//| E-mail: [email protected] |
//+------------------------------------------------------------------+
// List of MAs:
// MA_Method= 0: SMA - Simple Moving Average
// MA_Method= 1: EMA - Exponential Moving Average
// MA_Method= 2: Wilder - Wilder Exponential Moving Average
// MA_Method= 3: LWMA - Linear Weighted Moving Average
// MA_Method= 4: SineWMA - Sine Weighted Moving Average
// MA_Method= 5: TriMA - Triangular Moving Average
// MA_Method= 6: LSMA - Least Square Moving Average (or EPMA, Linear Regression Line)
// MA_Method= 7: SMMA - Smoothed Moving Average
// MA_Method= 8: HMA - Hull Moving Average by Alan Hull
// MA_Method= 9: ZeroLagEMA - Zero-Lag Exponential Moving Average
// MA_Method=10: DEMA - Double Exponential Moving Average by Patrick Mulloy
// MA_Method=11: T3_basic - T3 by T.Tillson (original version)
// MA_Method=12: ITrend - Instantaneous Trendline by J.Ehlers
// MA_Method=13: Median - Moving Median
// MA_Method=14: GeoMean - Geometric Mean
// MA_Method=15: REMA - Regularized EMA by Chris Satchwell
// MA_Method=16: ILRS - Integral of Linear Regression Slope
// MA_Method=17: IE/2 - Combination of LSMA and ILRS
// MA_Method=18: TriMAgen - Triangular Moving Average generalized by J.Ehlers
// MA_Method=19: VWMA - Volume Weighted Moving Average
// MA_Method=20: JSmooth - Smoothing by Mark Jurik
// MA_Method=21: SMA_eq - Simplified SMA
// MA_Method=22: ALMA - Arnaud Legoux Moving Average
// MA_Method=23: TEMA - Triple Exponential Moving Average by Patrick Mulloy
// MA_Method=24: T3 - T3 by T.Tillson (correct version)
// MA_Method=25: Laguerre - Laguerre filter by J.Ehlers
// MA_Method=26: MD - McGinley Dynamic
// List of Prices:
// Price = 0 - Close
// Price = 1 - Open
// Price = 2 - High
// Price = 3 - Low
// Price = 4 - Median Price = (High+Low)/2
// Price = 5 - Typical Price = (High+Low+Close)/3
// Price = 6 - Weighted Close = (High+Low+Close*2)/4
// Price = 7 - Heiken Ashi Close
// Price = 8 - Heiken Ashi Open
// Price = 9 - Heiken Ashi High
// Price =10 - Heiken Ashi Low

#property copyright "Copyright 2009-14, TrendLaboratory"
#property link "http://finance.groups.yahoo.com/group/TrendLaboratory"
#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 DodgerBlue
#property indicator_color2 Tomato
#property indicator_width1 2
#property indicator_width2 2
#property indicator_color3 DodgerBlue
#property indicator_color4 Tomato
#property indicator_width3 1
#property indicator_width4 1

//----
extern int TimeFrame = 0; //TimeFrame in min
extern int UpBandPrice = 2; //Upper Band's Price = 0...10 (see List of Prices)
extern int LoBandPrice = 3; //Lower Band's Price = 0...10 (see List of Prices)
extern int UpBandPeriod = 10; //Upper Band's Period
extern int LoBandPeriod = 10; //Lower Band's Period
extern int UpBandMethod = 0; //Upper Band MA's Method = 0...26 (see List of MAs)
extern int LoBandMethod = 0; //Lower Band MA's Mathod = 0...26 (see List of MAs)
extern double UpBandDeviation = 0.0; //Upper Band's Deviation in %
extern double LoBandDeviation = 0.0; //Lower Band's Deviation in %
extern int SignalMode = 1; //Switch of Signal mode(0-off,1-on)
extern string alerts = "--- Alerts & Emails ---";
extern int AlertMode = 1; //Alert Mode (0-off,1-on)
extern int SoundsNumber = 5; //Number of sounds after Signal
extern int SoundsPause = 5; //Pause in sec between sounds
extern string UpSound = "alert.wav";
extern string DnSound = "alert2.wav";
extern int EmailMode = 0; //0-on,1-off
extern int EmailsNumber = 1; //0-on,1-off
extern int WarningMode = 0; //Warning Mode (0-off,1-on)
double UpTrend[];
double DnTrend[];
double UpSignal[];
double DnSignal[];
double upPrice[];
double loPrice[];

//----
int upsize, losize;
double tmp[][2][2], ma[2][3];
datetime prevalltime[2];
string up_name, lo_name;
double haClose[2][2], haOpen[2][2], haHigh[2][2], haLow[2][2];
int draw_begin, trend[3];
double UpBand[2], LoBand[2];
datetime prevtime, prevhatime[2], preTime, ptime;
string IndicatorName, TF, short_name, prevmess, prevemail;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
if(TimeFrame == 0 || TimeFrame < Period()) TimeFrame = Period();
TF = tf(TimeFrame);
//----
IndicatorBuffers(6);

SetIndexBuffer(0, UpTrend); SetIndexStyle(0, DRAW_LINE);
SetIndexBuffer(1, DnTrend); SetIndexStyle(1, DRAW_LINE);
SetIndexBuffer(2,UpSignal); SetIndexStyle(2,DRAW_ARROW); SetIndexArrow(2,108);
SetIndexBuffer(3,DnSignal); SetIndexStyle(3,DRAW_ARROW); SetIndexArrow(3,108);
SetIndexBuffer(4, upPrice);
SetIndexBuffer(5, loPrice);
//----
up_name = averageName(UpBandMethod,upsize);
lo_name = averageName(LoBandMethod,losize);

IndicatorName = WindowExpertName();

short_name = IndicatorName + "[" + TF + "]";

IndicatorShortName(short_name);

SetIndexLabel(0,"UpTrend("+LoBandPrice+","+lo_name+"("+LoBandPeriod+"),"+DoubleToStr(LoBandDeviation,2)+")");
SetIndexLabel(1,"DnTrend("+UpBandPrice+","+up_name+"("+UpBandPeriod+"),"+DoubleToStr(UpBandDeviation,2)+")");
SetIndexLabel(2,"UpSignal("+LoBandPrice+","+lo_name+"("+LoBandPeriod+"),"+DoubleToStr(LoBandDeviation,2)+")");
SetIndexLabel(3,"DnSignal("+UpBandPrice+","+up_name+"("+UpBandPeriod+"),"+DoubleToStr(UpBandDeviation,2)+")");

//----
draw_begin=MathMax(UpBandPeriod,LoBandPeriod)*TimeFrame/Period();
SetIndexDrawBegin(0,draw_begin);
SetIndexDrawBegin(1,draw_begin);
SetIndexDrawBegin(2,draw_begin);
SetIndexDrawBegin(3,draw_begin);
//----
ArrayResize(tmp,MathMax(upsize,losize));
//----
return(0);
}
//+------------------------------------------------------------------+
//| AllTrendEnvelopes_v2.1 600+ |
//+------------------------------------------------------------------+
int start()
{
int shift, limit, y, cnt_bars=IndicatorCounted();

if(cnt_bars > 0) limit = Bars - cnt_bars - 1;
if(cnt_bars < 0) return(0);
if(cnt_bars < 1)
{
limit = Bars - 1;
for(int i=0;i<=limit;i++)
{
UpTrend[i] = EMPTY_VALUE;
DnTrend[i] = EMPTY_VALUE;
UpSignal[i] = EMPTY_VALUE;
DnSignal[i] = EMPTY_VALUE;
}
}
//----

if(TimeFrame != Period())
{
limit = MathMax(limit,TimeFrame/Period()+1);

for(shift = 0;shift < limit;shift++)
{
y = iBarShift(NULL,TimeFrame,Time[shift]);

UpTrend[shift] = iCustom(NULL,TimeFrame,IndicatorName,0,UpBandPrice,LoBandPrice,UpBandPeriod,LoBandPeriod,UpBandMethod,LoBandMethod,UpBandDeviation,LoBandDeviation,SignalMode,
"",AlertMode,SoundsNumber,SoundsPause,UpSound,DnSound,EmailMode,EmailsNumber,WarningMode,0,y);
DnTrend[shift] = iCustom(NULL,TimeFrame,IndicatorName,0,UpBandPrice,LoBandPrice,UpBandPeriod,LoBandPeriod,UpBandMethod,LoBandMethod,UpBandDeviation,LoBandDeviation,SignalMode,
"",AlertMode,SoundsNumber,SoundsPause,UpSound,DnSound,EmailMode,EmailsNumber,WarningMode,1,y);

if(SignalMode > 0)
{
UpSignal[shift] = iCustom(NULL,TimeFrame,IndicatorName,0,UpBandPrice,LoBandPrice,UpBandPeriod,LoBandPeriod,UpBandMethod,LoBandMethod,UpBandDeviation,LoBandDeviation,SignalMode,
"",AlertMode,SoundsNumber,SoundsPause,UpSound,DnSound,EmailMode,EmailsNumber,WarningMode,2,y);
DnSignal[shift] = iCustom(NULL,TimeFrame,IndicatorName,0,UpBandPrice,LoBandPrice,UpBandPeriod,LoBandPeriod,UpBandMethod,LoBandMethod,UpBandDeviation,LoBandDeviation,SignalMode,
"",AlertMode,SoundsNumber,SoundsPause,UpSound,DnSound,EmailMode,EmailsNumber,WarningMode,3,y);
}
}

return(0);
}
else
for(shift=limit;shift>=0;shift--)
{
if(prevtime != Time[shift])
{
UpBand[1] = UpBand[0];
LoBand[1] = LoBand[0];
trend[2] = trend[1];
trend[1] = trend[0];
prevtime = Time[shift];
}

if(UpBandPrice <= 6) upPrice[shift] = iMA(NULL,0,1,0,0,UpBandPrice,shift);
else
if(UpBandPrice > 6 && UpBandPrice <= 10) upPrice[shift] = HeikenAshi(0,UpBandPrice-7,shift);

if(LoBandPrice <= 6) loPrice[shift] = iMA(NULL,0,1,0,0,LoBandPrice,shift);
else
if(LoBandPrice > 6 && LoBandPrice <= 10) loPrice[shift] = HeikenAshi(1,LoBandPrice-7,shift);

UpBand[0] = allAverages(0,upPrice,UpBandPeriod,UpBandMethod,upsize,shift)*(1 + 0.01*UpBandDeviation);
LoBand[0] = allAverages(1,loPrice,LoBandPeriod,LoBandMethod,losize,shift)*(1 - 0.01*LoBandDeviation);

trend[0] = trend[1];
if(Close[shift] > UpBand[1] && trend[1] <= 0) trend[0]= 1;
if(Close[shift] < LoBand[1] && trend[1] >= 0) trend[0]=-1;

UpTrend[shift] = EMPTY_VALUE;
DnTrend[shift] = EMPTY_VALUE;
UpSignal[shift] = EMPTY_VALUE;
DnSignal[shift] = EMPTY_VALUE;

if(trend[0] > 0)
{
if(LoBand[0] < LoBand[1]) LoBand[0] = LoBand[1];
UpTrend[shift] = LoBand[0];
if(trend[1] <= 0 && SignalMode > 0) UpSignal[shift] = LoBand[0];
}
else
if (trend[y] < 0)
{
if(UpBand[0] > UpBand[1]) UpBand[0] = UpBand[1];
DnTrend[shift] = UpBand[0];
if(trend[1] >= 0 && SignalMode > 0) DnSignal[shift] = UpBand[0];
}
}
//----------
if(AlertMode > 0)
{
bool uptrend = trend[1] > 0 && trend[2] <= 0;
bool dntrend = trend[1] < 0 && trend[2] >= 0;

if(uptrend || dntrend)
{
if(isNewBar(TimeFrame))
{
BoxAlert(uptrend," : BUY Signal at " +DoubleToStr(Close[1],Digits));
BoxAlert(dntrend," : SELL Signal at "+DoubleToStr(Close[1],Digits));
}

WarningSound(uptrend,SoundsNumber,SoundsPause,UpSound,Time[1]);
WarningSound(dntrend,SoundsNumber,SoundsPause,DnSound,Time[1]);

if(EmailMode > 0)
{
EmailAlert(uptrend,"BUY" ," : BUY Signal at " +DoubleToStr(Close[1],Digits),EmailsNumber);
EmailAlert(dntrend,"SELL"," : SELL Signal at "+DoubleToStr(Close[1],Digits),EmailsNumber);
}
}
}
//----
return(0);
}
string averageName(int mode,int& arraysize)
{
string ma_name = "";

switch(mode)
{
case 1 : ma_name="EMA" ; break;
case 2 : ma_name="Wilder" ; break;
case 3 : ma_name="LWMA" ; break;
case 4 : ma_name="SineWMA" ; break;
case 5 : ma_name="TriMA" ; break;
case 6 : ma_name="LSMA" ; break;
case 7 : ma_name="SMMA" ; break;
case 8 : ma_name="HMA" ; break;
case 9 : ma_name="ZeroLagEMA"; break;
case 10: ma_name="DEMA" ; arraysize = 2; break;
case 11: ma_name="T3 basic" ; arraysize = 6; break;
case 12: ma_name="InstTrend" ; break;
case 13: ma_name="Median" ; break;
case 14: ma_name="GeoMean" ; break;
case 15: ma_name="REMA" ; break;
case 16: ma_name="ILRS" ; break;
case 17: ma_name="IE/2" ; break;
case 18: ma_name="TriMA_gen" ; break;
case 19: ma_name="VWMA" ; break;
case 20: ma_name="JSmooth" ; arraysize = 5; break;
case 21: ma_name="SMA_eq" ; break;
case 22: ma_name="ALMA" ; break;
case 23: ma_name="TEMA" ; arraysize = 4; break;
case 24: ma_name="T3" ; arraysize = 6; break;
case 25: ma_name="Laguerre" ; arraysize = 4; break;
case 26: ma_name="MD" ; break;
default: ma_name="SMA" ; break;
}

return(ma_name);

}

double allAverages(int index,double& price[],int period,int mode,int arraysize,int bar)
{
double MA[3];

if(prevalltime[index] != Time[bar])
{
ma[index][2] = ma[index][1];
ma[index][1] = ma[index][0];
for(int i=0;i<arraysize;i++) tmp[i][index][1] = tmp[i][index][0];

prevalltime[index] = Time[bar];
}

for(i=0;i<3;i++) MA[i] = ma[index][i];

switch(mode)
{
case 1 : ma[index][0] = EMA(price[bar],ma[index][1],period,bar); break;
case 2 : ma[index][0] = Wilder(price[bar],ma[index][1],period,bar); break;
case 3 : ma[index][0] = LWMA(price,period,bar); break;
case 4 : ma[index][0] = SineWMA(price,period,bar); break;
case 5 : ma[index][0] = TriMA(price,period,bar); break;
case 6 : ma[index][0] = LSMA(price,period,bar); break;
case 7 : ma[index][0] = SMMA(price,ma[index][1],period,bar); break;
case 8 : ma[index][0] = HMA(price,period,bar); break;
case 9 : ma[index][0] = ZeroLagEMA(price,ma[index][1],period,bar); break;
case 10: ma[index][0] = DEMA(index,0,price[bar],period,1,bar); break;
case 11: ma[index][0] = T3_basic(index,0,price[bar],period,0.7,bar); break;
case 12: ma[index][0] = ITrend(price,MA,period,bar); break;
case 13: ma[index][0] = Median(price,period,bar); break;
case 14: ma[index][0] = GeoMean(price,period,bar); break;
case 15: ma[index][0] = REMA(price[bar],MA,period,0.5,bar); break;
case 16: ma[index][0] = ILRS(price,period,bar); break;
case 17: ma[index][0] = IE2(price,period,bar); break;
case 18: ma[index][0] = TriMA_gen(price,period,bar); break;
case 19: ma[index][0] = VWMA(price,period,bar); break;
case 20: ma[index][0] = JSmooth(index,0,price[bar],period,1,bar); break;
case 21: ma[index][0] = SMA_eq(price,MA,period,bar); break;
case 22: ma[index][0] = ALMA(price,period,0.85,8,bar); break;
case 23: ma[index][0] = TEMA(index,price[bar],period,1,bar); break;
case 24: ma[index][0] = T3(index,0,price[bar],period,0.7,bar); break;
case 25: ma[index][0] = Laguerre(index,price[bar],period,4,bar); break;
case 26: ma[index][0] = McGinley(price[bar],MA,period,1,bar); break;
default: ma[index][0] = SMA(price,period,bar); break;
}

return(ma[index][0]);
}
// MA_Method=0: SMA - Simple Moving Average
double SMA(double& array[],int per,int bar)
{
double Sum = 0;
for(int i = 0;i < per;i++) Sum += array[bar+i];

return(Sum/per);
}
// MA_Method=1: EMA - Exponential Moving Average
double EMA(double price,double prev,int per,int bar)
{
if(bar >= Bars - 2) double ema = price;
else
ema = prev + 2.0/(1+per)*(price - prev);

return(ema);
}
// MA_Method=2: Wilder - Wilder Exponential Moving Average
double Wilder(double price,double prev,int per,int bar)
{
if(bar >= Bars - 2) double wilder = price; //SMA(array1,per,bar);
else
wilder = prev + (price - prev)/per;

return(wilder);
}
// MA_Method=3: LWMA - Linear Weighted Moving Average
double LWMA(double& array[],int per,int bar)
{
double Sum = 0;
double Weight = 0;

for(int i = 0;i < per;i++)
{
Weight+= (per - i);
Sum += array[bar+i]*(per - i);
}
if(Weight>0) double lwma = Sum/Weight;
else lwma = 0;
return(lwma);
}
// MA_Method=4: SineWMA - Sine Weighted Moving Average
double SineWMA(double& array[],int per,int bar)
{
double pi = 3.1415926535;
double Sum = 0;
double Weight = 0;

for(int i = 0;i < per;i++)
{
Weight+= MathSin(pi*(i+1)/(per+1));
Sum += array[bar+i]*MathSin(pi*(i+1)/(per+1));
}
if(Weight>0) double swma = Sum/Weight;
else swma = 0;
return(swma);
}
// MA_Method=5: TriMA - Triangular Moving Average
double TriMA(double& array[],int per,int bar)
{
double sma;
int len = MathCeil((per+1)*0.5);

double sum=0;
for(int i = 0;i < len;i++)
{
sma = SMA(array,len,bar+i);
sum += sma;
}
double trima = sum/len;

return(trima);
}
// MA_Method=6: LSMA - Least Square Moving Average (or EPMA, Linear Regression Line)
double LSMA(double& array[],int per,int bar)
{
double Sum=0;
for(int i=per; i>=1; i--) Sum += (i-(per+1)/3.0)*array[bar+per-i];
double lsma = Sum*6/(per*(per+1));
return(lsma);
}
// MA_Method=7: SMMA - Smoothed Moving Average
double SMMA(double& array[],double prev,int per,int bar)
{
if(bar == Bars - per) double smma = SMA(array,per,bar);
else
if(bar < Bars - per)
{
double Sum = 0;
for(int i = 0;i < per;i++) Sum += array[bar+i+1];
smma = (Sum - prev + array[bar])/per;
}

return(smma);
}
// MA_Method=8: HMA - Hull Moving Average by Alan Hull
double HMA(double& array[],int per,int bar)
{
double hma_tmp[];
int len = MathSqrt(per);

ArrayResize(hma_tmp,len);

if(bar == Bars - per) double hma = array[bar];
else
if(bar < Bars - per)
{
for(int i=0;i<len;i++) hma_tmp[i] = 2*LWMA(array,per/2,bar+i) - LWMA(array,per,bar+i);
hma = LWMA(hma_tmp,len,0);
}
return(hma);
}
// MA_Method=9: ZeroLagEMA - Zero-Lag Exponential Moving Average
double ZeroLagEMA(double& price[],double prev,int per,int bar)
{
double alfa = 2.0/(1+per);
int lag = 0.5*(per - 1);

if(bar >= Bars - lag) double zema = price[bar];
else
zema = alfa*(2*price[bar] - price[bar+lag]) + (1-alfa)*prev;

return(zema);
}
// MA_Method=10: DEMA - Double Exponential Moving Average by Patrick Mulloy
double DEMA(int index,int num,double price,double per,double v,int bar)
{
double alpha = 2.0/(1+per);
if(bar == Bars - 2) {double dema = price; tmp[num][index][0] = dema; tmp[num+1][index][0] = dema;}
else
if(bar < Bars - 2)
{
tmp[num ][index][0] = tmp[num ][index][1] + alpha*(price - tmp[num ][index][1]);
tmp[num+1][index][0] = tmp[num+1][index][1] + alpha*(tmp[num][index][0] - tmp[num+1][index][1]);
dema = tmp[num ][index][0]*(1+v) - tmp[num+1][index][0]*v;
}

return(dema);
}
// MA_Method=11: T3 by T.Tillson
double T3_basic(int index,int num,double price,int per,double v,int bar)
{
double dema1, dema2;
if(bar == Bars - 2)
{
double T3 = price;
for(int k=0;k<6;k++) tmp[num+k][index][0] = T3;
}
else
if(bar < Bars - 2)
{
dema1 = DEMA(index,num ,price,per,v,bar);
dema2 = DEMA(index,num+2,dema1,per,v,bar);
T3 = DEMA(index,num+4,dema2,per,v,bar);
}
return(T3);
}
// MA_Method=12: ITrend - Instantaneous Trendline by J.Ehlers
double ITrend(double& price[],double& array[],int per,int bar)
{
double alfa = 2.0/(per+1);
if(bar < Bars - 7)
double it = (alfa - 0.25*alfa*alfa)*price[bar] + 0.5*alfa*alfa*price[bar+1] - (alfa - 0.75*alfa*alfa)*price[bar+2] +
2*(1-alfa)*array[1] - (1-alfa)*(1-alfa)*array[2];
else
it = (price[bar] + 2*price[bar+1] + price[bar+2])/4;

return(it);
}
// MA_Method=13: Median - Moving Median
double Median(double& price[],int per,int bar)
{
double array[];
ArrayResize(array,per);

for(int i = 0; i < per;i++) array[i] = price[bar+i];
ArraySort(array);

int num = MathRound((per-1)/2);
if(MathMod(per,2) > 0) double median = array[num]; else median = 0.5*(array[num]+array[num+1]);

return(median);
}
// MA_Method=14: GeoMean - Geometric Mean
double GeoMean(double& price[],int per,int bar)
{
if(bar < Bars - per)
{
double gmean = MathPow(price[bar],1.0/per);
for(int i = 1; i < per;i++) gmean *= MathPow(price[bar+i],1.0/per);
}

return(gmean);
}
// MA_Method=15: REMA - Regularized EMA by Chris Satchwell
double REMA(double price,double& array[],int per,double lambda,int bar)
{
double alpha = 2.0/(per + 1);
if(bar >= Bars - 3) double rema = price;
else
rema = (array[1]*(1+2*lambda) + alpha*(price - array[1]) - lambda*array[2])/(1+lambda);

return(rema);
}
// MA_Method=16: ILRS - Integral of Linear Regression Slope
double ILRS(double& price[],int per,int bar)
{
double sum = per*(per-1)*0.5;
double sum2 = (per-1)*per*(2*per-1)/6.0;

double sum1 = 0;
double sumy = 0;
for(int i=0;i<per;i++)
{
sum1 += i*price[bar+i];
sumy += price[bar+i];
}
double num1 = per*sum1 - sum*sumy;
double num2 = sum*sum - per*sum2;

if(num2 != 0) double slope = num1/num2; else slope = 0;
double ilrs = slope + SMA(price,per,bar);

return(ilrs);
}
// MA_Method=17: IE/2 - Combination of LSMA and ILRS
double IE2(double& price[],int per,int bar)
{
double ie = 0.5*(ILRS(price,per,bar) + LSMA(price,per,bar));

return(ie);
}

// MA_Method=18: TriMAgen - Triangular Moving Average Generalized by J.Ehlers
double TriMA_gen(double& array[],int per,int bar)
{
int len1 = MathFloor((per+1)*0.5);
int len2 = MathCeil((per+1)*0.5);
double sum=0;
for(int i = 0;i < len2;i++) sum += SMA(array,len1,bar+i);
double trimagen = sum/len2;

return(trimagen);
}
// MA_Method=19: VWMA - Volume Weighted Moving Average
double VWMA(double& array[],int per,int bar)
{
double Sum = 0;
double Weight = 0;

for(int i = 0;i < per;i++)
{
Weight+= Volume[bar+i];
Sum += array[bar+i]*Volume[bar+i];
}
if(Weight>0) double vwma = Sum/Weight;
else vwma = 0;
return(vwma);
}
// MA_Method=20: JSmooth - Smoothing by Mark Jurik
double JSmooth(int index,int num,double price,int per,double pow,int bar)
{
double beta = 0.45*(per-1)/(0.45*(per-1)+2);
double alpha = MathPow(beta,pow);
if(bar == Bars - 2) {tmp[num+4][index][0] = price; tmp[num+0][index][0] = price; tmp[num+2][index][0] = price;}
else
if(bar < Bars - 2)
{
tmp[num+0][index][0] = (1-alpha)*price + alpha*tmp[num+0][index][1];
tmp[num+1][index][0] = (price - tmp[num+0][index][0])*(1-beta) + beta*tmp[num+1][index][1];
tmp[num+2][index][0] = tmp[num+0][index][0] + tmp[num+1][index][0];
tmp[num+3][index][0] = (tmp[num+2][index][0] - tmp[num+4][index][1])*MathPow((1-alpha),2) + MathPow(alpha,2)*tmp[num+3][index][1];
tmp[num+4][index][0] = tmp[num+4][index][1] + tmp[num+3][index][0];
}
return(tmp[num+4][index][0]);
}
// MA_Method=21: SMA_eq - Simplified SMA
double SMA_eq(double& price[],double& array[],int per,int bar)
{
if(bar == Bars - per) double sma = SMA(price,per,bar);
else
if(bar < Bars - per) sma = (price[bar] - price[bar+per])/per + array[1];

return(sma);
}
// MA_Method=22: ALMA by Arnaud Legoux / Dimitris Kouzis-Loukas / Anthony Cascino
double ALMA(double& price[],int per,double offset,double sigma,int bar)
{
double m = MathFloor(offset * (per - 1));
double s = per/sigma;

double w, sum =0, wsum = 0;
for (int i=0;i < per;i++)
{
w = MathExp(-((i - m)*(i - m))/(2*s*s));
wsum += w;
sum += price[bar+(per-1-i)] * w;
}

if(wsum != 0) double alma = sum/wsum;

return(alma);
}
// MA_Method=23: TEMA - Triple Exponential Moving Average by Patrick Mulloy
double TEMA(int index,double price,int per,double v,int bar)
{
double alpha = 2.0/(per+1);

if(bar == Bars - 2) {tmp[0][index][0] = price; tmp[1][index][0] = price; tmp[2][index][0] = price;}
else
if(bar < Bars - 2)
{
tmp[0][index][0] = tmp[0][index][1] + alpha *(price - tmp[0][index][1]);
tmp[1][index][0] = tmp[1][index][1] + alpha *(tmp[0][index][0] - tmp[1][index][1]);
tmp[2][index][0] = tmp[2][index][1] + alpha *(tmp[1][index][0] - tmp[2][index][1]);
tmp[3][index][0] = tmp[0][index][0] + v*(tmp[0][index][0] + v*(tmp[0][index][0]-tmp[1][index][0]) - tmp[1][index][0] - v*(tmp[1][index][0] - tmp[2][index][0]));
}

return(tmp[3][index][0]);
}
// MA_Method=24: T3 by T.Tillson (correct version)
double T3(int index,int num,double price,int per,double v,int bar)
{
double len = MathMax((per + 5.0)/3.0-1,1), dema1, dema2;

if(bar == Bars - 2)
{
double T3 = price;
for(int k=0;k<6;k++) tmp[num+k][index][0] = T3;
}
else
if(bar < Bars - 2)
{
dema1 = DEMA(index,num ,price,len,v,bar);
dema2 = DEMA(index,num+2,dema1,len,v,bar);
T3 = DEMA(index,num+4,dema2,len,v,bar);
}

return(T3);
}
// MA_Method=25: Laguerre filter by J.Ehlers
double Laguerre(int index,double price,int per,int order,int bar)
{
double gamma = 1-10.0/(per+9);
double aPrice[];

ArrayResize(aPrice,order);

for(int i=0;i<order;i++)
{
if(bar >= Bars - order) tmp[i][index][0] = price;
else
{
if(i == 0) tmp[i][index][0] = (1 - gamma)*price + gamma*tmp[i][index][1];
else
tmp[i][index][0] = -gamma * tmp[i-1][index][0] + tmp[i-1][index][1] + gamma * tmp[i][index][1];

aPrice[i] = tmp[i][index][0];
}
}
double laguerre = TriMA_gen(aPrice,order,0);
return(laguerre);
}
// MA_Method=26: MD - McGinley Dynamic
double McGinley(double price,double& array[],int per,int _start,int bar)
{
if(bar == Bars - _start) double md = price;
else
if(bar < Bars - _start) md = array[1] + (price - array[1])/(per*MathPow(price/array[1],4)/2);

return(md);
}

// HeikenAshi Price: 7 - Close,8 - Open,9 - High,10 - Low
double HeikenAshi(int index,int price,int bar)
{
if(prevhatime[index] != Time[bar])
{
haClose[index][1] = haClose[index][0];
haOpen [index][1] = haOpen [index][0];
haHigh [index][1] = haHigh [index][0];
haLow [index][1] = haLow [index][0];
prevhatime[index] = Time[bar];
}

if(bar == Bars - 1)
{
haClose[index][0] = Close[bar];
haOpen [index][0] = Open [bar];
haHigh [index][0] = High [bar];
haLow [index][0] = Low [bar];
}
else
{
haClose[index][0] = (Open[bar] + High[bar] + Low[bar] + Close[bar])/4;
haOpen [index][0] = (haOpen[index][1] + haClose[index][1])/2;
haHigh [index][0] = MathMax(High[bar],MathMax(haOpen[index][0],haClose[index][0]));
haLow [index][0] = MathMin(Low [bar],MathMin(haOpen[index][0],haClose[index][0]));
}

switch(price)
{
case 0: return(haClose[index][0]); break;
case 1: return(haOpen [index][0]); break;
case 2: return(haHigh [index][0]); break;
case 3: return(haLow [index][0]); break;
default: return(haClose[index][0]); break;
}
}
bool isNewBar(int tf)
{
static datetime pTime;
bool res=false;

if(tf >= 0)
{
if (iTime(NULL,tf,0)!= pTime)
{
res=true;
pTime=iTime(NULL,tf,0);
}
}
else res = true;

return(res);
}
bool BoxAlert(bool cond,string text)
{
string mess = IndicatorName + "("+Symbol()+","+TF + ")" + text;

if (cond && mess != prevmess)
{
Alert (mess);
prevmess = mess;
return(true);
}

return(false);
}
bool Pause(int sec)
{
if(TimeCurrent() >= preTime + sec) {preTime = TimeCurrent(); return(true);}

return(false);
}
void WarningSound(bool cond,int num,int sec,string sound,datetime ctime)
{
static int i;

if(cond)
{
if(ctime != ptime) i = 0;
if(i < num && Pause(sec)) {PlaySound(sound); ptime = ctime; i++;}
}
}
bool EmailAlert(bool cond,string text1,string text2,int num)
{
string subj = "New " + text1 +" Signal from " + IndicatorName + "!!!";
string mess = IndicatorName + "("+Symbol()+","+TF + ")" + text2;

if (cond && mess != prevemail)
{
if(subj != "" && mess != "") for(int i=0;i<num;i++) SendMail(subj, mess);
prevemail = mess;
return(true);
}

return(false);
}

string tf(int timeframe)
{
switch(timeframe)
{
case PERIOD_M1: return("M1");
case PERIOD_M5: return("M5");
case PERIOD_M15: return("M15");
case PERIOD_M30: return("M30");
case PERIOD_H1: return("H1");
case PERIOD_H4: return("H4");
case PERIOD_D1: return("D1");
case PERIOD_W1: return("W1");
case PERIOD_MN1: return("MN1");
default: return("Unknown timeframe");
}
}
LEARN THE PROCESS,FOLLOW THE PROCESS
 
 
  • Post #379
  • Quote
  • Feb 26, 2017 4:34am Feb 26, 2017 4:34am
  •  mattrader
  • | Joined Sep 2007 | Status: Member | 504 Posts
Thanks CJA great tool.
 
 
  • Post #380
  • Quote
  • Feb 27, 2017 11:28pm Feb 27, 2017 11:28pm
  •  cja
  • Joined Feb 2007 | Status: Member | 1,848 Posts
Apologies for the late reply I have been out of internet range for the last 6 days. No mail No Forex No phone its been absolute bliss

Quoting abedalnasser
Disliked
hiiii all thank you all about this great work , really its a great i have question i think all indicator here work on a current bar , if i want used it on the last closed bar ... is it possible ??!!!!! what the setting of indicator if i want use it on last bar ? thanks advance
Ignored
It is possible but the internal code would need to be altered however I am not prepared to change all the dashboards on this thread to that setup, perhaps if you want a particular dashboard I may consider it.


[quote=nadiakhan;9598892]SIR i,l be thankful to you if you code this indicator to same like heiken ashi dashboard indicator.the problem is heiken ashi tell only current bar but this indicator (all trend envelope) tell current swing.its is very easy to follow higher timeframe swing on lowerframe chart.i need this indicator into dashboard indicator same like your coded mtf heiken ashi dashboard indicator.sir also merge option of this indicator and setting of your heiken ashi dashboard indicator to change setting.thanks for helping new traders.
Sorry I am very busy at the moment and do not have the spare time to look at your request.
Trade what you see not what you hope
 
 
  • Platform Tech
  • /
  • MTF Dashboard thread
  • Reply to Thread
    • 1 1718Page 192021 46
    • 1 18Page 1920 46
0 traders viewing now
  • More
Top of Page
  • Facebook
  • Twitter
About FF
  • Mission
  • Products
  • User Guide
  • Media Kit
  • Blog
  • Contact
FF Products
  • Forums
  • Trades
  • Calendar
  • News
  • Market
  • Brokers
  • Trade Explorer
FF Website
  • Homepage
  • Search
  • Members
  • Report a Bug
Follow FF
  • Facebook
  • Twitter

FF Sister Sites:

  • Metals Mine
  • Energy EXCH
  • Crypto Craft

Forex Factory® is a brand of Fair Economy, Inc.

Terms of Service / ©2022