Доброго времени суток всем!
Пытался подключить свой индикатор к этому https://www.mql5.com/ru/code/26798 советнику
но ничено не вышло........автор советника посоветовал обратится на форум.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Советники: Endless Possibilities
Valeriy Yastremskiy, 2021.01.08 19:54
Советник сперва собирает данные ЗЗ, а потом по ним открывает ордера с нижних точек бай, с верхних селл. В реале или на демке он работать не будет.) Это такой тестер максимального профита на исторических данных.
Он подглядывает в будущее. Что вы еще хотите от него добиться?
Он подглядывает в будущее. Что вы еще хотите от него добиться?
Переделать что бы он работал на реале и демке!
Он подглядывает в будущее. Что вы еще хотите от него добиться?
Все советники собирают данные и все они работают!!!
Все советники собирают данные и все они работают!!!
Там предупреждение есть. Советник предназначен для работы в тестере стратегий.
Значит не будет работать на рынке.
Доброго времени суток всем!
Пытался подключить свой индикатор к этому https://www.mql5.com/ru/code/26798 советнику
но ничено не вышло........автор советника посоветовал обратится на форум.
какой индикатор ? покажите его код
какой индикатор ? покажите его код
Этот
#property copyright "Стандартная оценка. StdScore v4.2. © FXcoder" #property link "http://fxcoder.blogspot.com" #property strict #property indicator_separate_window #property indicator_buffers 11 // The first buffer is for the value, other 10 are for candle drawing #property indicator_color1 clrRoyalBlue // Value #property indicator_color2 clrLimeGreen // BullBody #property indicator_color3 clrLimeGreen // BullBody2 #property indicator_color4 clrRed // BearBody #property indicator_color5 clrRed // BearBody2 #property indicator_color6 clrNONE // BodyMask #property indicator_color7 clrLimeGreen // BullShadow #property indicator_color8 clrLimeGreen // BullShadow2 #property indicator_color9 clrRed // BearShadow #property indicator_color10 clrRed // BearShadow2 #property indicator_color11 clrNONE // ShadowMask #property indicator_width1 1 #property indicator_levelcolor Gray #property indicator_levelstyle STYLE_DOT #property indicator_level1 2 #property indicator_level2 0 #property indicator_level3 -2 #property indicator_minimum -4 #property indicator_maximum 4 #define COLOR_IS_NONE(C) (((C) >> 24) != 0) enum ENUM_CHART_TYPE { CHART_TYPE_LINE = 0, // Line CHART_TYPE_BAR = 1, // Bar CHART_TYPE_CANDLESTICK = 2 // Candlestick }; input int N = 30; // Period input string Sym = ""; // Symbol input bool Reverse = false; // Reverse input ENUM_APPLIED_PRICE AppliedPrice = PRICE_MEDIAN; // Applied price input ENUM_APPLIED_PRICE ValuePrice = PRICE_CLOSE; // Value and line applied price input ENUM_CHART_TYPE ChartType = CHART_TYPE_CANDLESTICK; // Chart type input color BullColor = clrLime; // Bull color input color BearColor = clrRed; // Bear color input color BackColor = clrNONE; // Background color (None=auto) input int BodyWidth = 0; // Body width (0=auto) input int MaxBars = 0; // Maximum bars input int Shift = 0; // Shift double Value[], BullBody[], BullBody2[], BearBody[], BearBody2[], BodyMask[], BullShadow[], BullShadow2[], BearShadow[], BearShadow2[], ShadowMask[]; datetime _lastTickTime = 0; int _bodyWidth = 2; color _bgColor = clrNONE; string _sym; int _n; int start() { UpdateBodyWidth(); UpdateMaskColor(); int countedBars = IndicatorCounted(); if (countedBars > 0) countedBars--; int barsCount = Bars - countedBars; if (MaxBars > 0) { if (Bars - countedBars > 2) { barsCount = MaxBars; ClearData(); } else { ClearData(MaxBars); barsCount = MathMin(barsCount, MaxBars); } } // в мультивалютном пересчитываем несколько последних баров, а не один if (_lastTickTime != 0 && _sym != Symbol()) barsCount = MathMax(barsCount, iBarShift(Symbol(), Period(), _lastTickTime, false) + 1); double o, h, l, c, value, ma, sd; for (int i = barsCount - 1; i >= 0; i--) { ClearData(i); o = EMPTY_VALUE; h = EMPTY_VALUE; l = EMPTY_VALUE; c = EMPTY_VALUE; value = EMPTY_VALUE; ma = EMPTY_VALUE; sd = 0; int si = i; if (_sym == Symbol()) { o = Open[i]; h = High[i]; l = Low[i]; c = Close[i]; } else { // определить бар для другого символа datetime dt = iTime(Symbol(), Period(), i); si = iBarShift(_sym, Period(), dt, true); if (si != -1) { // бар тот же o = iOpen(_sym, Period(), si); h = iHigh(_sym, Period(), si); l = iLow(_sym, Period(), si); c = iClose(_sym, Period(), si); _lastTickTime = dt; // запоминаем время последнего тика } else { // в случае отсутствия данных по символу брать прошлый бар и его цену закрытия si = iBarShift(_sym, Period(), dt, false); if (si != -1) { // защита от подглядывания в будущее datetime sdt = iTime(_sym, Period(), si); if (sdt > dt) si++; o = iClose(_sym, Period(), si); h = o; l = o; c = o; } } } if (c != EMPTY_VALUE) { // Вычитание средней ma = iMA(_sym, Period(), _n, 0, MODE_SMA, AppliedPrice, si); if (ma > 0) { o = o - ma; h = h - ma; l = l - ma; c = c - ma; value = GetPrice(ValuePrice, o, h, l, c); // Деление на стандартное отклонение sd = iStdDev(_sym, Period(), _n, 0, MODE_SMA, AppliedPrice, si); if (sd > 0) { o = o / sd; h = h / sd; l = l / sd; c = c / sd; value = GetPrice(ValuePrice, o, h, l, c); if (Reverse) { o = -o; h = -h; l = -l; c = -c; // меняем местами верх и низ для корректной отрисовки Swap(h, l); value = GetPrice(ValuePrice, o, h, l, c); } } // sd > 0 } // ma > 0 } // c != EMPTY_VALUE Value[i] = value; if (ChartType != CHART_TYPE_LINE) DrawBar(o, h, l, c, i); } // for: bars loop return(0); } int init() { _n = N >= 100 ? N : 40; //Было _n = N >= 2 ? N : 2; _sym = Sym == "" ? Symbol() : UpperString(Sym); _bodyWidth = BodyWidth; if (ChartType == CHART_TYPE_LINE) { SetIndexStyle(0, DRAW_LINE, EMPTY, EMPTY, BullColor); SetIndexStyle(1, DRAW_NONE); SetIndexStyle(2, DRAW_NONE); SetIndexStyle(3, DRAW_NONE); SetIndexStyle(4, DRAW_NONE); SetIndexStyle(5, DRAW_NONE); SetIndexStyle(6, DRAW_NONE); SetIndexStyle(7, DRAW_NONE); SetIndexStyle(8, DRAW_NONE); SetIndexStyle(9, DRAW_NONE); SetIndexStyle(10, DRAW_NONE); } else { SetIndexStyle(0, DRAW_NONE, EMPTY, EMPTY, clrNONE); SetIndexStyle(1, DRAW_HISTOGRAM, EMPTY, _bodyWidth, BullColor); SetIndexStyle(2, DRAW_HISTOGRAM, EMPTY, _bodyWidth, BullColor); SetIndexStyle(3, DRAW_HISTOGRAM, EMPTY, _bodyWidth, BearColor); SetIndexStyle(4, DRAW_HISTOGRAM, EMPTY, _bodyWidth, BearColor); SetIndexStyle(5, DRAW_HISTOGRAM, EMPTY, _bodyWidth, _bgColor); SetIndexStyle(6, DRAW_HISTOGRAM, EMPTY, 1, BullColor); SetIndexStyle(7, DRAW_HISTOGRAM, EMPTY, 1, BullColor); SetIndexStyle(8, DRAW_HISTOGRAM, EMPTY, 1, BearColor); SetIndexStyle(9, DRAW_HISTOGRAM, EMPTY, 1, BearColor); SetIndexStyle(10, DRAW_HISTOGRAM, EMPTY, 1, _bgColor); } SetIndexBuffer(0, Value); SetIndexBuffer(1, BullBody); SetIndexBuffer(2, BullBody2); SetIndexBuffer(3, BearBody); SetIndexBuffer(4, BearBody2); SetIndexBuffer(5, BodyMask); SetIndexBuffer(6, BullShadow); SetIndexBuffer(7, BullShadow2); SetIndexBuffer(8, BearShadow); SetIndexBuffer(9, BearShadow2); SetIndexBuffer(10, ShadowMask); for (int i = 0; i <= 10; i++) SetIndexShift(i, Shift); SetIndexLabel(0, "Value"); SetIndexLabel(1, "Bull Body"); SetIndexLabel(2, "Bull Body 2"); SetIndexLabel(3, "Bear Body"); SetIndexLabel(4, "Bear Body 2"); SetIndexLabel(5, "Body Mask"); SetIndexLabel(6, "Bull Shadow"); SetIndexLabel(7, "Bull Shadow 2"); SetIndexLabel(8, "Bear Shadow"); SetIndexLabel(9, "Bear Shadow 2"); SetIndexLabel(10, "Shadow Mask"); string name = "StdScore(" + (Reverse || _sym != Symbol() ? (Reverse ? "1/" : "") + _sym + "," : "") + IntegerToString(_n) + ")"; IndicatorShortName(name); return(0); } void OnChartEvent(const int id, const long& lparam, const double& dparam, const string& sparam) { if (id == CHARTEVENT_CHART_CHANGE) { if (UpdateBodyWidth() || UpdateMaskColor()) ChartRedraw(); } } bool UpdateMaskColor() { if (!ColorIsNone(BackColor)) return(false); // Определить цвета фона color newBgColor = (color)ChartGetInteger(0, CHART_COLOR_BACKGROUND); if (newBgColor == _bgColor) return(false); _bgColor = newBgColor; SetIndexStyle(5, DRAW_HISTOGRAM, EMPTY, EMPTY, _bgColor); SetIndexStyle(10, DRAW_HISTOGRAM, EMPTY, EMPTY, _bgColor); return(true); } bool UpdateBodyWidth() { if (BodyWidth > 0) return(false); // Определить толщину тела бара int newBodyWidth = GetBarBodyWidth(); if (newBodyWidth == 0) return(false); if (newBodyWidth == _bodyWidth) return(false); _bodyWidth = newBodyWidth; if (ChartType == CHART_TYPE_BAR) { for (int i = 6; i <= 10; i++) SetIndexStyle(i, DRAW_HISTOGRAM, EMPTY, _bodyWidth); } else { for (int i = 1; i <= 5; i++) SetIndexStyle(i, DRAW_HISTOGRAM, EMPTY, _bodyWidth); } return(true); } void ClearData(int bar = -1) { if (bar == -1) { ArrayInitialize(Value, EMPTY_VALUE); ArrayInitialize(BullBody, EMPTY_VALUE); ArrayInitialize(BullBody2, EMPTY_VALUE); ArrayInitialize(BearBody, EMPTY_VALUE); ArrayInitialize(BearBody2, EMPTY_VALUE); ArrayInitialize(BodyMask, EMPTY_VALUE); ArrayInitialize(BullShadow, EMPTY_VALUE); ArrayInitialize(BullShadow2, EMPTY_VALUE); ArrayInitialize(BearShadow, EMPTY_VALUE); ArrayInitialize(BearShadow2, EMPTY_VALUE); ArrayInitialize(ShadowMask, EMPTY_VALUE); } else { Value[bar] = EMPTY_VALUE; BullBody[bar] = EMPTY_VALUE; BullBody2[bar] = EMPTY_VALUE; BearBody[bar] = EMPTY_VALUE; BearBody2[bar] = EMPTY_VALUE; BodyMask[bar] = EMPTY_VALUE; BullShadow[bar] = EMPTY_VALUE; BullShadow2[bar] = EMPTY_VALUE; BearShadow[bar] = EMPTY_VALUE; BearShadow2[bar] = EMPTY_VALUE; ShadowMask[bar] = EMPTY_VALUE; } } double GetPrice(int ap, double o, double h, double l, double c) { switch(ap) { case PRICE_CLOSE: return(c); case PRICE_OPEN: return(o); case PRICE_HIGH: return(h); case PRICE_LOW: return(l); case PRICE_MEDIAN: return((h + l) / 2.0); case PRICE_TYPICAL: return((h + l + c) / 3.0); case PRICE_WEIGHTED: return((h + l + 2.0 * c) / 4.0); } return(0); } // Нарисовать бар void DrawBar(double open, double high, double low, double close, int bar) { bool isBull = close >= open; bool isBear = !isBull; double bodyMax = open > close ? open : close; double bodyMin = open < close ? open : close; if (ChartType == CHART_TYPE_CANDLESTICK) { BullBody[bar] = isBull && (close >= 0) ? close : EMPTY_VALUE; BullBody2[bar] = isBull && (open < 0) ? open : EMPTY_VALUE; BearBody[bar] = isBear && (open >= 0) ? open : EMPTY_VALUE; BearBody2[bar] = isBear && (close < 0) ? close : EMPTY_VALUE; BodyMask[bar] = (bodyMin > 0) ? bodyMin : (bodyMax < 0 ? bodyMax : EMPTY_VALUE); } BullShadow[bar] = isBull && (high >= 0) ? high : EMPTY_VALUE; BullShadow2[bar] = isBull && (low < 0) ? low : EMPTY_VALUE; BearShadow[bar] = isBear && (high >= 0) ? high : EMPTY_VALUE; BearShadow2[bar] = isBear && (low < 0) ? low : EMPTY_VALUE; ShadowMask[bar] = low >= 0 ? low : (high < 0 ? high : EMPTY_VALUE); } int GetBarBodyWidth(const long chartId = 0) { long chartScale; if (!ChartGetInteger(chartId, CHART_SCALE, 0, chartScale)) return(0); if (chartScale == 0) return(1); if (chartScale == 1) return(1); if (chartScale == 2) return(2); if (chartScale == 3) return(3); if (chartScale == 4) return(6); if (chartScale == 5) return(12); return(0); } template <typename T> void Swap(T &value1, T &value2) { T tmp = value1; value1 = value2; value2 = tmp; } bool ColorIsNone(const color c) { return(COLOR_IS_NONE(c)); } string UpperString(string s) { StringToUpper(s); return(s); }
Этот
какие сигналы использовать ?
какие сигналы использовать ?
верхний и нижний.........вы про это?
или вы имели ввиду sell и bay?
верхний и нижний.........вы про это?
или вы имели ввиду sell и bay?
индикатор формирует сигналы для покупки и продажи
опишите и нарисуйте эти сигналы
что бы советником их использовать
вы понимаете о чем речь ?
индикатор формирует сигналы для покупки и продажи
опишите и нарисуйте эти сигналы
что бы советником их использовать
вы понимаете о чем речь ?
при верхней точке будет sell при нижней bay вот и все............как в индикаторе Зиг Заг
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Доброго времени суток всем!
Пытался подключить свой индикатор к этому https://www.mql5.com/ru/code/26798 советнику
но ничено не вышло........автор советника посоветовал обратится на форум.