Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Справочник MQL5 доступен на 8 языках. Изучай MQL5 на удобном тебе языке!
gtr-turbo
20
gtr-turbo 2014.02.01 12:22 

Привет всем.имеется индикатор CG,суть состоит в том,чтобы изменить его отображение на зеркальное(тоесть чтобы он отображался по другому,наоборот)Прилагаю скрин,там написано в чем суть более понятно

вот код

#property copyright "Coded by Witold Wozniak"
#property link      "www.mqlsoft.com"

#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Blue

#property indicator_level1 0

double CG[];
double Trigger[];

extern int Length = 10;
int buffers = 0;
int drawBegin = 0;

int init() {
    drawBegin = Length;
    initBuffer(CG, "CG", DRAW_LINE);
    initBuffer(Trigger, "Trigger", DRAW_LINE);
    IndicatorBuffers(buffers);
    IndicatorShortName("CG [" + Length + "]");
    return (0);
}

int start() {
    if (Bars <= drawBegin) return (0);
    int countedBars = IndicatorCounted();
    if (countedBars < 0) return (-1);
    if (countedBars > 0) countedBars--;
    int s, limit = Bars - countedBars - 1;
    for (s = limit; s >= 0; s--) {
        double Num = 0.0;
        double Denom = 0.0;
        for (int count = 0; count < Length; count++) {
            Num += (1.0 + count) * P(s + count);
            Denom += P(s + count);
        }
        if (Denom != 0) {
            CG[s] = -Num / Denom + (Length + 1.0) / 2.0;
        } else {
            CG[s] = 0;
        }
        Trigger[s] = CG[s + 1];        
    }
    return (0);   
}

double P(int index) {
    return ((High[index] + Low[index]) / 2.0);
}

void initBuffer(double array[], string label = "", int type = DRAW_NONE, int arrow = 0, int style = EMPTY, int width = EMPTY, color clr = CLR_NONE) {
    SetIndexBuffer(buffers, array);
    SetIndexLabel(buffers, label);
    SetIndexEmptyValue(buffers, EMPTY_VALUE);
    SetIndexDrawBegin(buffers, drawBegin);
    SetIndexShift(buffers, 0);
    SetIndexStyle(buffers, type, style, width);
    SetIndexArrow(buffers, arrow);
    buffers++;
}
Принцип изменения
Dmitry Fedoseev
41268
Dmitry Fedoseev 2014.02.01 12:39  

Гыы! Абаржака. Зеркально перевернуть линию проходящюю ровно на уровне 0.

Тонкий програмистский юмор.

gtr-turbo
20
gtr-turbo 2014.02.01 12:41  
Integer:
Гыы! Абаржака. Зеркально перевернуть линию проходящюю ровно на уровне 0.

как перевернуть?можешь сказать точно где в коде это нужно изменить?
Dmitry Fedoseev
41268
Dmitry Fedoseev 2014.02.01 12:47  

Теперь-то да.

Перед строчкой

Trigger[s] = CG[s + 1];   

Надо умножить CG[s] на -1 (если индикатор вихляется вокруг нуля).

CG[s]*=-1;

Если же вокург уровня, то надо вычесть значение уровня, умножить на -1 и прибавить значение уровня.

CG[s]-=XXX;
CG[s]*=-1;
CG[s]+=XXX;
gtr-turbo
20
gtr-turbo 2014.02.01 12:51  
Integer:

Теперь-то да.

Перед строчкой

Надо умножить CG[s] на -1 (если индикатор вихляется вокург нуля).

Если же вокург уровня, то надо вычесть значение уровня, умножить на -1 и прибавить значение уровня.


суть в том,что просто надо его перевернуть.он должен так же показывать только в перевернутом виде
gtr-turbo
20
gtr-turbo 2014.02.01 13:32  
так и не понятно.что изменить в коде чтобы он просто показывал в перевернутом виде
Vitalie Postolache
11139
Vitalie Postolache 2014.02.01 18:13  
gtr-turbo:
так и не понятно.что изменить в коде чтобы он просто показывал в перевернутом виде

Ну так выше сказали уже, умножить значение буфера надо на -1.
gtr-turbo
20
gtr-turbo 2014.02.02 09:42  
evillive:

Ну так выше сказали уже, умножить значение буфера надо на -1.

спасибо.так и сделал.все получилось!
gtr-turbo
20
gtr-turbo 2014.02.02 09:56  
gtr-turbo
20
gtr-turbo 2014.02.02 09:58  
при любых настройках он показывает абы как.потому,что видать идея изначально была обречена на провал.линии пересекаются как попало,торговать по этому индикатору нельзя
/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий