無料でロボットをダウンロードする方法を見る
Facebook上で私たちを見つけてください。
私たちのファンページに参加してください
私たちのファンページに参加してください
記事を気に入りましたか?MetaTrader 5ターミナルの中でそれを試してみてください。
- ビュー:
- 1715
- 評価:
- パブリッシュ済み:
- 2016.06.10 11:56
- アップデート済み:
- 2016.11.22 07:34
-
このコードに基づいたロボットまたはインジケーターが必要なら、フリーランスでご注文ください フリーランスに移動
СIsNewBarクラスは、新しいバーが表示された瞬間に計算を行うエキスパートアドバイザーの効率的な操作のために必要です。
通常IこのためにはクラスではなくIsNewBar() 関数が使用されます。しかし、そのような関数には静的変数が含まれているので、この関数のいくつかの呼び出しを使用することはできません。エキスパートアドバイザーコードで繰り返しこのような関数を再利用できるようにするためにはそれをクラスメンバににしたほうがはるかに簡単です。この場合それはIsNewBar.mqh用いて達成されました。
ライブラリコードはグローバルレベルで#includeディレクティブで含まれるべきです。
#include <IsNewBar.mqh>
そして、必要な数のСIsNewBarクラス変数は、エキスパートアドバイザーのOnTick()ブロック内で宣言される必要があります。
static CIsNewBar NB1,NB2;
その後IsNewBar()関数の呼び出しが可能です。
bool IsNewBar(string symbol, // 通貨銘柄 ENUM_TIMEFRAMES timeframe)// 計算チャート時間枠
エキスパートアドバイザーコードは下記です。
if(NB1.IsNewBar(Symbol(),PERIOD_D1)) // 新しいバーをチェック { /* 取引シグナル1 を受信するブロックのコード */ }
カキはOnTick()関数内にСIsNewBarクラスを含むコードの可能な例です。
//+------------------------------------------------------------------+ //| エキスパートティック関数 | //+------------------------------------------------------------------+ void OnTick() { //---- double iClose1[1],iClose2[1]; //---- 静的変数の宣言 static bool Recount1=true,Recount2=true; static CIsNewBar NB1,NB2; //+----------------------------------------------+ //| 市場参入シグナルの検知 | //+----------------------------------------------+ if(NB1.IsNewBar(Symbol(),PERIOD_D1) || Recount1) // 新しいバーをチェック { Recount1=false; //---- 新しく出現したデータを配列にコピーする if(CopyClose(Symbol(),PERIOD_D1,1,1,iClose1)<=0) {Recount1=true; return;} /* 取引シグナル1 を受信するブロックのコード */ } if(NB2.IsNewBar(Symbol(),PERIOD_H4) || Recount2) // 新しいバーをチェック { Recount2=false; //---- 新しく出現したデータを配列にコピーする if(CopyClose(Symbol(),PERIOD_H4,1,1,iClose2)<=0) {Recount2=true; return;} /* 取引シグナル2を受信するブロックのコード */ }
MetaQuotes Ltdによってロシア語から翻訳されました。
元のコード: https://www.mql5.com/ru/code/768

価格の補間放物線回帰の標準偏差+曲線状チャネルの2つの直線状のチャンネルは将来の値をグラフ。

ATR(Average True Range、平均トゥルーレンジ)テクニカル指標の移動平均線からの偏差に基づいたチャンネル。