Kann ich einen berechneten Wert von einem Indikator erhalten?
Ergebnis 1 bis 2 von 2

Thema: Kann ich einen berechneten Wert von einem Indikator erhalten?

  1. #1
    Wie könnte ich den Wert von O [_i] von diesem Inior zu einem EA bekommen?
    O [_] ist der offene Preis des Overlay-Diagramms indoor.

    Eingefügter Code/ ----------------------------------------- --------------------- /| OverlayChart.mq5 |/| Copyright 2014-2016, EarnForex.com |/| http://www.earnforex.com |/| Konvertiert von der MT4-Version von http://www.irxfx.com |/ ------------------------------------------- ------------------- #property copyright Copyright 2014-2016, EarnForex.com #property link http://www.earnforex.com #property version 1.01 #property indior_chart_window #property indior_buffers 5 #property indior_plots 1 #property indior_type1 DRAW_COLOR_BARS #property indior_color1 clrMediumSeaGreen, clrOrange #property indior_width1 1/Eingabeparameter der Indior-Parameter SubSymbol = GBPUSD; Eingabebool Mirroring = false; input ENUM_DRAW_TYPE DrawType = DRAW_COLOR_BARS; Eingabefarbe GridColor = clrBlack;/Indior-Puffer doppelt O # 91; # 93 ;; doppelt H # 91; # 93; doppeltes L # 91; # 93; doppeltes C # 91; # 93; doppelt Farbe # 91; # 93 ;;/Globale Variablen double SubOpen # 91; # 93 ;; double SubHigh # 91; # 93 ;; double SubLow # 91; # 93 ;; double SubClose # 91; # 93 ;; Zeichenfolge Präfix = OverlayChart;/Indior Prefix int Grid = 10;/Gitterlinien int SnapPips = 10;/Snapspips für Rasterlinien/ -------------------------------------- -------------------------- /| Benutzerdefinierte Indior-Initialisierungsfunktion |/ ------------------------------------------- ------------------- int OnInit () {IndiorSetString (INDICATOR_SHORTNAME, OverLay Chart ( SubSymbol )); SetIndexBuffer (0, O, INDICATOR_DATA); SetIndexBuffer (1, H, INDICATOR_DATA); SetIndexBuffer (2, L, INDICATOR_DATA); SetIndexBuffer (3, C, INDICATOR_DATA); SetIndexBuffer (4, Color, INDICATOR_COLOR_INDEX); ArraySetAsSeries (O, true); ArraySetAsSeries (H, true); ArraySetAsSeries (L, true); ArraySetAsSeries (C, true); ArraySetAsSeries (Color, true); PlotIndexSetDouble (0, PLOT_EMPTY_VALUE, 0); PlotIndexSetInteger (0, PLOT_DRAW_TYPE, DrawType); ArraySetAsSeries (SubOpen, true); ArraySetAsSeries (SubHigh, true); ArraySetAsSeries (SubLow, true); ArraySetAsSeries (SubClose, true); return (INIT_SUCCEEDED); }/ ---------------------------------------------- -------------------- /| Benutzerdefinierte Indior-Deinitialisierungsfunktion |/ ------------------------------------------- ------------------- void OnDeinit (const int reason) {ObjectsDeleteAll (0, Präfix);* for (int _i = 1; _i lt; = Grid; _i ) {ObjectDelete (0, Präfix Gitter IntegerToString (_i)); ObjectDelete (0, Präfix Preis IntegerToString (_i)); } *}/ --------------------------------------- ----------------------- /| Benutzerdefinierte Indior-Iterationsfunktion |/ ------------------------------------------- ------------------- int OnCalculate (const int raten_total, const int prev_calculated, constdatetime Zeit # 91; # 93 ;, const double Öffnen # 91; # 93 ;, const double Hoch # 91; # 93 ;, const double. Low # 91; # 93 ;, const double long tick_volume # 91; # 93 ;, const Long-Volume # 91; # 93 ;, const int spread # 91; # 93;) {int _BarsCount; double _CurRangeHigh, _CurRangeLow, _CurRangeCenter; double _SubRangeHigh, _SubRangeLow, _SubRangeCenter; doppelt _SubPoint; int _SubDigit; double _SubOpen, _SubHigh, _SubLow, _SubClose; double _PipsRatio; double _GridPips, _GridPrice; int _i; ArraySetAsSeries (Open, true); ArraySetAsSeries (High, true); ArraySetAsSeries (Low, true); ArraySetAsSeries (Close, true); ArraySetAsSeries (Time, true); ArrayInitialize (O, 0); ArrayInitialize (H, 0); ArrayInitialize (L, 0); ArrayInitialize (C, 0);/Sichtbare Balken berechnen _BarsCount = (int) ChartGetInteger (0, CHART_VISIBLE_BARS) 1; int _FirstBar = (int) ChartGetInteger (0, CHART_FIRST_VISIBLE_BAR); int _LastBar = _FirstBar - _BarsCount 1; if (_LastBar lt; 0) {_LastBar = 0; _BarsCount = _FirstBar 1; }/Berechnen Sie das Diagrammverhältnis _CurRangeHigh = High # 91; ArrayMaximum (High, _LastBar, _BarsCount) # 93 ;; _CurRangeLow = Low # 91; ArrayMinimum (Low, _LastBar, _BarsCount) # 93 ;; _CurRangeCenter = (_CurRangeHigh _CurRangeLow)2; int n; n = CopyOpen (SubSymbol, 0, _LastBar, _BarsCount, SubOpen); if (! CheckData (n, _BarsCount)) return (0); n = CopyHigh (SubSymbol, 0, _LastBar, _BarsCount, SubHigh); if (! CheckData (n, _BarsCount)) return (0); n = CopyLow (SubSymbol, 0, _LastBar, _BarsCount, SubLow); if (! CheckData (n, _BarsCount)) return (0); n = CopyClose (SubSymbol, 0, _LastBar, _BarsCount, SubClose); if (! CheckData (n, _BarsCount)) return (0); double SubMax = SubHigh # 91; ArrayMaximum (SubHigh) # 93 ;; double SubMin = SubLow # 91; ArrayMinimum (SubLow) # 93 ;; if (Spiegelung) {_SubRangeHigh = SubMin; _SubRangeLow = SubMax; } else {_SubRangeHigh = SubMax; _SubRangeLow = SubMin; } _SubRangeCenter = (_SubRangeHigh _SubRangeLow)2; _SubPoint = SymbolInfoDouble (SubSymbol, SYMBOL_POINT); _SubDigit = (int) SymbolInfoInteger (SubSymbol, SYMBOL_DIGITS); if (_SubRangeHigh - _SubRangeLow == 0) return (0); _PipsRatio = (_CurRangeHigh - _CurRangeLow)(_SubRangeHigh - _SubRangeLow); _GridPips = (_SubRangeHigh - _SubRangeLow)Grid; _GridPips = MathRound ((_ SubRangeHigh - _SubRangeLow)Grid(_SubPoint * SnapPips)) * (_SubPoint * SnapPips);/Kerzenhalter zeichnen für (_i = _LastBar; _i lt; _LastBar _BarsCount; _i ) {int i = _i - _LastBar; _SubOpen = SubOpen # 91; i # 93; - _SubRangeCenter; _SubHigh = SubHigh # 91; i # 93; - _SubRangeCenter; _SubLow = SubLow # 91; i # 93; - _SubRangeCenter; _SubClose = SubClose # 91; i # 93; - _SubRangeCenter; if (Spiegelung) {if (_SubOpen lt; _SubClose){H # 91; _i # 93; = _CurRangeCenter _SubHigh * _PipsRatio; L # 91; _i # 93; = _CurRangeCenter _SubLow * _PipsRatio; Farbe # 91; _i # 93; = 0; } else {L # 91; _i # 93; = _CurRangeCenter _SubLow * _PipsRatio; H # 91; _i # 93; = _CurRangeCenter _SubHigh * _PipsRatio; Farbe # 91; _i # 93; = 1; } C # 91; _i # 93; = _CurRangeCenter _SubClose * _PipsRatio; O # 91; _i # 93; = _CurRangeCenter _SubOpen * _PipsRatio; } else {if (_SubOpen lt; _SubClose) {H # 91; _i # 93; = _CurRangeCenter _SubHigh * _PipsRatio; L # 91; _i # 93; = _CurRangeCenter _SubLow * _PipsRatio; Farbe # 91; _i # 93; = 0; } else {L # 91; _i # 93; = _CurRangeCenter _SubLow * _PipsRatio; H # 91; _i # 93; = _CurRangeCenter _SubHigh * _PipsRatio; Farbe # 91; _i # 93; = 1; } C # 91; _i # 93; = _CurRangeCenter _SubClose * _PipsRatio; O # 91; _i # 93; = _CurRangeCenter _SubOpen * _PipsRatio; }} für (_i = 1; _i lt; = Gitter; _i ) {_GridPrice = MathRound (_SubRangeCenter(_SubPoint * SnapPips)) * (_SubPoint * SnapPips); _GridPrice = ((_GridPrice _GridPips2) _GridPips * (Grid2 - 1)) - (_GridPips * (_i - 1)); string grid_string = Präfix Gitter IntegerToString (_i); ObjectCreate (0, grid_string, OBJ_TREND, 0, 0, 0); ObjectSetInteger (0, grid_string, OBJPROP_TIME, 0, Zeit # 91; _FirstBar # 93;); ObjectSetDouble (0, grid_string, OBJPROP_PRICE, 0, _CurRangeCenter (_GridPrice - _SubRangeCenter) * _PipsRatio); ObjectSetInteger (0, grid_string, OBJPROP_TIME, 1, Zeit # 91; _LastBar # 93;); ObjectSetDouble (0, grid_string, OBJPROP_PRICE, 1, _CurRangeCenter (_GridPrice - _SubRangeCenter) * _PipsRatio); ObjectSetInteger (0, grid_string, OBJPROP_COLOR, GridColor); ObjectSetInteger (0, grid_string, OBJPROP_STYLE, STYLE_DOT); ObjectSetInteger (0, grid_string, OBJPROP_WIDTH, 1); ObjectSetInteger (0, grid_string, OBJPROP_RAY_RIGHT, true); grid_string = Präfix Preis IntegerToString (_i); ObjectCreate (0, grid_string, OBJ_TEXT, 0, 0, 0); ObjectSetInteger (0, grid_string, OBJPROP_TIME, 0, Zeit # 91; _FirstBar - _BarsCount10 # 93;); ObjectSetDouble (0, grid_string, OBJPROP_PRICE, 0, _CurRangeCenter (_GridPrice - _SubRangeCenter) * _PipsRatio); ObjectSetInteger (0, grid_string, OBJPROP_COLOR, GridColor); ObjectSetString (0, grid_string, OBJPROP_TEXT, DoubleToString (_GridPrice, _SubDigit)); } return (rates_total); }/Überprüft die Anzahl der Timeseries-Balken und gibt entweder true (OK) oder false (Error) zurück. bool CheckData (int n, int _BarsCount) {if (n == -1) {Print (Diagrammdaten nicht verfügbar:, SubSymbol); falsch zurückgeben); } if (n! = _BarsCount) {Print (Diagrammdaten werden noch geladen für:, SubSymbol); falsch zurückgeben); } return (true); }/ ---------------------------------------------- --------------------

  2. #2
    Sie müssen in Ihrem EA die Funktion iCustom () verwenden, die den rechten Puffer aufruft. Wenn Sie in Ihrem Beispiel den Wert O [] benötigen, ist der Puffer für iCustom () die 0 (Null).

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  
Die tradingintuitive Webseite verwendet Cookies
Wir nutzen Cookies, um Ihnen das Webseitenerlebnis bestmöglich anbieten zu können. Durch weitere Nutzung der Webseite erlauben Sie die Nutzung von Cookies. Für weitere Details und wie Sie ggf. diese Einstellungen verändern können, lesen Sie bitte unsere Datenschutzbestimmung. Lesen Sie mehr