Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Опубликуй программу в Cobe Base. Миллионы трейдеров ее увидят!
Александр
13
Александр 2011.06.27 22:40 

Уважаемые эксперты, я новичок. Подскажите плиз как мне вытащить значение индикатора из истории например больше года назад? В ручную менять значения в настройках не помогает почему то. Например такой код:

int Handle;                         // Файловый описатель
int Q_Symb;
double ind1;
double ind2;
Handle=FileOpen("data.csv",FILE_CSV|FILE_WRITE,";");// Открытие файла int FileOpen(string filename, int mode, int delimiter=';')
         
if(Handle<0)                        // Неудача при открытии файла
     {
      
         Alert("Ошибка при открытии файла ","data.csv");//..такое сообщ
     
      return;                          // Выход из start()      
     }


Q_Symb=FileWrite(Handle,"Time","Тик","Price","Значение Индикатора 1", "Значение Индикатора 2");

int n=2700;
int i;

for (i=n; i>=0; i--)
{
ind1=iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN,i);
ind2=iCCI(Symbol(),0,12,PRICE_TYPICAL,i);
Q_Symb=FileWrite(Handle,TimeToStr (iTime(NULL, 0, i)),n-i,iClose(NULL, 0, i),ind1, ind2);
}


FileClose(Handle);

в файле получаем вот что:

1970.01.01 00:00;94;0;0;0
1970.01.01 00:00;95;0;0;0
1970.01.01 00:00;96;0;0;0
1970.01.01 00:00;97;0;0;0
1970.01.01 00:00;98;0;0;0
1970.01.01 00:00;99;0;0;0
1970.01.01 00:00;100;0;0;0
1970.01.01 00:00;101;0;0;0
1970.01.01 00:00;102;0;0;0
2011.01.26 08:00;103;1.36989;0;0
2011.01.26 09:00;104;1.37143;0;0
2011.01.26 10:00;105;1.36925;0;0
2011.01.26 11:00;106;1.36923;0;0
2011.01.26 12:00;107;1.36901;0;0
2011.01.26 13:00;108;1.36802;0;0
2011.01.26 14:00;109;1.36665;0;0
2011.01.26 15:00;110;1.36919;0;0
2011.01.26 16:00;111;1.36867;52.85132383;0
2011.01.26 17:00;112;1.36826;67.20290607;0
2011.01.26 18:00;113;1.36722;59.44775311;0
2011.01.26 19:00;114;1.36827;59.25122084;-63.27531493
2011.01.26 20:00;115;1.36895;62.27201668;32.21083455

куда девается 2010 год? я так полагаю его нет из-за того что на графике не может больше 250000 баров. в ручную смена этого значения результатов не даёт. как это можно обойти?

пробовал через тесты истории - там тоже какая то мистика. код такой:

static bool init=false;

static int Handle;                         // Файловый описатель 
static int n=0;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
FileClose(Handle);  

//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
if (init==false)
{


int Q_Symb;
double ind1;
double ind2;

Handle=FileOpen("data.csv",FILE_CSV|FILE_WRITE,";");// Открытие файла int FileOpen(string filename, int mode, int delimiter=';')
         
if(Handle<0)                        // Неудача при открытии файла
     {
      
         Alert("Ошибка при открытии файла ","data.csv");//..такое сообщ
     
      return;                          // Выход из start()      
     }


Q_Symb=FileWrite(Handle,"Time","Тик","Price","Значение Индикатора 1", "Значение Индикатора 2");


init=true;
}
string str;
str=TimeToStr (iTime(NULL, 0, 0));
Alert (n, " ", str);

ind1=iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN,0);
ind2=iCCI(Symbol(),0,12,PRICE_TYPICAL,0);
Q_Symb=FileWrite(Handle,TimeToStr (iTime(NULL, 0, 0)),n,iClose(NULL, 0, 0),ind1, ind2);   
Alert (Q_Symb);   
   
//----
   return(0);
  }
//+------------------------------------------------------------------+

ставим в тестере визуализацию и начало например 2010.11.01. алерты алертятся нормально, с указанной даты, всё рисуется, но открываем data.csv, а там опять нет 2010 года

Time;Тик;Price;Значение Индикатора 1;Значение Индикатора 2
2011.02.01 12:00;0;1.37594;77.06919946;128.377178
2011.02.01 12:00;0;1.37595;77.11442786;128.61630925
2011.02.01 12:00;0;1.37594;77.06919946;128.49677221 и т.д.

Таймфрейм везде H1

Подскажите плиз как выдрать значения индикаторов из истории? заранее спасибо!

Виталий
340
Виталий 2011.06.28 09:23  
Я так полагаю, что вам надо проверить сколько истории Хистори центре. Нажмите f2 и посмортите сколько там истории.
Александр
13
Александр 2011.06.28 09:45  
vitali_yv:
Я так полагаю, что вам надо проверить сколько истории Хистори центре. Нажмите f2 и посмортите сколько там истории.



в первом случае я с вами согласен, всё сходится - архив котировок заканчивается 2011.01.26. Это можно как то изменить? чтобы там было года 2 хотя бы?

что происходит по второму моему варианту, т.е. загрузке при тестировании на исторических данных - для меня остаётся загадкой

Виталий
340
Виталий 2011.06.28 09:57  
По второму варианту посмотрите в журнале тестера, там наверняка будут ошибки. По первому пункту в центре истории есть кнопочка скачать или возьмите историю у своего брокера.
Александр
13
Александр 2011.06.28 10:25  
vitali_yv:
По второму варианту посмотрите в журнале тестера, там наверняка будут ошибки. По первому пункту в центре истории есть кнопочка скачать или возьмите историю у своего брокера.



не закачивается больше. нажимаешь - пишет нет новых данных. Проблема в брокере?

стал разбираться со вторым вариантом, сори, не правильно написал в начале, алерты тоже почему тока с первого февраля, хотя начальная дата стоит раньше, ошибок нет. ща буду разбираться почему только с 1 февраля тестится

Виталий
340
Виталий 2011.06.28 10:54  
Попробуйте поиск - в кодебазе были скрипты для загрузки истории через график.
Александр
13
Александр 2011.06.28 13:25  
и там и там проблема действительно была в котировках. Просто мой ДЦ выдаёт очень маленький объём их истории, из-за этого все глюки. Всем спасибо, тему можно закрывать.
/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий