//+------------------------------------------------------------------+ //| TRO2009_Dashboard_3LZZSV | //| | //| Copyright © 2000, Avery T. Horton, Jr. aka TheRumpledOne | //| | //| PO BOX 43575, TUCSON, AZ 85733 | //| | //| GIFTS AND DONATIONS ACCEPTED | //| All my indicators should be considered donationware. That is | //| you are free to use them for your personal use, and are | //| under no obligation to pay for them. However, if you do find | //| this or any of my other indicators help you with your trading | //| then any Gift or Donation as a show of appreciation is | //| gratefully accepted. | //| | //| Gifts or Donations also keep me motivated in producing more | //| great free indicators. :-) | //| | //| PayPal - THERUMPLEDONE@GMAIL.COM | //+------------------------------------------------------------------+ #property indicator_separate_window #property indicator_minimum 0 #property indicator_maximum 1 extern bool Sound.Alert = false ; extern double Period1=5; extern double Period2=13; extern double Period3=34; extern string myFont = "Verdana" ; // "Arial Bold" extern string Symbols = "EURJPY;EURUSD;GBPUSD;USDCHF;USDJPY" ; //extern string Symbols = "AUDJPY;AUDUSD;EURGBP;EURJPY;EURUSD;GBPCHF;GBPJPY;GBPUSD;NZDUSD;USDCAD;USDCHF;USDJPY" ; //extern string Symbols = "GBPUSD;USDJPY" ; extern string TimeFrames = "M1;M5;M15;M30;H1;H4;D1;W1;MN"; //extern string TimeFrames = "M15;H1"; //extern bool UseMSLineDrawFont = false; extern color colorHead = DimGray ; extern color colorUp = Blue; extern color colorNeutral = DimGray ; extern color colorDn = Red ; string shortName; int cpairsLenH; int cpairsLenV; int shortLength; int window; color theColor ; string symbol, tChartPeriod, ShortName , thevalue, aChartPeriod; int digits, period, win ; int ind_bufferHi[], Stats[11], StatsR[11], StatsG[11],scount, sl; double point, High0, Low0, Open0, Close0, Open1,High1, Low1, Close1, TheCount , Diff , MODEPOINT ; bool red0, red1, green0, green1 ; //+------------------------------------------------------------------+ int ctimesLen; string cpairsh[]; string cpairsv[]; int aTimes[]; string addition = ""; string FontToUse = "Terminal"; int MODEDIGITS ; int barsToCount ; datetime Trigger[25][10]; //+------------------------------------------------------------------+ string Dev_Step_1="1,3"; string Dev_Step_2="8,5"; string Dev_Step_3="13,8"; int Symbol_1_Kod=140;//129 int Symbol_2_Kod=141;//130 int Symbol_3_Kod=142;//131 string sSymbol_1_Kod = "Œ"; string sSymbol_2_Kod = "‚"; string sSymbol_3_Kod = "Ž"; string tAlert ; double TheBuffer ; string ArrowHeadRt = "Ø" ; // 216 up arrow head string ArrowHeadUp = "Ù" ; // 217 up arrow head string ArrowHeadDn = "Ú" ; // 218 up arrow head string ArrowDot ; double cVOLUME, pVOLUME, H, L, H1, L1, cRANGE, pRANGE; bool StopVolLow, StopVolHigh ; //+------------------------------------------------------------------+ int init() { if(Symbols == "") { Symbols = Symbol() ; } period = Period() ; tChartPeriod = TimeFrameToString(period) ; symbol = Symbol() ; digits = Digits ; point = Point ; ShortName = "3LZZSV" ; win = 0 ; ArrowDot = CharToStr(108) ; // if (UseMSLineDrawFont) FontToUse = "MS LIneDraw"; setUpStrings(cpairsh,cpairsLenH,Symbols); TimeFrames = StringUpperCase(StringTrimLeft(StringTrimRight(TimeFrames))); if (StringSubstr(TimeFrames,StringLen(TimeFrames)-1,1) != ";") TimeFrames = StringConcatenate(TimeFrames,";"); int s = 0; int i = StringFind(TimeFrames,";",s); int time; while (i > 0) { string current = StringSubstr(TimeFrames,s,i-s); time = stringToTimeFrame(current); if (time > 0) { ArrayResize(aTimes,ArraySize(aTimes)+1); aTimes[ArraySize(aTimes)-1] = time; } s = i + 1; i = StringFind(TimeFrames,";",s); } ctimesLen = ArraySize(aTimes); if (IsMini()) addition="m"; if (IsDoubleDotted()) addition=".."; else if (IsDotted()) addition="."; shortName = ShortName ; shortLength = StringLen(shortName); IndicatorShortName(shortName); sSymbol_1_Kod = CharToStr(140); sSymbol_2_Kod = CharToStr(141); sSymbol_3_Kod = CharToStr(142); return(0); } //+------------------------------------------------------------------+ int deinit() { clearObjects(); return(0); } //+------------------------------------------------------------------+ int start() { string name; int i,k,t; window = WindowFind(shortName); /* name = shortName+"HEAD" ; if (ObjectFind(name) == -1) ObjectCreate(name,OBJ_LABEL,window,0,0,0,0); ObjectSet(name,OBJPROP_XDISTANCE,35); ObjectSet(name,OBJPROP_YDISTANCE,5); ObjectSetText(name, "(" + barsToCount + ")" ,8,myFont, colorHead); */ for (t = 0; t < cpairsLenH; t++ ) { name = shortName+"t"+t; if (ObjectFind(name) == -1) ObjectCreate(name,OBJ_LABEL,window,0,0,0,0); ObjectSet(name,OBJPROP_XDISTANCE,20); ObjectSet(name,OBJPROP_YDISTANCE,20+t*15); ObjectSetText(name,cpairsh[t],10,myFont, colorHead); } for (i = 0; i < ctimesLen; i++) { name = shortName+"h"+i; if (ObjectFind(name) == -1) ObjectCreate(name,OBJ_LABEL,window,0,0,0,0); ObjectSet(name,OBJPROP_XDISTANCE,i*66+100); // 110 ObjectSet(name,OBJPROP_YDISTANCE,1); ObjectSetText(name,TimeFrameToString(aTimes[i]),10,myFont, colorHead); } for (i = 0; i < cpairsLenH; i++) { for (t = 0; t < ctimesLen; t++) { string symbol = cpairsh[i]+addition; double price = iClose(symbol,aTimes[t],0); bool exist = true; if (price == 0) exist = false; if (!exist) continue; DoWork( symbol , aTimes[t] ) ; name = shortName+t+k+i; if (ObjectFind(name) == -1){ ObjectCreate(name,OBJ_LABEL,window,0,0,0,0); } ObjectSet(name,OBJPROP_XDISTANCE,t*66+100); ObjectSet(name,OBJPROP_YDISTANCE,k*15+20+i*15); ObjectSetText(name,thevalue,12,"Wingdings",theColor); if( Trigger[i][t] != Time[0] && Sound.Alert ) { DoAlert( symbol, aTimes[t], Diff, i, t ) ; } } } // i return(0); } //+------------------------------------------------------------------+ bool IsMini() { return(StringFind(Symbol(),"m") > -1); } bool IsDoubleDotted() { return(StringFind(Symbol(),"..") > -1); } bool IsDotted() { return(StringFind(Symbol(),".") > -1); } //+------------------------------------------------------------------+ void clearObjects() { for (int i = ObjectsTotal(); i>=0; i--) { string name = ObjectName(i); if (StringSubstr(name,0,shortLength) == shortName) ObjectDelete(name); } } //+------------------------------------------------------------------+ int stringToTimeFrame(string tfs) { int tf=0; tfs = StringTrimLeft(StringTrimRight(StringUpperCase(tfs))); if (tfs=="M1" || tfs=="1") tf=PERIOD_M1; if (tfs=="M5" || tfs=="5") tf=PERIOD_M5; if (tfs=="M15"|| tfs=="15") tf=PERIOD_M15; if (tfs=="M30"|| tfs=="30") tf=PERIOD_M30; if (tfs=="H1" || tfs=="60") tf=PERIOD_H1; if (tfs=="H4" || tfs=="240") tf=PERIOD_H4; if (tfs=="D1" || tfs=="1440") tf=PERIOD_D1; if (tfs=="W1" || tfs=="10080") tf=PERIOD_W1; if (tfs=="MN" || tfs=="43200") tf=PERIOD_MN1; return(tf); } //+------------------------------------------------------------------+ string TimeFrameToString(int tf) { string tfs; switch(tf) { case PERIOD_M1: tfs="M1" ; break; case PERIOD_M5: tfs="M5" ; break; case PERIOD_M15: tfs="M15" ; break; case PERIOD_M30: tfs="M30" ; break; case PERIOD_H1: tfs="H1" ; break; case PERIOD_H4: tfs="H4" ; break; case PERIOD_D1: tfs="D1" ; break; case PERIOD_W1: tfs="W1" ; break; case PERIOD_MN1: tfs="MN"; } return(tfs); } //+------------------------------------------------------------------+ string StringUpperCase(string str) { string s = str; int lenght = StringLen(str) - 1; int char; while(lenght >= 0) { char = StringGetChar(s, lenght); // // // // // if((char > 96 && char < 123) || (char > 223 && char < 256)) s = StringSetChar(s, lenght, char - 32); else if(char > -33 && char < 0) s = StringSetChar(s, lenght, char + 224); lenght--; } return(s); } //+------------------------------------------------------------------+ void setUpStrings(string& array[],int& length, string source) { source = StringUpperCase(StringTrimLeft(StringTrimRight(source))); if (StringSubstr(source,StringLen(source)-1,1) != ";") source = StringConcatenate(source,";"); // // // // // int s = 0; int i = StringFind(source,";",s); string current; while (i > 0) { current = StringSubstr(source,s,i-s); ArrayResize(array,ArraySize(array)+1); array[ArraySize(array)-1] = current; s = i + 1; i = StringFind(source,";",s); } length = ArraySize(array); } //+------------------------------------------------------------------+ void DoWork( string myPair, int TimeFrame ) { tAlert = " " ; theColor = colorNeutral; thevalue = ArrowDot; for( int w = 0 ; w < 2; w++) { cVOLUME = iVolume(myPair,TimeFrame,w); pVOLUME = iVolume(myPair,TimeFrame,w+1); H = iHigh(myPair,TimeFrame,w); L = iLow(myPair,TimeFrame,w); H1 = iHigh(myPair,TimeFrame,w+1); L1 = iLow(myPair,TimeFrame,w+1); cRANGE = H - L ; pRANGE = H1 - L1 ; StopVolLow = cVOLUME > pVOLUME && cRANGE < pRANGE && L < L1 ; StopVolHigh = cVOLUME > pVOLUME && cRANGE < pRANGE && H > H1 ; if( StopVolLow || StopVolHigh ) { break; } // if } // for if( !StopVolLow && !StopVolHigh ) { return(0) ; } // if for( w = 0 ; w < 2; w++) { TheBuffer = iCustom(myPair,TimeFrame,"3LZZ_TRO_EXT", Period1,Period2,Period3, Dev_Step_1,Dev_Step_2,Dev_Step_3, 6,w ); if(TheBuffer != 0) { break ; } } // for while(true) { if (TheBuffer < 0 && StopVolLow ) { tAlert = "BUY: LZZ+LSV" ; theColor = colorUp; thevalue = ArrowHeadUp ; break ;} if (TheBuffer > 0 && StopVolHigh ) { tAlert = "SELL: LZZ+LSV" ; theColor = colorDn; thevalue = ArrowHeadDn ; break ;} break ; } // while } // void //+------------------------------------------------------------------+ void DoAlert( string wSymbol, int wPeriod, double wValue, int ii, int tt ) { aChartPeriod = TimeFrameToString(wPeriod) ; if( wValue >= 0 ) { Alert(wSymbol," ", aChartPeriod, tAlert, DoubleToStr(wValue,0) ) ; Trigger[ii][tt] = Time[0] ; } } //+------------------------------------------------------------------+ /* string MakeUniqueName(string first, string rest) { string result = first+(MathRand()%1001)+rest; while (WindowFind(result)> 0) result = first+(MathRand()%1001)+rest; return(result); } //+------------------------------------------------------------------+ string rtadjust( string rString ) { sl = StringLen(rString) ; while(true) { if( sl == 4) { break ; } if( sl == 3) { rString = " " + rString ; break ; } if( sl == 2) { rString = " " + rString ; break ; } if( sl == 1) { rString = " " + rString ; break ; } break ; } return(rString) ; } */