オープントレードのチェックに問題がある - ページ 3

 
extern int     iOpenHour                = 6;

int start()
  {
                                                            
int b, scannedhour;
datetime bartime;
double dibsclose, dibsopen, prevdayrange[4];       //  prevdayrange Array Categorys ( 1  EURUSD, 2 GBPUSD, 3 USDCHF, 4 USDJPY )

//----------------------------------------------------------------------------------------------
//        EURUSD PREV DAY RANGE CALC

for(b=0; b<=24; b++)                               // scans the last 24 bars on eurusd
   {
      bartime = iTime("EURUSD", 60, b);               // checks the open time of each bar
      scannedhour = TimeHour(bartime);                // extracts the hour of that bar
    
      if ( scannedhour == iOpenHour )                    // Check to see if scanned hour = Dibs hour
         {
            dibsclose    = iOpen("EURUSD", 60, b);    // Get the open value of that bar (Close of 6gmt day) 
            dibsopen     = iOpen("EURUSD", 60, b+24); // Get the value of the bar 24 bars before the Dibs bar (Open of 6gmt day)
            prevdayrange[1] = (dibsclose-dibsopen);   // Calculate the range of the Dibs day
         }                                                  // End of if statement
    }                                                       // End of for statement
    

//----------------------------------------------------------------------------------------------
//        GBPUSD PREV DAY RANGE CALC

for(b=0; b<=24; b++)                               // scans the last 24 bars on eurusd
   {
      bartime = iTime("GBPUSD", 60, b);               // checks the open time of each bar
      scannedhour = TimeHour(bartime);                // extracts the hour of that bar
    
      if ( scannedhour == iOpenHour )                    // Check to see if scanned hour = Dibs hour
         {
            dibsclose    = iOpen("GBPUSD", 60, b);    // Get the open value of that bar (Close of 6gmt day) 
            dibsopen    = iOpen("GBPUSD", 60, b+24); // Get the value of the bar 24 bars before the Dibs bar (Open of 6gmt day)
            prevdayrange[2] = (dibsclose-dibsopen);   // Calculate the range of the Dibs day
         }                                                  // End of if statement
    }                                                       // End of for statement



//----------------------------------------------------------------------------------------------
//        USDCHF PREV DAY RANGE CALC

for(b=0; b<=24; b++)                               // scans the last 24 bars on eurusd
   {
      bartime = iTime("EURUSD", 60, b);               // checks the open time of each bar
      scannedhour = TimeHour(bartime);                // extracts the hour of that bar
    
      if ( scannedhour == iOpenHour )                    // Check to see if scanned hour = Dibs hour
         {
            dibsclose    = iOpen("USDCHF", 60, b);    // Get the open value of that bar (Close of 6gmt day) 
            dibsopen     = iOpen("USDCHF", 60, b+24); // Get the value of the bar 24 bars before the Dibs bar (Open of 6gmt day)
            prevdayrange[3] = (dibsclose-dibsopen);   // Calculate the range of the Dibs day
         }                                                  // End of if statement
    }                                                       // End of for statement



//----------------------------------------------------------------------------------------------
//        USDJPY PREV DAY RANGE CALC

for(b=0; b<=24; b++)                               // scans the last 24 bars on eurusd
   {
      bartime = iTime("USDJPY", 60, b);               // checks the open time of each bar
      scannedhour = TimeHour(bartime);                // extracts the hour of that bar
    
      if ( scannedhour == iOpenHour )                    // Check to see if scanned hour = Dibs hour
         {
            dibsclose    = iOpen("USDJPY", 60, b);    // Get the open value of that bar (Close of 6gmt day) 
            dibsopen     = iOpen("USDJPY", 60, b+24); // Get the value of the bar 24 bars before the Dibs bar (Open of 6gmt day)
            prevdayrange[4] = (dibsclose-dibsopen);   // Calculate the range of the Dibs day
         }                                                  // End of if statement
    }                                                       // End of for statement


//----------------------------------------------------------------------------------------------



Comment("EURUSD RANGE=", prevdayrange[1],        //Display Ranges of each pair
        "GBPUSD RANGE=", prevdayrange[2],
        "USDCHF RANGE=", prevdayrange[3],
        "USDJPY RANGE=", prevdayrange[4]);      


   return(0);
  }

OK、私はprevdayrangeが唯一の配列であるようにそれを修正しました。今、何らかの理由でコードのUSDJPYセクションが動作していません。これは他の4つのステートメントと同じで、iopen'sでペアを変更し、正しい配列の値にしています...

以下はその内容です ---> http://clip2net.com/s/13WDY

コメント関数に スペースを入れる方法と、次の行にプリントさせる方法を教えてください。

 
dazamate:

OK、私はprevdayrangeが唯一の配列であるようにそれを修正しました。今、何らかの理由でコードのUSDJPYセクションが動作していません。これは他の4つのステートメントと同じで、iopen'sでペアを変更し、正しい配列の値にしています...

以下はその内容です ---> http://clip2net.com/s/13WDY

コメント関数にスペースを入れる方法と、次の行に表示させる方法を教えてください。


配列の最初の要素は0です。配列に4つの要素がある場合、最後の要素は4ではなく3です ;-)https://docs.mql4.com/basis/variables

コメント()

Comment("This adds some spaces ", "   ", "this adds a carriage return", "\n");
 

さて、このコードは、新しい6:00キャンドルが開いたときに、それは情報を更新しないことを除いて、それが意図されているものをほとんど行っています。現在のローソク足が6:00のローソク足である場合、私はそれがそのバーのオープンをスキャンし、24バー戻ってそのバーのオープンをスキャンし、すべての計算を行い、現在のバーが6:00バーではない場合、それは最後の6:00ローソク足を見つけるまでバーステップバックし続けたいと思います。それは大丈夫ステップバックしているようですが、現在のろうそくが6:00である場合は好きではないようです。それを解決することはできません。伝説は、問題を見つけることができますか?


コードはここに投稿するにはあまりにも膨大になってきているので、私はソースコードをアップロードしなければならなかった

ファイル:
hothand.mq4  11 kb
 
dazamate:

ステップバックはOKのようですが、現在のローソク足が6:00の場合は気に入らないようです。それを解決することはできません。レジェンドはこの問題を発見できるでしょうか?


これはStrategy Testerを使用しているのでしょうか? もしそうなら・・・。

WHRoeder 2011.07.18 18:30

テスターの制限 です。他のタイムフレームやペアのテスターでバーゼロのデータを取得することはできません。お試しください。

 

Nope Raptor これはライブチャートでのことですが、変更すべきでしょうか?


for(b=0; b<=24; b++) to for(b=-1; b<=24; b++)
ただ、声に出して考えてみただけで、それで何かが解決するかどうかはわかりません。
 
dazamate:

Nope Raptor これはライブチャートでのことですが、変更すべきでしょうか?


声に出して考えてみただけです。それで何か解決するかどうかはわかりません。
ああ、わかりました、もう一度あなたのコードを見てみます ... ...
 
サーバーの時刻は、あなたのコードやチャートで使用されている時刻です。
 

すべてがうまく機能しているように見えますが、それが意味をなすのであれば、現在のバーの後ろにない限り、6:00バーを拾うことはありません。


Raptorさん、ありがとうございました。

 
dazamate:

すべてがうまく機能しているように見えますが、それが意味をなすのであれば、現在のバーの後ろにない限り、6:00バーを拾うことはありません。


Raptorさん、ありがとうございました。

はい私はあなたが言っていることを理解すると思います、それは時間が05:59から06:00に変わるとき更新しません... .

私はテストにMBTを使用しており、現在のH1バーのサーバー 時間は04:00なので、私はiOpenHourを5に設定し、20分後に何が起こるか見てみましょう。

 

OK、私は同じ問題を持っている、現在のキャンドルが05:00に開いたときに更新されません... ...興味深いです。