つまり、ある時間枠に追加された支持線が、他の時間枠のチャートすべてに表示されるようにしたいのです。
チャート上にどのようにレジスタンス・レベルを追加しましたか?水平線や長方形のボックスのようなものですか?
特定のタイプのオブジェクトだけをクローンし、残りは無視する方法はありますか?また、クローンされたオブジェクトの可視性設定はコピーされず、他のチャートで再度手動で設定する必要があるようですが、オブジェクトの可視性プロパティも クローンするにはどうすればよいでしょうか?
ありがとうございました。
オブジェクトをいくつかのプロパティで選択したい場合、この関数に追加することができます。
string CCopyObject::CreateMessage(long chart) { string result = NULL; int total = ObjectsTotal(chart, 0); for(int i=0;i<total;i++) { string name = ObjectName(chart, i, 0); // // if(!( コピーするオブジェクトのプロパティをチェック) ) // このオブジェクトをコピーしたくない場合 // 続ける;// 次のオブジェクトに移動する // switch((ENUM_OBJECT)ObjectGetInteger(chart,name,OBJPROP_TYPE)) { case OBJ_HLINE: result+="{NAME="+name+"|TYPE="+IntegerToString(OBJ_HLINE)+"|"+HLineToString(chart, name)+"}"; break; case OBJ_VLINE: result+="{NAME="+name+"|TYPE="+IntegerToString(OBJ_VLINE)+"|"+VLineToString(chart, name)+"}"; break; case OBJ_TREND: result+="{NAME="+name+"|TYPE="+IntegerToString(OBJ_TREND)+"|"+TrendToString(chart, name)+"}"; break; case OBJ_RECTANGLE: result+="{NAME="+name+"|TYPE="+IntegerToString(OBJ_RECTANGLE)+"|"+RectangleToString(chart, name)+"}"; break; } } return result; }
Dmitriy.
MT4用のものを作ってもらえませんか?できれば、オブジェクトのフィルタリング(水平方向のみクローン、トレンドのみクローン...) MT4用にも似たようなものがありますが、コードが閉じられており、フィルタを追加することができません。
MT4で使用するには、インジケータファイルの拡張子をmq5からmq4に変更し、インジケータを再コンパイルすれば十分です。
オブジェクトのフィルタリングを追加するには、パラメータを追加する必要があります。
sinput bool CloneHLine = true; sinput bool CloneVLine = true; sinput bool CloneTrend = true; sinput bool CloneRectangle = true;
を追加し、CheckToClone 関数を追加してOnChartEvent を 修正する必要があります。
//+------------------------------------------------------------------+ //| チャートイベント機能| //+------------------------------------------------------------------+ void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { //--- string message1=NULL; string message2=NULL; int total=0; //--- switch(id) { case CHARTEVENT_OBJECT_CHANGE: case CHARTEVENT_OBJECT_CREATE: case CHARTEVENT_OBJECT_DRAG: if(!CheckToClone(sparam)) return; message1=CloneObjects.CreateMessage(l_Chart,sparam,0); message2=CloneObjects.CreateMessage(l_Chart,sparam,1); total=ArraySize(ar_Charts); for(int i=0;i<total;i++) { EventChartCustom(ar_Charts[i],(ushort)id,0,0,message1); EventChartCustom(ar_Charts[i],(ushort)id,0,0,message2); } break; //--- case CHARTEVENT_OBJECT_DELETE: if(!CheckToClone(sparam)) return; total=ArraySize(ar_Charts); for(int i=0;i<total;i++) EventChartCustom(ar_Charts[i],(ushort)id,0,0,sparam); break; //--- case CHARTEVENT_CUSTOM + CHARTEVENT_OBJECT_CHANGE: case CHARTEVENT_CUSTOM + CHARTEVENT_OBJECT_CREATE: case CHARTEVENT_CUSTOM + CHARTEVENT_OBJECT_DRAG: CloneObjects.DrawObjects(l_Chart,sparam); ChartRedraw(l_Chart); break; //--- case CHARTEVENT_CUSTOM + CHARTEVENT_OBJECT_DELETE: if(!CheckToClone(sparam)) return; ObjectDelete(l_Chart,sparam); ChartRedraw(l_Chart); break; } } //+------------------------------------------------------------------+ //|| //+------------------------------------------------------------------+ bool CheckToClone(string name) { bool result = false; if(l_Chart>=0 && ObjectFind(l_Chart,name)==0) { switch((ENUM_OBJECT)ObjectGetInteger(l_Chart,name,OBJPROP_TYPE)) { case OBJ_HLINE: result=CloneHLine; break; case OBJ_VLINE: result=CloneVLine; break; case OBJ_TREND: result=CloneTrend; break; case OBJ_RECTANGLE: result=CloneRectangle; break; } } return result; }
こんにちは。
インジケーターは1つのスレッドで動作し、ターミナルに多数のインジケーターがあると動作が遅くなります。さらに、グラフィカルな要素を扱うことは、ターミナルにとってかなり労働集約的です。多数のチャートで使用する場合は、機能を損なうことなく、プログラムをExpert Advisorに再フォーマットすることをお勧めします。ただし、Expert Advisorと分析を同時に使わない場合に限る。というのも、ターミナルには1つのチャートにつきExpert Advisorは1つまでという制限があるからだ。
MT4で使用するには、インジケータファイルの拡張子をmq5からmq4に変更し、インジケータを再コンパイルするだけです。
迅速なご回答とご協力ありがとうございました。ChartIndicatorGet、CloneAllObjectsなどの関数はmq4ではサポートされていません。一般的に、コンパイル時に9つのエラーが発生します。プログラミングの知識はゼロです。よろしくお願いします。
- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索
新しい記事 1つのツールで複数のチャートを異なる時間枠で同期させる はパブリッシュされました:
取引の決定を行う際に、取引の過程で複数の時間枠でチャートを同時に分析する必要があることが多々あります。また、チャート上にはグラフィック分析のオブジェクトがあるため、すべてのチャートに同じオブジェクトを適用するのは不便です。この記事では、チャート上のオブジェクトの複製の自動化をご紹介したいと思います。
上記をすべて考慮した上で、私はプログラムの実施のために2番目の方法を選びました。このようにして、インジケータの作業は2つのブロックに分けることができます。
作者: Dmitriy Gizlyk