Помогите исправить код.

 

Пожалуйста помогите понять что не так?

int func(int tm)

   {

   string symbol[] = {"EURUSD","GBPUSD","AUDUSD","NZDUSD","USDCAD","USDCHF","USDJPY",

                  "EURGBP","EURAUD","EURNZD","EURCHF","EURJPY","EURCAD","GBPAUD",

                  "GBPNZD","GBPCHF","GBPJPY","GBPCAD","AUDNZD","AUDCAD","AUDCHF",

                  "AUDJPY","CADCHF","CADJPY","NZDJPY","NZDCAD","NZDCHF","CHFJPY"};

   int m;

   int shift[];

   //---

      for(m=0;m<=27;m++)

      {

      shift[m] = iBars(symbol[m],tm);

      }

   int index = ArrayMinimum(shift,WHOLE_ARRAY,0);

      int all_bars = shift[index];

   return(all_bars);

   } 

 
Gevorg Hakobyan:

Пожалуйста помогите понять что не так?

int func(int tm)

   {

   return(all_bars);

   } 

Нужно задавать размер массива ArrayResize, ну или сразу прописать ему размер shift[28]

int func(int tm)

   {

   string symbol[] = {"EURUSD","GBPUSD","AUDUSD","NZDUSD","USDCAD","USDCHF","USDJPY",

                  "EURGBP","EURAUD","EURNZD","EURCHF","EURJPY","EURCAD","GBPAUD",

                  "GBPNZD","GBPCHF","GBPJPY","GBPCAD","AUDNZD","AUDCAD","AUDCHF",

                  "AUDJPY","CADCHF","CADJPY","NZDJPY","NZDCAD","NZDCHF","CHFJPY"};

   int m;

   int shift[];

   //---

      for(m=0;m<=27;m++)

      {
      ArrayResize(shift, m+1);
      shift[m] = iBars(symbol[m],tm);

      }

   int index = ArrayMinimum(shift,WHOLE_ARRAY,0);

      int all_bars = shift[index];

   return(all_bars);

   }
 
Vitaly Muzichenko:

Нужно задавать размер массива ArrayResize, ну или сразу прописать ему размер shift[28]

int func(int tm)

   {

   string symbol[] = {"EURUSD","GBPUSD","AUDUSD","NZDUSD","USDCAD","USDCHF","USDJPY",

                  "EURGBP","EURAUD","EURNZD","EURCHF","EURJPY","EURCAD","GBPAUD",

                  "GBPNZD","GBPCHF","GBPJPY","GBPCAD","AUDNZD","AUDCAD","AUDCHF",

                  "AUDJPY","CADCHF","CADJPY","NZDJPY","NZDCAD","NZDCHF","CHFJPY"};

   int m;

   int shift[];

   //---

      for(m=0;m<=27;m++)

      {
      ArrayResize(shift, m+1);
      shift[m] = iBars(symbol[m],tm);

      }

   int index = ArrayMinimum(shift,WHOLE_ARRAY,0);

      int all_bars = shift[index];

   return(all_bars);

   }
Спасибо.
 

Где ошибка? В тестере Алерт печатает все 28 сообщений...

void func0(void)

 {

 string fin[28] = {"EURUSD","GBPUSD","AUDUSD","NZDUSD","USDCAD","USDCHF","USDJPY",

                  "EURGBP","EURAUD","EURNZD","EURCHF","EURJPY","EURCAD","GBPAUD",

                  "GBPNZD","GBPCHF","GBPJPY","GBPCAD","AUDNZD","AUDCAD","AUDCHF",

                  "AUDJPY","CADCHF","CADJPY","NZDJPY","NZDCAD","NZDCHF","CHFJPY"};

   int m;

   for(m=0;m<=27;m++)

    {

    if(SymbolSelect(fin[m],true)==false)

    Alert("no access to the symbol "+fin[m]);

    }

 } 

 
Gevorg Hakobyan:

Где ошибка? В тестере Алерт печатает все 28 сообщений...

void func0(void)

 {

 } 

Вроде так, принтует только по тем, которых нет в обзоре

string SymbTrade[]={"EURUSD","GBPUSD","USDJPY","USDCHF","NZDUSD","AUDUSD","EURJPY","USDCAD","EURCHF","EURGBP","GBPCHF","GBPJPY","EURAUD","AUDCAD",
                    "AUDCHF","AUDJPY","CADCHF","CADJPY","CHFJPY","NZDCAD","NZDCHF","NZDJPY","GBPCAD","GBPAUD","GBPNZD","EURCAD","EURNZD","AUDNZD"};
for(int i=0;i<ArraySize(SymbTrade);i++) {
  if(SymbolInfoInteger(SymbTrade[i],SYMBOL_SELECT)==0) {
   SymbolSelect(SymbTrade[i],true);
     Print(SymbTrade[i]," = ",i);
  // ChartOpen(SymbTrade[i],PERIOD_CURRENT);
  }
}
У вас точно символы с этим названием и без суффиксов?
 
В том и дело, что если запустит в окна инструмента - Алерта нет, а в тестере сообщения видаются.
 
Gevorg Hakobyan:
Какая цель проверки в тестере существования символа в обзоре? Можно просто поставить флаг, что в тестере не обращаемся к этому блоку и не будет принтовать.
 
Gevorg Hakobyan:
А что вы хотите от SymbolSelect ? он вам честно сказал - в тестере, все указанные символы вне MarketWatch ... а в терминале они очевидно есть в обзоре, и в условии возвращается (!=0) и Print`ы обходятся
 
Vitaly Muzichenko:

Нужно задавать размер массива ArrayResize, ну или сразу прописать ему размер shift[28]

С чего вдруг, с какого перепуга?
 
Gevorg Hakobyan:

Пожалуйста помогите понять что не так?

int func(int tm)

   {

   string symbol[] = {"EURUSD","GBPUSD","AUDUSD","NZDUSD","USDCAD","USDCHF","USDJPY",

                  "EURGBP","EURAUD","EURNZD","EURCHF","EURJPY","EURCAD","GBPAUD",

                  "GBPNZD","GBPCHF","GBPJPY","GBPCAD","AUDNZD","AUDCAD","AUDCHF",

                  "AUDJPY","CADCHF","CADJPY","NZDJPY","NZDCAD","NZDCHF","CHFJPY"};

   int m;

   int shift[];

   //---

      for(m=0;m<=27;m++)

      {

      shift[m] = iBars(symbol[m],tm);

      }

   int index = ArrayMinimum(shift,WHOLE_ARRAY,0);

      int all_bars = shift[index];

   return(all_bars);

   } 

А что не так? 

Вообще, нужно время на подгрузку данных.  

 
Gevorg Hakobyan:

Где ошибка? В тестере Алерт печатает все 28 сообщений...

Если в тестере, прогоните какого-нибудь советника по разу на каждом символе.