Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 765

 
На одном ноутбуке стоИт два терминала МТ4: один с 4-мя знаками после запятой, второй - с 5-тью знаками. За одно и то же время трафик на первом 105/0 kb, на втором  3450/0 kb. Первый грухит процессор на 6%, второй - на 39%. В чем проблема? Это вообще норма?
[Deleted]  
видимо мне здесь ни кто не поможет! все только тыкают на учебник. это равносильно тому что ученик спрашивает учителя чтоб помог изучить тему которую он не понимает а тот ему говорит смотри в книгу. возникает вопрос зачем учитель также этот форум и эта тема!!!
 
logut:
видимо мне здесь ни кто не поможет! все только тыкают на учебник. это равносильно тому что ученик спрашивает учителя чтоб помог изучить тему которую он не понимает а тот ему говорит смотри в книгу. возникает вопрос зачем учитель также этот форум и эта тема!!!

Ветка очень хорошая и полезная. Здесь много добрых людей. Повторите мне Ваш вопрос.

 
ikatsko:
На одном ноутбуке стоИт два терминала МТ4: один с 4-мя знаками после запятой, второй - с 5-тью знаками. За одно и то же время трафик на первом 105/0 kb, на втором  3450/0 kb. Первый грухит процессор на 6%, второй - на 39%. В чем проблема? Это вообще норма?
За шесть лет можно было понять что на котировки с лишним знаком нужно больше ресурсов. Если конечно они чаще приходят и меньше различаются.
 
Vinin:
За шесть лет можно было понять что на котировки с лишним знаком нужно больше ресурсов. Если конечно они чаще приходят и меньше различаются.

Спасибо. Я Вас тоже давно знаю. 

Про трафик, конечно, объяснение принимается и "за шесть лет", в принципе, я это понял.

А что можно сказать о загрузке процессора? Не уж то общение терминала с инетом (с целью обеспечения инфой/трафиком/котировками) так сильно влияют на загрузку процессора терминалом? (напомню, 4-х значный грузит на 6%, 5-ти значный на 39%. Заранее уточню, ноут Samsung X15, процессор 1400 МГц) 

[Deleted]  
ikatsko:

Ветка очень хорошая и полезная. Здесь много добрых людей. Повторите мне Ваш вопрос.

 

мне input double lots = 0.01;
input int takeprofit = 100;
input int stoploss = 100;
 extern int magic = 123;
//----------------+
int start()
{


 


//---------------+


int ticket=OrderSend(Symbol(),OP_BUYLIMIT,lots,Ask,3,Ask +stoploss* Point, Ask + takeprofit* Point,NULL,123,120,CLR_NONE);






return(0);

нужна подсказка как написать советник с отложкой я в этом деле новичок месяц голову ломаю есть набросок
 
ikatsko:

Спасибо. Я Вас тоже давно знаю. 

Про трафик, конечно, объяснение принимается и "за шесть лет", в принципе, я это понял.

А что можно сказать о загрузке процессора? Не уж то общение терминала с инетом (с целью обеспечения инфой/трафиком/котировками) так сильно влияют на загрузку процессора терминалом? (напомню, 4-х значный грузит на 6%, 5-ти значный на 39%. Заранее уточню, ноут Samsung X15, процессор 1400 МГц) 

Похоже просто индикаторы кушают ресурсы. Расчетов стало больше. Хотя - ну не нужны они особо, но требуют
 
logut:
мне input double lots = 0.01;
input int takeprofit = 100;
input int stoploss = 100;
 extern int magic = 123;
//----------------+
int start()
{


 


//---------------+


int ticket=OrderSend(Symbol(),OP_BUYLIMIT,lots,Ask,3,Ask +stoploss* Point, Ask + takeprofit* Point,NULL,123,120,CLR_NONE);






return(0);

нужна подсказка как написать советник с отложкой я в этом деле новичок месяц голову ломаю есть набросок

Вам давали наводку на документацию.

Отложка срабатывает при достижении какого-то уровня (отклонения от текущей цены). А Вы пытаетесь использовать текущую.  Поищите в поиске гридеры или сеточники

 

Здравствуйте, вопрос такой: всегда ли параметр prev_calculated в индикаторах передаётся правильно?

Вот простейший пример: (здесь Extern Int BarsAtOnce = 3)

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   //bool success;
   int tocalc; // сколько должно быть посчитано
   int i;
//---

   if (ArraySetAsSeries(time,true) & ArraySetAsSeries(open,true) & ArraySetAsSeries(high,true) & ArraySetAsSeries(low,true) & ArraySetAsSeries(close,true))
   {
      tocalc=prev_calculated+BarsAtOnce;
      if (tocalc>rates_total) tocalc=rates_total;
      
      Print("rates_total "+IntegerToString(rates_total)+" prev_calculated "+IntegerToString(prev_calculated)+" tocalc "+IntegerToString(tocalc));
      
      for (i=prev_calculated; i<tocalc; i++)
      {
         Label1Buffer[i]=open[i];
      }
      return(tocalc);
   }
   else
   {
      Alert("Fail");
      return(0);
   }
  }

 Результат:

2014.11.06 20:35:07.984 Analysis EURUSD,M1: initialized
2014.11.06 20:35:08.000 Analysis EURUSD,M1: rates_total 65013 prev_calculated 0 tocalc 3
2014.11.06 20:35:08.015 Analysis EURUSD,M1: rates_total 65013 prev_calculated 65013 tocalc 65013

Т.е. управляющая система считает, что буфер был посчитан полностью?

Необходимо отметить связь между значением, возвращаемым функцией OnCalculate() и вторым входным параметром prev_calculated. Параметр prev_calculated при вызове функции содержит значение, которое вернула функция OnCalculate() на предыдущем вызове. Это позволяет реализовать экономные алгоритмы расчета пользовательского индикатора с тем, чтобы избежать повторных расчетов для тех баров, которые не изменились с предыдущего запуска этой функции.

Для этого обычно достаточно вернуть значение параметра rates_total, которое содержит количество баров при текущем вызове функции.

 Задача - сделать "постепенный" расчёт индикатора, чтобы не тормозить приложение в момент его запуска.

 
Awwl:

Здравствуйте, вопрос такой: всегда ли параметр prev_calculated в индикаторах передаётся правильно?

Вот простейший пример: (здесь Extern Int BarsAtOnce = 3)

 Результат:

Т.е. управляющая система считает, что буфер был посчитан полностью?

 Задача - сделать "постепенный" расчёт индикатора, чтобы не тормозить приложение в момент его запуска.

 

Вы уверены что ArraySetAsSeries() возвращает то что Вам надо. Или думаете то что нужно. Может до расчета и дело не доходит