//+------------------------------------------------------------------+ //| AscTrend2.mq4 | //| Copyright © 2006, Nick Bilak | //+------------------------------------------------------------------+ #property copyright "Copyright © 2006, Nick Bilak" //---- indicator settings #property indicator_chart_window #property indicator_buffers 2 #property indicator_color1 Aqua #property indicator_color2 Magenta //---- indicator parameters extern int Risk=5; extern double MONYRISK=2.0; //---- indicator buffers double e1[]; double e2[]; int i,value2=1,Counter,DCounter,TrueCount=0,MRO1=0,MRO2=0,MRO3=0,MRO4=0; double value3=18,value4=0,value5=0,value6=0,value7=0,value8=0,value9=0, value10=10,value11=10000,value12=0,value13=0,value14=0,value19=0, value4_1=0,value4_2=0,value9_1=0,value10_1=0,value11_1=0,value12_1=0, Range=0,AvgRange=0,AvgRange_1=0,AvgRange_2=0, val1=0,val2=0,NumBars=0; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- drawing settings SetIndexStyle(0,DRAW_ARROW); SetIndexStyle(1,DRAW_ARROW); SetIndexArrow(0,159); SetIndexArrow(1,159); SetIndexEmptyValue(0,0); SetIndexEmptyValue(1,0); if( !SetIndexBuffer(0,e1) || !SetIndexBuffer(1,e2) ) Print("cannot set indicator buffers!"); //---- name for DataWindow and indicator subwindow label IndicatorShortName("AscT2("+Risk+")"); //---- initialization done return(0); } int start() { int counted_bars=IndicatorCounted(); if(counted_bars<0) return(-1); if(counted_bars>0) counted_bars--; int limit=Bars-20-counted_bars; double spread=Ask-Bid; for(i=limit; i>=0; i--) { Range=0; AvgRange=0; for (Counter=i; Counter<=i+9; Counter++) { AvgRange=AvgRange+MathAbs(spread+High[Counter]-Low[Counter]); } Range=AvgRange/10.0; if (i==Bars-20) { value2=1; value3=18; value10=10000; value10_1=0; value19=MONYRISK*Range*Point; value2=Risk; value3=18+3*value2; value9=0; } Counter=i; AvgRange=0; for (Counter=i; Counter<=i+9-1; Counter++) { AvgRange=AvgRange+Close[Counter]; } value11=AvgRange/9.0; // ----- //value12=UserFunction("AverageClose",value3,i); Counter=i; AvgRange=0; for (Counter=i; Counter<=i+value3-1; Counter++) { AvgRange=AvgRange+Close[Counter]; } value12=AvgRange/value3; // ----- value13=Range; // ----- //value4=UserFunction("JESSD",High[i],Low[i],High[i+value2],Low[i+value2],Close[i+value2]); AvgRange=(spread+High[i]+Low[i])/2.0; if (Close[i+value2]value4_1 && value4_1=1) MRO1=Counter-i-1; else MRO1=-1; // ----- Counter=i; TrueCount=0; while (Countervalue4_2) TrueCount=TrueCount+1; Counter=Counter+1; } if (TrueCount>=1) MRO2=Counter-i-1; else MRO2=-1; // ----- //value4_1=UserFunction("JESSD",High[i+1],Low[i+1],High[i+1+value2],Low[i+1+value2],Close[i+1+value2]); AvgRange_1=(spread+High[i+1]+Low[i+1])/2.0; if (Close[i+1+value2]-1 && Low[i+1]>value4_1) value5=value4_1-value13; if (MRO2>-1 && spread+High[i+1]value12) { //value5=UserFunction("TrueLow",i)-value13; if (Close[i+1]value12_1 && value11spread+High[i]) { value5=Close[i+1]+value13; } else { value5=spread+High[i]+value13; } } // ----- if (MathAbs(Open[i]-Close[i+1])>=1.618*value13) { if (value11>value12) value5=Low[i]-value13; if (value11value10) { value8=value10; } else { value8=spread+High[i]+2.40*value13; } // ----- //value9=UserFunction("BS0",Low[i],60,value7,RISK,value19); value9=value7; // ----- //value10=UserFunction("SS0",High[i],60,value8,RISK,value19); value10=value8; // ----- if (Low[i]-value9>value19/Point) value9=Low[i]-(1.50+0.1*Risk)*value13; if (value10-spread+High[i]>value19/Point) value10=spread+High[i]+(1.50+0.1*Risk)*value13; if (value11>=value12 && value5>=value9) value9=value5; if (value11<=value12 && value6<=value10) value10=value6; if (value11<=value12 && value5<=value9) value9=value5; if (value11>=value12 && value6>=value10) value10=value6; // ----- Counter=i; TrueCount=0; while (Counter=value12) TrueCount=TrueCount+1; Counter=Counter+1; } if (TrueCount>=2) MRO3=Counter-i-1; else MRO3=-1; // ----- Counter=i; TrueCount=0; while (Counter=2) MRO4=Counter-i-1; else MRO4=-1; // ----- if (MRO3>-1 && value9<=value9_1) value9=value9_1; if (MRO4>-1 && value10>=value10_1) value10=value10_1; // ----- //value11=UserFunction("AverageClose",9,i); Counter=i; AvgRange=0; for (Counter=i; Counter<=i+9-1; Counter++) { AvgRange=AvgRange+Close[Counter]; } value11=AvgRange/9.0; // ----- //value12=UserFunction("AverageClose",value3,i); Counter=i; AvgRange=0; for (Counter=i; Counter<=i+value3-1; Counter++) { AvgRange=AvgRange+Close[Counter]; } value12=AvgRange/value3; // ----- val1=0; val2=0; if (value9>0 && value11>=value12 && value9<=spread+High[i]) { val1=value9; } if (value10>0 && value10<1000000000 && value11<=value12 && value10>=Low[i]) { val2=value10; } // ----- value9_1=value9; value10_1=value10; e1[i]=val1; //SetIndexValue(i,val1); e2[i]=val2; //SetIndexValue2(i,val2); // ----- } }