This script is designed to display arrows on a chart, indicating potential buy or sell signals based on the "BrainTrend1Stop" indicator calculated on a different timeframe than the chart it's displayed on.
Here's how it works:
-
Setting the Stage: The script first defines the input parameter:
TimeFrame
. This allows the user to specify which timeframe (e.g., 1-minute, 5-minute, 1-hour, daily) the BrainTrend1Stop indicator should be calculated on. If no timeframe is given it uses the timeframe of the current chart. -
Drawing the Arrows: The script sets up two "buffers." These buffers are like invisible spreadsheets where the script will store the values that determine where to draw the arrows. One buffer is for "buy" signals (magenta arrows), and the other is for "sell" signals (aqua arrows).
-
Finding the Right Time: The script figures out where each of the timeframe that the BrainTrend1Stop is calculated is, on the current chart's timeframe. It basically aligns the different timeframes so that the indicator can be placed on the current chart in the correct spot.
-
Calculating and Displaying: For each bar (period of time) on the current chart, the script retrieves the value from the external "BrainTrend1Stop" indicator, calculated on the timeframe selected at step 1. These values represent the potential buy/sell signals. Based on these values, it places either a magenta (buy) or aqua (sell) arrow on the current chart.
In essence, the script acts as a bridge, taking the BrainTrend1Stop indicator's signals from a different timeframe and visually representing them on the chart you are currently viewing, making it easier to spot trends across different time scales.
//+------------------------------------------------------------------+
//| MTF_BrainTrend1Stop.mq4 |
//| Copyright © 2006, O.Petersen |
//| |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006, O.Petersen"
#property link "http://www.forex-tsd.com"
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Magenta
#property indicator_color2 Aqua
//---- input parameters
/*************************************************************************
PERIOD_M1 1
PERIOD_M5 5
PERIOD_M15 15
PERIOD_M30 30
PERIOD_H1 60
PERIOD_H4 240
PERIOD_D1 1440
PERIOD_W1 10080
PERIOD_MN1 43200
You must use the numeric value of the timeframe that you want to use
when you set the TimeFrame' value with the indicator inputs.
---------------------------------------
PRICE_CLOSE 0 Close price.
PRICE_OPEN 1 Open price.
PRICE_HIGH 2 High price.
PRICE_LOW 3 Low price.
PRICE_MEDIAN 4 Median price, (high+low)/2.
PRICE_TYPICAL 5 Typical price, (high+low+close)/3.
PRICE_WEIGHTED 6 Weighted close price, (high+low+close+close)/4.
You must use the numeric value of the Applied Price that you want to use
when you set the 'applied_price' value with the indicator inputs.
**************************************************************************/
extern int TimeFrame=0;
double ExtMapBuffer1[];
double ExtMapBuffer2[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicator line
SetIndexBuffer(0,ExtMapBuffer1);
SetIndexBuffer(1,ExtMapBuffer2);
SetIndexStyle(0,DRAW_ARROW);
SetIndexStyle(1,DRAW_ARROW);
SetIndexArrow(0,167);
SetIndexArrow(1,167);
//---- name for DataWindow and indicator subwindow label
switch(TimeFrame)
{
case 1 : string TimeFrameStr="Period_M1"; break;
case 5 : TimeFrameStr="Period_M5"; break;
case 15 : TimeFrameStr="Period_M15"; break;
case 30 : TimeFrameStr="Period_M30"; break;
case 60 : TimeFrameStr="Period_H1"; break;
case 240 : TimeFrameStr="Period_H4"; break;
case 1440 : TimeFrameStr="Period_D1"; break;
case 10080 : TimeFrameStr="Period_W1"; break;
case 43200 : TimeFrameStr="Period_MN1"; break;
default : TimeFrameStr="Current Timeframe";
}
IndicatorShortName("MTF_BrainTrend1Stop ("+TimeFrameStr+")");
}
//----
return(0);
//+------------------------------------------------------------------+
//| MTF RSI |
//+------------------------------------------------------------------+
int start()
{
datetime TimeArray[];
int i,limit,y=0,counted_bars=IndicatorCounted();
// Plot defined time frame on to current time frame
ArrayCopySeries(TimeArray,MODE_TIME,Symbol(),TimeFrame);
limit=Bars-counted_bars;
for(i=0,y=0;i<limit;i++)
{
if (Time[i]<TimeArray[y]) y++;
/***********************************************************
Add your main indicator loop below. You can reference an existing
indicator with its iName or iCustom.
Rule 1: Add extern inputs above for all neccesary values
Rule 2: Use 'TimeFrame' for the indicator time frame
Rule 3: Use 'y' for your indicator's shift value
**********************************************************/
ExtMapBuffer1[i]=iCustom(NULL,TimeFrame,"BrainTrend1Stop",0,y) ;
ExtMapBuffer2[i]=iCustom(NULL,TimeFrame,"BrainTrend1Stop",1,y) ;
}
//
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
---