Нужна помощь xpma цвет меняющейся волны (радуга)
Results 1 to 4 of 4

Thread: Нужна помощь xpma цвет меняющейся волны (радуга)

  1. #1
    Привет всем, я мог бы использовать небольшую помощь по этому вопросу. Я немного подправил вещи в коде, но никак не могу понять, как отрегулировать наклон или как буферизовать, чтобы желтый оставался желтым немного дольше. Я торгую на 5-секундных графиках, используя flexichart, и хотел бы, чтобы волна стала желтой, так как тренд исчерпывает топливо и находится в процессе консолидации. Я настроил это на lwma в настоящее время. Кроме того, цвета - красный вверх и зеленый вниз, и я не разобрался в этом, не входя и не меняя каждый отдельный индикатор. Я явно не программист.

    Вот код, который у меня есть, и снимок экрана.

    //Версия: 11
    //Дата последнего обновления: 23 мая 2011 г.
    // ----------------------------------------------- -------------------
    //| Скользящая средняя XP |
    //| xpMA.mq4 |
    //| Разработано Coders Guru |
    //|
    http://www.xpworx.com|
    // ----------------------------------------------- -------------------
    # Свойство ссылка http://www.xpworx.com
    // ----------------------------------------------- -------------------
    #property Indior_chart_window
    #property Indic_buffers 4
    #property Indic_color1 Yellow
    #property Indic_color2 Green
    #property Indic_color3 Red
    #property Indior_width1 1
    #property Indior_width2 1
    #property Indior_width3 1
    // ----------------------------------------------- -------------------
    /* Константы скользящих средних:
    ------------------------------------
    MODE_SMA 0 Простая скользящая средняя,
    MODE_EMA 1 экспоненциальная скользящая средняя,
    MODE_SMMA 2 Сглаженное скользящее среднее,
    MODE_LWMA 3 Линейное взвешенное скользящее среднее.
    MODE_DEMA 4 Двойная экспоненциальная скользящая средняя.
    MODE_TEMA 5 Тройная экспоненциальная скользящая средняя.
    MODE_T3MA 6 Скользящая средняя T3.
    MODE_JMA 7 Скользящая средняя Юрика.
    MODE_HMA 8 Скользящая средняя корпуса.
    MODE_DECEMA 9 DECEMA Скользящая средняя.
    MODE_SALT 10 Индикатор соли.
    ------------------------------------ *
    #define MODE_DEMA 4
    #define MODE_TEMA 5
    #define MODE_T3MA 6
    #define MODE_JMA 7
    #define MODE_HMA 8
    #define MODE_DECEMA 9
    #define MODE_SALT 10
    /* Применяемые ценовые константы:
    -------------------------------
    PRICE_CLOSE 0 Цена закрытия.
    PRICE_OPEN 1 Цена открытия.
    PRICE_HIGH 2 Высокая цена.
    PRICE_LOW 3 Низкая цена.
    PRICE_MEDIAN 4 Средняя цена (высокая низкая)2
    PRICE_TYPICAL 5 Типичная цена (высокая низкая закрытие)3.
    PRICE_WEIGHTED 6 Взвешенная цена закрытия, (максимум минимум закрытие закрытие)4.
    --------------------------------- *
    extern int MA_Period = 25;
    extern int MA_Type = MODE_LWMA;
    extern int MA_Applied = PRICE_CLOSE;
    extern double T3MA_VolumeFactor = 0,8;
    внешний двойной JMA_Phase = 1;
    extern int Step_Period = 1;
    // ----------------------------------------------- -------------------
    extern int BarsCount = 20000;
    extern bool Alert_On = false;
    extern bool Arrows_On = false;
    extern bool Email_On = false;
    // ----------------------------------------------- -------------------
    int UpArrowCode = 241;
    int DownArrowCode = 242;
    color UpArrowColor = Red;
    color DownArrowColor = Blue;
    int UpArrowSize = 3;
    int DownArrowSize = 3;
    // ----------------------------------------------- -------------------
    строка pro = xpMA v11;
    строка ver =;
    // ----------------------------------------------- -------------------
    двойной UpBuffer [];
    double DownBuffer [];
    двойной буф [];
    двойной буфер [];
    двойной темпбуфер [];
    двухместные [];
    двойной сигнал [];
    // ----------------------------------------------- -------------------
    int nShift;
    двойная точка;
    // ----------------------------------------------- -------------------
    int init ()
    {
    ver = GenVer ();
    DeleteObjects ();

    Штамп (ver, pro - ver, 15,20);
    Копия строки = C 2005-2011 XPWORX. Все права защищены.;
    copy = StringSetChar (copy, 0, '©');
    Штамп (авторское право, копия, 15,35);


    IndiorBuffers (7);

    SetIndexStyle (1, DRAW_LINE, STYLE_SOLID, 0);
    SetIndexBuffer (2, UpBuffer);
    SetIndexStyle (1, DRAW_LINE, STYLE_SOLID, 0);
    SetIndexBuffer (1, DownBuffer);
    SetIndexStyle (0, DRAW_LINE, STYLE_SOLID, 0);
    SetIndexBuffer (0, ЬиЕ);

    SetIndexBuffer (3, сигнал);
    SetIndexBuffer (4, буфер);
    SetIndexBuffer (5, tempbuffer);
    SetIndexBuffer (6, matriple);

    SetIndexLabel (0, скользящее среднее XP);
    SetIndexLabel (1, DownBuffer);
    SetIndexLabel (2, UpBuffer);
    SetIndexLabel (3, сигнал);

    Переключатель (Период ())
    {
    случай 1: nShift = 5; перерыв;
    случай 5: nShift = 7; перерыв;
    случай 15: nShift = 10; перерыв;
    случай 30: nShift = 15; перерыв;
    случай 60: nShift = 20; перерыв;
    дело 240: nShift = 30; перерыв;
    дело 1440: nShift = 80; перерыв;
    дело 10080: nShift = 150; перерыв;
    дело 43200: nShift = 250; перерыв;
    }

    if (Digits == 2 || Digits == 3) point = 0.01;
    if (Digits == 4 || Digits == 5) point = 0.0001;

    Возвращение (0);
    }

    int deinit ()
    {
    DeleteObjects ();
    Возвращение (0);
    }

    void start ()
    {
    int limit;
    int countted_bars = IndiorCounting ();
    if (countted_barslt; 0) return (-1);
    if (countted_barsgt; 0) countted_bars--;
    предел = Bars-counted_bars;

    переключатель (MA_Type)
    {
    case MODE_SMA:
    case MODE_EMA:
    case MODE_SMMA:
    case MODE_LWMA:
    {
    для (int i = 0; ilt; limit; i ) буфера [i] = iMA (NULL, 0, MA_Period, 0, MA_Type, MA_Applied, i);
    перерыв;
    }
    case MODE_DEMA:
    {
    для (i = 0; ilt; предел; i ) темпбуфера [i] = iMA (NULL, 0, MA_Period, 0, MODE_EMA, MA_Applied, i);
    для (i = 0; ilt; лимит; i ) matriple [i] = iMAOnArray (tempbuffer, 0, MA_Period, 0, MODE_EMA, i);
    для буфера (i = 0; ilt; limit; i ) [i] = iMAOnArray (matriple, 0, MA_Period, 0, MODE_EMA, i);
    перерыв;
    }
    case MODE_TEMA:
    {
    для (i = 0; ilt; предел; i ) темпбуфера [i] = iMA (NULL, 0, MA_Period, 0, MODE_EMA, MA_Applied, i);
    для буфера (i = 0; ilt; limit; i ) [i] = iMAOnArray (tempbuffer, 0, MA_Period, 0, MODE_EMA, i);
    перерыв;
    }
    case MODE_T3MA:
    {
    для буфера (i = 0; ilt; limit; i ) [i] = iCustom (NULL, 0, T3MA, MA_Period, T3MA_VolumeFactor, 0, i);
    перерыв;
    }
    case MODE_JMA:
    {
    для буфера (i = 0; ilt; limit; i ) [i] = iCustom (NULL, 0, JMA, MA_Period, JMA_Phase, 0, i);
    перерыв;
    }
    case MODE_HMA:
    {
    для буфера (i = 0; ilt; limit; i ) [i] = iCustom (NULL, 0, HMA, MA_Period, 0, i);
    перерыв;
    }
    case MODE_DECEMA:
    {
    для буфера (i = 0; ilt; limit; i ) [i] = iCustom (NULL, 0, DECEMA_v1, MA_Period, MA_Applied, 0, i);
    перерыв;
    }
    case MODE_SALT:
    {
    для буфера (i = 0; ilt; limit; i ) [i] = iCustom (NULL, 0, SATL, 0, i);
    перерыв;
    }
    }

    if (limitlt; BarsCount) BarsCount = лимит;

    for (int shift = 0; shiftlt; BarsCount; shift )
    {
    UpBuffer [shift] = buffer [shift];
    DownBuffer [shift] = buffer [shift];
    buf [shift] = buffer [shift];
    }

    for (shift = 0; shiftlt; BarsCount; shift )
    {
    двойной дМА = 0;
    for (int k = shift 1; k lt; = shift Step_Period; k ) dMA = buffer [k];
    dMA = dMAStep_Period;

    if (buffer [shift] lt; dMA) UpBuffer [shift] = EMPTY_VALUE;
    иначе if (buffer [shift] gt; dMA) DownBuffer [shift] = EMPTY_VALUE;
    еще
    {
    UpBuffer [shift] = EMPTY_VALUE;
    DownBuffer [shift] = EMPTY_VALUE;
    }
    }
    for (shift = 0; shiftlt; BarsCount-1; shift )
    {
    Сигнал [сдвиг] = 0;
    if (UpBuffer [shift 1] == EMPTY_VALUE UpBuffer [shift]! = EMPTY_VALUE buf [shift 1]! = UpBuffer [shift])
    {
    if (Arrows_On shift! = 0) DrawObject (1, shift, buffer [shift] - nShift * point);
    if (Arrows_On shift == 0) DrawOnce (1, shift, buffer [shift] - nShift * point, 0);
    сигнал [сдвиг] = 1;
    }

    if (DownBuffer [shift 1] == EMPTY_VALUE DownBuffer [shift]! = EMPTY_VALUE buf [shift 1]! = DownBuffer [shift])
    {
    if (Arrows_On shift! = 0) DrawObject (2, shift, буфер [shift] nShift * точка);
    if (Arrows_On shift == 0) DrawOnce (2, shift, буфер [shift] nShift * point, 1);
    сигнал [смещение] = -1;
    }
    }

    if (UpBuffer [1] == EMPTY_VALUE UpBuffer [0]! = EMPTY_VALUE buf [1]! = UpBuffer [0])
    {
    if (Alert_On) AlertOnce (Symbol () : PeriodToText () - Сигнал вверх, 1);
    if (Email_On) SendMailOnce (Сигнал xpMA, Символ () : PeriodToText () - Сигнал вверх, 1);
    }
    if (DownBuffer [1] == EMPTY_VALUE DownBuffer [0]! = EMPTY_VALUE buf [1]! = DownBuffer [0])
    {
    if (Alert_On) AlertOnce (Symbol () : PeriodToText () - Сигнал вниз, 2);
    if (Email_On) SendMailOnce (Сигнал xpMA, Символ () : PeriodToText () - Сигнал вниз, 2);
    }

    Возвращение (0);
    }

    bool DrawOnce (int direction, int bar, двойная цена, int ref)
    {
    static int LastDraw [10];

    if (LastDraw [ref] == 0 || LastDraw [ref] lt; Bars)
    {
    DrawObject (направление, бар, цена);
    LastDraw [ref] = Bars;
    возврат (правда);
    }
    возвращать (ложь);
    }

    void DrawObject (int direction, int bar, double price)
    {
    статический int count = 0;
    подсчитывать ;
    строка Obj =;
    if (direction == 1)/стрелка вверх
    {
    Obj = xpMA_up_ DoubleToStr (bar, 0);
    ObjectCreate (Obj, OBJ_ARROW, 0, время [бар], цена);
    ObjectSet (Obj, OBJPROP_COLOR, UpArrowColor);
    ObjectSet (Obj, OBJPROP_ARROWCODE, UpArrowCode);
    ObjectSet (Obj, OBJPROP_WIDTH, UpArrowSize);
    }
    if (direction == 2)/стрелка вниз
    {
    Obj = xpMA_down_ DoubleToStr (bar, 0);
    ObjectCreate (Obj, OBJ_ARROW, 0, время [бар], цена);
    ObjectSet (Obj, OBJPROP_COLOR, DownArrowColor);
    ObjectSet (Obj, OBJPROP_ARROWCODE, DownArrowCode);
    ObjectSet (Obj, OBJPROP_WIDTH, DownArrowSize);
    }
    WindowRedraw ();
    }

    void DeleteObjects ()
    {
    int objs = ObjectsTotal ();
    имя строки;
    for (int cnt = ObjectsTotal () - 1; cntgt; = 0; cnt--)
    {
    имя = ObjectName (НСТ);
    if (StringFind (name, xpMA, 0) gt; -1) ObjectDelete (name);
    if (StringFind (name, Stamp, 0) gt; -1) ObjectDelete (name);
    WindowRedraw ();
    }
    }

    bool AlertOnce (строка msg, int ref)
    {
    static int LastAlert [10];

    if (LastAlert [ref] == 0 || LastAlert [ref] lt; Bars)
    {
    Оповещение (MSG);
    LastAlert [ref] = Bars;
    возврат (правда);
    }
    возвращать (ложь);
    }

    bool SendMailOnce (строковая тема, строковое тело, int ref)
    {
    static int LastAlert [10];

    if (LastAlert [ref] == 0 || LastAlert [ref] lt; Bars)
    {
    SendMail (при условии, тело);
    LastAlert [ref] = Bars;
    возврат (правда);
    }
    возвращать (ложь);
    }

    Строка PeriodToText ()
    {
    переключатель (точка ())
    {
    Случай 1:
    возвращать (М1);
    перерыв;
    дело 5:
    возврата (М5);
    перерыв;
    дело 15:
    возвращать (М15);
    перерыв;
    дело 30:
    возврата (М30);
    перерыв;
    дело 60:
    возврата (Н1);
    перерыв;
    дело 240:
    возврата (Н4);
    перерыв;
    дело 1440:
    Возвращение (D1);
    перерыв;
    дело 10080:
    Возвращение (W1);
    перерыв;
    дело 43200:
    возвращать (MN1);
    перерыв;
    }
    }

    void Stamp (строка objName, текст строки, int x, int y)
    {
    строка Obj = Stamp_ objName;
    int objs = ObjectsTotal ();
    имя строки;

    for (int cnt = 0; cntlt; ObjectsTotal (); cnt )
    {
    имя = ObjectName (НСТ);
    if (StringFind (name, Obj, 0) gt; -1)
    {
    ObjectSet (Obj, OBJPROP_XDISTANCE, х);
    ObjectSet (Obj, OBJPROP_YDISTANCE, у);
    WindowRedraw ();
    }
    еще
    {
    ObjectCreate (Obj, OBJ_LABEL, 0,0,0);
    ObjectSetText (Obj, текст, 8, Arial, оранжевый);
    ObjectSet (Obj, OBJPROP_XDISTANCE, х);
    ObjectSet (Obj, OBJPROP_YDISTANCE, у);
    WindowRedraw ();
    }
    }
    if (ObjectsTotal () == 0)
    {
    ObjectCreate (Obj, OBJ_LABEL, 0,0,0);
    ObjectSetText (Obj, текст, 8, Arial, оранжевый);
    ObjectSet (Obj, OBJPROP_XDISTANCE, х);
    ObjectSet (Obj, OBJPROP_YDISTANCE, у);
    WindowRedraw ();

    }

    Возвращение (0);
    }


    строка GenVer ()
    {
    строковый метод;
    if (MA_Type == 0) method = SMA;
    if (MA_Type == 1) method = EMA;
    if (MA_Type == 2) method = SMMA;
    if (MA_Type == 3) method = LWMA;
    if (MA_Type == 4) method = DEMA;
    if (MA_Type == 5) method = TEMA;
    if (MA_Type == 6) method = T3MA;
    if (MA_Type == 7) method = JMA;
    if (MA_Type == 8) method = HMA;
    if (MA_Type == 9) method = DECEMA;
    if (MA_Type == 10) method = SALT;

    return (метод ( MAn Period));
    }



  2. #2
    Это потрясающая работа, но я не могу заставить код компилироваться. У вас есть MQ4 вы можете опубликовать? Очень признателен.

  3. #3
    1 приложение (я)
    Quote Originally Posted by ;
    Это потрясающая работа, но я не могу заставить код компилироваться. У вас есть MQ4 вы можете опубликовать? Очень признателен.
    xronin - вот почему при публикации кода он всегда должен быть помещен между тегами CODE, потому что он искажается, когда вы публикуете его как текст. Я удалил все пробелы, и теперь он компилируется.
    https://www.forex-russian.com/attach...1313466181.mq4

  4. #4
    Хорошо, спасибо. Я взгляну.

Действующие разрешения

  • Вы не можете создавать новые темы
  • Вы не можете размещать ответы
  • Вы не можете использовать вложения
  • Вы не можете редактировать ваши записи
  •  
  • BB-код - Вкл.
  • Смайлики - Вкл.
  • Код [IMG] - Вкл.
  • Код [VIDEO] - Вкл.
  • HTML-код - Выкл.
Веб-сайт использует cookies
Веб-сайт использует cookies, в настоящее время некоторые из них уже установлены. Вы можете ознакомиться с более подробной информацией об использовании нами cookies здесь. Чтобы принять условия использования cookies, пожалуйста, нажмите на кнопку справа. Если вы продолжаете пользоваться веб-сайтом, вы по умолчанию принимаете условия использования cookies.