[АРХИВ!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 4. - страница 157

 
dzhini:Зачем мне это. Я вопрос задаю, неужели необходимо для начала потроллить, чтобы ответить?

Задавайте вопрос правильно.

dzhini:Вопрос такой: как перебрать минутку внутри старшего таймфрейма с получением информации о цене их (минуток) открытия?
iOpen(Symbol(),PERIOD_M1,shift);

Даст вам ответ

 
Ребята подскажите пожалуйста. На этом сайте есть скрипт "SendOrderMultiLock". Меня интересует можно ли его сделать так чтобы он включался в заданное время?
 
dzhini:

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

Этот вариант лучше.
 
и на том спасибо
 
dzhini:
и на том спасибо
// функция записывает в массив result[] цены открытия минутных баров 
// внутри бара с индексом shift текущего таймфрейма. Возвращаемое значение - количество соответствующих минутных баров
// 

int M1_OpenPrices(int shift, double &result[])
{
   int n=0;
   ArrayResize(result,n);
   
   int sh, sh1 = iBarShift(0, PERIOD_M1, Time[shift]);
   
   for(sh=sh1;sh>=0;sh--)
   {
      if(iBarShift(0, 0, iTime(0,PERIOD_M1,sh))!=shift) break;
      n++;
      ArrayResize(result,n);
      result[n-1] = iOpen(Symbol(),PERIOD_M1,sh1);
   }

   return(n);
}
вроде так, проверьте...
 
Кто знает, как сделать, чтобы цвет линий тейк-профита отличался на графике от цвета стоп-лоса автоматически? и как сделать, чтобы на графике появлялся значок в том месте, где выставлен ордер?
 

Уважаемые!Помогите разобраться.Строю MACD по предыдущему бару(i+1).Нахожу max и min среди видимых в окне индикатора значений графика MACD.Вывожу в Comment max,min и текущие значения основной и сигнальной линий.Max и min в Comment на графике отражаются верно,а текущие значения линий-НЕТ!Где промашка?И почему в Comment числа не пятизначные,ведь прописано " IndicatorDigits(Digits+1);"? Может кто-нибудь поможет разобраться.

#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Lime
#property indicator_color2 Red
#property  indicator_width1  2
//--- buffers
double Macd1Buffer[];
double Signal1Buffer[];

//--- for one bar
datetime last; 

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   //---- indicators
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,Macd1Buffer);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,Signal1Buffer);
   
   IndicatorDigits(Digits+1);

//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
  Comment(""); 
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
    if(last>=Time[0]) return;
    
   double max_M1=-0.01,min_M1=0.01,
          max_S1=-0.01,min_S1=0.01,
          max1=-0.01,min1=0.01;
   
   int bars_counted=WindowBarsPerChart()-1,
       limit;  
       limit=bars_counted;
       
//---- macd counted in the 1-st buffer        
   for( int i=0; i<limit; i++)
              
   { 
      Macd1Buffer[i]=iMA(NULL,0,6,0,MODE_EMA,PRICE_CLOSE,i+1)-iMA(NULL,0,12,0,MODE_EMA,PRICE_CLOSE,i+1);
     
       max_M1=MathMax(Macd1Buffer[i],max_M1);
       min_M1=MathMin(Macd1Buffer[i],min_M1);
     
   }  
     
//---- macd counted in the 2-nd buffer       
   for( i=0; i<limit; i++)
           
   {
      Signal1Buffer[i]=iMAOnArray(Macd1Buffer,Bars,5,0,MODE_SMA,i);
      
       max_S1=MathMax(Signal1Buffer[i],max_S1);
       min_S1=MathMin(Signal1Buffer[i],min_S1);
            
   } 
   
       max1=MathMax(max_M1,max_S1);
       min1=MathMin(min_M1,min_S1);
   
   
   Comment( "\n"," Баров = ",WindowBarsPerChart()-1,
            "\n"," max1 = ",max1,
            "\n"," min1 = ",min1, 
            "\n"," Macd1Buffer = ",Macd1Buffer[i],
            "\n"," Signal1Buffer = ",Signal1Buffer[i]);
       
    last=Time[0];
//----
   return(0);
  }
//+------------------------------------------------------------------+
 
MK07:

Уважаемые!Помогите разобраться.Строю MACD по предыдущему бару(i+1).Нахожу max и min среди видимых в окне индикатора значений графика MACD.Вывожу в Comment max,min и текущие значения основной и сигнальной линий.Max и min в Comment на графике отражаются верно,а текущие значения линий-НЕТ!Где промашка?И почему в Comment числа не пятизначные,ведь прописано " IndicatorDigits(Digits+1);"? Может кто-нибудь поможет разобраться.

Данные типа double выводятся с 4 десятичными цифрами после точки. Для вывода чисел с большей точностью необходимо использовать функцию DoubleToStr().

пример:

   Comment( "\n"," Баров = ",WindowBarsPerChart()-1,
            "\n"," max1 = ",max1,
            "\n"," min1 = ",min1, 
            "\n"," Macd1Buffer = ",DoubleToStr(Macd1Buffer[i],5),
            "\n"," Signal1Buffer = ",DoubleToStr(Signal1Buffer[i],5));
 
r772ra:

Данные типа double выводятся с 4 десятичными цифрами после точки. Для вывода чисел с большей точностью необходимо использовать функцию DoubleToStr().

... а в вашем, MK07, случае IndicatorDigits() означает количество разрядов в окне данных и на самом графике.
 
r772ra:

Данные типа double выводятся с 4 десятичными цифрами после точки. Для вывода чисел с большей точностью необходимо использовать функцию DoubleToStr().

пример:

Спасибо за подсказку.Исправил.А почему всё-таки не правильно отображаются в Comment текущие значения линий графика MACD?