Проблемы с проверкой открытой торговли - страница 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);
  }

Итак, я исправил его так, чтобы prevdayrange был единственным массивом. Теперь по какой-то причине секция кода USDJPY не работает. Это то же самое, что и остальные 4 утверждения с измененной парой в iopen's и правильным значением массива...

Вот что это делает ---> http://clip2net.com/s/13WDY

Как вы ставите пробелы в функции комментария и можете ли вы заставить ее печатать на следующей строке?

 
dazamate:

Итак, я исправил его так, чтобы prevdayrange был единственным массивом. Теперь по какой-то причине секция кода USDJPY не работает. Это то же самое, что и остальные 4 утверждения с измененной парой в iopen's и правильным значением массива...

Вот что это делает ---> http://clip2net.com/s/13WDY

Как вы ставите пробелы в функции комментария и можете ли вы заставить ее печатать на следующей строке?


Первый элемент в массиве равен 0, если массив состоит из 4 элементов, то последний будет 3, а не 4 ;-) 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:

Кажется, что он отступает назад нормально, но ему не нравится, если текущая свеча 6:00. Не могу разобраться с этим. Могут ли легенды заметить проблему?


Используется ли при этом тестер стратегий? Если да, то...

WHRoeder 2011.07.18 18:30

Ограничение тестера: Вы не можете получить данные нулевого бара в тестере для других таймфреймов или пар. Попробуйте:

 

Неа, Раптор, это было на живом графике. Должен ли я изменить.


for(b=0; b<=24; b++) to for(b=-1; b<=24; b++)
Просто размышляю вслух, не уверен, что это что-то исправит.
 
dazamate:

Неа, Раптор, это было на живом графике. Должен ли я изменить.


Просто размышляю вслух, не уверен, что это что-то исправит.
Хорошо, я посмотрю на ваш код еще раз...
 
Я проверю ваш код при следующем изменении часа, потому что не вижу ничего очевидного... Вы уверены, что проверяли в 6 утра по времени сервера? Местное время ПК не обязательно совпадает с временем сервера, время сервера - это то, что используется в вашем коде и на ваших графиках.
 

Все вроде бы работает нормально, но он не подхватывает 6:00 бар, если он не находится за текущим баром, если это имеет смысл.


Спасибо за ваше время Raptor

 
dazamate:

Все вроде бы работает нормально, но он не подхватывает 6:00 бар, если он не находится за текущим баром, если это имеет смысл.


Спасибо, что уделили время, Raptor

Да, я думаю, я понимаю, что вы говорите, он не обновляется, когда время меняется с 05:59 на 06:00 ....

Я использую MBT для тестирования, и время сервера для текущего бара H1 - 04:00, поэтому я установил iOpenHour на 5, посмотрим, что произойдет через 20 минут.

 

ОК, у меня та же проблема, нет обновления, когда текущая свеча открылась в 05:00 ... интересно.

Причина обращения: