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

 
Kirill875:

Простите за возможные каракули, это мой первый.

Все в нем устраивает кроме одного, хотелось бы увидеть отображение показателей с часового графика на м5. 

int sh = iBarShift(NULL, 60, Time[i], false);

Close[i] => iClose(NULL,60,sh)

iMA(NULL,60,....,sh)

 
evillive:

Через iHighest(),iLowest(), сколько баров М5 в сутках известно, смещение до окончания прошлых суток, думаю, тоже можно высчитать.

Сделал расчёт на часовике, проблема решена, спасибо огромное.

   

   int Min=iLowest(NULL, PERIOD_H1, MODE_LOW , 24, Hour());

   int Max=iHighest(NULL, PERIOD_H1, MODE_HIGH, 24, Hour());

   price1=iLow(NULL, PERIOD_H1,Min);

   price2=iHigh(NULL,PERIOD_H1,Max);

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

Мне необходимо запустить  del=ObjectsDeleteAll(0,OBJ_HLINE); при очередном запуске терминала

 
woin2110:

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

Мне необходимо запустить  del=ObjectsDeleteAll(0,OBJ_HLINE); при очередном запуске терминала

Значит надо скрипт запускать после старта терминала, с этой строкой в нём. Автозапуск обсуждался здесь.
 
woin2110:
Но, это возможно только через данные дневного графика.

А что ты имеешь ввиду под данными дневного графика? Переключение графика? Не надо переключать.

хай_вчерашнего_дня = iHigh(_Symbol, PERIOD_D1, 1);
 
Kirill875:
evillive, Спасибо за отклик, не могли бы Вы ткнуть меня носом в какую часть кода это нужно вставить.
int sh = iBarShift(NULL, 60, Time[i], false); - в главный цикл расчёта, остальные - замена везде, где встречается.
 

Привет всем участникам! Помогите пожалуйста наладить индикаторы. Не силен в этих науках.

1. индикатор SimpleBars - не сохраняются настройки (цвет, линии и пр.) при смене таймфрейма, при увеличении или уменьшении графика и тд. В шаблоне тоже настройки теряются. Когда запускаю МТ4, постоянно приходится поправлять. (( Использую просто как индикатор, не в советнике. Помогите наладить кто может.

 

И еще один индикатор - 2MA с облаками. Тоже не сохраняет настройки. Прям беда. Как-то с другими индикаторами нет проблем, а это один за одним с глюками. Помогите, поправьте пожалуйста.

 

//+------------------------------------------------------------------+

//|                                            ytg_DveMashki_ind.mq4 |

//|                                                     Yuriy Tokman |

//|                                            yuriytokman@gmail.com |

//+------------------------------------------------------------------+

#property copyright "Yuriy Tokman"

#property link      "yuriytokman@gmail.com"


#property indicator_chart_window

#property indicator_buffers 2

//#property indicator_color1 //Green

//#property indicator_color2 //Red

//#property indicator_width1 //4

//#property indicator_width2 //4

//----

extern color color1 = Green;

extern color color2 = Red;

extern int width1 = 0;

extern int width2 = 0;

extern int style1 = 0;

extern int style2 = 0;

extern int ma_1 = 25;

extern int ma_2 = 50;

extern int method = 0;

extern int price = 0;

//---- buffers

double ExtMapBuffer1[];

double ExtMapBuffer2[];

//----

int ExtCountedBars=0;

//\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n

int init()

  {

//---- indicators

   SetIndexStyle(0,DRAW_HISTOGRAM, style1, width1, color1);

   SetIndexBuffer(0, ExtMapBuffer1);

   SetIndexStyle(1,DRAW_HISTOGRAM, style2, width2, color2);

   SetIndexBuffer(1, ExtMapBuffer2);

   IndicatorShortName("yuriytokman@gmail.com");

   SetIndexLabel(0,"yuriytokman@gmail.com");

   SetIndexLabel(1,"yuriytokman@gmail.com");   

//----

   SetIndexDrawBegin(0,10);

   SetIndexDrawBegin(1,10);

//---- indicator buffers mapping

   SetIndexBuffer(0,ExtMapBuffer1);

   SetIndexBuffer(1,ExtMapBuffer2);

     

Comment("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n yuriytokman@gmail.com");


   return(0);

  }

//\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n

int start()

  {

   if(Bars<=10) return(0);

   ExtCountedBars=IndicatorCounted();

//---- check for possible errors

   if (ExtCountedBars<0) return(-1);

//---- last counted bar will be recounted

   if (ExtCountedBars>0) ExtCountedBars--;

   int pos=Bars-ExtCountedBars-1;

   while(pos>=0)

     { 

      ExtMapBuffer1[pos]=iMA(Symbol(),0,ma_1,0,method,price,pos);

      ExtMapBuffer2[pos]=iMA(Symbol(),0,ma_2,0,method,price,pos);

    pos--;

     }

//----

   return(0);

  }

//\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n 

 
Roman_Bryansk:

Привет всем участникам! Помогите пожалуйста наладить индикаторы. Не силен в этих науках.

1. индикатор SimpleBars - не сохраняются настройки (цвет, линии и пр.) при смене таймфрейма, при увеличении или уменьшении графика и тд. В шаблоне тоже настройки теряются. Когда запускаю МТ4, постоянно приходится поправлять. (( Использую просто как индикатор, не в советнике. Помогите наладить кто может.


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

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

//+------------------------------------------------------------------+
//|                                                    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);

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