[MT4相关]Level Trading zig指标变种
主图指标
mt4指标类型:趋势指标
是否能用在mt4手机版上:否
mt4指标类型:震荡指标
是否能用在mt4手机版上:否
是否含有未来函数:无
可以用在韬客外汇返佣网的平台上
//+------------------------------------------------------------------+
//| Level Trading.mq4 |
//| by Accel |
//+------------------------------------------------------------------+
#property copyright "Accel"
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Blue
//----
extern int IndicatorNumber=1;
extern color TrendUpColor=Blue;
extern color TrendDownColor=Red;
extern color LevelColor=DarkGray;
extern int Width2LevelConfirmation=3;
extern int Width3LevelConfirmation=5;
extern int Width4LevelConfirmation=7;
extern int Width5LevelConfirmation=10;
extern bool SnapExtremumsToLevelOnChar=True;
extern int FractalBarsOnEachSide=7;
extern int ProceedMaxHistoryBars=2000;
extern int LevelActuality=200;
extern bool RestDefaultTimeframeValues=True;
extern int ExtremumToLevelMaxGap=15;
extern double PriceDeltaFor1Bar=0.4;
//----
int LevelLength;
int LevelWidth;
int PriceCrossedLevel;
double long;
double short;
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int init()
{
IndicatorBuffers(2);
SetIndexBuffer(0,long);
SetIndexBuffer(1,short);
return(0);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int deinit()
{
int i=0;
//----
for(i=Bars-1;i>=0;i--)
if (ObjectFind(StringConcatenate("Level_",IndicatorNumber,"_",i))!=-1)
ObjectDelete(StringConcatenate("Level_",IndicatorNumber,"_",i));
for(i=Bars-1;i>=0;i--)
if (ObjectFind(StringConcatenate("Trend_",IndicatorNumber,"_",i))!=-1)
ObjectDelete(StringConcatenate("Trend_",IndicatorNumber,"_",i));
return(0);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int LastBarWasHighLow(int LELB, int LEHB)
{
if (LELB==-1 && LEHB!=-1)
return(1);
if (LELB!=-1 && LEHB==-1)
return(-1);
if (LELB!=-1 && LEHB!=-1 && LELB>LEHB)
return(1);
if (LELB!=-1 && LEHB!=-1 && LELB=FractalBarsOnEachSide;i--)
{
//腮屐 龛骓栝 麴嚓蜞?
if (i==Lowest(Symbol(),Period(),MODE_LOW,FractalBarsOnEachSide*2+1,i-FractalBarsOnEachSide))
{
switch(LastBarWasHighLow(LastExtremumLowBar,LastExtremumHighBar))
{
case -1:
{
if (LowHigh[LastExtremumHighBar])
{
short=High;
short[LastExtremumHighBar]=0;
LastExtremumHighBar=i;
}
break;
}
case -1:
{
if (High>Low[LastExtremumLowBar])
{
short=High;
LastExtremumHighBar=i;
}
break;
}
case 0:
{
short=High;
LastExtremumHighBar=i;
break;
}
}
}
}
//腮屐, 沅? 玎赅眵桠帼蝰? 箴钼龛 麴嚓蜞腩? (溻铋眍? 镥疱皴麇龛? 鲥眍? 箴钼??)
for(i=MathMin(ProceedMaxHistoryBars,Bars-FractalBarsOnEachSide-1);i>=FractalBarsOnEachSide;i--)
{
if (long==Low)
{
Stop=-1;
CurrState=0;
for(j=i-1;j>=0 && Stop==-1;j--)
{
if (CurrState==-1)
if (High[j]>Low+(i-j)*PriceDeltaFor1Bar*Point+PriceCrossedLevel*Point)
Stop=j;
if (CurrState==0)
if (Low[j]=0 && Stop==-1;j--)
{
if (CurrState==1)
if (Low[j]High+(i-j)*PriceDeltaFor1Bar*Point+PriceCrossedLevel*Point)
CurrState=1;
}
if (Stop!=-1)
LevelLength=i-Stop;
else
LevelLength=i;
}
}
//吾 滂??屐 犭桤觇? 箴钼龛 疣珥 麴嚓蜞腩?
for(i=MathMin(ProceedMaxHistoryBars,Bars-FractalBarsOnEachSide-1);i>=FractalBarsOnEachSide;i--)
{
if (LevelLength>0)
{
if (long!=0)
iFractalValue=long;
if (short!=0)
iFractalValue=short;
BarsToCheck=MathMin(LevelActuality,LevelLength);
j=i-1;
LevelLength=BarsToCheck;
while(BarsToCheck>0)
{
if (LevelLength[j]>0)
{
if (long[j]!=0)
jFractalValue=long[j];
if (short[j]!=0)
jFractalValue=short[j];
if (MathAbs(iFractalValue+(i-j)*PriceDeltaFor1Bar*Point-jFractalValue)=FractalBarsOnEachSide;i--)
{
if (long!=0 || short!=0)
{
if (LastExtremumBar!=-1)
{
if (long!=0)
{
ObjectCreate(StringConcatenate("Trend_",IndicatorNumber,"_",i),OBJ_TREND,0,
Time[LastExtremumBar],short[LastExtremumBar],Time,long);
ObjectSet(StringConcatenate("Trend_",IndicatorNumber,"_",i),OBJPROP_COLOR,TrendDownColor);
}
if (short!=0)
{
ObjectCreate(StringConcatenate("Trend_",IndicatorNumber,"_",i),OBJ_TREND,0,
Time[LastExtremumBar],long[LastExtremumBar],Time,short);
ObjectSet(StringConcatenate("Trend_",IndicatorNumber,"_",i),OBJPROP_COLOR,TrendUpColor);
}
ObjectSet(StringConcatenate("Trend_",IndicatorNumber,"_",i),OBJPROP_RAY,0);
ObjectSet(StringConcatenate("Trend_",IndicatorNumber,"_",i),OBJPROP_WIDTH,2);
}
LastExtremumBar=i;
}
}
//需耋屐 箴钼龛
for(i=MathMin(ProceedMaxHistoryBars,Bars-FractalBarsOnEachSide-1);i>=FractalBarsOnEachSide;i--)
{
if (LevelLength!=0)
{
if (long!=0)
iFractalValue=long;
if (short!=0)
iFractalValue=short;
//----
ObjectCreate(StringConcatenate("Level_",IndicatorNumber,"_",i),OBJ_TREND,0,
Time,iFractalValue,Time[i-LevelLength],iFractalValue+LevelLength*PriceDeltaFor1Bar*Point);
if (i!=LevelLength)
ObjectSet(StringConcatenate("Level_",IndicatorNumber,"_",i),OBJPROP_RAY,0);
ObjectSet(StringConcatenate("Level_",IndicatorNumber,"_",i),OBJPROP_COLOR,LevelColor);
if (LevelWidth>1)
{
ObjectSet(StringConcatenate("Level_",IndicatorNumber,"_",i),OBJPROP_WIDTH,1);
if (LevelWidth>=Width2LevelConfirmation)
ObjectSet(StringConcatenate("Level_",IndicatorNumber,"_",i),OBJPROP_WIDTH,2);
if (LevelWidth>=Width3LevelConfirmation)
ObjectSet(StringConcatenate("Level_",IndicatorNumber,"_",i),OBJPROP_WIDTH,3);
if (LevelWidth>=Width4LevelConfirmation)
ObjectSet(StringConcatenate("Level_",IndicatorNumber,"_",i),OBJPROP_WIDTH,4);
if (LevelWidth>=Width5LevelConfirmation)
ObjectSet(StringConcatenate("Level_",IndicatorNumber,"_",i),OBJPROP_WIDTH,5);
}
else
{
ObjectSet(StringConcatenate("Level_",IndicatorNumber,"_",i),OBJPROP_COLOR,LevelColor);
ObjectSet(StringConcatenate("Level_",IndicatorNumber,"_",i),OBJPROP_STYLE,STYLE_DOT);
}
}
}
return(0);
}
//+------------------------------------------------------------------+
level_trading_123.jpg
