วันอังคารที่ 20 สิงหาคม พ.ศ. 2556

+++ Heiken Ashi + MACD บอก Trend แบบ Multi Time Frame

   ไหน ๆ ก็ไหนๆ และ เลยทำ Indicator แต่ละตัวที่สำคัญๆ ให้สามารถอ่านค่าแบบ Multi Time Frame ให้ได้หมดเลย ก็เลยมาปรับตัวนี้ต่ออีกหน่อย ตัวนี้คือ Heiken Ashi+MACD ผมปรับให้มันอ่านค่า Up / Down /Sideway ออกมาเลย ได้ตามภาพนีแหละ ....แจ่มอีกตัว


นี่คือ Code ชุดนี้

/*
_SECTION_BEGIN("Hienken Ashi Modify + Trend Analysis");
 ///////////////////////////////////
 Title =
 EncodeColor(colorWhite)+ Title = Name () + " | "
 +EncodeColor(colorYellow) + Date() + " | "

 +EncodeColor(colorTurquoise)+ "O : "+ EncodeColor(colorLightGrey)+ O + " | "
 +EncodeColor(colorTurquoise)+ "H : "+ EncodeColor(colorLightGrey)+ H + " | "
 +EncodeColor(colorTurquoise)+ "L : "+ EncodeColor(colorLightGrey)+ L + " | "
 +EncodeColor(colorTurquoise)+ "C : "+ WriteIf(C> Ref(C, -1),EncodeColor(colorBrightGreen),EncodeColor(colorRed))+ C + " | "
 +EncodeColor(colorTurquoise)+ "Change : ("+ WriteIf(C> Ref(C, -1),EncodeColor(colorBrightGreen),EncodeColor(colorRed)) + WriteVal(C-Ref(C,-1))+" Rs."
 +EncodeColor(colorTurquoise)+ " /"+ WriteIf(C> Ref(C, -1),EncodeColor(colorBrightGreen),EncodeColor(colorRed))+ WriteVal( ROC( C, 1 ))+""+ " % "
 +EncodeColor(colorTurquoise)+ ") | Volume : " + WriteIf(V> Ref(V, -1),EncodeColor(colorBrightGreen),EncodeColor(colorRed))+ WriteVal(V,1)
 ;

 _SECTION_END();

*/

_SECTION_BEGIN("Heikin Ashi (Modify)");
GrpPrm=Param("Graphic Space",-5,-10,10);
GraphXSpace=GrpPrm;

r1 = Param("MACD Fast avg", 5, 2, 200, 1 );
r2 = Param("MACD Slow avg", 10, 2, 200, 1 );
r3 = Param("Signal avg", 5, 2, 200, 1 );
Prd1=Param("ATR Period",8,1,20,1);
Prd2=Param("Look Back (Bar)",7,1,20,1);

MyATRL = HHV(LLV(L,Prd1)+ATR(Prd1),Prd2);
MATRH = LLV(HHV(H,Prd1)-ATR(Prd1),Prd2);
MyClose= EMA((Open+High+Low+Close)/4,3) ;
MyOpen = EMA((Ref(Open,-1) + Ref(MyClose,-1))/2,3);
Temp = Max(High, MyOpen);
MyHigh = EMA(Max(Temp, MyClose),3);
Temp = Min(Low,MyOpen);
MyLow = EMA(Min(Temp, MyClose),3);

m1=MACD(r1,r2);
s1=Signal(r1,r2,r3);

mycolor=IIf(m1<0 AND m1>s1, 2,IIf(m1>0 AND m1>s1,5,IIf(m1>0 AND m1<s1,2,4)));

ColorHighliter = myColor;

SetBarFillColor( ColorHighliter );

barColor=IIf(C>MyATRL,5,IIf(C < MATRH,4,2));

PlotOHLC( IIf(MyOpen<MyClose, MyOpen,MyClose),MyHigh ,MyLow ,IIf(MyOpen<MyClose, MyClose,MyOpen), "Heikin Ashi (Modify)", barColor, styleNoTitle | styleCandle);
_SECTION_END();



_SECTION_BEGIN("Breakout Setting");
 Buyperiods=Param("Breakout periods best is usually 18",5,1,100,1,1);
 Sellperiods=Param("Exit Breakout",5,1,100,1,1);

 Buy= C>Ref(HHV(MyHigh,Buyperiods),-1) ;
 Sell= C<Ref(LLV(MyLow,Sellperiods),-1);

 Buy = ExRem(Buy, Sell);
 Sell = ExRem(Sell, Buy);



 PlotShapes( IIf( Buy, shapeUpTriangle, shapeNone ), colorBrightGreen, layer = 0,yposition = MyLow, offset = -30);
 PlotShapes( IIf( Buy, shapeHollowUpTriangle, shapeNone ), colorWhite, layer = 0,yposition = MyLow, offset = -30);

 PlotShapes( IIf( Sell, shapeDownTriangle, shapeNone ), colorRed, layer = 0, yposition = MyHigh, offset = -30);
 PlotShapes( IIf( Sell, shapeHollowDownTriangle, shapeNone ), colorWhite, layer = 0, yposition = MyHigh, offset = -30);


 _SECTION_END();

HalfAshiup  = (MyOpen +MyClose)/2;

//Uptrend = MyOpen > Ref(HalfAshiup,-1) AND MyClose > Ref(MyClose,-1) OR (MyHigh > Ref(MyHigh,-1) AND MyLow > Ref(MyLow,-1)) ;
//Downtrend = MyOpen < Ref(HalfAshiup,-1) AND MyClose < Ref(MyClose,-1) OR (MyHigh < Ref(MyHigh,-1) AND MyLow < Ref(MyLow,-1)) ;
//Sideway = C > MATRH

_SECTION_BEGIN("MTF");


TimeFrameSet( in1Minute );

MyATRL = HHV(LLV(L,Prd1)+ATR(Prd1),Prd2);
MATRH = LLV(HHV(H,Prd1)-ATR(Prd1),Prd2);
MyClose= EMA((Open+High+Low+Close)/4,3) ;
MyOpen = EMA((Ref(Open,-1) + Ref(MyClose,-1))/2,3);
Temp = Max(High, MyOpen);
MyHigh = EMA(Max(Temp, MyClose),3);
Temp = Min(Low,MyOpen);
MyLow = EMA(Min(Temp, MyClose),3);

m1=MACD(r1,r2);
s1=Signal(r1,r2,r3);


Uptrendm01 = C>MyATRL AND (m1>0 AND m1>s1) ;
Downtrendm01 = C<MyATRL AND (m1<0 AND m1<s1) ;
Sidewaym01 = (m1<0 AND m1>s1) OR (m1>0 AND m1<s1);

TimeFrameRestore();

TimeFrameSet( 2*in15Minute );

MyATRL = HHV(LLV(L,Prd1)+ATR(Prd1),Prd2);
MATRH = LLV(HHV(H,Prd1)-ATR(Prd1),Prd2);
MyClose= EMA((Open+High+Low+Close)/4,3) ;
MyOpen = EMA((Ref(Open,-1) + Ref(MyClose,-1))/2,3);
Temp = Max(High, MyOpen);
MyHigh = EMA(Max(Temp, MyClose),3);
Temp = Min(Low,MyOpen);
MyLow = EMA(Min(Temp, MyClose),3);

m1=MACD(r1,r2);
s1=Signal(r1,r2,r3);


Uptrend30 = C>MyATRL AND (m1>0 AND m1>s1) ;
Downtrend30 = C<MyATRL AND (m1<0 AND m1<s1) ;
Sideway30 = (m1<0 AND m1>s1) OR (m1>0 AND m1<s1);

TimeFrameRestore();



TimeFrameSet( in5Minute );

MyATRL = HHV(LLV(L,Prd1)+ATR(Prd1),Prd2);
MATRH = LLV(HHV(H,Prd1)-ATR(Prd1),Prd2);
MyClose= EMA((Open+High+Low+Close)/4,3) ;
MyOpen = EMA((Ref(Open,-1) + Ref(MyClose,-1))/2,3);
Temp = Max(High, MyOpen);
MyHigh = EMA(Max(Temp, MyClose),3);
Temp = Min(Low,MyOpen);
MyLow = EMA(Min(Temp, MyClose),3);

m1=MACD(r1,r2);
s1=Signal(r1,r2,r3);


Uptrend05 = C>MyATRL AND (m1>0 AND m1>s1) ;
Downtrend05 = C<MyATRL AND (m1<0 AND m1<s1) ;
Sideway05 = (m1<0 AND m1>s1) OR (m1>0 AND m1<s1);

TimeFrameRestore();

TimeFrameSet( 2*in15Minute );

MyATRL = HHV(LLV(L,Prd1)+ATR(Prd1),Prd2);
MATRH = LLV(HHV(H,Prd1)-ATR(Prd1),Prd2);
MyClose= EMA((Open+High+Low+Close)/4,3) ;
MyOpen = EMA((Ref(Open,-1) + Ref(MyClose,-1))/2,3);
Temp = Max(High, MyOpen);
MyHigh = EMA(Max(Temp, MyClose),3);
Temp = Min(Low,MyOpen);
MyLow = EMA(Min(Temp, MyClose),3);

m1=MACD(r1,r2);
s1=Signal(r1,r2,r3);


Uptrend30 = C>MyATRL AND (m1>0 AND m1>s1) ;
Downtrend30 = C<MyATRL AND (m1<0 AND m1<s1) ;
Sideway30 = (m1<0 AND m1>s1) OR (m1>0 AND m1<s1);

TimeFrameRestore();

TimeFrameSet( inHourly );

MyATRL = HHV(LLV(L,Prd1)+ATR(Prd1),Prd2);
MATRH = LLV(HHV(H,Prd1)-ATR(Prd1),Prd2);
MyClose= EMA((Open+High+Low+Close)/4,3) ;
MyOpen = EMA((Ref(Open,-1) + Ref(MyClose,-1))/2,3);
Temp = Max(High, MyOpen);
MyHigh = EMA(Max(Temp, MyClose),3);
Temp = Min(Low,MyOpen);
MyLow = EMA(Min(Temp, MyClose),3);

m1=MACD(r1,r2);
s1=Signal(r1,r2,r3);


Uptrend60 = C>MyATRL AND (m1>0 AND m1>s1) ;
Downtrend60 = C<MyATRL AND (m1<0 AND m1<s1) ;
Sideway60 = (m1<0 AND m1>s1) OR (m1>0 AND m1<s1);

TimeFrameRestore();

TimeFrameSet( 2*inHourly );

MyATRL = HHV(LLV(L,Prd1)+ATR(Prd1),Prd2);
MATRH = LLV(HHV(H,Prd1)-ATR(Prd1),Prd2);
MyClose= EMA((Open+High+Low+Close)/4,3) ;
MyOpen = EMA((Ref(Open,-1) + Ref(MyClose,-1))/2,3);
Temp = Max(High, MyOpen);
MyHigh = EMA(Max(Temp, MyClose),3);
Temp = Min(Low,MyOpen);
MyLow = EMA(Min(Temp, MyClose),3);

m1=MACD(r1,r2);
s1=Signal(r1,r2,r3);


Uptrend120 = C>MyATRL AND (m1>0 AND m1>s1) ;
Downtrend120 = C<MyATRL AND (m1<0 AND m1<s1) ;
Sideway120 = (m1<0 AND m1>s1) OR (m1>0 AND m1<s1);

TimeFrameRestore();

TimeFrameSet( 4*inHourly );

MyATRL = HHV(LLV(L,Prd1)+ATR(Prd1),Prd2);
MATRH = LLV(HHV(H,Prd1)-ATR(Prd1),Prd2);
MyClose= EMA((Open+High+Low+Close)/4,3) ;
MyOpen = EMA((Ref(Open,-1) + Ref(MyClose,-1))/2,3);
Temp = Max(High, MyOpen);
MyHigh = EMA(Max(Temp, MyClose),3);
Temp = Min(Low,MyOpen);
MyLow = EMA(Min(Temp, MyClose),3);

m1=MACD(r1,r2);
s1=Signal(r1,r2,r3);


Uptrend240 = C>MyATRL AND (m1>0 AND m1>s1) ;
Downtrend240 = C<MyATRL AND (m1<0 AND m1<s1) ;
Sideway240 = (m1<0 AND m1>s1) OR (m1>0 AND m1<s1);

TimeFrameRestore();

TimeFrameSet( inDaily );

MyATRL = HHV(LLV(L,Prd1)+ATR(Prd1),Prd2);
MATRH = LLV(HHV(H,Prd1)-ATR(Prd1),Prd2);
MyClose= EMA((Open+High+Low+Close)/4,3) ;
MyOpen = EMA((Ref(Open,-1) + Ref(MyClose,-1))/2,3);
Temp = Max(High, MyOpen);
MyHigh = EMA(Max(Temp, MyClose),3);
Temp = Min(Low,MyOpen);
MyLow = EMA(Min(Temp, MyClose),3);

m1=MACD(r1,r2);
s1=Signal(r1,r2,r3);


UptrendDaily = C>MyATRL AND (m1>0 AND m1>s1) ;
DowntrendDaily = C<MyATRL AND (m1<0 AND m1<s1) ;
SidewayDaily = (m1<0 AND m1>s1) OR (m1>0 AND m1<s1);

TimeFrameRestore();


TimeFrameSet( inWeekly );

MyATRL = HHV(LLV(L,Prd1)+ATR(Prd1),Prd2);
MATRH = LLV(HHV(H,Prd1)-ATR(Prd1),Prd2);
MyClose= EMA((Open+High+Low+Close)/4,3) ;
MyOpen = EMA((Ref(Open,-1) + Ref(MyClose,-1))/2,3);
Temp = Max(High, MyOpen);
MyHigh = EMA(Max(Temp, MyClose),3);
Temp = Min(Low,MyOpen);
MyLow = EMA(Min(Temp, MyClose),3);

m1=MACD(r1,r2);
s1=Signal(r1,r2,r3);


UptrendWeekly = C>MyATRL AND (m1>0 AND m1>s1) ;
DowntrendWeekly = C<MyATRL AND (m1<0 AND m1<s1) ;
SidewayWeekly = (m1<0 AND m1>s1) OR (m1>0 AND m1<s1);

TimeFrameRestore();

_SECTION_END();

_SECTION_BEGIN("Ashi Title");

Title = "Heiken Ashi Indicator : "+ EncodeColor(colorBrightGreen) +  Name() + "  "
+ EncodeColor(colorYellow) + "\nAshiTrend 05 minute is = " + EncodeColor(colorGreen) + WriteIf(Uptrend05 ,"UP","") +  EncodeColor(colorRed) + WriteIf(Downtrend05 ,"DOWN","" )+ EncodeColor(colorPink) + WriteIf(Sideway05 ,"SIDEWAYS","" )
+ EncodeColor(colorYellow) + "\nAshiTrend 30 minute is = " + EncodeColor(colorGreen) + WriteIf(Uptrend30 ,"UP","") +  EncodeColor(colorRed) + WriteIf(Downtrend30 ,"DOWN","" )+ EncodeColor(colorPink) + WriteIf(Sideway30 ,"SIDEWAYS","" )
+ EncodeColor(colorYellow) + "\nAshiTrend 60 minute is = " + EncodeColor(colorGreen) + WriteIf(Uptrend60 ,"UP","") +  EncodeColor(colorRed) + WriteIf(Downtrend60 ,"DOWN","" )+ EncodeColor(colorPink) + WriteIf(Sideway60 ,"SIDEWAYS","" )
+ EncodeColor(colorYellow) + "\nAshiTrend 120 minute is = " + EncodeColor(colorGreen) + WriteIf(Uptrend240 ,"UP","") +  EncodeColor(colorRed) + WriteIf(Downtrend120 ,"DOWN","" )+ EncodeColor(colorPink) + WriteIf(Sideway120 ,"SIDEWAYS","" )
+ EncodeColor(colorYellow) + "\nAshiTrend 240 minute is = " + EncodeColor(colorGreen) + WriteIf(Uptrend240 ,"UP","") +  EncodeColor(colorRed) + WriteIf(Downtrend240 ,"DOWN","" )+ EncodeColor(colorPink) + WriteIf(Sideway240 ,"SIDEWAYS","" )
+ EncodeColor(colorYellow) + "\nAshiTrend Daily is          = " + EncodeColor(colorGreen) + WriteIf(UptrendDaily ,"UP","") +  EncodeColor(colorRed) + WriteIf(DowntrendDaily ,"DOWN","" )+ EncodeColor(colorPink) + WriteIf(SidewayDaily ,"SIDEWAYS","" )
+ EncodeColor(colorYellow) + "\nAshiTrend Weekly is      = " + EncodeColor(colorGreen) + WriteIf(UptrendWeekly ,"UP","") +  EncodeColor(colorRed) + WriteIf(DowntrendWeekly ,"DOWN","" )+ EncodeColor(colorPink) + WriteIf(SidewayWeekly ,"SIDEWAYS","" )
;
_SECTION_END();

_SECTION_BEGIN("SAR 009");

SARvalue =  Param("SARvalue ", 0.009, 0.001, 0.04, 0.001 );

MySar = SAR(SARvalue,0.2);


Plot( MySar , _DEFAULT_NAME(), colorWhite, ParamStyle("Style", styleDots | styleNoLine, maskDefault | styleDots | styleNoLine ) );


_SECTION_END();

1 ความคิดเห็น: