記事"「新規バー」イベントハンドラ"についてのディスカッション - ページ 6

 

皆さん、ご機嫌よう!

このコード

bool IsNewBar()
  {
   static datetime TimeOld;
   datetime TimeNew[1];
   CopyTime(_Symbol,PERIOD_CURRENT,0,1,TimeNew);
   if(TimeNew[0]!=TimeOld)
     {
      TimeOld=TimeNew[0];
      return(true);
     }
   return(false);
  }

は機能するのだろうか?ずいぶん前にMQL5のサイトで見つけたのですが、誰からコピーしたのか覚えていません。

 
MrBrooklin #:

皆さん、ごきげんよう!

こんなコードはどうだろう:

うまくいくかな?ずいぶん前にMQL5のサイトで見つけたんだけど、誰からコピーしたのか覚えてないんだ。


ちなみに、私もこのコードを使っていて、とてもうまくいっています!

bool isNewBar(string INST,int K, ENUM_TIMEFRAMES timeFrame)
  {
//----
   bool res=false;               // 分析結果変数 
   int  i=0;                     // 配列のセル番号 old_Times[] 
   datetime new_Time[1];         // 新しいバーの時間

   switch(K)
     {
      case 0:  i= 0; break;
      case 1:  i= 1; break;
      case 2:  i= 2; break;
      case 3:  i= 3; break;
      case 4:  i= 4; break;
      case 5:  i= 5; break;
      case 6: i= 6; break;
      case 7: i= 7; break;
      case 8: i= 8; break;
      case 9: i= 9; break;
      case 10: i=10; break;
      case 11:  i=11; break;
      case 12:  i=12; break;
      case 13:  i=13; break;
     }
   // 最後のバーの時刻をセルにコピー new_Time[0] 
   int copied=CopyTime(INST,timeFrame,0,1,new_Time);
   
   if(copied>0) // データをコピー
      {
      if(old_Times[i]!=new_Time[0])       // 古いバー・タイムが新しいバー・タイムと等しくない場合
         {
         if(old_Times[i]!=0) res=true;    // これが初走行でない場合、true = new bar
         old_Times[i]=new_Time[0];        // バーの時間を覚えておく 
         }
      }      
//----
   return(res);
  }
 
switch(K)
     {
      case 0:  i= 0; break;
      case 1:  i= 1; break;
      case 2:  i= 2; break;
      case 3:  i= 3; break;
      case 4:  i= 4; break;
      case 5:  i= 5; break;
      case 6: i= 6; break;
      case 7: i= 7; break;
      case 8: i= 8; break;
      case 9: i= 9; break;
      case 10: i=10; break;
      case 11:  i=11; break;
      case 12:  i=12; break;
      case 13:  i=13; break;
     }

ワオ)

 
Dmitry Fedoseev #:

ワオ)

Kには誰がいるんだ? 全部見たつもりだけど。

配列比較

私は新しいバーに失望した、取引の偶然の一致はない、私には明らかでないいくつかの理由のために、印刷がない、すなわち、トリガーやserieslastbarまたは単に時間のラグがない、私は高いping(140)を持っている、多分それが理由です。

私はnewbarの多くのバリエーションを試しましたが、どこでも吃音でした。

私はnewbarを削除し、すべての端末は数日間100%1in1サーバーで取引しました。

 
Fast235 #:

Kには誰がいるんだ? 全部見たつもりだよ。

配列比較

私は新しいバーに失望している、取引のない偶然の一致は、私が理解していない理由のために、印刷がない、すなわち、トリガーやserieslastbarまたは単にタイムラグがない、私は高いping(140)を持っている、多分それが理由です。

Kパラメータで。

この関数を使用すると、注文でエラーが発生した場合の再試行はありませんので。

 

と貿易はOnTickではなく、OnChartEvent(スパイ)によって、可能な限り最速の実装では、唯一のidを介して、残りは転送されません。

7シンボル、アメリカンセッションでは、0.5-0.7%ryzen 3700x、条件とカウントの数が多い上の1シンボルの通過

も、インジケータから新しいバーを介して新しいバーを試してみましたが、またお得な情報を発散し、5正常で、その後1つで、他の吃音で。

 
私はそれを完全に捨てました、とにかくアルゴリズムは最後の バーを見ます、そしてこの場合、利点さえあります、取引がキャンセルされた場合、それはスプレッドと「偏差」の制限の限界内でどこにも行きません。
 
Mihail Marchukajtes #:

ちなみに、私もこのコードを使っていて、とてもうまく機能している!

ありがとう、ミハイル、私の関数ライブラリに追加するよ。

ありがとう、ミハイル。

 
Armen Shahinyan #:


現在のバーのオープニング時間を追跡し、各ティックで比較する。


コードから最初の関数を削除する。そうすれば、人生は良くなる。

 

一般的に、2つの状況が興味深い:

1.全員が何らかの理由で追放された。

2.新しいバーは 常に前のバーと時間が異なる。常に左から右に進むので、いつでもいい。任意の時間を取る。もしそれが同じ前のバーと重ならなければ、そのバーは新しい。