//+------------------------------------------------------------------+ //| smC4Scalper Candles_v3.1.mq4 | //| © 2009.07.17, SwingMan | //| | //+------------------------------------------------------------------+ #property copyright "© 2009.07.17, SwingMan" #property link "" // Source: //+------------------------------------------------------------------+ //| TRIX.mq4 | //| by Raff | //+------------------------------------------------------------------+ //#property copyright "Copyright © 2006, raff1410@o2.pl" // Source: smSuper TRIX_v1 /* 2009.07.12 - choice of moving averages - choice of prices (close, log(close) ) 2009.07.17 - Coloured candles for Trix - Two dots colours 2009.07.28 - Switch for the dots colours */ //---- indicator settings #property indicator_chart_window #property indicator_buffers 6 #property indicator_color1 Red // histogram #property indicator_color2 Green #property indicator_color3 Red #property indicator_color4 Green #property indicator_color5 Aqua // dots #property indicator_color6 Gold #property indicator_width1 1 #property indicator_width2 1 #property indicator_width3 3 #property indicator_width4 3 #property indicator_width5 0 #property indicator_width6 0 //---- indicator parameters //------------------------------------------------------------------- //extern int Period_Avg = 13; extern int TRIX_Period = 3; extern string _____TRIX_Averages_____ = "0=SMA, 1=EMA, 2=SMMA, 3=LWMA"; extern int Mode_Average_1 = 1; extern int Mode_Average_2 = 1; extern int Mode_Average_3 = 1; extern string _____TRIX_Input_Price_____ = "0=C,4=Median,5=Typical,6=Weighted"; extern int Input_Price = 0; extern int iArrow = 167; extern int CountBars = 500; extern bool Draw_Closes = true; //------------------------------------------------------------------- int Signal_Period = 0; double Scale = 1000.0; //---- indicator buffers double ind_buffer1a[]; double ind_buffer2a[]; double ind_buffer3[]; double ind_buffer4[]; double ind_buffer5[]; double ind_buffer6up[]; double ind_buffer6dn[]; double ind_buffer7[]; double Buffer1[], Buffer2[], Buffer3[], Buffer4[]; double CloseUpBuffer[], CloseDnBuffer[]; //---- variables int ModeAvg1, ModeAvg2, ModeAvg3; int inputPrice; datetime thisTime, oldTime; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { ArraySetAsSeries(ind_buffer1a,true); ArraySetAsSeries(ind_buffer2a,true); ArraySetAsSeries(ind_buffer7,true); ArraySetAsSeries(ind_buffer5,true); ArraySetAsSeries(ind_buffer6up,true); ArraySetAsSeries(ind_buffer6dn,true); ArraySetAsSeries(ind_buffer3,true); ArraySetAsSeries(ind_buffer4,true); //---- indicator buffers mapping IndicatorDigits(Digits); SetIndexBuffer(0,Buffer1); SetIndexStyle(0,DRAW_HISTOGRAM); SetIndexLabel(0,"High/Low 1"); SetIndexBuffer(1,Buffer2); SetIndexStyle(1,DRAW_HISTOGRAM); SetIndexLabel(1,"High/Low 2"); SetIndexBuffer(2,Buffer3); SetIndexStyle(2,DRAW_HISTOGRAM); SetIndexLabel(2,"Open"); SetIndexBuffer(3,Buffer4); SetIndexStyle(3,DRAW_HISTOGRAM); SetIndexLabel(3,"Close"); SetIndexBuffer(4,CloseUpBuffer); SetIndexStyle(4,DRAW_ARROW); SetIndexArrow(4,iArrow); SetIndexLabel(4,NULL); SetIndexBuffer(5,CloseDnBuffer); SetIndexStyle(5,DRAW_ARROW); SetIndexArrow(5,iArrow); SetIndexLabel(5,NULL); //---- parameters //-- default ModeAvg1 = MODE_SMMA; ModeAvg2 = MODE_SMMA; ModeAvg3 = MODE_EMA; inputPrice = PRICE_CLOSE; //-- TRIX studies string sPrice, sAvg1, sAvg2, sAvg3; //moving averages switch (Mode_Average_1) { case 0: ModeAvg1 = MODE_SMA; sAvg1 = "S"; break; case 1: ModeAvg1 = MODE_EMA; sAvg1 = "E"; break; case 2: ModeAvg1 = MODE_SMMA; sAvg1 = "M"; break; case 3: ModeAvg1 = MODE_LWMA; sAvg1 = "W"; break; } switch (Mode_Average_2) { case 0: ModeAvg2 = MODE_SMA; sAvg2 = "S"; break; case 1: ModeAvg2 = MODE_EMA; sAvg2 = "E"; break; case 2: ModeAvg2 = MODE_SMMA; sAvg2 = "M"; break; case 3: ModeAvg2 = MODE_LWMA; sAvg2 = "W"; break; } switch (Mode_Average_3) { case 0: ModeAvg3 = MODE_SMA; sAvg3 = "S"; break; case 1: ModeAvg3 = MODE_EMA; sAvg3 = "E"; break; case 2: ModeAvg3 = MODE_SMMA; sAvg3 = "M"; break; case 3: ModeAvg3 = MODE_LWMA; sAvg3 = "W"; break; } //-- prices switch(Input_Price) { case 0: inputPrice = PRICE_CLOSE; sPrice = "C"; break; case 4: inputPrice = PRICE_MEDIAN; sPrice = "M"; break; case 5: inputPrice = PRICE_TYPICAL; sPrice = "T"; break; case 6: inputPrice = PRICE_WEIGHTED; sPrice = "W"; break; } //---- name for DataWindow and indicator subwindow label string sParameters = ", "+sAvg1+","+sAvg2+","+sAvg3+", "+sPrice; string sName = "smC4Scalper Candles_v3.1 ("+TRIX_Period+sParameters+")"; IndicatorShortName(sName); Comment(sName); //---- initialization done return(0); } int deinit() { Comment(""); } //+------------------------------------------------------------------+ //| TRIX Candles | //+------------------------------------------------------------------+ int start() { string st; if (TRIX_Period==Signal_Period) return(0); ArrayResize(ind_buffer1a,Bars); ArrayResize(ind_buffer2a,Bars); ArrayResize(ind_buffer7,Bars); ArrayResize(ind_buffer5,Bars); ArrayResize(ind_buffer6up,Bars); ArrayResize(ind_buffer6dn,Bars); ArrayResize(ind_buffer3,Bars); ArrayResize(ind_buffer4,Bars); int i, limit=CountBars; if (limit>Bars) limit=Bars-1; //limit = CountBars; //---- trix //-- calculation for(i=0; i= 0) { bool CandleUP = true; bool CandleDN = false; } else { CandleUP = false; CandleDN = true; } double dOpen = iOpen(Symbol(),Period(),iBar); double dClose = iClose(Symbol(),Period(),iBar); double dHigh = iHigh(Symbol(),Period(),iBar); double dLow = iLow(Symbol(),Period(),iBar); //---- Candle Up --------------------------------------------- if (CandleUP == true) { if (dClose >= dOpen) { if (Draw_Closes == true) { CloseUpBuffer[iBar] = dClose; CloseDnBuffer[iBar] = EMPTY_VALUE; } Buffer1[iBar] = dLow; Buffer2[iBar] = dHigh; Buffer3[iBar] = dOpen; Buffer4[iBar] = dClose; } else { if (Draw_Closes == true) { CloseUpBuffer[iBar] = EMPTY_VALUE; CloseDnBuffer[iBar] = dClose; } Buffer1[iBar] = dLow; Buffer2[iBar] = dHigh; Buffer3[iBar] = dClose; Buffer4[iBar] = dOpen; } } else //---- Candle Dn --------------------------------------------- if (CandleDN == true) { if (dClose >= dOpen) { if (Draw_Closes == true) { CloseUpBuffer[iBar] = dClose; CloseDnBuffer[iBar] = EMPTY_VALUE; } Buffer1[iBar] = dHigh; Buffer2[iBar] = dLow; Buffer3[iBar] = dClose; Buffer4[iBar] = dOpen; } else { if (Draw_Closes == true) { CloseUpBuffer[iBar] = EMPTY_VALUE; CloseDnBuffer[iBar] = dClose; } Buffer1[iBar] = dHigh; Buffer2[iBar] = dLow; Buffer3[iBar] = dOpen; Buffer4[iBar] = dClose; } } }