Indicators Used
0
Views
0
Downloads
0
Favorites
TF_15B15D.01
//+------------------------------------------------------------------+
//| Trend Friend |
//| TF_1.01.mq4 |
//| Copyright © 2008 Tom Balfe |
//| |
//| This is a trend indicator that gives you three signals on |
//| multiple timeframes. It bases it's recommendations on short and |
//| long moving averages and MACD. |
//| |
//| Version: 1.01 |
//| |
//| Changelog: |
//| |
//| 1.01 - fixed arrows stuff |
//| 1.00 - first version,unreleased, incomplete |
//| |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008 Tom Balfe"
#property link "redcarsarasota@yahoo.com"
#property indicator_separate_window
//--- spacing
int scaleX=120,scaleY=20,offsetX=200,offsetY=4,fontSize=8;
//--- arrays for various things
int TF[] = {1,5,15,30,60,240};
string periodStr[] = {"1 MIN:","5 MIN:","15 MIN:","30 MIN:","1 HR:","4 HR:"};
string signalNameStr[] = {"MACD","EMA Set1","EMA Set2"};
//+------------------------------------------------------------------+
//| USER ADJUSTABLE STUFF |
//+------------------------------------------------------------------+
extern string MACD_Settings = "=== MACD Settings ===";
extern int FastEMA = 12;
extern int SlowEMA = 24;
extern int MACDsp = 6;
extern string EMA_Settings = "=== MA Settings ===";
extern int shortP1 = 7;
extern int shortP2 = 14;
extern int longP1 = 34;
extern int longP2 = 72;
extern string My_Symbols = "=== Wingdings Symbols ===";
extern int sBuy = 233;
extern int sSell = 234;
extern int sWait = 54;
//+------------------------------------------------------------------+
//| Initialization function |
//+------------------------------------------------------------------+
int init()
{
//-- indicator short name
IndicatorShortName("Trend Friend 1.01 ");
return(0);
}
//+------------------------------------------------------------------+
//| Deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//-- need to delete objects should user remove indicator
ObjectsDeleteAll(0,OBJ_LABEL);
//-- delete timeframe text labels
for(int x=0;x<6;x++)
for (int y=0;y<3;y++)
{ ObjectDelete("textTF"+x+y); }
//-- delete indicator text labels
for(y=0;y<3;y++)
{ ObjectDelete("textLab"+y); }
//-- delete indicator arrows
for (x=0;x<6;x++)
for (y=0;y<3;y++)
{ ObjectDelete("doubleArr"+x+y); }
//-- delete indicator text
for (x=0;x<6;x++)
for (y=0;y<3;y++)
{ ObjectDelete("textInd"+x+y); }
return(0);
}
//+------------------------------------------------------------------+
//| MAIN LOOP |
//+------------------------------------------------------------------+
int start()
{
//--- create timeframe text labels
for (int x=0;x<6;x++)
for (int y=0;y<3;y++)
{
ObjectCreate("textTF"+x+y,OBJ_LABEL,WindowFind("Trend Friend 1.01 "),0,0);
ObjectSetText("textTF"+x+y,periodStr[x],fontSize,"Arial Bold",LightSteelBlue);
ObjectSet("textTF"+x+y,OBJPROP_CORNER,0);
ObjectSet("textTF"+x+y,OBJPROP_XDISTANCE,x*scaleX+offsetX);
ObjectSet("textTF"+x+y,OBJPROP_YDISTANCE,y*scaleY+offsetY);
}
//--- create indicator text labels
for (y=0;y<3;y++)
{
ObjectCreate("textLab"+y,OBJ_LABEL,WindowFind("Trend Friend 1.01 "),0,0);
ObjectSetText("textLab"+y,signalNameStr[y],fontSize,"Arial Bold",Black);
ObjectSet("textLab"+y,OBJPROP_CORNER,0);
ObjectSet("textLab"+y,OBJPROP_XDISTANCE,offsetX-65);
ObjectSet("textLab"+y,OBJPROP_YDISTANCE,y*scaleY+offsetY);
}
//--- create blanks for arrows
for (x=0;x<6;x++)
for (y=0;y<3;y++)
{
ObjectCreate("doubleArr"+x+y,OBJ_LABEL,WindowFind("Trend Friend 1.01 "),0,0);
ObjectSetText("doubleArr"+x+y," ",10,"Wingdings",Black);
ObjectSet("doubleArr"+x+y,OBJPROP_CORNER,0);
ObjectSet("doubleArr"+x+y,OBJPROP_XDISTANCE,x*scaleX+(offsetX+80)); // scaleX == 120, offsetX == 200
ObjectSet("doubleArr"+x+y,OBJPROP_YDISTANCE,y*scaleY+offsetY);
}
//--- create blanks for text
for (x=0;x<6;x++)
for (y=0;y<3;y++)
{
ObjectCreate("textInd"+x+y,OBJ_LABEL,WindowFind("Trend Friend 1.01 "),0,0);
ObjectSetText("textInd"+x+y," ",9,"Arial Bold",Black);
ObjectSet("textInd"+x+y,OBJPROP_CORNER,0);
ObjectSet("textInd"+x+y,OBJPROP_XDISTANCE,x*scaleX+(offsetX+45)); // scaleX == 120, offsetX == 200
ObjectSet("textInd"+x+y,OBJPROP_YDISTANCE,y*scaleY+offsetY);
}
//--- MACD arrows
for(x=0;x<6;x++)
{
if ((iMACD(NULL,TF[x],FastEMA,SlowEMA,MACDsp,0,MODE_MAIN,0))>0) { // macd above zero
if ((iMACD(NULL,TF[x],FastEMA,SlowEMA,MACDsp,0,MODE_MAIN,0)) >
(iMACD(NULL,TF[x],FastEMA,SlowEMA,MACDsp,0,MODE_SIGNAL,0)))
ObjectSetText("doubleArr"+x+"0",CharToStr(sBuy),fontSize,"Wingdings",Lime);
else if
((iMACD(NULL,TF[x],FastEMA,SlowEMA,MACDsp,0,MODE_MAIN,0)) <
(iMACD(NULL,TF[x],FastEMA,SlowEMA,MACDsp,0,MODE_SIGNAL,0)))
ObjectSetText("doubleArr"+x+"0",CharToStr(sSell),fontSize,"Wingdings",Red);
else
ObjectSetText("doubleArr"+x+"0",CharToStr(sWait),fontSize,"Wingdings",Black);
}
else if ((iMACD(NULL,TF[x],FastEMA,SlowEMA,MACDsp,0,MODE_MAIN,0))<0) { // macd below zero
if ((iMACD(NULL,TF[x],FastEMA,SlowEMA,MACDsp,0,MODE_MAIN,0)) <
(iMACD(NULL,TF[x],FastEMA,SlowEMA,MACDsp,0,MODE_SIGNAL,0)))
ObjectSetText("doubleArr"+x+"0",CharToStr(sSell),fontSize,"Wingdings",Red);
else if
((iMACD(NULL,TF[x],FastEMA,SlowEMA,MACDsp,0,MODE_MAIN,0)) >
(iMACD(NULL,TF[x],FastEMA,SlowEMA,MACDsp,0,MODE_SIGNAL,0)))
ObjectSetText("doubleArr"+x+"0",CharToStr(sBuy),fontSize,"Wingdings",Lime);
else
ObjectSetText("doubleArr"+x+"0",CharToStr(sWait),fontSize,"Wingdings",Black);
}
}
//--- MACD text
for(x=0;x<6;x++)
{
if ((iMACD(NULL,TF[x],FastEMA,SlowEMA,MACDsp,0,MODE_MAIN,0))>0) { // macd above zero
if ((iMACD(NULL,TF[x],FastEMA,SlowEMA,MACDsp,0,MODE_MAIN,0)) >
(iMACD(NULL,TF[x],FastEMA,SlowEMA,MACDsp,0,MODE_SIGNAL,0)))
ObjectSetText("textInd"+x+"0"," BUY",9,"Arial Bold",Lime);
else if
((iMACD(NULL,TF[x],FastEMA,SlowEMA,MACDsp,0,MODE_MAIN,0)) <
(iMACD(NULL,TF[x],FastEMA,SlowEMA,MACDsp,0,MODE_SIGNAL,0)))
ObjectSetText("textInd"+x+"0","SELL",9,"Arial Bold",Red);
else
ObjectSetText("textInd"+x+"0","WAIT",9,"Arial Bold",Black);
}
else if ((iMACD(NULL,TF[x],FastEMA,SlowEMA,MACDsp,0,MODE_MAIN,0))<0) { // macd below zero
if ((iMACD(NULL,TF[x],FastEMA,SlowEMA,MACDsp,0,MODE_MAIN,0)) <
(iMACD(NULL,TF[x],FastEMA,SlowEMA,MACDsp,0,MODE_SIGNAL,0)))
ObjectSetText("textInd"+x+"0","SELL",9,"Arial Bold",Red);
else if
((iMACD(NULL,TF[x],FastEMA,SlowEMA,MACDsp,0,MODE_MAIN,0)) >
(iMACD(NULL,TF[x],FastEMA,SlowEMA,MACDsp,0,MODE_SIGNAL,0)))
ObjectSetText("textInd"+x+"0"," BUY",9,"Arial Bold",Lime);
else
ObjectSetText("textInd"+x+"0","WAIT",9,"Arial Bold",Black);
}
}
//--- MA Set1 arrows
for(x=0;x<6;x++)
{
if ((iMA(NULL,TF[x],shortP1,0,MODE_EMA,PRICE_CLOSE,0)) >
(iMA(NULL,TF[x],shortP2,0,MODE_EMA,PRICE_CLOSE,0)))
ObjectSetText("doubleArr"+x+"1",CharToStr(sBuy),fontSize,"Wingdings",Lime);
else if ((iMA(NULL,TF[x],shortP1,0,MODE_EMA,PRICE_CLOSE,0)) <
(iMA(NULL,TF[x],shortP2,0,MODE_EMA,PRICE_CLOSE,0)))
ObjectSetText("doubleArr"+x+"1",CharToStr(sSell),fontSize,"Wingdings",Red);
else
ObjectSetText("doubleArr"+x+"1",CharToStr(sWait),fontSize,"Wingdings",Black);
}
//--- MA Set1 text
for(x=0;x<6;x++)
{
if ((iMA(NULL,TF[x],shortP1,0,MODE_EMA,PRICE_CLOSE,0)) >
(iMA(NULL,TF[x],shortP2,0,MODE_EMA,PRICE_CLOSE,0)))
ObjectSetText("textInd"+x+"1"," BUY",9,"Arial Bold",Lime);
else if ((iMA(NULL,TF[x],shortP1,0,MODE_EMA,PRICE_CLOSE,0)) <
(iMA(NULL,TF[x],shortP2,0,MODE_EMA,PRICE_CLOSE,0)))
ObjectSetText("textInd"+x+"1","SELL",9,"Arial Bold",Red);
else
ObjectSetText("textInd"+x+"1","WAIT",9,"Arial Bold",Black);
}
//--- MA Set2 arrows
for(x=0;x<6;x++)
{
if ((iMA(NULL,TF[x],longP1,0,MODE_EMA,PRICE_CLOSE,0)) >
(iMA(NULL,TF[x],longP2,0,MODE_EMA,PRICE_CLOSE,0)))
ObjectSetText("doubleArr"+x+"2",CharToStr(sBuy),fontSize,"Wingdings",Lime);
else if ((iMA(NULL,TF[x],longP1,0,MODE_EMA,PRICE_CLOSE,0)) <
(iMA(NULL,TF[x],longP2,0,MODE_EMA,PRICE_CLOSE,0)))
ObjectSetText("doubleArr"+x+"2",CharToStr(sSell),fontSize,"Wingdings",Red);
else
ObjectSetText("doubleArr"+x+"2",CharToStr(sWait),fontSize,"Wingdings",Black);
}
//--- MA Set2 text
for(x=0;x<6;x++)
{
if ((iMA(NULL,TF[x],longP1,0,MODE_EMA,PRICE_CLOSE,0)) >
(iMA(NULL,TF[x],longP2,0,MODE_EMA,PRICE_CLOSE,0)))
ObjectSetText("textInd"+x+"2"," BUY",9,"Arial Bold",Lime);
else if ((iMA(NULL,TF[x],longP1,0,MODE_EMA,PRICE_CLOSE,0)) <
(iMA(NULL,TF[x],longP2,0,MODE_EMA,PRICE_CLOSE,0)))
ObjectSetText("textInd"+x+"2","SELL",9,"Arial Bold",Red);
else
ObjectSetText("textInd"+x+"2","WAIT",9,"Arial Bold",Black);
}
return(0);
}
//+------------------------------------------------------------------+
//| END MAIN LOOP |
//+------------------------------------------------------------------+
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
---