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

 
skyjet:

ありがとうございました。3小節目など、どちらからカウントを始めるかは関係ないのでしょうか?

この例では、実際には違いはありませんが、いずれにせよ配列の開始と終了を指定する必要があります。

for (int x=3; x>1; x--)
{
 if(Open[x]==Open[x-1]) continue;
 if(Open[x]<Open[x-1])
   {
   //--- action
   }
}
配列が大きい場合は、先頭が重要になります。例えば、ルールとして配列の末尾で条件が発生する場合は、末尾から始めた方が良い。この例は、オーダー/ポジション検索の典型的な例です。もちろん、この場合、最初に検索を行えば、いずれにせよプログラムはこの時点までたどり着くが、より多くのリソースを必要とすることになる。
 
Danila_mactep:
皆さん、こんにちは!このテーマについてアドバイスをお願いします...。レベルタブでMAレベルをシフトさせたいのですが、798までシフトさせようとすると、多くのペアで計算が面倒です。シフトした移動平均の価格を描画するか、データウィンドウに表示するか、手動で計算しなくてもよいインジケータを書くにはどうすればよいでしょうか?
入力データにMAシフトを含むインジケータを作成することができます。そして、インジケータは価格レベルを計算し、すぐにそのオブジェクトをチャート上に表示します。
 
chief2000:
このような問題 - サイズが変化しうる一次元の配列がある。 配列の要素のすべての可能な組み合わせをループする方法は?要素の順番は関係ない、つまり123==213==321...です。以下は、4つの要素を持つ配列の例である。






脳にとって良い作業です。次のように試すことができます。
int start(){
 double array[4];
 int k,N[];
 k=ArraySize(array);
 ArrayResize(N,k);
 for (int i=0;i<k;i++)N[i]=-i-1;// Заполнили массив элементов массива отрицательными
//
 int j=0;
 while(N[k-1]<k){
  if(N[j]<k-1){
   N[j]++;
   bool NewComb=false;
   for(i=0;i<k-1;i++){
    if(N[i]>N[i+1]){NewComb=true;}else{NewComb=false;break;}
   }
//
   if(NewComb){
// Получили новую комбинацию в массиве N размерностью k    
    string temp="";
    for(i=0;i<k;i++){// Перебираем массив N. Если N[i] то элемент array[N[i]] не участвует в выборке.
                     // Например, для размерности 4 если N[0]=3,N[1]=1,N[2}<0,N[3]<0 то это выборка array[3] и array[1]
                     //                             если N[0]=3,N[1]=2,N[2]=1,N[3]=0 то это выборка array[3] и array[2] array[1] и array[0]
     if(N[i]<0)temp=StringConcatenate(temp,"X");else temp=StringConcatenate(temp,N[i]);
    }
   Print("NEWCOMB ",temp);// это для проверки какие комбинации выбираются
   }
//
  }
  else{
   N[j]=0;i=1;
   while(i<k){
    if(N[i]<k-1) {if(N[i]>=0)N[i]++;else N[i]=0;j=0;break;}
    else {N[i]=0;i++;}
   }
  }
  if(N[k-1]>=k-1) break;
 }
 return;
}

ディメンジョン4のテスト結果。配列の X 要素が選択されていない場合,それ以外は array[digit] と 6 次元用の fragment を使用します.

 
artmedia70:
MAシフトを入力データとするインジケータを作成する。そして、インジケータは価格レベルを計算し、すぐにそのオブジェクトをチャート上に表示します。


どうすればいいのか、はっきり言ってわかりません。МА МАのコードを開くと、いろいろありすぎて、レベルのパラメータがどこにあるのかわからないので、レベルをコピー&ペーストすることができません。
 
Danila_mactep:

やり方がわからず、正直困っています。MAコードを開くと、いろいろありすぎて、どこにレベルパラメータがあるのかわからず、レベルをコピー&ペーストしてしまいます。 MAコードのどの部分をコピーして、どこにレベルをペーストすればいいのでしょうか?
自分でインジケータを書き始めなければならないのに、何をすればいいのか教えてくれるのです。
 
artmedia70:
いや、自分でインジケータを書き始めてから、必要なことを教えてくれるはずです。

新しいインジケータを作成しました、今のところこのような感じです。

#property copyright "Copyright 2013, MetaQuotes Software Corp.
#プロパティリンク "http://www.metaquotes.net"

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 レッド
//--- バッファ
double ExtMapBuffer1[]。
//+------------------------------------------------------------------+
//| カスタムインジケータ初期化関数
//+------------------------------------------------------------------+
int init()
{
//---- インジケータ
SetIndexStyle(0,DRAW_LINE)を設定します。
SetIndexBuffer(0,ExtMapBuffer1)を設定します。
return(0)です。
}
//+------------------------------------------------------------------+
//| カスタムインジケーター初期化関数
//+------------------------------------------------------------------+
int deinit()
{
//----
#include "Moving Averages.mq4"
//----
return(0)です。
}
//+------------------------------------------------------------------+
//| カスタムインジケータ反復関数
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
//----

//----
return(0)です。
}
//+------------------------------------------------------------------+

 
MA指標には水準があります。例えば、価格が100または-100のレベルに達したとします(買い/売りの取引を開始する)。
 
alexey1979621:
MA指標には水準があります。問題は、これらのレベルからデータを取得する方法です。例えば、価格がレベル100または-100に達したとします(買い/売り取引を開始します)。

ゼロ(現在の)バーでのMAそのものは

double priceMA0=iMA(Symbol(), Period(), MA_Period, MA_Shift, MA_ Method, PRICE_OPEN, 0);

MAを計算するために、現在のバーの "チャター "を取り除くために、始値を取ります。

そうすると、レベル+100の 値段は

double priceP100=priceMA0+100*Point;

レベル価格 -100と なります。

double priceM100=priceMA0-100*Point;
 
artmedia70:

ゼロ(現在の)バーでのMAそのものは

MAを計算するために、現在のバーの "チャター "を取り除くために、始値を取ります。

そうすると、レベル+100の 値段は

レベル価格 -100と なる。


ありがとうございます。何度も助けられました。すぐにプログラミングができるようになると思うのですが......。