[アーカイブ!】どんなルーキーの質問でも、フォーラムを散らかさないように。プロフェッショナルの皆さん、通り過ぎないでください。あなたなしではどこにも行けない - 2. - ページ 376

 
-xlapex-:

ここではMathAbs関数を適用し、Alertはゼロとゼロを表示していますが、差分モジュールとバーインデックスが欲しいのですが・・・。

int start()
{
int mas1[30,2],mas2[30,2],mas3[30,2],ind_1;
{
for (int i=1;i<=count_bars;i++)
{
mas1[i, 0]=Close[i];
mas1[i, 1]=i;
mas2[i, 0]=Open[ i];
mas2[i, 1]=i;

mas3[i, 0] = MathAbs(Close[ i]-Open[ i]);
mas3[i, 0] = i;

ArraySort( mas3);
mod_1=mas3[2, 0];
ind_1=mas3[2, 1];

Alert( mod_1," ",ind_1);
}
}

return(0);
}

配列はint型、OpenとCloseはdouble型に対応 1 - 1 = 0
 

こんにちは

mql4初心者で、aligatorインジケータを使ってExpertAdvisorを作成 しようとしています。

mql4でEAを書こうとしているのですが、まだ有用なものが出てきません。

市民の 専門家は、そのような些細な 要求、質問などを求めて いる可能性が ありますが、それでも専門家は、ワニの指標の専門家を書くように依頼することができます

しかし、 まだ専門家は アリゲーターインディケータに専門家を書くために求める ことが できます


ピップス戦略


StopLossとTakeProfitが達成されると、買いポジションと売りポジションがクローズされます。

緑線が青線と赤線を下から上にクロスした時に買いシグナルが発生し、買いポジションをオープン

緑色のルーラーが赤色と青色を上下に交差したら売りシグナル。

クロスオーバーが終了するまで、複数の注文を出すことはできません。


StopLoss =10;

TakeProfit =10;

マジック=33。

SlipPage =5。

ロット=0.1。

ありがとうございました。


 
artmedia70:
配列はint型ですが、OpenとCloseはdouble型です。
交換したが、まだゼロである。もうひとつ、私の2次元配列では、1つのセットはdouble 型、もう1つはint 型(バーインデックス)になっています。計算中は1つの型にしておき、結果を出力するときに再び元の型に戻すにはどうしたらよいでしょうか。
 
-xlapex-:
交換したが、まだゼロである。もうひとつ、私の2次元配列では、1組がdouble 型、2組目がint 型(バーインデックス)になっています。計算時には同じ型に変換し、結果を出力するときに再び同じ型に戻すにはどうしたらよいでしょうか。

また、count_barsは何に相当するのでしょうか?
 
Roger:

また、count_barsは何に相当するのでしょうか?

count_bars = 30。


考えた結果、2つの配列は冗長であり、すでにプログラムで指定されていると判断しました。これで、考えることが楽になる。どうすれば1種類に減らせるのか?

int start()
{
double mas1[30,2],mod_1;
int ind_1;
{
for (int i=1;i<=30;i++)
{
mas1[i, 0] = MathAbs(Close[i]-Open[i]);
mas1[i, 1] = i;

ArraySort(mas1);
mod_1=mas1[2, 0];
ind_1=mas1[2, 1];

Alert(mod_1," ",ind_1);
}
}
return(0);
}


 
-xlapex-:

count_bars = 30。

で置き換えてください。

mod_1=mas1[2, 0];
ind_1=mas1[2, 1];

まで

mod_1=mas1[i, 0];
ind_1=mas1[i, 1];
 
Roger:

で置き換えてください。

まで

交換された。mod_1 は set={1,3,5,7,9,...,29} を与え、ind_1 はゼロを表示し続ける。
 
-xlapex-:
交換しました。mod_1 は set={1,3,5,7,9,...,29} を与えますが、ind_1 は 0 を表示しつづけます。


はゼロを表示しない

double mas1[30,2],mod_1; 
int ind_1; 
for (int i=1;i<=30;i++)
{ 
   mas1[i, 0] = MathAbs(Close[i]-Open[i]);
   mas1[i, 1] = i;

   ArraySort(mas1);
   mod_1=mas1[i, 0];
   ind_1=mas1[i, 1];

   Print(mod_1," ",ind_1);
}

しかし、あなたのコードは少し理解しがたいものです。

例えば、mas配列がまだ形成されていないのに、すでにソートしている場合

質問の文脈からすると、より良いのかもしれませんね。

double mas1[30,2],mod_1; 
int ind_1; 
for (int i=1;i<=30;i++)
{ 
   mas1[i, 0] = MathAbs(Close[i]-Open[i]);
   mas1[i, 1] = i;
}
ArraySort(mas1);
mod_1=mas1[2, 0];
ind_1=mas1[2, 1];
Print(mod_1," ",ind_1);
 
-xlapex-:
交換された。mod_1 は set={1,3,5,7,9,...,29} を与えるが、ind_1 は 0 を表示し続ける。 。

ああ...そして、なぜ私はこんなにボーっとしているのか!

ArraySort(mas1,30,1,MODE_DESCEND ) というシンプルなものであることが判明しました。やるべきことを全部書けばいいんです。

 
abolk:


はゼロを表示しない

しかし、あなたのコードは少し理解しがたいものです。

例えば、mas配列がまだ生成されていないのに、すでにソートしている場合など

また、「形成されていない」とはどういうことでしょうか。他に何か足りないものはありますか?