Forex Intraday
Forex Intraday trading involves executing trades within a single trading day, leveraging short-term fluctuations in currency pairs. Amibroker AFL can be utilized to develop specific strategies catering to Forex Intraday trading, incorporating indicators, such as moving averages or oscillators, while utilizing Amibroker data feed to ensure real-time data analysis for timely decision-making.
//*================================================= ===== FOREX INTRADAY HEIKIN ASHI + PIVOT POINTS ================================================== ====*/ _SECTION_BEGIN("The_Beast_2"); SetBarsRequired(10000,10000); /* this ensures that the charts include all bars AND NOT just those on screen */ Prd1=Param("ATR Period 1-20",4,1,20,1);//{Default = 4 Because most traders use 5} Prd2=Param("LookBack Period 1-20",7,1,20,1);//{Default = 11 Because most traders use 10} //{Green} {Start Long position when Close>Green} Green=HHV(LLV(L,Prd1)+ATR(Prd1),Prd2); //{Red} {Stop loss when CloseGreen ,colorBrightGreen,IIf(C < RED,colorRed,colorBlue)); PlotOHLC( HaOpen, HaHigh, HaLow, HaClose, "", color, styleCandle,styleThick ); ///////////////////////////////////////////////////////////////////////////////////////////////// Odd=13;//enter Odd numbers only CoefOdd=round(Odd/2); Even=12;//enter Even numbers only Coefeven=Even/2; Coefeven2=Coefeven+1; CongestionPercent=2.8;/*Set % above/below Moving average for congestion / sideways market*/ TriangularOdd=MA(MA(C,CoefOdd),CoefOdd); TriangularEven=MA(MA(C,Coefeven),Coefeven2); finalMov_avg=IIf(Odd > even,triangularOdd,TriangularEven); Color=colorBrightGreen;//select Moving average line color tickercolor=colorBlack;//select price color Plot(finalMov_avg,"",IIf(C < finalmov_avg,colorRed,Color),styleLine|styleThick) ; ///////////////////////////////////////////////////////////////////////////////////////////////// LB= Param("Look Back Periods",10,1,30,1); R=ValueWhen(Cross(MA(C,LB),C),HHV(H,LB),1); S=ValueWhen(Cross(C,MA(C,LB)),LLV(L,LB),1); //UpClose = Close - Ref(Close,-1); //Color = IIf(UpClose >= 0, colorBlue, colorRed); UpClose = Close - Ref(Close,-1); Color = IIf(UpClose > 0, colorBrightGreen, colorRed); Plot (R,"Resz",ParamColor("R Color",colorRed),8+16); Plot (S,"Supp",ParamColor("S Color",colorGreen),8+16); //Plot (R,"Resz",22,8+16); //Plot (S,"Supp",19,8+16); // Plot (C,"Close",color,64,32); GraphXSpace=4; ////////////////////////////////////////////////////////////////////////////////////////////////////////// _N(Title = StrFormat("{{NAME}} - {{INTERVAL}} {{DATE}} - "+ EncodeColor(colorYellow)+"Open = "+ EncodeColor(colorYellow) +"%g "+ EncodeColor(colorBrightGreen)+"High = "+ EncodeColor(colorBrightGreen) +"%g - "+ EncodeColor(colorRed)+"Low = "+ EncodeColor(colorRed) +"%g "+ EncodeColor(colorYellow) +"Close = "+ EncodeColor(colorYellow) +" %g (%.1f%%) Vol " +WriteVal( V, 1.0 ) +" {{VALUES}}", O, H, L, C, SelectedValue( ROC( C, 1 )) )); ///////////////////////////////////////////////////////////////////////////////////////// /////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////// //Previous Days HI LO // DayH = TimeFrameGetPrice("H", inDaily, -1); DayHI = LastValue (DayH,1);// yesterdays high DayL = TimeFrameGetPrice("L", inDaily, -1); DayLI = LastValue (DayL,1); // yesterdays low DayC = TimeFrameGetPrice("C", inDaily, -1); // yesterdays close DayO = TimeFrameGetPrice("O", inDaily); // current day open DayH2= TimeFrameGetPrice("H", inDaily, -2); DayH2I = LastValue (DayH2,1); // Two days before high DayL2= TimeFrameGetPrice("L", inDaily, -2); DayL2I = LastValue (DayL2,1); // Two days before low DayH3= TimeFrameGetPrice("H", inDaily, -3); DayH3I = LastValue (DayH3,1); // Three days before high DayL3= TimeFrameGetPrice("L", inDaily, -3); DayL3I = LastValue (DayL3,1); // Three days before low numbars = LastValue(Cum(Status("barvisible"))); hts = -33.5; YHL = ParamToggle("Yesterday HI LO","Show|Hide",1); if(YHL==1) { Plot(DayL,"YL",colorTurquoise,styleDots|styleNoLine|styleNoRescale|styleNoTitle); Plot(DayH,"YH",colorTurquoise,styleDots|styleNoLine|styleNoRescale|styleNoTitle); PlotText(" YH " , LastValue(BarIndex())-(numbars/Hts), DayHI, colorTurquoise); PlotText(" YL " , LastValue(BarIndex())-(numbars/Hts), DayLI, colorTurquoise); } TDBHL = ParamToggle("2/3Days before HI LO","Show|Hide",0); if(TDBHL==1) { Plot(DayL2,"2DBL",colorTurquoise,styleDots|styleNoLine|styleNoRescale|styleNoTitle); Plot(DayH2,"2DBH",colorTurquoise,styleDots|styleNoLine|styleNoRescale|styleNoTitle); Plot(DayL3,"3DBL",colorTurquoise,styleDots|styleNoLine|styleNoRescale|styleNoTitle); Plot(DayH3,"3DBH",colorTurquoise,styleDots|styleNoLine|styleNoRescale|styleNoTitle); PlotText(" 2DBH " , LastValue(BarIndex())-(numbars/Hts), DayH2I, colorTurquoise); PlotText(" 2DBL " , LastValue(BarIndex())-(numbars/Hts), DayL2I, colorTurquoise); PlotText(" 3DBH " , LastValue(BarIndex())-(numbars/Hts), DayH3I, colorTurquoise); PlotText(" 3DBL " , LastValue(BarIndex())-(numbars/Hts), DayL3I, colorTurquoise); } // Pivot Levels // PP = (DayL + DayH + DayC)/3; PPI = LastValue (PP,1); // Pivot R1 = (PP * 2) - DayL; R1I = LastValue (R1,1); // Resistance 1 S1 = (PP * 2) - DayH; S1I = LastValue (S1,1); // Support 1 R2 = PP + R1 - S1; R2I = LastValue (R2,1); // Resistance 2 S2 = PP - R1 + S1; S2I = LastValue (S2,1); // Support 2 R3 = PP + R2 - S1; R3I = LastValue (R3,1); // Resistance 3 S3 = PP - R2 + S1; S3I = LastValue (S3,1); // Support 3 ppl = ParamToggle("Pivot Levels","Show|Hide",1); if(ppl==1) { Plot(PP, "PP",colorYellow,styleDots|styleNoLine|styleNoRescale|styleNoTitle); Plot(R1, "R1",colorViolet,styleDots|styleNoLine|styleNoRescale|styleNoTitle); Plot(S1, "S1",colorViolet,styleDots|styleNoLine|styleNoRescale|styleNoTitle); Plot(R2, "R2",colorViolet,styleDots|styleNoLine|styleNoRescale|styleNoTitle); Plot(S2, "S2",colorViolet,styleDots|styleNoLine|styleNoRescale|styleNoTitle); Plot(R3, "R3",colorViolet,styleDots|styleNoLine|styleNoRescale|styleNoTitle); Plot(S3, "S3",colorViolet,styleDots|styleNoLine|styleNoRescale|styleNoTitle); PlotText(" Pivot ", LastValue(BarIndex())-(numbars/Hts), PPI, colorYellow); PlotText(" R1 " , LastValue(BarIndex())-(numbars/Hts), R1I, colorViolet); PlotText(" S1 " , LastValue(BarIndex())-(numbars/Hts), S1I, colorViolet); PlotText(" R2 " , LastValue(BarIndex())-(numbars/Hts), R2I, colorViolet); PlotText(" S2 " , LastValue(BarIndex())-(numbars/Hts), S2I, colorViolet); PlotText(" R3 " , LastValue(BarIndex())-(numbars/Hts), R3I, colorViolet); PlotText(" S3 " , LastValue(BarIndex())-(numbars/Hts), S3I, colorViolet); } // Camerilla Levels // rg = (DayH - DayL); H5=DayC+1.1*rg; H5I = LastValue (H5,1); H4=DayC+1.1*rg/2; H4I = LastValue (H4,1); H3=DayC+1.1*rg/4; H3I = LastValue (H3,1); H2=DayC+1.1*rg/6; H2I = LastValue (H2,1); H1=DayC+1.1*rg/12; H1I = LastValue (H1,1); L1=DayC-1.1*rg/12; L1I = LastValue (L1,1); L2=DayC-1.1*rg/6; L2I = LastValue (L2,1); L3=DayC-1.1*rg/4; L3I = LastValue (L3,1); L4=DayC-1.1*rg/2; L4I = LastValue (L4,1); L5=DayC-1.1*rg; L5I = LastValue (L5,1); pcl = ParamToggle("Camerilla Levels","Show|Hide",0); if(pcl==1) { Plot(H5,"",colorRose,styleDots|styleNoLine|styleNoRescale|styleNoTitle); Plot(H4,"",colorRose,styleDots|styleNoLine|styleNoRescale|styleNoTitle); Plot(H3,"",colorRose,styleDots|styleNoLine|styleNoRescale|styleNoTitle); Plot(H2,"",colorRose,styleDots|styleNoLine|styleNoRescale|styleNoTitle); Plot(H1,"",colorRose,styleDots|styleNoLine|styleNoRescale|styleNoTitle); Plot(L1,"",colorRose,styleDots|styleNoLine|styleNoRescale|styleNoTitle); Plot(L2,"",colorRose,styleDots|styleNoLine|styleNoRescale|styleNoTitle); Plot(L3,"",colorRose,styleDots|styleNoLine|styleNoRescale|styleNoTitle); Plot(L4,"",colorRose,styleDots|styleNoLine|styleNoRescale|styleNoTitle); Plot(L5,"",colorRose,styleDots|styleNoLine|styleNoRescale|styleNoTitle); PlotText(" H5 = " , LastValue(BarIndex())-(numbars/Hts), H5I +0.05, colorRose); PlotText(" H4 = " , LastValue(BarIndex())-(numbars/Hts), H4I +0.05, colorRose); PlotText(" H3 = " , LastValue(BarIndex())-(numbars/Hts), H3I +0.05, colorRose); PlotText(" H2 = " , LastValue(BarIndex())-(numbars/Hts), H2I +0.05, colorRose); PlotText(" H1 = " , LastValue(BarIndex())-(numbars/Hts), H1I +0.05, colorRose); PlotText(" L1 = " , LastValue(BarIndex())-(numbars/Hts), L1I +0.05, colorRose); PlotText(" L2 = " , LastValue(BarIndex())-(numbars/Hts), L2I +0.05, colorRose); PlotText(" L3 = " , LastValue(BarIndex())-(numbars/Hts), L3I +0.05, colorRose); PlotText(" L4 = " , LastValue(BarIndex())-(numbars/Hts), L4I +0.05, colorRose); PlotText(" L5 = " , LastValue(BarIndex())-(numbars/Hts), L5I +0.05, colorRose); } // Current Days Hi Lo // THL = ParamToggle("Todays Hi Lo","Show|Hide",1); if(THL==1) { isRth = TimeNum() >= 084500 & TimeNum() <= 085959; isdRth = TimeNum() >= 084500 & TimeNum() <= 160000; aRthL = IIf(isRth, L, 1000000); aRthH = IIf(isdRth, H, Null); aRthLd = IIf(isdRth, L, 1000000); DayH = TimeFrameCompress( aRthH, inDaily, compressHigh ); DayH = TimeFrameExpand( DayH, inDaily, expandFirst ); DayL = TimeFrameCompress( aRthLd, inDaily, compressLow ); DayL = TimeFrameExpand( DayL, inDaily, expandFirst ); Bars = BarsSince(TimeNum() >= 94500 AND TimeNum() < 095959);//,BarIndex(),1); // AND DateNum()==LastValue(DateNum()); x0 = BarCount-LastValue(Bars); x1 = BarCount-1; DayHline=LineArray(x0,LastValue(DayH),x1,LastValue (DayH),0); DayLline=LineArray(x0,LastValue(DayL),x1,LastValue (DayL),0); DayHlineI = LastValue (DayHline,1); DayLlineI = LastValue (DayLline,1); Plot(DayHline,"DayH",colorYellow,styleBar|styleNoRescale|styleNoTitle); Plot(DayLline,"DayL",colorYellow,styleBar|styleNoRescale|styleNoTitle); PlotText(" Day Hi " , LastValue(BarIndex())-(numbars/Hts), DayHlineI +0.05, colorYellow); PlotText(" Day Lo " , LastValue(BarIndex())-(numbars/Hts), DayLlineI +0.05, colorYellow); } ///////////////////////////////////////////////////////////////////////////////////////////////// _SECTION_BEGIN("Pivot_Finder"); /* ********************************** Code to automatically identify pivots ********************************** */ // -- what will be our lookback range for the hh and ll? farback=Param("How Far back to go",200,0,5000,10); nBars = Param("Number of bars", 12, 5, 40); // -- Create 0-initialized arrays the size of barcount aHPivs = H - H; aLPivs = L - L; // -- More for future use, not necessary for basic plotting aHPivHighs = H - H; aLPivLows = L - L; aHPivIdxs = H - H; aLPivIdxs = L - L; nHPivs = 0; nLPivs = 0; lastHPIdx = 0; lastLPIdx = 0; lastHPH = 0; lastLPL = 0; curPivBarIdx = 0; // -- looking back from the current bar, how many bars // back were the hhv and llv values of the previous // n bars, etc.? aHHVBars = HHVBars(H, nBars); aLLVBars = LLVBars(L, nBars); aHHV = HHV(H, nBars); aLLV = LLV(L, nBars); // -- Would like to set this up so pivots are calculated back from // last visible bar to make it easy to "go back" and see the pivots // this code would find. However, the first instance of // _Trace output will show a value of 0 aVisBars = Status("barvisible"); nLastVisBar = LastValue(Highest(IIf(aVisBars, BarIndex(), 0))); _TRACE("Last visible bar: " + nLastVisBar); // -- Initialize value of curTrend curBar = (BarCount-1); curTrend = ""; if (aLLVBars[curBar] < aHHVBars[curBar]) { curTrend = "D"; } else { curTrend = "U"; } // -- Loop through bars. Search for // entirely array-based approach // in future version for (i=0; i lastHPIdx) { // -- Bar and price info for candidate pivot candIdx = curBar - aHHVBars[curBar]; candPrc = aHHV[curBar]; if ( lastHPH < candPrc AND candIdx > lastLPIdx AND candIdx < curBar) { // -- OK, we'll add this as a pivot... aHPivs[candIdx] = 1; // ...and then rearrange elements in the // pivot information arrays for (j=0; j candPrc AND candIdx > lastHPIdx AND candIdx < curBar) { // -- OK, we'll add this as a pivot... aLPivs[candIdx] = 1; // ...and then rearrange elements in the // pivot information arrays for (j=0; j lastHPIdx) { // -- Bar and price info for candidate pivot candIdx = curBar - aHHVBars[curBar]; candPrc = aHHV[curBar]; if ( lastHPH < candPrc AND candIdx > lastLPIdx AND candIdx < curBar) { // -- OK, we'll add this as a pivot... aHPivs[candIdx] = 1; // ...and then rearrange elements in the // pivot information arrays for (j=0; j candPrc AND candIdx > lastHPIdx AND candIdx < curBar) { // -- OK, we'll add this as a pivot... aLPivs[candIdx] = 1; // ...and then rearrange elements in the // pivot information arrays for (j=0; j 5 AND C<20,Cross(C,ValueWhen(Peak(H,x2,1) !=Ref(Peak(H,x2,1),-1),H,1)), //{Price between 20 AND 70} IIf(C>20 AND C<70,Cross(C,ValueWhen(Peak(H,x3,1) !=Ref(Peak(H,x3,1),-1),H,1)), //{Price between 70 AND 150} IIf(C>70 AND C<150,Cross(C,ValueWhen(Peak(H,x4,1) !=Ref(Peak(H,x4,1),-1),H,1)), //{Price between 150 AND 300} IIf(C>150 AND C<300,Cross(C,ValueWhen(Peak(H,x5,1) !=Ref(Peak(H,x5,1),-1),H,1)), //{Price over 300} Cross(C,ValueWhen(Peak(H,x6,1)!=Ref(Peak(H,x6,1),-1),H,1))))))); //{Sell } x1=5; x2=4; x3=3; x4=2; x5=1; x6=.5; //{Lowest price stock <5} BB=IIf(C<5,Cross(ValueWhen(Trough(L,x1,1) !=Ref(Trough(L,x1,1),-1),L,1),C), //{Price between 5 AND 20} IIf(C>5 AND C<20,Cross(ValueWhen(Trough(L,x2,1) !=Ref(Trough(L,x2,1),-1),L,1),C), //{Price between 20 AND 70} IIf(C>20 AND C<70,Cross(ValueWhen(Trough(L,x3,1) !=Ref(Trough(L,x3,1),-1),L,1),C), //{Price between 70 AND 150} IIf(C>70 AND C<150,Cross(ValueWhen(Trough(L,x4,1) !=Ref(Trough(L,x4,1),-1),L,1),C), //{Price between 150 AND 300} IIf(C>150 AND C<300,Cross(ValueWhen(Trough(L,x5,1) !=Ref(Trough(L,x5,1),-1),L,1),C), //{Price over 300} Cross(ValueWhen(Trough(L,x6,1)!=Ref(Trough(L,x6,1) ,-1),L,1),C)))))); Color=IIf(BarsSince(AA)>BarsSince(BB),colorRed,IIf (RSI()>70,colorCustom11,colorDarkGreen)); ///// Trailing Stop Module ///// P6=Param("Trailing Stop Risk",2.5,2,3.5,0.1); P7=Param("Trailing Stop LookBack",2,5,25,1); P8=Param("Trailing Stop PrevLow Switch",0,0,1,1); PrevLow=IIf(P8==1, Ref(C,-TroughBars(C,3,1)) ,Null); //Plot(PrevLow,"",colorRed); //Position sizing// MyTotalPort = Param("MyTotalPort",1000000,10000,10000000,100000) ; AcceptableRisk = Param("AcceptableRisk",0.5,0.1,3,0.1); BarsFromStart = BarsSince(Cross(AA,BB)AND Ref(Color,-1)==colorRed) ; InitialStopLoss =Ref( H - P6*ATR(P7),-BarsFromStart); PositionSizing = 0.01*AcceptableRisk*MyTotalPort/( C - InitialStopLoss ); PPP = IIf( HHV(H - P6*ATR(P7),BarsFromStart+1) MDI()AND Signal() PDI()AND Signal()>MACD(); Plot( 1, /*efines the height of the ribbon in percent of pane width */"ribbon", IIf( uptrend, colorLime, IIf( downtrend, colorRed,IIf(Signal()