新しいバーを表示する - ページ 4

 
Donald Gibson:

Enhanced-MQL4 ?

そんなの聞いたことない。


私も昨日からです ;)正しくは「Updated MQL4」らしいです。MQはこう書いています。

(...) ビルド600から、MQL4プログラミング 言語はMQL5のレベルに達するまで 完全に改訂されました - 今、あなたは統一されたMetaEditor開発環境、単一のスタイル、ライブラリ、デバッグツールを使用してMQL4/5で取引ロボットを開発することができます。

(そのため、MQL4の機能を完全に維持したまま、MQL5言語の機能と特徴を最大限に実装することにしました。言 い換えれば、 ООPや ネイティブコードコンパイラを含むMQL5の強力な機能は、すべて MQL4で利用できるようになるのです。

これを実現するために、私たちはMQL4とMQL5の両言語を自動的にサポート する 統一コンパイラを 開発しました。 (...)

定義における問題は、「言語」という言葉です。C++が言語であり、Basicが言語であるのと同じように、言語はMQLである。Updated-MQL4/MQL5は、MQLのプラットフォーム固有の変更に過ぎず、それ以上でも以下でもありません。したがって、(ネイティブの)MQL4とUpdated-MQL4の比較は、CとC++の場合とほとんど同じです。そして、MQL4.comからMQL5.comへの移行は、この混乱を完璧なものにしています。これらの投稿が示すように、ほとんどの人は私と同じようにMQL4からOOPを連想しません。私にとっては、MT4とMT5の両方のプラットフォームをサポートするMQL5が常にそうでした。

しかし、とにかく、それはかなりうまく機能し、MQLWhateverは、他のすべてのくだらないものと比較して、はるかに優れたインタフェースです。

 

Lorentzos Roussos

Alain can correct me on this but you may find gaps in instances where on the time horizon of a bar there where no ticks , so no bar will be in place

うぷぷぷぷ.こんなガブガブ見たことない。(何の意味もないですが)。

私は、"NewBar-indicator" を使って、前のバーの高値か安値で自動的にストップを引くようにしています。

(実はもう少し難しくて、"Innenstaebe and Aussenstaebe" (eng. "inside and outside movements" ???) と考えています。 正しい訳はわかりません。

しかし、私は、少なくとも20 - 最大で毎分数百ティックを持っている流動性の高い市場でのみこれを使用するつもりです。

10分間ティックのない期間はないと思います。

とにかく、このプログラムはこれを処理することができるはずです。

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

ウィルバー

 
Willbur:

Lorentzos Roussos

うぷぷぷぷ.こんなガブガブ見たことない。(何の意味もないですが)。

私は、"NewBar-indicator" を使って、前のバーの高値か安値で自動的にストップを引くようにしています。

(実はもう少し難しくて、"Innenstaebe and Aussenstaebe" (eng. "inside and outside movements" ???) と考えています。 正しい訳はわかりません。

しかし、私は、少なくとも20 - 最大で毎分数百ティックを持っている流動性の高い市場でのみこれを使用するつもりです。

10分間ティックのない期間はないと思います。

とにかく、このプログラムはこれを処理することができるはずです。

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

ウィルバー

iTimeを使っているのなら、新しいバーがなければ発射されないので、安全です。
 
あなたはiTimeを使用している、新しいバーがない場合、それはとにかく発火しないでしょう、あなたは安全です<br / translate="no">。

iTimeを使っている」とはどういう意味ですか? iTime」はプログラムの中の単なる変数で、「Bert」でも「Clarly」でも好きな名前にすればいいと思いますが?

- - - - -

今日、私はいくつかのテストをしました。そして、私はあなたが言ったギャップのいくつかを発見した。

例:S&P500 20:34にバーがあり、20:35と20:36はサーバー(ActiveTrades)からティックもバーも取得できませんでした。次のティックは20:37に到着しました。

その後、この期間のチャートにバーがありません。

私は確認しませんでしたが、この時間にはCopyRates()関数 内にもバーがないと思います。



この時点でコードをチェックする必要があると思います。

私は、それが新しいバーとして20:37バーの3つの最初のティックを示すだろう、と推測しています。

(TimeCurrent() は20:34から20:37にジャンプしている!そこに到達するために3回PeriodeSeconds()を追加する必要がある).

void OnTick()  
{
//---   if(TimeCurrent()>=projection)   
    {Print("New Bar "+TimeToString(projection,TIME_DATE|TIME_MINUTES));   
     projection=projection+PeriodSeconds();   
    }

Willbur


 

皆さん、こんにちは。

まだ見ている人がいるかもしれないので...ここに、1つのバーに1つの取引しかできないようにするための私のコードの抜粋があります。

  if (iBars(Symbol(),0) == BarsCurr)DisableTrading = 1;
  
  for(i=0;i<OrdersTotal();i++)
  {
  if (OrderSelect (i,SELECT_BY_POS,MODE_TRADES) == True && OrderMagicNumber() == MagicNumber) DisableTrading = 1;
  }

  for(i=OrdersTotal();i>0;i--)
  {
  if (OrderSelect (i,SELECT_BY_POS,MODE_HISTORY) == True && OrderMagicNumber() == MagicNumber)
  {
  if ((OrderClosePrice() >= Open[0] && OrderClosePrice() <= Close[0]) && (OrderOpenPrice() >= Open[0] && OrderOpenPrice()<= Close[0]))
  {
  DisableTrading = 1;
  }
   }
      }

ibarsはbarsに置き換えられ、disabletrading = 1は何もしないことを意味します。barsの部分は、普通に投稿されたものを使ってさらに理解することができます。初期化部分にBarsCurr = 0を、売買注文 部分にBarsCurr = Barsを記述してください。

ただ、問題があって、シグナルリバーサルでクローズオーダーを実装しようとしているのですが、何かアイデアはありますか?

 

NewBarsの認識に関する議論が少し長くなったので、簡単に結果をまとめておきます。

テクニカル環境です。

変化(新しい取引や新しい価格の決定)がサーバーによって検出されると、サーバーはターミナルに信号を送ります。ターミナル・プログラムは OnTick () ルーチンをトリガーします。

この信号で、次の情報を得ます。

現在の時間 ()- ティックが送信されたサーバーの時間。

最後のティックに関する情報 - SymbolInfoTick()
- ティックが発生したサーバー時間
- アスク
- ビッド
- 最終価格 (すべてのプロバイダで有効ではありません)
- 何が変更されたかを示すフラグ

現在のバーに関する情報
- CopyRates()
- バーの "名前" 例: "10:20:00".
- オープン-ハイ-ロー-クローズ

新しいバーの認識(例: Period = M1)

サーバーは、何かが変更された場合にのみシグナルを送信するため。
hh.mm:00 "という名前のバーは "hh:mm:00 "よりも後に表示される可能性があります。

これは、流動性の低いシンボルに対して特別な状況を引き起こす可能性があります。

期間の期間を扱うソリューションでは、これを検出できません。

TimeCurrent() バー "名前"
最後のティック 10:10:07 10.10:00
次のティック 10:11:30 10:11:00

ということで、検出されません(期間内のティックがゼロ)。

TimeCurrent() bars "name"(タイムカレント バーズ "ネーム"
最後のティック 10:10:30 10:10:00
次のティック 10:13:40 10:13:00 10:12:00のバーがない!

ごくまれに、サーバーの時間がすでに次の期間に切り替わっているのに、バーが切り替わらないという状況(サーバーの負荷が非常に高い場合など)を目にしたことがあります。

TimeCurrent() バー "name"
最後のティック 10:10:00 10:09:00
次のティック 10:10:00 10:10:00

結論から言うと

不要なCopyRates()を抑制するために、TimeCurrent()を使っても良い。

TimeCurent()が新しい周期に達すると、バーが切り替わったかどうかをチェックしなければなりません。

これは、Alainが非常に早い段階で議論に持ち込んだコードに私を戻す。

https://www.mql5.com/en/forum/22983

ウィルバー

Improve your time execution by removing Bars function calls
Improve your time execution by removing Bars function calls
  • www.mql5.com
After a basic profiling I get the following results :.
 

エメカエムバネフォ

私のマニュアルには、"iBars "という名前の関数が 記載されていません。

これはMQL5のコードで間違いないですか?

Willbur

 
Willbur:

エメカエムバネフォ

iBarsという名前の関数が見当たらないのですが。

これがMQL5のコードであることは確かですか?

ウィルバー

mql5用ではなく、mql4用 だと思います。でも、iBarsは、私が遊びで作ったものです。一般的な機能としては、以前にも述べたようにBarsがあります。

まだ、シグナルリバーサルコードの支援を待っています。

ありがとうございます。

 
emeka Mbanefo:

mql5用ではなく、mql4用 だと思います。でも、iBarsは、私が遊んでいるのです。そのBarsは、以前にも述べたように、一般的な機能としてあります。

シグナルリバーサルコードのサポートをまだ待っています。

ありがとうございます。

  • 無関係な内容で他のトピックをハイジャックしないでください。
  • このトピックは、すでに述べたように、mql5に関するものです。
  • このトピックは、新しいバーを検出することについてであり、バーごとに一度だけ取引することではありません。
  • iBarsは新しいバーを検出するのに信頼性がありません。
Indicate a new bar
Indicate a new bar
  • www.mql5.com
Another idea could be the check wether the number of bars has been incremented.