ありがとう。とても参考になった。
なぜCINDICATOBUFFERの近くに*があり、その後にatが使われているのか、この記事の中でこのコードが何を意味するのか理解しようと試みている。
((CIndicatorBuffer*)At(0)).Name("ZIGZAG");
((CIndicatorBuffer*)At(1)).Name("HIGH");
((CIndicatorBuffer*)At(2)).Name("LOW");
詳しい説明をお願いします。
感謝
なぜCINDICATOBUFFERの近くに*をつけ、atを使うのか、このコードの意味をこの記事で理解しようとしている。
((CIndicatorBuffer*)At(0)).Name("ZIGZAG");
((CIndicatorBuffer*)At(1)).Name("HIGH");
((CIndicatorBuffer*)At(2)).Name("LOW");
詳しい説明をお願いします。
サンクス
文字列
m_handle=iCustom(symbol,period,zigzag,depth,deviation_create,backstep);
インジケータへのパスが見つかりません。
私が呼び出そうとしているインジケータはstandardフォルダにあります。
StandardのZigzagはExamplesフォルダにあります。

NULLを指定するとうまくいき、"EURUSD "を指定するとうまくいかない!
bool CiZigZag::Create(const string symbol,const ENUM_TIMEFRAMES period, const int depth,const int deviation_create,const int backstep) { //--- 履歴をチェックする if(!SetSymbolPeriod(symbol,period)) return(false); //--- 作成 //m_handle=iCustom(symbol,period, "Examples}ZigZag",depth,deviation_create,backstep); //m_handle=iCustom("EURUSD",period, "ExamplesZigZag",depth,deviation_create,backstep); - does NOT work m_handle=iCustom(NULL,period,"Examples\\ZigZag",depth,deviation_create,backstep); - работает //--- 結果をチェックする if(m_handle==INVALID_HANDLE) return(false); //--- インジケータの作成に成功 if(!Initialize(symbol,period,depth,deviation_create,backstep)) { //--- 初期化エラー IndicatorRelease(m_handle); m_handle=INVALID_HANDLE; return(false); } //--- OK return(true); } IndicatorRelease(m_handle); m_handle=INVALID_HANDLE; return(false); } //--- OK return(true); }
//+------------------------------------------------------------------+ //|| ジグザグ・インジケータの作成| //+------------------------------------------------------------------+ bool CiZigZag::Create(const string symbol,const ENUM_TIMEFRAMES period, const int depth,const int deviation_create,const int backstep) { //--- 履歴をチェックする if(!SetSymbolPeriod(symbol,period)) return(false); //--- 作成 m_handle=iCustom(symbol,period,"zigzag",depth,deviation_create,backstep); //--- 結果をチェックする if(m_handle==INVALID_HANDLE) return(false); //--- インジケータの作成に成功 if(!Initialize(symbol,period,depth,deviation_create,backstep)) { //--- 初期化エラー IndicatorRelease(m_handle); m_handle=INVALID_HANDLE; return(false); } //--- OK return(true); }
bool CiZigZag::Initialize(const string symbol,const ENUM_TIMEFRAMES period, const int depth,const int deviation_init,const int backstep) { if(CreateBuffers(symbol,period,3)) { //--- レンダリングステータス行 m_name ="ZigZag"; m_status="("+symbol+","+PeriodDescription()+","+ IntegerToString(depth)+","+IntegerToString(deviation_init)+","+ IntegerToString(backstep)+") H="+IntegerToString(m_handle); //--- 設定を保存する m_depth=depth; m_deviation=deviation_init; m_backstep=backstep; //--- バッファの作成 ((CIndicatorBuffer*)At(0)).Name("ZIGZAG"); ((CIndicatorBuffer*)At(1)).Name("HIGH"); ((CIndicatorBuffer*)At(2)).Name("LOW"); //--- OK return(true); } //--- エラー return(false); }
インジケータ・バッファ配列のインデックス方向が、ArraySetAsSeriesと同じように、ここでどのように設定さ れるかを理解する手助けをしてください。デフォルトの方向は現在から過去ですが、過去から現在にする必要があります。昨日からこの質問で悩んでいます! 助けてください!
- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索
新しい記事 MQL5 標準ライブラリの拡張とコードの再利用 はパブリッシュされました:
MQL5 標準ライブラリによってみなさんの開発者としての生活は楽になります。しかしながらそれは世界中の開発者全員のすべてのニーズを実装するわけではありません。よってみなさんがカスタム的なものをもっと必要とするなら一歩先へすすんで拡張することができます。本稿は MetaQuotesの Zig-Zag テクニカルインディケータを標準ライブラリに統合する方法をご紹介します。私達はMetaQuotes の設計哲学により自分自身の目標を達成しようという気持ちになります。
一言で言えばMQL5 API はみなさんがコード再利用、信頼性、柔軟性、管理のしやすさを享受できるようにするためのものです。これはセオリーが言うことですが、それをすべて越え て、 MQL5 で前進し続け、マルチ通貨 Experts Advisorsのようなより洗練されたものを開発しようとしているなら、まず標準ライブラリでコードをすることができます。それでみなさんのアプリケー ションは成功した人生を保証されるのです。みなさんの EAs やインディケータが複雑になればなるほど、フレームワーク開発に関連するコンセプトを使いこなることが必要になります。実生活の例として、私は個人的に一 から私のプロジェクトの基盤を強化するニーズを示す複雑なマルチ通貨 EA を開発する必要があります。
作者: Jordi Bassaganas