どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 6. - ページ 697

 
atztek:
別のサブウィンドウにあるオブジェクトを探すには?
まだテストしていませんが、ObjectFindを使用して、すべてのウィンドウからすべてのオブジェクトを検索することもできます。
一度に特定のサブウィンドウのオブジェクトだけに限定して検索することは可能でしょうか?


できる」だけでなく、「しなければならない」。
 
evillive:

できる」だけでなく、「やらなければならない」。
まあ、chart_idで選択されたメインチャートウィンドウの全サブウィンドウのオブジェクトに限定されるでしょうけど。
 

プログラマーの皆様、この警告を受けたのですが、EAの 設定でどのような変更を入力すればよいのでしょうか、またこの警告はどのような意味を持つのでしょうか?(明らかな理由でブローカー名を消しました)。

お客様へ


技術的な インフラストラクチャーと 機器の 近代
化の 計画により データ センターへの 接続が ...............。- IPアドレスからのライブ 3 ......... 2014年 8月30 日(土)に 終了 します。お客様の 取引端末は次の アドレスの 2つの データ センターの いずれかに自動的に 接続れます:

dc1.mt4......com:443 (USA)
dc2.mt4............com:443 (Germany).


必要に応じてトレーディングアドバイザーの 設定を 適切な ものに変更してください

 

こんにちは。

各バーの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:

もっと単純な話なんですけどね。私も一度いろいろなチャンネルインジケーターを作ってみたことがあります。以下はそのコードです。


回答してくれた皆さん、ありがとうございました。 もっと勉強します。
 
単純な移動 平均と指数的なものとではどちらが役に立つのか、全く役に立たないのであればなぜそれを使うのか。
 

人、インジケーターの期間設定を表示する方法を教えてください。この方法でやってみたが、うまくいかない。

extern string Per= H1;

double prodaem1=iCustom(Symbol(),PERIOD_ Per, "super-signals-channel",2,500,2,sdvig);

 
woin2110:

人、インジケーターの期間設定を表示する方法を教えてください。この方法でやってみたが、うまくいかない。

extern string Per= H1;

double prodaem1=iCustom(Symbol(),PERIOD_ Per, "super-signals-channel",2,500,2,sdvig);


extern int Per= 60; //string H1;

double prodaem1=iCustom(Symbol(),Per, "super-signals-channel",2,500,2,sdvig); //PERIOD_...

実際に、「ドキュメント」をご覧ください