Miscellaneous
0
Views
0
Downloads
0
Favorites
BtTrendTrigger-T
//+------------------------------------------------------------------+
//| BtTrendTrigger-T.mq4 |
//| |
//| |
//+------------------------------------------------------------------+
#property copyright ""
#property link ""
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Gold
#property indicator_color2 Red
//---- input parameters
extern int TTFbars=15; //15=default number of bars for computation.
extern int t3_period=5;
extern double b=0.7;
extern int ppor=50,mpor=-50;
extern int barBegin=1000; //<1000 recommended for faster speed, 0=All bars computed & plotted.
// Variable Specific:
string IndicatorName="py.TTF";
string Version="S01";
double HighestHighRecent;
double HighestHighOlder;
double LowestLowRecent;
double LowestLowOlder;
double BuyPower;
double SellPower;
double TTF;
double t3;
double e1;
double e2;
double e3;
double e4;
double e5;
double e6;
double c1;
double c2;
double c3;
double c4;
double r;
double w1;
double w2;
double b2;
double b3;
// Variable Generic, mostly for module flow control:
int shift;
int count;
bool is_First=True;
int loopBegin;
int prevBars;
int PrevTime;
int tick;
int prevShift=99999;
int badPlotBars; //Discarded first (old) bars with bad computed values
int firstPlotBar;
double CheckSum;
double CheckSumPrev;
string Msg;
//---- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,ExtMapBuffer1);
SetIndexStyle(1,DRAW_LINE);
SetIndexBuffer(1,ExtMapBuffer2);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start(){
b2 = b * b;
b3 = b2 * b;
c1 = (-b3);
c2 = (3 * (b2 + b3));
c3 = (-3) * (2 * b2 + b + b3);
c4 = (1 + 3 * b + b3 + 3 * b2);
r = t3_period;
if(r < 1) r = 1;
r = 1 + 0.5 * (r - 1);
w1 = 2 / (r + 1);
w2 = 1 - w1;
/*======================*/
/* Begin Pre-Loop Setup */
/*======================*/
//Check for additional bars loading or total reloadng.
if(Bars < prevBars || Bars - prevBars > 1)is_First = True;
prevBars = Bars;
//Have any Inputs changed?
CheckSum = TTF + barBegin;
if(CheckSum != CheckSumPrev)is_First = True;
CheckSumPrev = CheckSum;
//--------------------------------------------------------------------
if(is_First){
/*This block executes ONLY First Time for each Attachment-To-Chart. If MT is closed or another Profile is selected,
the values & parameters for this module are saved, and when MT or this Profile is restarted, it would not be the First
Time Attachment-To-Chart. So this block would not execute unless the value of "Bars" has changed. */
/*==============*/
/* Check Inputs */
/*==============*/
if(0 > TTFbars || TTFbars > 299){
Msg = IndicatorName + " **Input Error** :" + " TTFbars must be between 0 and 300. Cannot=" + TTFbars;
Alert(Msg);
return(0);
}
//BarIndexNumber=shift=Bars-1..0
if(barBegin > 0 && barBegin < Bars - 1)loopBegin = barBegin; else loopBegin = Bars - 1;
/*===================================*/
/* Specific for particular indicator */
/*===================================*/
loopBegin = loopBegin - TTFbars; //Cannot compute early bars
/* end Specific */
is_First = False;
}
/*======================*/
/* end Pre-Loop Setup */
/*======================*/
loopBegin = loopBegin + 1; //Replot previous bar
for(shift = loopBegin;shift>=0;shift--){
/*=================================*/
/* Standard Specific Computations */
/*=================================*/
HighestHighRecent = High[Highest(NULL,0,MODE_HIGH,TTFbars,shift)];
HighestHighOlder = High[Highest(NULL,0,MODE_HIGH,TTFbars,shift + TTFbars)];
LowestLowRecent = Low [Lowest(NULL,0,MODE_LOW,TTFbars,shift)];
LowestLowOlder = Low [Lowest(NULL,0,MODE_LOW,TTFbars,shift+TTFbars)];
BuyPower = HighestHighRecent - LowestLowOlder;
SellPower = HighestHighOlder - LowestLowRecent;
TTF = (BuyPower - SellPower) / (0.5 * (BuyPower + SellPower)) * 100;
e1 = w1 * TTF + w2 * e1;
e2 = w1 * e1 + w2 * e2;
e3 = w1 * e2 + w2 * e3;
e4 = w1 * e3 + w2 * e4;
e5 = w1 * e4 + w2 * e5;
e6 = w1 * e5 + w2 * e6;
TTF = c1 * e6 + c2 * e5 + c3 * e4 + c4 * e3;
ExtMapBuffer1[shift]=TTF;
//Dual value trigger +/-100
if(TTF >= 0)ExtMapBuffer2[shift]=ppor; else ExtMapBuffer2[shift]=mpor;
loopBegin = loopBegin - 1;
}
return(0);
}
//+------------------------------------------------------------------+
Comments
Markdown Formatting Guide
# H1
## H2
### H3
**bold text**
*italicized text*
[title](https://www.example.com)

`code`
```
code block
```
> blockquote
- Item 1
- Item 2
1. First item
2. Second item
---