포럼을 어지럽히 지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 6. - 페이지 697

 
atztek :
별도의 하위 창에 있는 개체를 찾는 방법은 무엇입니까?
ObjectFind를 사용하여 모든 창의 모든 개체를 반복하는 옵션 중 하나인 것처럼 보입니다(아직 테스트하지 않음).
특정 하위 창의 개체로만 즉시 제한할 수 있습니까?


가능할 뿐만 아니라 필요합니다.
 
evillive :

가능할 뿐만 아니라 필요합니다.
음, chart_id에서 선택한 메인 차트 창의 모든 하위 창의 개체로만 제한됩니다.
 

친애하는 프로그래머 여러분, 그런 경고를 받았습니다 . 고문 설정에서 어떤 변경을 해야 합니까, 아니면 무엇을 의미합니까? (명백한 이유로 브로커의 이름은 지워졌습니다):

친애하는 클라이언트 !


계획된 기술 인프라 EQUIPMENT 현대화 인해 데이터 센터
에 대한 연결 ............. - IP 주소 에서 Live 3 ....... ........ 2014년 8월 30일 토요일에 종료 됩니다 . 거래 터미널다음 주소 있는 데이터 센터 중 하나에 자동으로 연결됩니다 .

dc1.mt4...........com:443 (미국 )
dc2.mt4...........com:443 ( 독일 ) .


필요한 경우 거래 고문 의 설정 적절하게 변경 하십시오 .

 

안녕하세요!

말씀해 주세요 오류가 뭔지 이해가 안가네요 20바의 고가와 저가 값을 각각의 바에 대한 선으로 계산해서 적용하는 방법

 #property indicator_chart_window               //Свойство:индикатор рисуется в основном окне
#property indicator_buffers 2                  // Количество буферов
#property indicator_plots   2                  // Кол-во графиков
//--- График  Max цены за период
#property indicator_label1   "Max"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrRed
#property indicator_style1  STYLE_SOLID
#property indicator_width1   1
//--- График Min цены за период
#property indicator_label2   "Min"
#property indicator_type2   DRAW_LINE
#property indicator_color2  clrRed
#property indicator_style2  STYLE_SOLID
#property indicator_width2   1
//--- Объявление массивов
double          MaxBuffer[];
double          MinBuffer[];

extern int Quant_Bars= 20 ;                       //Количество баров
                                                 //Переменные для горизонтальной линии по максимуму и мин

int pos; 
   double dMaximum;                           // Максимальная цена
   double dMinimum;       
//+------------------------------------------------------------------+
//| Специальная функция OnInit                     |
//+------------------------------------------------------------------+
int OnInit ()
  {
//--- Отображение данных из буфера
   SetIndexBuffer ( 0 ,MaxBuffer);
   SetIndexStyle( 0 , DRAW_LINE );
   SetIndexBuffer ( 1 ,MinBuffer);
   SetIndexStyle( 1 , DRAW_LINE );
//---
   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[])
  {
   int counted_bars=IndicatorCounted(); // переменная для хранения кол-ва баров
//---- Проверка есть,ли ошибки
   if (counted_bars< 0 ) return (- 1 );

//---- Доп проверка учета неучтенных баров
 if (counted_bars> 0 ) counted_bars--;

   pos = Bars -counted_bars;

//---- Основной расчетный цикл
   while (pos>= 0 )
     { 
                           // Текущая минималная цена
      dMinimum = GetMinPrice();
      dMaximum = GetMaxPrice();
   
      MaxBuffer[pos] = dMaximum;
      MinBuffer[pos] = dMinimum;
      pos--;
     }

   Comment ( "Кол-во баров " , Bars , "Кол-во непосчитанных свечей\n"
   ,pos,dMinimum,dMaximum);

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

//--------------------Функция минимальной цены за выбранный промежуток времени-----------------

double GetMinPrice()
  {
       double dLow= 1000000 ;                         // Минимальный уровень
       double dPriceLow; 
   for ( int i= 1 ;i<= Quant_Bars;i++) // От 1 (!) до..
     {
      dPriceLow=iLow( Symbol (), 0 ,i);           // узнаем текущую минимальную цену i-бара
       if (dPriceLow<dLow)                     // Если текущий Low бара < известного dLow
         dLow=dPriceLow;                     // то оно и будет минимумом

     }
   return (dLow);
  }
//--------------------Функция минимальной цены за выбранный промежуток времени-----------------

double GetMaxPrice()
  {
   double dHigh= 0 ;                         // Цена макс уровня
   double dPriceHigh;                     // Текущая максимальная цена i-бара
   for ( int i= 1 ;i<=Quant_Bars;i++)         // От 1 (!) до..
     {
      dPriceHigh=iHigh( Symbol (), 0 ,i);     // узнаем текущую максимальную цену i-бара
       if (dPriceHigh>dHigh)                 // Если текущий Low бара < известного dLow
         dHigh=dPriceHigh;                       // то оно и будет минимумом

     }
   return (dHigh);
  }

지금까지는 0번째 막대에 대해서만 계산이 가능했습니다.

 
AndrianoS :

안녕하세요!

말씀해 주세요 오류가 뭔지 이해가 안가네요 20바의 고가와 저가 값을 각각의 바에 대한 선으로 계산해서 적용하는 방법

지금까지는 0번째 막대에 대해서만 계산이 가능했습니다.

그리고 왜 그들은 만족하지 않습니까? :

 //+------------------------------------------------------------------+
double GetMinPrice( string sy, int timeframe, int count= WHOLE_ARRAY , int begin= 0 ) {
   return (iLow(sy,timeframe,iLowest(sy,timeframe,MODE_LOW,count,begin)));
   }
//+------------------------------------------------------------------+
double GetMaxPrice( string sy, int timeframe, int count= WHOLE_ARRAY , int begin= 0 ) {
   return (iHigh(sy,timeframe,iHighest(sy,timeframe,MODE_HIGH,count,begin)));
   }
//+------------------------------------------------------------------+

더 이상 보지 않았습니다 ...

이것은 다음과 같습니다. "...각 막대에 대해 20바의 높고 낮음 값..." - 전혀 명확하지 않습니다.

 
AndrianoS :

안녕하세요!

말씀해 주세요 오류가 뭔지 이해가 안가네요 20바의 고가와 저가 값을 각각의 바에 선으로 계산해서 적용하는 방법

지금까지는 0번째 막대에 대해서만 계산이 가능했습니다.

모든 것이 훨씬 쉽습니다. 어떻게든 다양한 채널 인디케이터를 만들어보기도 했어요. 코드를 잡고

 #property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Magenta
#property indicator_color2 Aqua
//--- input parameters
extern int        min= 20 ;
extern int        max= 20 ;
//--- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle( 0 , DRAW_LINE );
   SetIndexBuffer ( 0 ,ExtMapBuffer1);
   SetIndexStyle( 1 , DRAW_LINE );
   SetIndexBuffer ( 1 ,ExtMapBuffer2);
   IndicatorDigits( Digits + 1 );
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
     int counted_bars=IndicatorCounted(),                      
    limit;
     double minimum,maximum;
   if (counted_bars> 0 )
      counted_bars--;  
   limit= Bars -counted_bars;
   for ( int i= 0 ;i<limit;i++)
   {
      minimum=Low[iLowest( NULL , 0 ,MODE_LOW,min,i)];
      maximum=High[iHighest( NULL , 0 ,MODE_HIGH,max,i)];
      ExtMapBuffer1[i]=minimum;
      ExtMapBuffer2[i]=maximum;
   }
   return ( 0 );
  }
//+------------------------------------------------------------------+
 
Forexman77 :

모든 것이 훨씬 쉽습니다. 어떻게든 다양한 채널 인디케이터를 만들어보기도 했어요. 코드를 잡고


답변주신 모든 분들께 감사드리며 더 공부하겠습니다.
 
단순 이동 평균이나 비용 지출이 더 나은데 도움이 되지 않는다면 왜 사용합니까?
 

사람들은 지표에 대한 기간 설정을 표시하는 방법을 알려줍니다. 나는 이것을 시도했지만 작동하지 않습니다.

외부 문자열 Per= H1;

이중 prodaem1=iCustom(Symbol(), PERIOD_ Per,"수퍼 신호 채널",2,500,2,sdvig);

 
woin2110 :

사람들은 지표에 대한 기간 설정을 표시하는 방법을 알려줍니다. 나는 이것을 시도했지만 작동하지 않습니다.

외부 문자열 Per= H1;

이중 prodaem1=iCustom(Symbol(),PERIOD_ Per,"수퍼 신호 채널",2,500,2,sdvig);


따라서 다음을 수행할 수 있습니다. extern int Per= 60; // 문자열 H1;

이중 prodaem1=iCustom( Symbol() ,Per,"수퍼 신호 채널",2,500,2,sdvig); //기간_

일반적으로 문서를 참조하십시오!