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