Price Data Components
Miscellaneous
0
Views
0
Downloads
0
Favorites
Today_Trend_last
//+------------------------------------------------------------------+
//| Today Trend.mq4 |
//| Copyright © 2006, Jason Rivera |
//| http://www.jasonerivera.com |
//+------------------------------------------------------------------+
// Based on an excel spreadsheet posted by toro55 @
// http://www.strategybuilderfx.com/forums/showthread.php?s=&threadid=16130
// Posted for the benefit of those at the StrategyBuilder
// community.
#property copyright "Copyright © 2006, Jason Rivera"
#property link "http://www.jasonerivera.com"
//----
#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 Blue
#property indicator_color2 Red
#property indicator_color3 YellowGreen
#property indicator_color4 Red
//----External Variables
extern int PROFIT_TARGET=30;
extern bool SHOW_TARGET=true;
extern bool SHOW_REVERSAL=true;
//---- buffers
double UpBuffer[];
double DownBuffer[];
double TargetBuffer[];
double ReversalBuffer[];
//----variables
double H=0, L=0, O=0, C=0, R=0, S=0, Pivot=0, Spread=0, RevRate=0, MaxLoss=0, max=0, draw=0;
double S2,R2;
int action=0, action1=0, action2=0, action3=0;
int Under_Resistance=0;
string res="";
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
SetIndexLabel(0,"Go Long");
SetIndexLabel(1,"Go Short");
SetIndexLabel(2,"Profit Target Line");
SetIndexLabel(3,"Stop/Reversal Line");
SetIndexStyle(0,DRAW_ARROW,STYLE_SOLID,1);
SetIndexBuffer(0,UpBuffer);
SetIndexStyle(1,DRAW_ARROW,STYLE_SOLID,1);
SetIndexBuffer(1,DownBuffer);
SetIndexStyle(2,DRAW_LINE,STYLE_SOLID,1);
SetIndexBuffer(2,TargetBuffer);
SetIndexStyle(3,DRAW_LINE,STYLE_SOLID,1);
SetIndexBuffer(3,ReversalBuffer);
//----
SetIndexEmptyValue(0,0);
SetIndexEmptyValue(1,0);
SetIndexEmptyValue(2,0);
SetIndexEmptyValue(3,0);
SetIndexArrow(0,236);
SetIndexArrow(1,238);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
int pos =0;
int m=0;
int d=0;
int y=0;
string dt="";
datetime some_time=0;
int shift=0;
int tc=1440;
int min=0;
int hr=0;
int thour=0, tmin=0;
//----
//script can only be run on daily chart or lower timeframe
if(Period() > 1440)
{
Print("Indicator must be run on Daily chart or lesser timeframe");
return(0);
}
//---- check for possible errors
if(counted_bars<0) return(-1);
//---- last counted bar will be recounted
if(counted_bars>0) counted_bars--;
//----
pos=Bars-counted_bars;
//----
while(pos>=0)
{
m=TimeMonth(Time[pos]);
d=TimeDay(Time[pos]);
y=TimeYear(Time[pos]);
min=TimeMinute(Time[pos]);
hr=TimeHour(Time[pos]);
dt=y + "." + m + "." + d + " " + hr + ":" + min;
some_time=StrToTime(dt);
//find the proper shift of the daily bar having the same date as this timeframe's bar having the current shift
//we must do this in order to be able to run the indicator on smaller time frames in light of a bigger one
shift=iBarShift(NULL,tc,some_time); //returns the correct shift of the current daily bar
thour=TimeHour(iTime(NULL,60,iBarShift(NULL,60,some_time)));
tmin=TimeMinute(iTime(NULL,Period(),pos));
//create price reference lines
if(SHOW_REVERSAL==true) {ReversalBuffer[pos]=ReversalBuffer[pos+1];}
if(SHOW_TARGET==true) {TargetBuffer[pos]=TargetBuffer[pos+1];}
//only trade on Open of Day; check for hour 0 && minute 0 for intraday timeframes
if(thour==0 && tmin==0)
{
H=iHigh(NULL,tc,shift+1); //previous daily bar's high
L=iLow(NULL,tc,shift+1); //previous daily bar's low
C=iClose(NULL,tc,shift+1); //previous daily bar's close
O=Open[pos]; //current Period() bar's open
//----
Spread=H - L;
/*
Pivot = (Spread*2)/5;
R = H - Pivot;
S = L + Pivot;
*/
Pivot=(H + L + C)/3;
R=2*Pivot - L;
S=2*Pivot - H;
S2=Pivot - (R - S);
R2=Pivot + (R-S);
//reset Buy/Sell actions
action1=0;
action2=0;
action3=0;
Under_Resistance=0;
//----
if(O < R)
{
Under_Resistance=1;
}
else
{
Under_Resistance=-1;
}
//Calculate the 1st action
if(O < H && O > R) action1=-1; //"Sell"
if(O > L && O < S) action1=1; //"Buy"
//Calculate the 2nd action
if(Under_Resistance==1 && (R-O) < (O-S)) action2=-1; //"Sell"
if(Under_Resistance==1 && (R-O)>=(O-S)) action2=1; //"Buy"
//Calculate the 3rd action
if(O<=L) action3=-1; //"Sell"
if(O>=H) action3=1; //"Buy"
//Calculate the Reversal Rate
/*
if(action2 == 1) RevRate = L;
if(action2 == -1) RevRate = H;
if(action1 == -1) RevRate = H;
if(action1 == 1) RevRate = L;
if(action3 == 1) RevRate = H;
if(action3 == -1) RevRate = L;
*/
if(action2==1) RevRate=S;
if(action2==-1) RevRate=R;
if(action1==-1) RevRate=R2;
if(action1==1) RevRate=S2;
if(action3==1)
{
if(O<=R2) RevRate=H;
if(O > R2) RevRate=R2;
}
if(action3==-1)
{
if(O>=S2) RevRate=L;
if(O < S2) RevRate=S2;
}
//Calculate the Max Loss
if(action2==1) MaxLoss=O - S;
if(action2==-1) MaxLoss=R - O;
if(action1==-1) MaxLoss=R2 - O;
if(action1==1) MaxLoss=O - S2;
if(action3==1)
{
if(O<=R2) MaxLoss=O - H;
if(O > R2) MaxLoss=O - R2;
}
if(action3==-1)
{
if(O<=R2) MaxLoss=L - O;
if(O > R2) MaxLoss=S2 - O;
}
/*
if(action2 == 1) MaxLoss = O - L;
if(action2 == -1) MaxLoss = H - O;
if(action1 == -1) MaxLoss = H - O;
if(action1 == 1) MaxLoss = O - L;
if(action3 == 1) MaxLoss = O - H;
if(action3 == -1) MaxLoss = L - O;
*/
if(action1!=0) action=action1;
if(action2!=0) action=action2;
if(action3!=0) action=action3;
if(action==1)//buy
{
UpBuffer[pos]=O;
//----
if(SHOW_TARGET==true)
{
TargetBuffer[pos+1]=0; //keep line from warping to next value; comment line to see on daily timeframe
TargetBuffer[pos]=O + (PROFIT_TARGET*Point);
}
if(SHOW_REVERSAL==true)
{
ReversalBuffer[pos+1]=0; //keep line from warping to next value; comment line to see on daily timeframe
ReversalBuffer[pos]=RevRate;
}
}
if(action==-1)//sell
{
DownBuffer[pos]=O;
//----
if(SHOW_TARGET==true)
{
TargetBuffer[pos+1]=0; //keep line from warping to next value; comment line to see on daily timeframe
TargetBuffer[pos]=O - (PROFIT_TARGET*Point);
}
if(SHOW_REVERSAL==true)
{
ReversalBuffer[pos+1]=0; //keep line from warping to next value; comment line to see on daily timeframe
ReversalBuffer[pos]=RevRate;
}
}
}
pos--;
}
Comment(ToString(action), " @ ", O);
//----
return(0);
}
string ToString(int action)
{
if(action==1) return("Buy");
if(action==-1) return("Sell");
if(action==0) return("No Action");
}
//+------------------------------------------------------------------+
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
---