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

 
//+------------------------------------------------------------------+
//|                                                         SSMA.mq4 |
//|                                            Copyright 2014, Vinin |
//|                                             http://vinin.ucoz.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, Vinin"
#property link      "http://vinin.ucoz.ru"
#property version   "1.00"
#property strict
#property indicator_chart_window
#property indicator_buffers 8
#property indicator_plots   1
//--- plot average
#property indicator_label1  "average"
#property indicator_type1   DRAW_ARROW
#property indicator_color1  clrRed
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//--- input parameters
extern int      CountMA=200;
extern int      Period_start =1;
extern int      Period_shift =5;
//--- indicator buffers
double         averageBuffer[];
double         maxBuffer[];
double         minBuffer[];
double         Label1Buffer[];
double         scBuf[][2];

double tmparray[],tmparrayF1[];
//double tmparrayD[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
  // массив tmparrayF1[] является индикаторным буфером
   SetIndexBuffer(0,tmparrayF1);
   PlotIndexSetInteger(0,PLOT_ARROW,159);
   
   ArrayResize(tmparray, CountMA+1);  // массив для рассчитанных SMA 
   ArrayResize(scBuf, CountMA+1);     // массив для значений повторений на цене  
   ArrayResize(tmparrayF1, CountMA+1); // массив для перевода в одномерный массив для отображения на графике

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   if (rates_total<Period_start+Period_shift*CountMA+1) return(0);
   ArrayInitialize(tmparray,0);
   ArrayInitialize(scBuf,0);
   
   int limit=rates_total-prev_calculated;
   if (limit>1) limit=rates_total-(Period_start+Period_shift*CountMA+1);
   
   double min=-99999,max=99999, sum=0;
   int count, countMA,schet;
   
   for (int i=limit;i>=0;i--)
   {
      sum=0;
      count=0;
      countMA=0;
      // формируем массив со значения машек
      for (int j=0;j<Period_start+Period_shift*CountMA;j++)
      {
         sum+=(High[i+j]+Low[i+j])*0.5;
         count++;
         if (count==Period_start+Period_shift*countMA)
         {
            tmparray[countMA]=sum/count;
            countMA++;
         }          
      }    
      // Массив создан. Можно обрабатывать
   }
 //***** Рассчитать количество повторений SMA, в десятичном интервале.
   for (int b=0;b<CountMA;b++)
   {
     schet=0;
     for (int a =CountMA;a>=0;a--) 
     {
       if(NormalizeDouble(tmparray[a],4)==NormalizeDouble(tmparray[b],4)&&tmparray[a]!=0) // 1.30000 = 1.30004
       {
         scBuf[b][0]=schet;                       // количество повторений МА
         scBuf[b][1]=tmparray[b];                 // Цена
         tmparray[a]=0;                           // Обнуляем посчитанную ячейку
         schet++;
       }
     } 
   }
   
   ArraySort(scBuf,WHOLE_ARRAY,0,MODE_DESCEND);   // Сортируем массив по убыванию
  
   for (int x=0;x<CountMA;x++) 
   {
     tmparrayF1[x]=scBuf[x][1];           //переносим значения цены в одномерный массив, для отображения через индикатор
   }  
     
      
Print("rates_total = ",rates_total,
"tmparray = ",tmparray[0]
,"KolVBuf ", scBuf[0][0],"+",scBuf[0][1]
       ,"/ ",scBuf[1][0],"+",scBuf[1][1]
       ,"/ ",scBuf[2][0],"+",scBuf[2][1]
       ,"/ ",scBuf[3][0],"+",scBuf[3][1]
       ,"/ ",scBuf[4][0],"+",scBuf[4][1]
       ,"/ ",scBuf[5][0],"+",scBuf[5][1]
     );

   
//--- return value of prev_calculated for next call
   return(rates_total);
  }

Заранее извиняюсь перед админами, за троллинг, похожий вопрос есть в отдельной ветки https://www.mql5.com/ru/forum/154928, !)))

 Цель:

- Создаем массив значений Скользящей средней в количестве 2000 шт.  

- Обозначить крестиками, уплотнения сформировавшиеся от объединенных SMA.

 В результате крестики раскинуты не упорядоченно и там где нет ничего. 

Вопрос:

Получается, что ошибка, по которой крестики располагаются в не соответствии положению скопления SMA, в формировании массива SMA || ..? 

 

Доброго время суток. Подскажите пожалуйста как решить эту проблему. Надо массив сделать, пример такой.............        и получается полный каламбур, подскажите что не так. Спасибо. 

for(int i=1;i<=20;i++)
     {
     for(int j=1;j<=20;j++)
        {
        for(int q=1;q<=20;q++)
           {
           
             M5gooB[i,j,q]=false;
             Print("M5gooB ",i," ",j," ",q," false.");
             
           }
        }
     }
 

или просто даже такой

bool M5gooB[50],M5gooS[50];
  for(int i=1;i<=50;i++)
     {
     M5gooB[i]=false;
     
     }

 и всё равно и логах Принт печатает хаотичное построение присваивания  

 
laveosa:

или просто даже такой

 и всё равно и логах Принт печатает хаотичное построение присваивания  

 

Может так поможет

bool M5gooB[50],M5gooS[50];
  for(int i=0;i<50;i++)
     {
     M5gooB[i]=false;
     
     }
 

Кто знает как в место крестика (DRAW_ARROW) установить точку?

- Есть индикатор, как в глобальных переменных занести объект точка

//--- plot average
#property indicator_label1  "average"
#property indicator_type1   DRAW_ARROW
#property indicator_color1  clrRed
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1

 
Top2n:

Кто знает как в место крестика (DRAW_ARROW) установить точку?

- Есть индикатор, как в глобальных переменных занести объект точка


В глобальных:

input uchar arrowsCodes0=159;//Wingdings: >= 33 or <= 255

или

uchar arrowsCodes0=159;//Wingdings: >= 33 or <= 255

https://docs.mql4.com/ru/constants/objectconstants/wingdings

В int OnInit() тогда это будет:

SetIndexArrow(0,arrowsCodes0);// https://docs.mql4.com/ru/customind/setindexarrow

Как-то так.

 

Почему мои точки отрисовываются только на истории? В тестере стратегий и в окнах чарта виндо только историю, новые точки не отрисовываются

 

Код: 

double sellArrowsBuffer[];
double buyArrowsBuffer[];
double closeArrowsBuffer[];

int jbnbHandle;

void OnInit()
{
....
    jbnbHandle = iCustom(_Symbol, _Period, "Projects\\iJBNB");
}


int OnCalculate(...)
{
    double cbearsColor[];
    double cbears[];

    int to_copy;

    if(prev_calculated > rates_total || prev_calculated <= 0)
        to_copy = rates_total;
    else
        to_copy = rates_total - prev_calculated + 1;


    if(CopyBuffer(jbnbHandle, 4, 0, to_copy, cbearsColor) != to_copy) 
        return 0;


    if(CopyBuffer(jbnbHandle, 3, 0, to_copy, cbears) != to_copy) 
        return 0;

    for(int i = 2; i < to_copy; i++)
    {    
        if(cbearsColor[i] == 2
            && cbearsColor[i - 1] == 1
            && cbears[i] > 0.2
            )
        {
            sellArrowsBuffer[i] = open[i] - symPoint * 30;
        }
    }

    return rates_total;
}

 

 
Подскажите пожалуйста такую вещь - как добиться того, чтобы в реальном времени при перетаскивании HLINE не цеплялись стопы/тейкпрофиты ордеров находящихся в непосредственной близости от линии? Торговлю в один клик отключать пробовал, не помогает, все равно цепляются. На тестере этого эффекта нет. Хочу использовать OnChartEvent (кстати, как я понял события не обрабатываются на тестере, только на рилтайме?).
 

Добрый день, в учебнике приведен пример эксперта https://book.mql4.com/ru/samples/expert

подскажите почему он на одной свече делает несколько покупок/продаж?


 

ЗАКРЫТ. увидел стоплосс 

 
Pyro:
Подскажите пожалуйста такую вещь - как добиться того, чтобы в реальном времени при перетаскивании HLINE не цеплялись стопы/тейкпрофиты ордеров находящихся в непосредственной близости от линии? Торговлю в один клик отключать пробовал, не помогает, все равно цепляются. На тестере этого эффекта нет. Хочу использовать OnChartEvent (кстати, как я понял события не обрабатываются на тестере, только на рилтайме?).
Причина обращения: