TF_15B15D.01

Author: Copyright � 2008 Tom Balfe
TF_15B15D.01
Indicators Used
MACD HistogramMoving average indicator
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 supported. Formatting help

Markdown Formatting Guide

Element Markdown Syntax
Heading # H1
## H2
### H3
Bold **bold text**
Italic *italicized text*
Link [title](https://www.example.com)
Image ![alt text](image.jpg)
Code `code`
Code Block ```
code block
```
Quote > blockquote
Unordered List - Item 1
- Item 2
Ordered List 1. First item
2. Second item
Horizontal Rule ---