|
JFOREX-3213 Custom Candle indicator |
Winnie-the-Pooh
|
Post subject: JFOREX-3213 Custom Candle indicator |
Post rating: 0
|
Posted: Thu 15 Sep, 2011, 06:24
|
|
User rating: -
|
I`m looking for simple but useful tool named Custom Candle. It`s quite popular as MT4 indi, but there`s no counterpart for jforex. Maybe somebody could develop an indicator or translate a code for java. This is how it looks:  Here`s a mql code: #property link "[email protected]" #property copyright "© 2006, mankurt" #property indicator_chart_window //+------------------------------------------------------------------------------------------------+ extern int TimeFrame=15; extern color UpCandle=Lime; extern color DnCandle=Red; extern color DojiColor=Blue; extern int Width=1; extern bool BGCandle=false; //+------------------------------------------------------------------------------------------------+ int Nbar,OpenBar,timer,i,timerTF,name,MidBar; double HighPrevBar,LowPrevBar,ClosePrevBar; double OpenNewBar,HighNewBar,LowNewBar,CloseNewBar; double HighCurBar,LowCurBar,CloseCurBar; double priceNewSH,priceNewSL,pricePrevSH,pricePrevSL,priceCurSH,priceCurSL; string nameNewCandle,namePrevCandle; string nameNewShadowH,nameNewShadowL,namePrevShadowH,namePrevShadowL; string NameBar, NameHigh, NameLow; datetime TimeOpenNewBar,TimeCloseNewBar,TimeClosePrevBar; datetime timeNewShadow,timePrevShadow; bool NewBar; //+------------------------------------------------------------------------------------------------+ int init(){ IndicatorShortName("M"+TimeFrame+" íŕ M"+Period()); Nbar=TimeFrame/Period(); timer=Period()*60; timerTF=TimeFrame*60; name=0; TimeOpenNewBar=Time[Bars-1]; OpenNewBar=Open[Bars-1]; NewBar=false; NameBar="Bar M"+TimeFrame+"-"; NameHigh="High M"+TimeFrame+"-"; NameLow="Low M"+TimeFrame+"-"; return(0);} //+------------------------------------------------------------------------------------------------+ int deinit(){ for(int DelOBJ=1; DelOBJ<=name; DelOBJ++){ ObjectDelete(NameBar+DelOBJ); ObjectDelete(NameHigh+DelOBJ); ObjectDelete(NameLow+DelOBJ);} Comment(""); return(0);} //+------------------------------------------------------------------------------------------------+ int start(){ if(TimeFrame>1440) {Comment("\n"," TimeFrame more than D1 is not supporting!!!");return(0);} if(Period()>240) {Comment("\n"," Period more than H4 is not supporting!!!");return(0);} if(TimeFrame<=Period()||MathMod(TimeFrame,Period())!=0) {Comment("\n"," TimeFrame should be more or divisible by M",Period());return(0);} i=Bars-IndicatorCounted(); while(i>0){i--; while(i>=0) if(Time[i]==TimeOpenNewBar||BarNew(i,TimeFrame)==false)i--; else{NewBar=true; name++; break;} if(i<0) i=0; if(NewBar==true){ //+-----------------------------------------Previos Bar--------------------------------------------+ OpenBar=iBarShift(0,0,TimeOpenNewBar,false); TimeClosePrevBar=Time[i+1]; ClosePrevBar=Close[i+1]; HighPrevBar=High[Highest(0,0,MODE_HIGH,OpenBar-i,i+1)]; LowPrevBar=Low[Lowest(0,0,MODE_LOW,OpenBar-i,i+1)]; namePrevCandle=NameBar+(name-1); MidBar=OpenBar-MathRound((OpenBar-i)/2); timePrevShadow=Time[MidBar]; pricePrevSH=PriceShadow(OpenNewBar,ClosePrevBar,0); pricePrevSL=PriceShadow(OpenNewBar,ClosePrevBar,1); namePrevShadowH=NameHigh+(name-1); namePrevShadowL=NameLow+(name-1); //+----------------------------------Modifi Previos Bar & Shadow-----------------------------------+ if(ObjectFind(namePrevCandle)==0){ ObjectMove(namePrevCandle,1,TimeClosePrevBar,ClosePrevBar); PropBar(OpenNewBar,ClosePrevBar,namePrevCandle); if(OpenBar==i+1) ObjectSet(namePrevCandle,OBJPROP_WIDTH, Width*3);} if(ObjectFind(namePrevShadowH)==0){ if(pricePrevSH==HighPrevBar) ObjectDelete(namePrevShadowH); else{ObjectMove(namePrevShadowH,0,timePrevShadow,pricePrevSH); ObjectMove(namePrevShadowH,1,timePrevShadow,HighPrevBar); ColorShadow(OpenNewBar,ClosePrevBar,namePrevShadowH); ObjectSetText(namePrevShadowH,"High="+DoubleToStr(HighPrevBar,Digits),7,"Tahoma");}} if(ObjectFind(namePrevShadowL)==0){ if(pricePrevSL==LowPrevBar) ObjectDelete(namePrevShadowL); else{ObjectMove(namePrevShadowL,0,timePrevShadow,pricePrevSL); ObjectMove(namePrevShadowL,1,timePrevShadow,LowPrevBar); ColorShadow(OpenNewBar,ClosePrevBar,namePrevShadowL); ObjectSetText(namePrevShadowL,"Low="+DoubleToStr(LowPrevBar,Digits),7,"Tahoma");}} //+-------------------------------------------New Bar----------------------------------------------+ OpenNewBar=Open[i]; TimeOpenNewBar=Time[i]; HighNewBar=High[i]; LowNewBar=Low[i]; CloseNewBar=Close[i]; TimeCloseNewBar=Time[i]+timerTF-timer; nameNewCandle=NameBar+name; timeNewShadow=Time[i]+MathRound(Nbar/2)*timer; priceNewSH=PriceShadow(OpenNewBar,CloseNewBar,0); priceNewSL=PriceShadow(OpenNewBar,CloseNewBar,1); nameNewShadowH=NameHigh+name; nameNewShadowL=NameLow+name; NewBar=false;} else{ //+------------------------------------------Current Bar-------------------------------------------+ OpenBar=iBarShift(0,0,TimeOpenNewBar,false); CloseCurBar=Close[i]; HighCurBar=High[Highest(0,0,MODE_HIGH,OpenBar+1,i)]; LowCurBar=Low[Lowest(0,0,MODE_LOW,OpenBar+1,i)]; priceCurSH=PriceShadow(OpenNewBar,CloseCurBar,0); priceCurSL=PriceShadow(OpenNewBar,CloseCurBar,1);} //+------------------------------Create New Object & Modifi Current--------------------------------+ if(ObjectFind(nameNewCandle)!=0){ ObjectCreate(nameNewCandle,OBJ_RECTANGLE,0,TimeOpenNewBar,OpenNewBar,TimeCloseNewBar,CloseNewBar); ObjectSet(nameNewCandle,OBJPROP_STYLE, STYLE_SOLID); PropBar(OpenNewBar,CloseNewBar,nameNewCandle);} else{ ObjectMove(nameNewCandle,1,TimeCloseNewBar,CloseCurBar); PropBar(OpenNewBar,CloseCurBar,nameNewCandle);} if(ObjectFind(nameNewShadowH)!=0){ ObjectCreate(nameNewShadowH,OBJ_TREND,0,timeNewShadow,priceNewSH,timeNewShadow,HighNewBar); ObjectSet(nameNewShadowH,OBJPROP_STYLE, STYLE_SOLID); ObjectSet(nameNewShadowH,OBJPROP_WIDTH, Width); ObjectSet(nameNewShadowH,OBJPROP_RAY, false); ColorShadow(OpenNewBar,CloseNewBar,nameNewShadowH);} else{ ObjectMove(nameNewShadowH,0,timeNewShadow,priceCurSH); ObjectMove(nameNewShadowH,1,timeNewShadow,HighCurBar); ColorShadow(OpenNewBar,CloseCurBar,nameNewShadowH);} if(ObjectFind(nameNewShadowL)!=0){ ObjectCreate(nameNewShadowL,OBJ_TREND,0,timeNewShadow,priceNewSL,timeNewShadow,LowNewBar); ObjectSet(nameNewShadowL,OBJPROP_STYLE, STYLE_SOLID); ObjectSet(nameNewShadowL,OBJPROP_WIDTH, Width); ObjectSet(nameNewShadowL,OBJPROP_RAY, false); ColorShadow(OpenNewBar,CloseNewBar,nameNewShadowL);} else{ ObjectMove(nameNewShadowL,0,timeNewShadow,priceCurSL); ObjectMove(nameNewShadowL,1,timeNewShadow,LowCurBar); ColorShadow(OpenNewBar,CloseCurBar,nameNewShadowL);}} //+-------------------------------------Comment OHLC-----------------------------------------------+ Comment(Symbol(),",M",TimeFrame," O=",OpenNewBar,", H=",HighCurBar, ", L=",LowCurBar,", C=",CloseCurBar,"\n"); return(0);} //+---------------------Main Function "New Bar or Old Bar"-----------------------------------------+ bool BarNew (int j, int tmf) {int t0=1440*(TimeDayOfWeek(Time[j])-1)+60*TimeHour(Time[j])+TimeMinute(Time[j]), t1=1440*(TimeDayOfWeek(Time[j+1])-1)+60*TimeHour(Time[j+1])+TimeMinute(Time[j+1]); if(MathMod(t0,tmf)-MathMod(t1,tmf)==t0-t1)return(false); else return(true);} //+---------------------Function "Price Shadow"----------------------------------------------------+ double PriceShadow (double OpnB, double ClsB, int swt) {double prH, prL; if(OpnB<ClsB){prH=ClsB; prL=OpnB;} if(OpnB>ClsB){prH=OpnB; prL=ClsB;} if(OpnB==ClsB){prH=ClsB; prL=ClsB;} switch(swt){case 0:return(prH);break; case 1:return(prL);break;}} //+---------------------Function "Properti Bars"---------------------------------------------------+ void PropBar (double OpPr, double ClPr, string NmOBJ) {string Cl=" Close="+DoubleToStr(ClPr,Digits); string Op=" Open="+DoubleToStr(OpPr,Digits); if(OpPr==ClPr){ObjectSet(NmOBJ,OBJPROP_BACK, false); ObjectSet(NmOBJ,OBJPROP_COLOR,DojiColor); ObjectSetText(NmOBJ,"Doji "+Op+Cl,7,"Tahoma");} if(OpPr<ClPr){ObjectSet(NmOBJ,OBJPROP_COLOR,UpCandle); ObjectSet(NmOBJ,OBJPROP_BACK, BGCandle); ObjectSetText(NmOBJ,"UpBar "+Op+Cl,7,"Tahoma");} if (OpPr>ClPr){ObjectSet(NmOBJ,OBJPROP_COLOR,DnCandle); ObjectSet(NmOBJ,OBJPROP_BACK, BGCandle); ObjectSetText(NmOBJ,"DnBar "+Op+Cl,7,"Tahoma");} ObjectSet(NmOBJ,OBJPROP_WIDTH, Width);} //+----------------------Function "Color Shadow"---------------------------------------------------+ void ColorShadow (double OP, double CP, string NOBJ) {if(OP==CP)ObjectSet(NOBJ,OBJPROP_COLOR,DojiColor); if(OP<CP)ObjectSet(NOBJ,OBJPROP_COLOR,UpCandle); if (OP>CP)ObjectSet(NOBJ,OBJPROP_COLOR,DnCandle);} //+----------------------------------------------END-----------------------------------------------+
|
|
|
|
 |
dreamtheater
|
Post subject: Re: JFOREX-3213 Custom Candle indicator |
Post rating: 0
|
Posted: Thu 15 Sep, 2011, 09:53
|
|
User rating: 1
Joined: Mon 23 May, 2011, 07:52 Posts: 57 Location: Bulgaria,
|
Will be very useful indicator for customers of jforex!
|
|
|
|
 |
API Support
|
Post subject: Re: JFOREX-3213 Custom Candle indicator |
Post rating: 0
|
Posted: Wed 21 Sep, 2011, 15:26
|
|
User rating: ∞
Joined: Fri 31 Aug, 2007, 09:17 Posts: 6139
|
It will be available in a next build version.
|
|
|
|
 |
Rod178
|
Post subject: Re: JFOREX-3213 Custom Candle indicator |
Post rating: 0
|
Posted: Thu 15 Mar, 2012, 13:58
|
|
User rating: 0
Joined: Thu 15 Mar, 2012, 13:28 Posts: 9 Location: Australia, Perth
|
Has the Custom Candle been released yet?
|
|
|
|
 |
API Support
|
Post subject: Re: JFOREX-3213 Custom Candle indicator |
Post rating: 0
|
Posted: Thu 15 Mar, 2012, 17:14
|
|
User rating: ∞
Joined: Fri 31 Aug, 2007, 09:17 Posts: 6139
|
|
|
|
 |
Rod178
|
Post subject: Re: JFOREX-3213 Custom Candle indicator |
Post rating: 0
|
Posted: Mon 19 Mar, 2012, 06:47
|
|
User rating: 0
Joined: Thu 15 Mar, 2012, 13:28 Posts: 9 Location: Australia, Perth
|
How do I implement the Custom Candle?
|
|
|
|
 |
API Support
|
Post subject: Re: JFOREX-3213 Custom Candle indicator |
Post rating: 0
|
Posted: Mon 19 Mar, 2012, 10:23
|
|
User rating: ∞
Joined: Fri 31 Aug, 2007, 09:17 Posts: 6139
|
Please elaborate on how you would like to use the indicator.
|
|
|
|
 |
Rod178
|
Post subject: Re: JFOREX-3213 Custom Candle indicator |
Post rating: 0
|
Posted: Mon 19 Mar, 2012, 18:04
|
|
User rating: 0
Joined: Thu 15 Mar, 2012, 13:28 Posts: 9 Location: Australia, Perth
|
Superimpose outlines of hourly candles (or other) on one minute charts, similar to the preceding MT4 example
Even better, if possible, would be to superimpose outlines of hourly candles on tick charts eg 50 ticks per candle.
thanks
|
|
|
|
 |
rob_deniro
|
Post subject: Re: JFOREX-3213 Custom Candle indicator |
Post rating: 0
|
Posted: Fri 23 Mar, 2012, 09:37
|
|
User rating: 0
Joined: Wed 18 May, 2011, 08:33 Posts: 22 Location: United Kingdom,
|
great indicator thanks... at the moment 4hr custom candle is the maximum is there anyway can i can change the code to show Daily custom candles on a 4hr chart?
thanks in advance
|
|
|
|
 |
API Support
|
Post subject: Re: JFOREX-3213 Custom Candle indicator |
Post rating: 0
|
Posted: Fri 23 Mar, 2012, 10:01
|
|
User rating: ∞
Joined: Fri 31 Aug, 2007, 09:17 Posts: 6139
|
Rod178 wrote: Superimpose outlines of hourly candles (or other) on one minute charts, similar to the preceding MT4 example Just plot the indicator on the chart and change the indicator period to Hourly. Quote: Even better, if possible, would be to superimpose outlines of hourly candles on tick charts eg 50 ticks per candle. The indicator only works on candle stick charts.
|
|
|
|
 |
API Support
|
Post subject: Re: JFOREX-3213 Custom Candle indicator |
Post rating: 0
|
Posted: Fri 23 Mar, 2012, 10:01
|
|
User rating: ∞
Joined: Fri 31 Aug, 2007, 09:17 Posts: 6139
|
|
|
|
 |
|
Pages: [
1
]
|
|
|
|
|