韬客社区 收藏
草龙 14-09-09 19:20
1楼
[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