返回
黄金
3 Bar Swing
回复:0 浏览:
67
楼主
admin
圈主
2019-05-05 05:15
//+------------------------------------------------------------------+
//| 3_bar_swing.mq4 |
//| Zen_Leow |
//| |
//+------------------------------------------------------------------+
#property copyright "Zen_Leow"
#property l
ink ""
#property indicator_chart_window
// The number of buffers for calculation, up to 8
#property indicator_buffers 2
// The color for displaying arrows
#property indicator_color1 Green // Long signal
#property indicator_color2 Red // Short signal
// Width of the arrows
#property indicator_width1 1 // Long signal arrow
#property indicator_width2 1 // Short signal arrow
extern int ArrowDistance = 3;
// Buffers for the calculations
double Up_Arrow_Buffer[]; // Long buffer for display
double Down_Arrow_Buffer[]; // Short buffer for display
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
// SetIndexStyle - sets the new type, style, width and color for a given indicator line
// SetIndexBuffer - binds the array variable declared at a global level to the custom indicator pre-defined buffer
// SetIndexArrow - sets an arrow symbol for indicators line of the DRAW_ARROW type.
SetIndexStyle(0, DRAW_ARROW);
SetIndexBuffer(0, Up_Arrow_Buffer);
SetIndexArrow(0, 233); // Up arrow
SetIndexStyle(1, DRAW_ARROW);
SetIndexBuffer(1, Down_Arrow_Buffer);
SetIndexArrow(1, 234); // Down arrow
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int i; // Bar index
int Counted_bars; // Number of counted bars
//--------------------------------------------------------------------
Counted_bars=IndicatorCounted(); // Number of counted bars
i=Bars-Counted_bars-1; // Index of the first uncounted
if (i == 0)
{
i = 2; // the newest signal bar is suppose to be at index 2
}
while(i>1) // Loop for uncounted bars
{
if (isUpSwingBar(i))
{
Up_Arrow_Buffer[i] = Low[i] - (ArrowDistance * Point);
Down_Arrow_Buffer[i] = EMPTY_VALUE;
}
else if (isDownSwingBar(i))
{
Down_Arrow_Buffer[i] = High[i] + (ArrowDistance * Point);
Up_Arrow_Buffer[i] = EMPTY_VALUE;
}
else
{
Up_Arrow_Buffer[i] = EMPTY_VALUE;
Down_Arrow_Buffer[i] = EMPTY_VALUE;
}
i--;
}
//----
return(0);
}
bool isUpSwingBar(int i)
{
if (Low[i] < Low[i+1] && Low[i] < Low[i-1] && High[i] < High[i+1] && High[i] < High[i-1])
{
return (true);
}
return (false);
}
bool isDownSwingBar(int i)
{
if (Low[i] > Low[i+1] && Low[i] > Low[i-1] && High[i] > High[i+1] && High[i] > High[i-1])
{
return (true);
}
return (false);
}
//+------------------------------------------------------------------+
打赏