Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 2502

 
В МТ4 включено смещение графика, его можно с легкостью увеличить. 
Вопрос как его уменьшить ниже заданного предела?
Т.е. там есть какое-то ограничение, ниже которого сместить вправо не получается.

 
 if ((EMA50[i] < EMA50[i+ 1 ] && EMA50[i+ 1 ] < EMA50[i+ 2 ] && EMA50[i+ 2 ] < EMA50[i+ 3 ] && EMA50[i+ 3 ] < EMA50[i+ 4 ])
      &&(EMA90[i] < EMA90[i+ 1 ] && EMA90[i+ 1 ] < EMA90[i+ 2 ] && EMA90[i+ 2 ] < EMA90[i+ 3 ] && && EMA90[i+ 3 ] < EMA90[i+ 4 ])
       &&(EMA90[i] > EMA50[i] && EMA90[i+ 1 ] > EMA50[i+ 1 ] && EMA90[i+ 2 ] > EMA50[i+ 2 ] && EMA90[i+ 3 ] > EMA50[i+ 3 ] && EMA90[i+ 4 ] > EMA50[i+ 4 ]))

Может кто-нибудь, пожалуйста, помогите мне.

Индикаторы EMA50 и EMA90 падают в течение длительного периода времени. Как вы можете запрограммировать это более разумно и добавить наклон EMA?


 
Alexander Piechotta # :

Кто может помочь мне, если вы не против?

Индикаторы EMA50 и EMA90 уже давно находятся на низком уровне. Как вы можете запрограммировать их более интеллектуально и добавить пеньюар EMA?


Alexander Piechotta #:

Помогите мне, пожалуйста, кто-нибудь.

Индикаторы EMA50 и EMA90 падают на протяжении длительного периода времени. Как это можно запрограммировать более грамотно и добавить наклон EMA?


MACD будет иметь близкий результат, не развивая ничего

 

Всем привет! 

Ребята! Кто со структурами работает ...Хэлп!

Например, дана следующая структура: 

struct Prices
  {
   double            Price_Low,  Prices_Close;
   datetime          Time_Low, Time_Close;
  };

Prices MassPrices [];

Предположим, что значения цены и времени в переменных структуры, массива  уже  есть , записаны...

Как мне обратиться к этим данным через аргумент функции...?

Например, Нужно вывести все эти значения на печать

void OnTimer()
  {
PrintPrices (????);  
Здесь что писать? Например, нужно обратиться к ценам Low...

PrintPrices (????);  
А здесь нужно обратиться к ценам Close в структуре (в структурном массиве)... 
Как обратиться к записанным данным в структурном массиве?
   return;
  }

void PrintPrices (const public & UniversalPrises[])

{
for(i=1; i<=QuantBars; i++)
{
Print("На баре № -   ", i, "цена Low-  ", UniversalPrises[i] );
}
return;
}
 
AlexProf #:

Как мне обратиться к этим данным через аргумент функции...?

Например, Нужно вывести все эти значения на печать

В первом приближении как-то так:

enum ENUM_PRICE_TYPE
  {
   E_PRICE_LOW,
   E_PRICE_CLOSE
  };

struct Prices
  {
   double            Price_Low,  Price_Close;
   datetime          Time_Low, Time_Close;
  };

void PrintPrices (const Prices & UniversalPrises[], const ENUM_PRICE_TYPE pr_type)
  {
   int i;
   for(i=1; i<=QuantBars; i++)
     {
      switch(pr_type)
        {
         case  E_PRICE_LOW:
            Print("На баре № -   ", i, "цена Low-  ", UniversalPrises[i].Price_Low);
           break;
         case  E_PRICE_CLOSE:
            Print("На баре № -   ", i, "цена Close-  ", UniversalPrises[i].Price_Close);
           break;
         default:
           break;
        }
     }
   return;
  }

Можно и без enum, через int, но так чуть красивее и понятнее.

 
Подскажите, пожалуйста, как можно вызвать OnCalculate из OnTimer()?
 
Tretyakov Rostyslav #:
Подскажите, пожалуйста, как можно вызвать OnCalculate из OnTimer()?

из старого, но рабочего:

void OnTimer()
{
   if (needRecalc) {
....
      int total=
..... 
      datetime time[];
      double open[],high[],low[],close[];      
      long volume[],realVolume[];
      int spread[];
      if (CopyTime(_Symbol,PERIOD_CURRENT,0,total,time)!=total ||
         CopyOpen(_Symbol,PERIOD_CURRENT,0,total,open)!=total ||
         CopyHigh(_Symbol,PERIOD_CURRENT,0,total,high)!=total ||
         CopyLow(_Symbol,PERIOD_CURRENT,0,total,low)!=total ||
         CopyClose(_Symbol,PERIOD_CURRENT,0,total,close)!=total) {
         return;
      }
      needRecalc=false;
      OnCalculate(total,0,time,open,high,low,close,volume,realVolume,spread);
   }
}

то есть можно скопировать тайм-серии в массивы и вызвать OnCalculate

но лучше и из OnTimer и из OnCalculate вызывать третью функцию MyCalc, собственный рассчётный метод.

 

Немного не туда возможно, админы если что переместят.

Удалил из другой ветки, здесь думаю правильнее разместить.


Несколько месяцев у меня счет был в отключенных. Оповещение об удалении не приходило. Всё ок было. Сегодня захотел восстановить - счета нет. Сообщений об удалении небыло.


Пытаюсь обратиться в ТП. Жму на кнопку, чтобы попасть на форму обратной связи. Реакции никакой. Как будто она не работает. Пробовал с обычного компа и с ВПС.


Кто знает в чем дело, в первую очередь с кнопкой обратной связи и как теперь в  ТП писать, подскажите пожалуйста.

И про сигнал, почему удалили из раздела отключенные и даже "во все сигналы" его нет, тоже интересно узнать почему.

 
JRandomTrader #:

В первом приближении как-то так:

Можно и без enum, через int, но так чуть красивее и понятнее.

Только я не хочу каждый раз в принте писать цену Low или Close...У меня так получается два принта Print

Print идет один, одной строчкой, а цену (Low или Close) я назначаю когда инициализирую всю функцию PrintPrice в On Timer 

Без структуры это выглядело бы  так:

void On Timer ()

{

PrintPrice(Low);

PrintPrice(Close);

return;

}



А к структуре не знаю как обратиться...

 
Maxim Kuznetsov #:

из старого, но рабочего:

то есть можно скопировать тайм-серии в массивы и вызвать OnCalculate

но лучше и из OnTimer и из OnCalculate вызывать третью функцию MyCalc, собственный рассчётный метод.

Спасибо. Суть понял.