PipNailer iSignals_v2

Author: � 2008.04.16 SwingMan
PipNailer iSignals_v2
0 Views
0 Downloads
0 Favorites
PipNailer iSignals_v2
//+------------------------------------------------------------------+
//|                                        PipNailer iSignals_v2.mq4 |
//|                                                  © 2008 SwingMan |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "© 2008.04.16 SwingMan"
#property link      ""
/*--------------------------------------------------------------------
- v2. 2008.04.16  Take only 300 bars
--------------------------------------------------------------------*/
#property indicator_chart_window

//---- extern inputs -------------------------------------------------
//- If your broker names the currency pairs with a suffix for a mini account (like an "m", for example), enter the suffix here
extern string SymbolSuffix = "";
//extern int refreshPeriod = PERIOD_M1; // refresh calcultion
extern double SAR_Step = 0.02;
extern double SAR_Max  = 0.2;
//--------------------------------------------------------------------
#property indicator_buffers 2
#property indicator_color1 DeepSkyBlue  // EntryLong 
#property indicator_color2 Magenta   // EntryShort 

//---- constants
string windowsName = "PipNailer iSignals_v2";
int ShiftSignals = 1;
int Period_ATR = 21;

//---- variables
int TimeFrame;
datetime oldTime, thisTime;
bool CurrentTimeFrameOK;

//---- initialisations
int colDB_Pairs, colDB_Spread;
int colDB_Close, colDB_LastPrice;
int iColDB_First, colDB_M5, colDB_M15, colDB_M30, colDB_H1, colDB_H4, colDB_D1, colDB_W1;

//-- Signal buffers
double dClose[], dSAR[], dAC[], dAO[];
double LongSignal[], ShortSignal[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   IndicatorDigits(Digits);
//---- indicators
   ArraySetAsSeries(dClose,true);
   ArraySetAsSeries(dSAR,true);
   ArraySetAsSeries(dAC,true);   
   ArraySetAsSeries(dAO,true);   
      
//---- signals
   SetIndexBuffer(0, LongSignal);
   SetIndexBuffer(1, ShortSignal);   
   SetIndexStyle(0,DRAW_ARROW,EMPTY,4); 
   SetIndexStyle(1,DRAW_ARROW,EMPTY,4); 
   SetIndexArrow(0, 233);
   SetIndexArrow(1, 234);
   //SetIndexLabel(0, NULL); 
   //SetIndexLabel(1, NULL);
   SetIndexLabel(0, "LONG signal"); 
   SetIndexLabel(1, "SHORT signal");
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
   return(0);
  }
  
  
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
{
   ArrayResize(dClose,Bars);
   ArrayResize(dSAR,Bars);
   ArrayResize(dAC,Bars);
   ArrayResize(dAO,Bars);
   
   if (Time[0] == oldTime) return(0);
   oldTime = Time[0];
   
   int    counted_bars=IndicatorCounted();
   if(counted_bars < 0) return(-1); 
   if(counted_bars > 0) counted_bars--; 
   int limit=Bars-counted_bars;
   int limit2 = limit; 
   //if (limit2 > 1) limit2 = 1;
   if (limit2 < 100) limit2 = 100;
//----
   //-- indicators
   for (int i=0; i<limit2; i++) {
      dClose[i] = iClose(Symbol(), Period(),i);
      dSAR[i] = iSAR(Symbol(), Period(),SAR_Step,SAR_Max,i);
      dAC[i] = iAC(Symbol(),Period(),i);
      dAO[i] = iAO(Symbol(),Period(),i);
   }
   
   //-- signals
   for (i=1; i<limit2; i++) {
      //LongSignal[i]  = EMPTY_VALUE;
      //ShortSignal[i] = EMPTY_VALUE;
   
      double dOffset = iATR(Symbol(),Period(),Period_ATR,i+1) * 0.40;
//if (i==1)
//Print("dClose=",dClose[i]);            
      //-- SAR
      if (dClose[i] >= dSAR[i])     int iValue_SAR1 = 1; else iValue_SAR1 = -1;
      if (dClose[i+1] >= dSAR[i+1]) int iValue_SAR2 = 1; else iValue_SAR2 = -1;
      //-- AC
      if (dAC[i]   >= dAC[i+1]) int iValue_AC1 = 1; else iValue_AC1 = -1;
      if (dAC[i+1] >= dAC[i+2]) int iValue_AC2 = 1; else iValue_AC2 = -1;
      //-- AO
      if (dAO[i]   >= dAO[i+1]) int iValue_AO1 = 1; else iValue_AO1 = -1;
      if (dAO[i+1] >= dAO[i+2]) int iValue_AO2 = 1; else iValue_AO2 = -1;
      
      //-- signals
      int iSignal_SAR=0, iSignal_AC=0, iSignal_AO=0, iOrderType=0;
      if (iValue_SAR1 == 1 && iValue_SAR2 ==-1) iSignal_SAR = 1;
      if (iValue_SAR1 == -1 && iValue_SAR2 ==1) iSignal_SAR = -1;
         
      if (iValue_AC1 == 1 && iValue_AC2 ==-1) iSignal_AC = 1;
      if (iValue_AC1 == -1 && iValue_AC2 ==1) iSignal_AC = -1;
         
      if (iValue_AO1 == 1 && iValue_AO2 ==-1) iSignal_AO = 1;
      if (iValue_AO1 == -1 && iValue_AO2 ==1) iSignal_AO = -1;
        
      if(iSignal_SAR ==1 && iSignal_AC ==1 && iSignal_AO==1) iOrderType=1;
      if(iSignal_SAR ==-1 && iSignal_AC ==-1 && iSignal_AO==-1) iOrderType=-1;
         
      if (iOrderType == 1)  LongSignal[i]  = Low[i] - dOffset;
      if (iOrderType == -1) ShortSignal[i] = High[i] + dOffset;      
   }
//----
   return(0);
}
//+------------------------------------------------------------------+

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 ---