Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 836

 

Спасибо за подсказку. Так и думал, что сообщение как не очень выглядит. Буду знать. Поправляю сообщение.

//+------------------------------------------------------------------+
//|                                                    SimpleBars.mq4|
//|                                                  excelf@gmail.com|
//+------------------------------------------------------------------+
#property copyright "Copyright © 2012, Ivan Kornilov. All rights reserved."
#property link "excelf@gmail.com"

#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 Red
#property indicator_color2 Green
#property indicator_color3 Red
#property indicator_color4 Green

#define SIGNAL_NONE        0//Пустой сигнал
#define SIGNAL_BUY         1//Сигнал на покупку 
#define SIGNAL_SELL       -1//Сигнал на продажу 
#define SIGNAL_TRADE_ALLOW 3//Сигнал разрешающий торговлю


extern int period = 6;
extern bool useClose = true;
extern int width = 1;

double bufferRed1[];
double bufferGreen1[];
double bufferRed2[];
double bufferGreen2[];
double trand[];

int init() {
    IndicatorBuffers(5);
 
    SetIndexBuffer(0, bufferRed1);
    SetIndexBuffer(1, bufferGreen1);
    SetIndexBuffer(2, bufferRed2);
    SetIndexBuffer(3, bufferGreen2);
    SetIndexBuffer(4, trand);
    
    IndicatorDigits(Digits+1);
    SetIndexStyle(0, DRAW_HISTOGRAM, 0, 1);
    SetIndexStyle(1, DRAW_HISTOGRAM, 0, 1);
    SetIndexStyle(2, DRAW_HISTOGRAM, 0, width);
    SetIndexStyle(3, DRAW_HISTOGRAM, 0, width);
}


int start() {
   int counted_bars=IndicatorCounted();

   if(counted_bars > 0) {
       counted_bars--;
   }
   int limit = Bars - counted_bars;

   int j;
   double buyPrice;
   double sellPrice;
   for(int i = limit - 1; i >= 0; i--) {
        if(useClose) {
            buyPrice = Close[i];
            sellPrice = Close[i];
        } else {
            buyPrice = Low[i];
            sellPrice = High[i];
        }
        if(trand[i + 1] == SIGNAL_NONE || trand[i + 1] == EMPTY_VALUE) {
            if(Close[i] > Open[i]) {
               trand[i] = SIGNAL_BUY;
           } else {
               trand[i] = SIGNAL_SELL;
           }
        } else {
            if(trand[i + 1] == SIGNAL_BUY) {
                if(buyPrice > Low[i + 1]) {
                   trand[i] = SIGNAL_BUY;
                } else {
                   for(j = 2; j <= period; j++) {
                        if(buyPrice > Low[i + j]) {
                           trand[i] = SIGNAL_BUY;
                        break;
                        } else {
                           trand[i] = SIGNAL_SELL;
                        }
                   }
                }
            } else if(trand[i + 1] == SIGNAL_SELL) {
                if(sellPrice < High[i + 1]) {
                   trand[i] = SIGNAL_SELL;
                } else {
                    for(j = 2; j <= period; j++) {
                        if(sellPrice < High[i + j]) {
                           trand[i] = SIGNAL_SELL;
                           break;
                        } else {
                           trand[i] = SIGNAL_BUY;
                        }
                   }
                }
            }   
        }

        if(trand[i] == SIGNAL_SELL) {//RED BAR 
            bufferRed1[i]  = High[i];
            bufferGreen1[i] = Low[i]; 
            bufferRed2[i]  = MathMax(Open[i], Close[i]); 
            bufferGreen2[i] = MathMin(Open[i], Close[i]);   
        } else if(trand[i] == SIGNAL_BUY)  {
            bufferRed1[i]  = Low[i];
            bufferGreen1[i] = High[i]; 
            bufferRed2[i]  = MathMin(Open[i], Close[i]);  
            bufferGreen2[i] = MathMax(Open[i], Close[i]);    
        } 
    }
}
 
Kirill875:

Вы это имели ввиду:

Ещё вот это Buff8[i]=iMA(NULL,60,Period1,sh 0,MODE_SMA,PRICE_CLOSE,sh);

И пользуйтесь вставкой кода.

 
Roman_Bryansk:

Спасибо за подсказку. Так и думал, что сообщение как не очень выглядит. Буду знать. Поправляю сообщение.

Есть внизу-справа под вашими сообщениями волшебные опции "удалить" и "правка", незачем новым сообщением то же самое писать, достаточно было исправить там ;)
 
evillive:
Для кода есть кнопка сверху в панели редактирования сообщения или комбинация Ctrl+Alt+M, код становится красивым и читаемым. А про потери, ф-ция SetIndexStyle() имеет параметр цвета, используйте его, не стесняйтесь.

Если не трудно подскажите подробней. Мне нужно просто, чтобы в настройках цвета и ширины было так:

№           цвет           ширина     стиль          

0.            Black              0             0

1.            black              0             0

2.            Red                2             0

3.           Green              2             0 

 

всегда пропадает ширина, т.е. как будто всегда к стандартным настройкам возвращается.

Не судите строго, просто мне видимо не дано, то что дано вам. Еще при компиляции 2 таких сообщения: not all control paths return a value SimpleBars.mq4 115 1.

 
Понял. Мои прощения. Подзамусорил.
 
Roman_Bryansk:

Если не трудно подскажите подробней. Мне нужно просто, чтобы в настройках цвета и ширины было так:

№           цвет           ширина     стиль          

0.            Black              0             0

..

 

всегда пропадает ширина, т.е. как будто всегда к стандартным настройкам возвращается.

Не судите строго, просто мне видимо не дано, то что дано вам. Еще при компиляции 2 таких сообщения: not all control paths return a value SimpleBars.mq4 115 1.


void  SetIndexStyle(
   int     index,       // номер линии
   int     type,        // тип
   int     style=EMPTY, // стиль линии
   int     width=EMPTY, // ширина линии
   color   clr=clrNONE  // цвет
   );

То есть для первого буфера в вашем случае:

SetIndexStyle(0, DRAW_HISTOGRAM, EMPTY,width,Red);

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

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

 
Простите меня за наглость)
 
evillive:


То есть для первого буфера в вашем случае:

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

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

Вы кудесник )) Заменил на EMPTY и все ок по двум индикаторам. Спасибо большое. По поводу "/portable": когда прописываю в настройках строки объекта пишет не правильный путь.
 
Roman_Bryansk:
Вы кудесник )) Заменил на EMPTY и все ок по двум индикаторам. Спасибо большое. По поводу "/portable": когда прописываю в настройках строки объекта пишет не правильный путь.
А просто надо за кавычки ключ ныносить.
 
Kirill875:
После компиляции терминал зависает. Не могли бы Вы на примере показать куда необходимо вписать.

Вот

Файлы:
testmtf.mq4  4 kb
Причина обращения: