Những series bài hay về phần mềm phân tích kỹ thuật AmiBroker
  • Thông báo


    Kết quả 1 đến 20 của 38

    Threaded View

    1. #24
      Ngày tham gia
      Oct 2003
      Bài viết
      365
      Được cám ơn 215 lần trong 148 bài gởi

      Mặc định Những series bài hay về phần mềm PTKT phân tích kỹ thuật AmiBroker

      Đây là loạt bài AmiBroker AFL Library về phần mềm phân tích kỹ thuật PTKT AmiBroker

      Details:

      Formula name: 2 Timeframes Candlestick Bar Chart
      Author/Uploader: Jorgen Wallgren - (email hidden)
      Date/Time added: 2009-07-07 02:27:54
      Origin: Got the basic idea from David's (dbwyatt_1999) 2 Timeframe chart code, using the PlotOHLC function with styleCloud, which was shared by him on the AmiBroker List.
      Keywords: Timeframe, candlestick
      Level: medium
      Flags: indicator
      DISCLAIMER: Most formulas present in AFL on-line library are submitted by the users and are provided here on an "as is" and "as available" basis. AmiBroker.com makes no representations or warranties of any kind to the contents or the operation of material presented here. We do not maintain nor provide technical support for 3rd party formulas.

      Description:

      Specially designed for use in day trading AND to save chart space. This chart will displays 2 sets of candlestick bars. One for the time Interval set for your chart- for example 1 Minute. The higher timeframe candlestick bars are created by using gfx Low-level graphics and will display
      according to the parameters you set- for example 5 minutes.

      Then please observe this AFL code uses the function ColorBlend(ColorFrom, ColorTo, Factor) which was introduced in version 5.21 Beta.
      Formula:

      _SECTION_BEGIN("2 Timeframes Candlestick Bar Chart");
      // Specially designed for use in day trading and to save chart space. This
      chart will displays 2 sets
      // of candlestick bars. One for the time interval set for your chart- for
      example 1 minute.
      // The higher timeframe candlestick bars are created by using gfx low-level
      graphics and will display
      // according to the parameters you set- for example 5 minutes.

      // I got the idea from David's (dbwyatt_1999) 2 Timeframe chart code which was
      shared by him on the AmiBroker List.
      // It uses TimeFrame functions with the PlotOHLC function using styleCloud. So
      I was thinking it would look
      // very nice using low-level graphics instead. Little bit more complicated, but
      I got a few great pointers from Herman!

      // If your chart background turns pink- please read the error message in the
      upper left corner of the chart.
      // Then please observe this AFL code uses ColorBlend(ColorFrom, ColorTo,
      Factor) which was introduced in version 5.21 beta.
      // The rules are simple- time frames from 1 up to 60 minutes AND Lower time
      frame must be smaller than the Higher time frame.

      Version(5.21);
      SetChartOptions(2, chartShowDates);
      Title = Name();
      //XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXX
      // PARAMETERS AND SETTINGS:
      //XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXX
      ChartLum = Param("Chart Background Color Intensity", 0.40, 0, 1, 0.01);
      TFMinShort = Param("Short Timeframe (Minutes)", 1, 1, 60, 1);
      TFMinLong = Param("Long Timeframe (Minutes)", 5, 1, 60, 1);
      OnSTFBars = ParamToggle("Short TF Bars", "Off, On", 1);
      OnLTFBars = ParamToggle("Long TF Bars", "Off, On", 1);
      BarLum1 = Param("Short TF Bar Color Intensity", 0, 0, 1, 0.01);
      BarLum2 = Param("Long TF Bar Color Intensity", 0.70, 0, 1, 0.01);

      SetChartBkColor(ColorBlend(colorLightBlue, colorWhite, ChartLum));
      // Bar Colors for the Short Timeframe candlestick bars:
      LineColor = ColorBlend(colorBlack, colorWhite, BarLum1);
      UpBarColor = ColorBlend(colorBrightGreen, colorWhite, BarLum1);
      DnBarColor = ColorBlend(colorRed, colorWhite, BarLum1);
      // Bar Colors For The Long Timeframe candlestick bars:
      TFLineColor = ColorBlend(colorBlack, colorWhite, BarLum2 - 0.1);
      TFUpBarColor = ColorBlend(colorBrightGreen, colorWhite, BarLum2);
      TFDnBarColor = ColorBlend(colorRed, colorWhite, BarLum2);
      //XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXX
      // FUNCTIONS:
      //XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXX
      function GetVisibleBarCount()

      lvb = Status("lastvisiblebar");
      fvb = Status("firstvisiblebar");
      return Min( Lvb - fvb, BarCount - fvb );
      }

      function GfxConvertBarToPixelX( bar )

      lvb = Status("lastvisiblebar");
      fvb = Status("firstvisiblebar");
      pxchartleft = Status("pxchartleft");
      pxchartwidth = Status("pxchartwidth");
      return pxchartleft + bar * pxchartwidth / ( Lvb - fvb + 1 );
      }

      function GfxConvertValueToPixelY( Value )

      local Miny, Maxy, pxchartbottom, pxchartheight;
      Miny = Status("axisminy");
      Maxy = Status("axismaxy");
      pxchartbottom = Status("pxchartbottom");
      pxchartheight = Status("pxchartheight");
      return pxchartbottom - floor( 0.5 + ( Value - Miny ) * pxchartheight/ ( Maxy -
      Miny ) );
      }

      StaticVarKey = Name();
      procedure xStaticVarSet(SName, SValue)

      global StaticVarKey;
      if (StaticVarKey != "")
      StaticVarSet(Sname + StaticVarKey, Svalue);
      }
      //XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXX
      // MAIN PROGRAM:
      //XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXX
      if(Interval() != TFMinShort * 60)

      Title = Title + "\n" + "\n" + "ALERT, ALERT, ALERT!!!" + "\n" + "Set the chart
      time interval to: " + NumToStr(TFMinShort, 1.0, 1) +
      " Minute(s) or change the Short Timeframe Parameter setting.";
      OnSTFBars = 0;
      OnLTFBars = 0;
      SetChartBkColor(colorRose);
      }

      if(TFMinShort >= TFMinLong)

      Title = Title + "\n" + "\n" + "ALERT, ALERT, ALERT!!!" + "\n" + "The Long
      Timeframe setting must be longer than the Short Timeframe!";
      OnSTFBars = 0;
      OnLTFBars = 0;
      SetChartBkColor(colorRose);
      }

      if(OnSTFBars)

      BarColor = IIf(Close > Open, UpBarColor, DnBarColor);
      SetBarFillColor(BarColor);
      Plot(Close, "", LineColor, styleCandle);
      }
      else
      Plot(Close, "", colorBlack, styleCandle | styleNoDraw);

      TFSec = in1Minute * TFMinLong;
      TimeFrameSet(TFSec);
      TFOpen = Open;
      TFHigh = High;
      TFLow = Low;
      TFClose = Close;
      TFBarIndex = BarIndex();
      TFLastBarIndex = LastValue(BarIndex());
      TimeFrameRestore();

      TFOpen = TimeFrameExpand(TFOpen, TFSec, expandFirst);
      TFHigh = TimeFrameExpand(TFHigh, TFSec, expandFirst);
      TFLow = TimeFrameExpand(TFLow, TFSec, expandFirst);
      TFClose = TimeFrameExpand(TFClose, TFSec, expandFirst);
      TFBarIndex = TimeFrameExpand(TFBarIndex, TFSec, expandLast + 1);
      TFLastBarIndex = TimeFrameExpand(TFLastBarIndex, TFSec, expandLast + 1);

      CandleTop = Max(TFOpen, TFClose);
      CandleBottom = Min(TFOpen, TFClose);
      //================================================== ==========================
      // GFX LOW-LEVEL GRAPHICS SECTION.
      // DRAWING THE LONG TIMEFRAME CANDLESTICK BARS:
      //================================================== ==========================
      if(OnLTFBars)

      GfxSetOverlayMode(1);
      AllVisibleBars = GetVisibleBarCount();
      fvb = Status("firstvisiblebar");
      ChartWidth = GfxConvertBarToPixelX(AllVisibleBars );
      PixBar = ChartWidth / AllVisibleBars;
      Adjust = Pixbar * 0.35;
      TFMinutes = TFMinLong / TFMinShort;
      NewTFBar = IIf(TFBarIndex != Ref(TFBarIndex, -1), 1, 0);
      BarInd = BarIndex();
      TFLastBarIndex = LastValue(TFLastBarIndex);

      // DRAW BAR HISTORY AND THE CURRENT BAR:
      for(i = 0; i < AllVisibleBars; i++)

      x1 = GfxConvertBarToPixelX(i) * NewTFBar[i + fvb] - Adjust;
      if(BarInd[i + fvb] < TFLastBarIndex AND NewTFBar[i + fvb] == 1)

      Counter = 0;
      for(n = i + 1; NewTFBar[n + fvb] == 0 AND n + fvb < BarCount-1; n++)
      Counter++;
      x2 = GfxConvertBarToPixelX(i + Counter) * NewTFBar[i + fvb] + 1 + Adjust;
      }

      if(TFBarIndex[i + fvb] == TFLastBarIndex)
      x2 = GfxConvertBarToPixelX(i + TFMinutes - 1) * NewTFBar[i + fvb] + 1 +
      Adjust;

      y1 = GfxConvertValueToPixelY(CandleTop[i + fvb]);
      y2 = GfxConvertValueToPixelY(CandleBottom[i + fvb]);
      yH = GfxConvertValueToPixelY(TFHigh[i + fvb]);
      yL = GfxConvertValueToPixelY(TFLow[i + fvb]);

      // Candle Body:
      GfxSelectPen(TFLineColor, 0);
      FillColor = IIf(TFOpen[i + fvb] < TFClose[i + fvb], TFUpBarColor,
      TFDnBarColor);
      GfxSelectSolidBrush(FillColor);
      if(y1 == y2){y1 = y1 - Adjust; y2 = y2 + Adjust;
      GfxSelectSolidBrush(TFLineColor);}
      if(x1 > 0)
      GfxRectangle( x1, y1, x2, y2);
      // Candle High and Low:
      GfxSelectPen(TFLineColor, 2);
      GfxMoveTo(x2+(x1-x2)/2, y1);
      GfxLineTo(x2+(x1-x2)/2, yH);
      GfxMoveTo(x2+(x1-x2)/2, y2);
      GfxLineTo(x2+(x1-x2)/2, yL);
      RequestTimedRefresh(0);
      }
      }
      }
      _SECTION_END();
      Cuộc đời tàn nhẫn nuôi anh lớn
      Xã hội khốn nạn dạy anh khôn

    2. Có 2 thành viên đã cám ơn 1nightdream :
      tigeran (10-08-2013), tradingpro8x (12-08-2013)

    Thông tin của chủ đề

    Users Browsing this Thread

    Có 1 thành viên đang xem chủ đề này. (0 thành viên và 1 khách vãng lai)

       

    Similar Threads

    1. Một bài phân tích hay, có lý và khách quan
      By Brainstorm in forum Thảo luận Tình hình
      Trả lời: 0
      Bài viết cuối: 17-06-2012, 11:41 PM
    2. Phần mềm phân tích kỹ thuật
      By waterloo1815 in forum CLB Chứng khoán
      Trả lời: 2
      Bài viết cuối: 28-10-2009, 11:32 PM

    Bookmarks

    Quyền viết bài

    • Bạn Không thể gửi Chủ đề mới
    • Bạn Không thể Gửi trả lời
    • Bạn Không thể Gửi file đính kèm
    • Bạn Không thể Sửa bài viết của mình