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

 

Админ здравствуй

Подскажи пожалуйста - КАК работает индикатор VOLUME (встроенный в терминал мт-4) ??????

Я заметил, что он :

- показывает ОБЩИЙ тиковый объём бара,

- и окрашивает палочки гистограммы в разные цвета.... причём цвет палочки НЕ ВСЕГДА соответствует цвету бара (!)

Например - бар БЫЧИЙ (зелёный), а палочка гистограммы окрашивается тов зелёный, то в красный ..... ПОЧЕМУ ТАК ????????

КАК понимать эту "бандурину" (инд.volume) ????????

........... вот на просторах инета (даже НЕ В СПРАВКЕ ТЕРМИНАЛА мт-4) - я вычитал, что этот инд.VOLUME окрашивает палочки гистограммы в разные цвета в зависимости от того, сколько тиков было ВНИЗ,  а сколько ВВЕРХ .......

так же ??????

---------------------------------
Но тогда возникает ПОПУТНЫЙ вопрос = если мы посмотрим на ТИКОВЫЙ график (напр. Евро-Доллар), то мы увидим, что колебания цены Бид и АСК = РАЗНЫЕ ... то Бид чаще колеблется вверх-вниз ... то Аск чаще вверх-вниз .....
САМ ВОПРОС = а учитывает ли инд.VOLUME  отдельные колебания Бид, и Аск ???

====================

Просто в голову приходят разные мысли :

Мысль #1 :

инд.VOLUME считает ТОЛЬКО колебания по Бид, = сколько тиков было ВВЕРХ, а сколько ВНИЗ (?!) , и результат выводит ввиде цвета палочки гистограммы = если было больше вниз, то даже на зелёном баре = палочка гистограммы будет КРАСНОЙ (!).

Мысль #2:

инд.VOLUME считает ОТДЕЛЬНО = сколько было тиков  по Аск, а сколько тиков  было по Бид (!)
Напр. = по Аск было 185 тиков, а по Бид = 245 тиков 
Потом простое сравнение = 245 > 185 , значит палочку гистограммы окрашивать в КРАСНЫЙ (даже на бычем баре)
........... но это = СИЛЬНО ПОХОЖЕ на обычный цвет бара = если Close ниже чем  Open = то бар КРАСНЫЙ (и наоборот) ........ тогда В ЧЁМ-ЖЕ ЛОГИКА инд.VOLUME ????????

Других мыслей я не имею, так как НЕ УМЕЮ ЧИТАТЬ КОД индикатора (!)

.............. АДМИН - ПОМОГИ ПОЖАЛУЙСТА ПОНЯТЬ - ЧТО ЖЕ И КАК СЧИТАЕТ инд.VOLUME (???!!!)

Благодарю )

Справка по MetaTrader 5
Справка по MetaTrader 5
  • www.metatrader5.com
Поддерживаются четыре режима исполнения торговых ордеров: немедленный (Instant Execution), по запросу (Request Execution), по рынку (Market Execution) и биржевой (Exchange). В распоряжении трейдера все виды ордеров, включая рыночные, отложенные и стоп-ордера. Такое разнообразие в выборе ордеров и режимов их исполнения позволяет трейдеру...
 
Igor Makanu:

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

// Передача в DLL массива строк.

#include <TypeToBytes.mqh> // https://www.mql5.com/ru/code/16280

void DLL( const uchar &Bytes[] )
{
  ArrayPrint(Bytes);
  
  const int Size = ArraySize(Bytes);  
  string Str = NULL;
  
  for (int i = 0; i < Size; i++)
    if (Bytes[i])
      Str += CharToString(Bytes[i]);
    else
    {
      Print(Str);
      
      Str = NULL;
    }
}

void OnStart()
{
  const string Str[] = {"123", "4567"};
  
  DLL(_R(Str).Bytes);    
}
 
Vitaliy Kostrubko:

Админ здравствуй

Подскажи пожалуйста - КАК работает индикатор VOLUME (встроенный в терминал мт-4) ??????

Я заметил, что он :

- показывает ОБЩИЙ тиковый объём бара,

- и окрашивает палочки гистограммы в разные цвета.... причём цвет палочки НЕ ВСЕГДА соответствует цвету бара (!)

Например - бар БЫЧИЙ (зелёный), а палочка гистограммы окрашивается тов зелёный, то в красный ..... ПОЧЕМУ ТАК ????????

КАК понимать эту "бандурину" (инд.volume) ????????

........... вот на просторах инета (даже НЕ В СПРАВКЕ ТЕРМИНАЛА мт-4) - я вычитал, что этот инд.VOLUME окрашивает палочки гистограммы в разные цвета в зависимости от того, сколько тиков было ВНИЗ,  а сколько ВВЕРХ .......

так же ??????

---------------------------------
Но тогда возникает ПОПУТНЫЙ вопрос = если мы посмотрим на ТИКОВЫЙ график (напр. Евро-Доллар), то мы увидим, что колебания цены Бид и АСК = РАЗНЫЕ ... то Бид чаще колеблется вверх-вниз ... то Аск чаще вверх-вниз .....
САМ ВОПРОС = а учитывает ли инд.VOLUME  отдельные колебания Бид, и Аск ???

====================

Просто в голову приходят разные мысли :

Мысль #1 :

инд.VOLUME считает ТОЛЬКО колебания по Бид, = сколько тиков было ВВЕРХ, а сколько ВНИЗ (?!) , и результат выводит ввиде цвета палочки гистограммы = если было больше вниз, то даже на зелёном баре = палочка гистограммы будет КРАСНОЙ (!).

Мысль #2:

инд.VOLUME считает ОТДЕЛЬНО = сколько было тиков  по Аск, а сколько тиков  было по Бид (!)
Напр. = по Аск было 185 тиков, а по Бид = 245 тиков 
Потом простое сравнение = 245 > 185 , значит палочку гистограммы окрашивать в КРАСНЫЙ (даже на бычем баре)

Других мыслей я не имею, так как НЕ УМЕЮ ЧИТАТЬ КОД индикатора (!)

.............. АДМИН - ПОМОГИ ПОЖАЛУЙСТА ПОНЯТЬ - ЧТО ЖЕ И КАК СЧИТАЕТ инд.VOLUME (???!!!)

Благодарю )

Это зависит от значения относительно предыдущего бара. Значение больше чем на предыдущем, будет зелёный. Меньше, будет красный.

 
Всем привет!
помогите прикрутить Alert к индикатору! 

это гистограммный стохастик! надо что бы алерт срабатывал когда пересекает линию 0 вверх и низ!

Файлы:
 
fxsaber:

там проблема не много в другом, не хотел но запустил VS2017 - пробовал разными способами, но не получается узнать размер массива строк, как впрочем и размер памяти занимаемый всем массивом, пробовал и через sizeof() и через безопасный Marshal.SizeOf() - все равно будет вылет по критической ошибке при определении размера занимаемой памяти

а так зная кол-во элементов, без проблем можно передать массив строк, вот пример:

// MQL5

#property strict

#import "tstdllstring.dll"
#import
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   string s[10];
   for(int i=0;i<10;i++)
      s[i]="qwerty";
   tst::Replace(s,ArraySize(s));
   for(int i=0;i<10;i++)
      Print(s[i]);
  }
// C# VS2107
using System;

namespace tstdllstring
{
    public static class tst
    {
        public static void Replace(ref string[] s,int arraysize)
        {
            for (int i = 0; i < arraysize; i++)
            {
                string tmp = s[i];
                s[i] = tmp+ "123456789";
            }
        }
    }
}

2019.07.24 19:43:53.867 tst____ (EURUSD,H1) qwerty123456789

2019.07.24 19:43:53.867 tst____ (EURUSD,H1) qwerty123456789

2019.07.24 19:43:53.867 tst____ (EURUSD,H1) qwerty123456789

2019.07.24 19:43:53.867 tst____ (EURUSD,H1) qwerty123456789

2019.07.24 19:43:53.867 tst____ (EURUSD,H1) qwerty123456789

2019.07.24 19:43:53.867 tst____ (EURUSD,H1) qwerty123456789

2019.07.24 19:43:53.867 tst____ (EURUSD,H1) qwerty123456789

2019.07.24 19:43:53.867 tst____ (EURUSD,H1) qwerty123456789

2019.07.24 19:43:53.867 tst____ (EURUSD,H1) qwerty123456789

2019.07.24 19:43:53.867 tst____ (EURUSD,H1) qwerty123456789


ЗЫ: не помню уже, но кажется еще проблема есть если передавать в качестве параметров при вызове ф-ции dll различные типы данный и строки, кажется нельзя несколько массивов строк  и много int ....хотя могу ошибаться - путаю с вызовом неуправляемого кода из под MQL4 - там вообще сложно предположить когда и как работает, все очень чувствительно к любым изменениям... не думал, что скажу... но MQL5 сила! - в "2 клика" интегрируется с C# - люблю простые решения!  ;)

Файлы:
 
      h=FileOpen("NS_w_"+Symbol()+Period()+"."+ext+"",FILE_WRITE|FILE_CSV,";");
                  for(int z6=0;z6<((vhodyClose+vhodyOpen+vhodyHigh+vhodyLow+vhodyVolume)*neiro);z6++)
                  {
                     double o=w[z6];
                     FileWrite(h,o);
                  }
                FileClose(h); //return;

Вот таким образом сохраняю значения массива w[z6] в файл txt

   int handle;
   handle = FileOpen(FileName1, FILE_CSV|FILE_READ,";");
   if(handle>0)
   {  
      //FileReadArray(handle, w, 0, ((vhodyClose+vhodyOpen+vhodyHigh+vhodyLow+vhodyVolume)*neiro));
      FileReadArray(handle, w);
      int size=ArraySize(w);
         //--- распечатаем данные из массива
         for(int ii2=0;ii2<size;ii2++)
           {
           Print("w = ",w[ii2]);
           }
         Print("Total data = ",size);
         //--- закрываем файл   
      FileClose(handle);
   }

Вот таким образом пытаюсь перевести данные из  текстового файла в массив w[], но другим советником. А получаю нули. Помогите переделать код, нужно получить правильные данные из файла.

 
Alexey Viktorov:

Это зависит от значения относительно предыдущего бара. Значение больше чем на предыдущем, будет зелёный. Меньше, будет красный.

Оказывается - всё вот так совсем уж ПРОСТО ??!! 

А я уж думал - там используется хоть -какая-то "высшая математика" ! )????! :)

Понял, благодарю )

 
Vitaliy Kostrubko:

Оказывается - всё вот так совсем уж ПРОСТО ??!! 

А я уж думал - там используется хоть -какая-то "высшая математика" ! )????! :)

Понял, благодарю )

Десять, если не побольше, лет назад я задавал аналогичный вопрос. Только по индикатору АО.)))

А что-то аналогичное из ваших предположений тут
TicksVolume
TicksVolume
  • www.mql5.com
Индикатор показывает изменение цены в пунктах и сколько раз за период произошло изменение в течение выбранного периода, к сожалению только от момента запуска до момента остановки. Входящих параметров не имеет. Возможно использование для определения скорости и/или ускорения изменения цены. На скрине видно, что Volume равно 44, индикатор...
 

Кто-то работал с цветами в таком формате?

C'128,128,128'
C'0x00,0x00,0xFF'


Первое C'128,128,128' я ещё понял - это интенсивность компонентов цвета. А что во втором варианте буквы делают? Я это взял из справки едитора MQL5 в описании типа color


Также есть ли возможность в MQL5 сделать линию индикатора очень много-разноцветной? Например линию RSI, на цвет которой будет влиять и значение RSI, то есть может ли значение RSI влиять на интенсивность одного из компонентов цвета?   ...надеюсь меня поняли))

 
Alexandr Sokolov:

Кто-то работал с цветами в таком формате?


Первое C'128,128,128' я ещё понял - это интенсивность компонентов цвета. А что во втором варианте буквы делают? Я это взял из справки едитора MQL5 в описании типа color


Также есть ли возможность в MQL5 сделать линию индикатора очень много-разноцветной? Например линию RSI, на цвет которой будет влиять и значение RSI, то есть может ли значение RSI влиять на интенсивность одного из компонентов цвета?   ...надеюсь меня поняли))

1. Второй пример - шестнадцатеричное представление чисел.
2. Можно
Причина обращения: