for (int u=1;u<=k;u++) // k при старте =0, u <= k не будет, считать счетчику незачем
{
if (StrToDouble(TimeSave1[u][1])<=StrToDouble(TimeSave1[u-1][1])) // выражение при старте всегда [1][1]<=[0][1]
{
Number_of_extremum[u]=1;// значит под номером u - нашли min
}
elseif (StrToDouble(TimeSave1[u][1])>=StrToDouble(TimeSave1[u-1][1])) // значит, всегда срабатывает [1][1]>=[0][1]
{
Number_of_extremum[u]=2;// значит под номером u - нашли max
}
}
1) k - 開始時 - はゼロに等しくない!k = ある履歴の深さで検出したZigZagの頂点の数!
2) "so, it always work [1][1]>=[0][1]" - なぜ常に動作するのでしょうか?
もう一度、言いたいことを教えてください。
kを理解しています。これが理解できないのです。
for (int u=1;u<=k;u++) // на первом шаге счетчик присваивает u = 1
{
if (StrToDouble(TimeSave1[u][1])<=StrToDouble(TimeSave1[u-1][1])) // здесь, значит[u=1][1]<=[(u=1)-1][1]
// т. е. 1<=0, вы же от 1 еще 1 отнимаете
{
何がキャッチなのか、アドバイスをお願いします。
1) 2次元配列にジグザグ極値形成時刻と極値そのものを記入する。
2) 与えられた要素に対応する極値が局所的な最大値か最小値かによって、2番目の配列を1または2で埋める。
3) 結果をAlertで出力しています。
が、1や2が表示されるべきところでは常にゼロが表示されます。
何がキャッチなんだ!?
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
string TimeSave1[100][2], TimeSave2[100][2];
double A[], B[];
double Number_of_extremum[];
extern string Currency = "EURUSD";
+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
//----
int k;
k=0;
double date;
int status;
for(int shift = 0; shift <= Bars-1; shift++)
{
date = iCustom(NULL, 0, "ZigZag", 12, 5, 3, 0, shift);
//----------------------------------------------------
if(date > 0)
{
TimeSave1[k][0]=TimeToStr(Time[shift]);
TimeSave1[k][1]=date;
k++;
}
}
//====================================================
for (int u=1;u<=k;u++)
{
if (StrToDouble(TimeSave1[u][1])<=StrToDouble(TimeSave1[u-1][1]))
{
Number_of_extremum[u]=1;// значит под номером u - нашли min
}
else
if (StrToDouble(TimeSave1[u][1])>=StrToDouble(TimeSave1[u-1][1]))
{
Number_of_extremum[u]=2;// значит под номером u - нашли max
}
}
//====================================================
for (int j=1;j<10;j++)
{
Alert("время== ",TimeSave1[j][0], " значение== ", TimeSave1[j][1], " max/min== ", Number_of_extremum[j]);
}
//----
return(0);
}
//+------------------------------------------------------------------+
そして、もうひとつ明確にしておきたいことがあります。
mqlで日付と時間を比較する方法 (例えば、ZZのどの頂点が早く形成されたかを判断する必要がある。そのためには、それらの形成時間を比較する必要がある...)
他は見ていません。
友よ、質問だ。
この問題に直面した。
インジケータはAlertで何らかの情報を出力します。
でも、だんだんAlertの出力 フィールドに "ガラクタ "が溜まりすぎて......。
再度インジケータを起動する際、Alertの古いレコードをすべて消去することは可能でしょうか?
ありがとうございました。
追伸
先ほどの投稿(1や2ではなくNULL値が表示される理由)についてコメントをお願いします。
フォーラムでは見つけられませんでしたが...。
質問 - オーダーのコメントを変更することは可能でしょうか? さて、OrderSend() 操作の際、コメントに "OrderNotModify "という値を入れていますが、このオーダーに対してさらに操作を行う場合、例えば部分的に閉じる場合、OrderCommentを "OrderIsModify "に変更します......。か否か?
キャッチの内容を教えてください。
配列は0から埋まっていきますが、ここでは0番目のインデックスをスキップして、1番目のインデックスから埋めていきます。
配列は0から埋まっていきますが,ここでは0番目のインデックスを飛ばして1番目から埋まっていきますし
コメントがよくわからないのですが。
1) k - 開始時 - はゼロではありません!k = ある履歴の深さで検出したZigZagの頂点の数!
2) "so, it always work [1][1]>=[0][1]" - なぜ常に動作するのでしょうか?
もう一度、何が言いたかったのか言ってください。
というコメントがありましたが、よくわかりませんでした。
1) k - 開始時 - はゼロに等しくない!k = ある履歴の深さで検出したZigZagの頂点の数!
2) "so, it always work [1][1]>=[0][1]" - なぜ常に動作するのでしょうか?
もう一度、言いたいことを教えてください。
kを理解しています。これが理解できないのです。
右の方
は、注文コメントを変更することは可能でしょうか?
ないようだ。
だから熱のせいみたいです... そして、私のコンパイラにも影響を与えています :)
を見ると、ZigZのMAX/MINの形成日とそのMAX/MINの値を記録した配列を実行する必要があります。
実際、ZZのどの頂点が最小で、どの頂点が最大なのかを理解する必要がありますね。
そのために、ZZの次に高い点を、前の点と比較するのです。
連続するトップが大きければ、トップとなる。
より小さい場合は、谷です。
頂点か谷かによって、それぞれ別の配列の要素に1または2を追加する。
これは気になる!!WHEREエラーはあり得るのか!?
2つの既知の値に基づいて、fibaのレベルを計算できるようにしたい。
フィブゼロレベルは1.2807、レベル23.6は1.2838に対応する。
他の38.2、50.0、61.5、100.0レベルとそれらが対応する価格を見つける必要があります。
の原理を理解するために、1.2807と1.2838の間の関係も見つけられませんでした。
他のすべての値を見つけることの
お願い、教えて、誰か・・・。:)
低TFでバーが開く時間を見て、どのくらいの時間が面白いかではなく、バーが始まった場所と終わった場所のマークをチャート上に描画するためのインジケータに会ったことがある人
最適化されているわけではありませんが、見たいものが描けていると思います。