[警告は閉鎖されました!】フォーラムを乱雑にしないために、どんな初心者の質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしでは、どこにも行けない。 - ページ 753

 
Morzh09:

何がキャッチなのか、アドバイスをお願いします。

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のどの頂点が早く形成されたかを判断する必要がある。そのためには、それらの形成時間を比較する必要がある...)

datetimeは 基本的にint 型であり、1970年から始まりバータイムで終わる秒数を含んでいます。more/lessをチェックすると、うまくいくのですが・・・。
他は見ていません。
 

友よ、質問だ。


この問題に直面した。

インジケータはAlertで何らかの情報を出力します。

でも、だんだんAlertの出力 フィールドに "ガラクタ "が溜まりすぎて......。

再度インジケータを起動する際、Alertの古いレコードをすべて消去することは可能でしょうか?


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

追伸

先ほどの投稿(1や2ではなくNULL値が表示される理由)についてコメントをお願いします。

 

フォーラムでは見つけられませんでしたが...。

質問 - オーダーのコメントを変更することは可能でしょうか? さて、OrderSend() 操作の際、コメントに "OrderNotModify "という値を入れていますが、このオーダーに対してさらに操作を行う場合、例えば部分的に閉じる場合、OrderCommentを "OrderIsModify "に変更します......。か否か?

 
Morzh09:

キャッチの内容を教えてください。

配列は0から埋まっていきますが、ここでは0番目のインデックスをスキップして、1番目のインデックスから埋めていきます。

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

}

else

if (StrToDouble(TimeSave1[u][1])>=StrToDouble(TimeSave1[u-1][1])) // значит, всегда срабатывает [1][1]>=[0][1]

{

Number_of_extremum[u]=2;// значит под номером u - нашли max

}

}
 
Abzasc:

配列は0から埋まっていきますが,ここでは0番目のインデックスを飛ばして1番目から埋まっていきますし

コメントがよくわからないのですが。

1) k - 開始時 - はゼロではありません!k = ある履歴の深さで検出したZigZagの頂点の数!

2) "so, it always work [1][1]>=[0][1]" - なぜ常に動作するのでしょうか?

もう一度、何が言いたかったのか言ってください。

 
Morzh09:

というコメントがありましたが、よくわかりませんでした。

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 отнимаете

{

右の方

 
Michelangelo:

は、注文コメントを変更することは可能でしょうか?

OrderModifyの場合のみ チケット 価格 ストップロス テイクプロフィット 満了 矢印の色

ないようだ。

 

だから熱のせいみたいです... そして、私のコンパイラにも影響を与えています :)

を見ると、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の間の関係も見つけられませんでした。
他のすべての値を見つけることの

お願い、教えて、誰か・・・。:)

 
IgorM:
低TFでバーが開く時間を見て、どのくらいの時間が面白いかではなく、バーが始まった場所と終わった場所のマークをチャート上に描画するためのインジケータに会ったことがある人
#property indicator_chart_window
#property link      "IgorM"

extern int num    = 10;
extern color line = White;
int init()
{return(0);
}
  
void clear(){
   for(int i=ObjectsTotal()-1; i>=0;i--) {
      string name = ObjectName(i);
      if (StringFind(name,"timeH1_") !=-1) ObjectDelete(name);
    }
}

int deinit(){
clear();
return(0);
}

int start()
{   
   int counted_bars = IndicatorCounted();
   if(counted_bars < 0)   return(-1);
   clear();
   for (int i=0;i<=num;i++){ 
      string name = "timeH1_"+TimeToStr(Time[i],TIME_DATE|TIME_MINUTES);
      ObjectCreate(name,OBJ_VLINE,0,iTime(NULL,PERIOD_H1,i),0);
      ObjectSet(name,OBJPROP_COLOR,line);
      ObjectSet(name,OBJPROP_STYLE,STYLE_DOT);
    }
return(0);
}

最適化されているわけではありませんが、見たいものが描けていると思います。