[АРХИВ]Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 5. - страница 315

 
dekker:

Други!

возник глобальный вопрос

можно ли каким либо образом получить в терминале поток тиков в выходные, что бы можно было песать и отлаживать советника спокойно?

ибо нормально писать в будни оченб сложно, работа/торги и т.д.

один тик запускающий советника не подходит, нужен именно поток тиков в определенном диапазоне

 есть вообще такое в природе?

 сервера мт4 эмулирующие поток котировок в выходные ?

 

есть брокеры, работающие в выходные, ищите в гугле
 
dekker:

Други!

возник глобальный вопрос

можно ли каким либо образом получить в терминале поток тиков в выходные, что бы можно было песать и отлаживать советника спокойно?

ибо нормально писать в будни оченб сложно, работа/торги и т.д.

один тик запускающий советника не подходит, нужен именно поток тиков в определенном диапазоне

 есть вообще такое в природе?

 сервера мт4 эмулирующие поток котировок в выходные ?

 

Вешаете скрипт - 
#import "user32.dll"
   int PostMessageA(int hWnd, int Msg, int wParam, string lParam);
   int RegisterWindowMessageA(string lpString);
#import

int start(){
   bool asd;
   while(!IsStopped()){
      PostMessageA (WindowHandle (Symbol(), Period()), WM_COMMAND, 33324, 0);
      PostMessageA (WindowHandle (Symbol(), 0), RegisterWindowMessageA ("MetaTrader4_Internal_Message"), 2, 1);
      Sleep(5000);
      if(asd){Comment("A");asd=false;}else{Comment("V");asd=true;}
   }
   return(0);
}
эмуляция тиков. Правда не знаю, то что вам нужно или нет. Есть ещё таймер, толи с kernel32, толи с user32, поищите на форуме.
 

Всем здравствуйте! Будте добры помогите новичку.

 

Вопрос в следующем… к примеру у меня есть индикатор и он строиться в подокне #property indicator_separate_window, в индикаторе заложено два “буфера” тоесть получается две линии… вопрос как сделать так чтобы при пересечении линий на индикаторе, в ГЛАВНОМ окне (не в окне самого индикатора, а в окне графика цены) выводилась стрелка или линия???

 

К примеру взять обычный RSI, как при пересечении линии с нулем сделать вывод стрелок на графике цен…

 
clubsmi:

Всем здравствуйте! Будте добры помогите новичку.

 

Вопрос в следующем… к примеру у меня есть индикатор и он строиться в подокне #property indicator_separate_window, в индикаторе заложено два “буфера” тоесть получается две линии… вопрос как сделать так чтобы при пересечении линий на индикаторе, в ГЛАВНОМ окне (не в окне самого индикатора, а в окне графика цены) выводилась стрелка или линия???

 

К примеру взять обычный RSI, как при пересечении линии с нулем сделать вывод стрелок на графике цен…


Другим индикатором на #property indicator_chart_window через iCustom, а там на DRAW_ARROW.
 

Не могу понять выражение:

if (counted_bars==0 && downloadhistory)

 если количество посчитанных баров =0 и downloadhistory? downloadhistory - глобальная логическая переменная изначально false. Какое условие она в себе несет? Я бы понял если бы условие было таким:

 if (counted_bars==0 && downloadhistory == false)

Поясните начинающему, пожалуйста! 

 
dekker:

Други!

возник глобальный вопрос

можно ли каким либо образом получить в терминале поток тиков в выходные, что бы можно было песать и отлаживать советника спокойно?

ибо нормально писать в будни оченб сложно, работа/торги и т.д.

один тик запускающий советника не подходит, нужен именно поток тиков в определенном диапазоне

 есть вообще такое в природе?

 сервера мт4 эмулирующие поток котировок в выходные ?

Библиотека.

 Раздел "4.7. Функции для управления обновлением графика".

 

И еще:)

В приложении к МТ4 в пользовательских индикаторах есть ZigZag. У него есть параметры:

//---- indicator parameters
extern int ExtDepth=12;
extern int ExtDeviation=5;
extern int ExtBackstep=3;

 А что они обозначают?

 

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

На секундах:

#import "SharedMemoryMT4.dll"
        bool MemoryWriteInt(int nArea, string sPrefixArea, int nIndex, string sName, int nStartByte, int nValue);
        int MemoryCreateProjection(int nArea, string sPrefixArea, int hFileUser, int nIndex, string sName, int nSize);
        bool MemoryResize(int nArea, string sPrefixArea, int nIndex, string sName, int nSize);
#import
int Σ, Δt, j;
int start(){
   GlobalVariableSet("nAddress", MemoryCreateProjection(1, "", NULL, -1, "ind", 4));
   for(int i=1; i>Bars; i++){
      Δt=Time[i-1]-Time[i];
      Σ=Σ+Δt;
      MemoryResize(1, "", -1, "ind", 4*Σ);//=ArrayResize(ind, Σ);
      for(; j<Σ; j++) MemoryWriteInt(1, "", -1, "ind", j*4, i);
   }
   /*
   Δt[0]=1 => addr(j*4)=0*4=0, var(i)=0x0001.//out: {0x0001}
   Δt[0]=2 => addr(j*4)=0*4=0, var(i)=0x0001,
              addr(j*4)=1*4=4, var(i)=0x0001.//out: {0x0001, 0x0001}
   Δt[0]=1, Δt[1]=2 => addr(j*4)=1*4=4, var(i)=0x0002,
                       addr(j*4)=2*4=8, var(i)=0x0002.//out: {0x0001, 0x0002, 0x0002}
   Δt[0]=2, Δt[1]=2 => addr(j*4)=2*4=8, var(i)=0x0002,
                       addr(j*4)=3*4=12, var(i)=0x0002.//out: {0x0001, 0x0001, 0x0002, 0x0002}
   */
   return(0);
  }

 Второй скрипт, принтующий массив, вешается на любую уже пару:

#import "SharedMemoryMT4.dll"
        int MemoryReadInt(int nArea, string sPrefixArea, int nIndex, string sName, int nStartByte);
        bool MemoryUnProjection(int nArea, string sPrefixArea, int nIndex, string sName, int pcAddress);
        int MemorySize(int nArea, string sPrefixArea, int nIndex, string sName);
#import

int start(){
   for(int i=0; i<MemorySize(1, "", -1, "ind"); i=i+4) Print(MemoryReadInt(1, "", -1, "ind", 4*i));
   MemoryUnProjection(1, "", -1, "ind", GlobalVariableGet("nAddress"));
   return(0);
  }

 Справедливости ради надо сказать, что я поставил

{MemoryWriteInt(1, "", -1, "ind", j*4, i); Print(j, " - ", i);}

 во второй for. Смотрю лог. Хоть какие-то значения пишет по адресам, точнее смещениям относительно nAddress: 0-3FF, 7FFF-83FF, BFFF-C3FF. По всем остальным диапазонам - критическая ошибка в MemoryWriteInt. Файл истории с секундными свечами прикрепляю.

Файлы:
sec_eurusd1.zip  18 kb
 
gyfto:

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

На секундах:

 Второй скрипт, принтующий массив, вешается на любую уже пару:

 Справедливости ради надо сказать, что я поставил

 во второй for. Смотрю лог. Хоть какие-то значения пишет по адресам, точнее смещениям относительно nAddress: 0-3FF, 7FFF-83FF, BFFF-C3FF. По всем остальным диапазонам - критическая ошибка в MemoryWriteInt. Файл истории с секундными свечами прикрепляю.

Тестовый скрипт из комплекта работает?

Так часто менять размер выделяемой памяти не требуется. Это тормоз. Память выделяется дискретно по 4 Кб. Округляется в большую сторону. Это особенность маппинга.

Сделайте простой тестовый проект, чтобы проверить можно было. То, что Вы публикуете проверить невозможно. Очень много синтаксических ошибок. 

 
GaNDarM:

Не могу понять выражение:

 если количество посчитанных баров =0 и downloadhistory? downloadhistory - глобальная логическая переменная изначально false. Какое условие она в себе несет? Я бы понял если бы условие было таким:

 if (counted_bars==0 && downloadhistory == false)

Поясните начинающему, пожалуйста! 


Сейчас попробую. Когда мы пишем

bool bVar=true;
if(bVar) какие-то_действия
//------------------
bool bVar=false;
if(!bVar) какие-то_действия
//------------------
if(true) какие-то_действия

 то во всех случаях эти какие-то действия будут всегда выполняться, потому что первые две аналогичны третьей (проверьте, упростите выражение). То есть если это логические переменные, нам не надо ставить ==true, ==false, потому что они уже сами по себе равны true или false.

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