Помогите с MQL4

 

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

И случайно не подскажите, есть ли шаблон что бы формулку подставить и уже готов индикатор?

Ну например есть такая простенькая формула.......мммм.....

х = SUM (High[i] - Open[i])/ SUM(Close[i] - Low[i])

Формула не особа важна, там используються только цены закрытия/открытия и/или цены минимума/максимума за определённый период (i).

Но я уже устал искать правильное решение куда её вставить что б всё адекватно показывалось :(

Заранеее спасибо. И пжлст ответтье хоть на первый вопрос.

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


MaxPriceToday = iHigh(Symbol(), PERIOD_D1, 0);
 
Если лень учить язык, то самый простой способ --> открыть какой-нибудь индикатор,который рисует как надо,
но не то что надо, и заменить формулу на свою.
И шаблон есть, и место для формулы нашлось :)
 

Спасибо!

Если кто ответит и на 2-й вопрос, то ваще будет выше крыши :)

 
4ebur:
Если лень учить язык, то самый простой способ --> открыть какой-нибудь индикатор,который рисует как надо,
но не то что надо, и заменить формулу на свою.
И шаблон есть, и место для формулы нашлось :)


Да язык кое-как осиливаю (видимо недостаточно).

Но в том всё и беда, что я так уже делал ( открывал индикатор, пытался впихивать). Но все индикаторы замудрёные , даже самые простые. А мне хоцца суть понять в каком месте моя формула отображаеться. Вот и задался целью сделать индикатор как можно проще, что б понять что к чему. Потому и формула такая глупая..... что первое в голову пришло так сказать...... а всё одно что то не так :(

 
Если кто ответит и на 2-й вопрос, то ваще будет выше крыши :)
'Особенности написания Пользовательских Индикаторов' - читаеш, смотриш - все поймеш и сделаеш. А иначе так - быстренко нельзя - иначе сделали бы.
 

В цикл надо вставлять.

 
Hell:

Ну например есть такая простенькая формула.......мммм.....

х = SUM (High[i] - Open[i])/ SUM(Close[i] - Low[i])

Конкретно для этого случая
x=(Средняя(High,period)-Средняя(open,period))/(Средняя(Close,period)-Средняя(Low, period))
 

Вот к чему привели меня мои попытки.

Вот такой код:

#property copyright "Hell"
#property link      ""
 
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Blue
#property indicator_minimum -5
#property indicator_maximum 5
//---- input parameters
extern int       H_period=10;
//---- buffers
double ExtMapBuffer1[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,ExtMapBuffer1);
//----
   return(0);
  }
 
int start()
  {
   int    counted_bars=IndicatorCounted();
   double ind;
   int i, up_sh, dn_sh, up = 1, dn = 1;
//----
//==========================================================================
for (i=0; i < H_period; i++)
   {
    up_sh = (High[i] - Open[i])/Point;
    dn_sh = (Close[i] - Low[i])/Point;
    up = up + up_sh;
    dn = dn + dn_sh;
   
//--------------------------------------------------------------------------
if (up > dn) ind = up/dn - 1;
if (dn < up) ind = (dn/up - 1)*(-1);
if (up == dn) ind =0;  
//==========================================================================
ExtMapBuffer1[i] = ind;
    }
//----
   return(0);
  }
//+------------------------------------------------------------------+

Он работает, однако это совсем не то что я хотел :(

Во первых график отображаеться только на последних 10 барах. Это я думаю связано с переменной "H_period". Но как сделать что бы он отображался на всей истории?

А главное весь график перересовываеться при каждом новом тике. Это меня вообще ставит в тупик :(. Вот иллистрации .

Вот собственно из-за этого я поднял тему. Так как совершенно не пойму как работает код идикаторов :(

И ещё вопрос уже по эксперту.

Есть такая строка

tik_buy = OrderSend (Symbol(), OP_BUYSTOP, limitbuy*Point, 3, 0, 0, "op", 12345, D'14:00:00' , Green);


Однако при компиляции выдаеться ошибка:

'14:00:00' - date literal string is incomplete

Что ему не так?

Помогите плиз.

Заранее спасибо!

 
Hell:

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

И случайно не подскажите, есть ли шаблон что бы формулку подставить и уже готов индикатор?

Ну например есть такая простенькая формула.......мммм.....

х = SUM (High[i] - Open[i])/ SUM(Close[i] - Low[i])

Формула не особа важна, там используються только цены закрытия/открытия и/или цены минимума/максимума за определённый период (i).

Но я уже устал искать правильное решение куда её вставить что б всё адекватно показывалось :(

Заранеее спасибо. И пжлст ответтье хоть на первый вопрос.


чтобы полкчить текущий хай за день достаточно ArrayCopySeries( double&array[], int series_index, string symbol=NULL, int timeframe=0) (остальное в хелпе МТ) и потом array[0]...
 
Однако при компиляции выдаеться ошибка:

'14:00:00' - date literal string is incomplete

Что ему не так?

это предупреждение, что дата указана не полностью (день, месяц, год, часы, минуты, секунды). Строка '14:00:00', по идее, при компиляции заменится на 'дата компиляции 14:00:00'
НО! Как можно использовать время истечения, не указывая дату?

Надо сделать привязку к CurTime()