object_text помогает начинающему
Страница 1 из 812 12 ПоследняяПоследняя
Results 1 to 10 of 12

Thread: object_text помогает начинающему

  1. #1
    Будет ли кто-то очень любезно пролить свет на это.
    Следующее помещает текст Opn: на экране в текущей строке в MT4

    Но то, что мне нужно, это текст, который каждый день будет в 9-часовом баре.

    Я не могу найти, что делать вместо CurrentTime, чтобы достичь этого.
    Или, может быть, есть лучший метод.
    Заранее благодарю за любую помощь.

    datetime CurrentTime;
    {
    ObjectCreate (AtOpen, OBJ_TEXT, 0,0,0);
    ObjectMove (AtOpen, 0, CurrentTime, High [1]);
    ObjectSetText (AtOpen, Opn:, 10, Calibri, clrWhite);
    }

  2. #2

    Quote Originally Posted by ;
    Будет ли кто-то очень любезно пролить свет на это. Следующее помещает текст Opn: на экране в текущем столбце в MT4. Но мне нужно, чтобы текст был на панели 9am каждый день. Я не могу найти, что делать вместо CurrentTime, чтобы достичь этого. Или, может быть, есть лучший метод. Заранее благодарю за любую помощь. datetime CurrentTime; {ObjectCreate (AtOpen, OBJ_TEXT, 0,0,0); ObjectMove (AtOpen, 0, CurrentTime, High [1]); ObjectSetText (AtOpen, Opn:, 10, Calibri, clrWhite); }
    Каждый объект диаграммы должен иметь уникальное имя. Вот пример скрипта, который вы можете запустить в отладчике, чтобы пройти через то, что происходит. Примечание. Я использую класс библиотеки std
    https://www.mql5.com/en/docs/standar...hartobjecttextчтобы упростить его. Введенный код #property strict #include lt; ChartObjects \ ChartObjectsTxtControls.mqhgt; void OnStart () {int object_count = 0; for (int i = Bars-1; igt; = 0; i--) {if (TimeHour (Time # 91; i # 93 == 9 TimeMinute (Time # 91; i # 93 == 0) {string object_name = __objectname __ string ( object_count); Текст CChartObjectText; if (text.Create (0, object_name, 0, Time # 91; i # 93; High # 91; i # 93; 10 * _Point)) {text.Anchor (ANCHOR_LEFT); text.Angle (90); text.Description (lt; ----- OPEN ----- lt; lt; text.Color (clrDarkOrange); text.Font (Consolas); text.FontSize (9); text.Detach (); }}}}

  3. #3
    Большое спасибо Ничолишен. Я буду работать через сценарий, как вы предлагаете. Ваша помощь очень высоко ценится.

  4. #4

    Quote Originally Posted by ;
    Большое спасибо Ничолишен. Я буду работать через сценарий, как вы предлагаете. Ваша помощь очень высоко ценится.
    Привет, черт, вы достигли прогресса? Изучение кода стоит усилий. Nicholishen, большое спасибо за примеры ООП здесь и в других местах (Держите их!). Я немного погрузился в это и изучил несколько полезных вещей. Вопросы для teabreak: Q: Вы хотите только 1 маркер на диаграмме, для последней панели соответствия? Или несколько маркеров, как это делает Ничолишен? (Пример Nicholishen делает позже, ваша попытка первая, потому что вы использовали только одно имя объекта, AtOpen_Text). Q: Какие временные графики? lt; = H1, или вы хотите, чтобы панель H4 отображала стрелку? (Тот, который включает время 9AM). (Лучше всего рассчитать начальное время для бара, которое включает MarkAtTime. Затем оно работает во всех TF-диаграммах от M1 до H4 для этого маркера Daily). Q: КОГДА вы хотите отобразить его? Всегда в 9 утра каждый день? Или во время запуска бара, включающего время 9AM? (Я полагаю, что первое лучше всего). В: Когда появляется последний бар 9AM, вы сначала показываете его по цене предыдущего бара High [1]. Не лучше ли регулировать его, если текущий Высокий [0] превышает Высокий [1]? (Иначе это будет поверх бара 9AM). И предложение: что бы вы ни решили, лучший код должен делать все, что он делает только один раз, а не повторять одно и то же снова и снова. (Это требование делает код более сложным для записи, но он того стоит). Быстрый пример Ничолишена запускает каждый тик и каждый бар, поэтому он неэффективен (но он абсолютно это знает, поэтому я не критикую!). В его коде стартовая точка Bars-1 для цикла for может быть предел, который: extern int MaxBars = 0;/0 = неограниченный int limit = MathMin (Bars, Bars-prev_calculated);/Где prev_calculated находится в новейшем стиле кодирования, используя OnCalculate () {... return (prev_calculated); } if (limit == Bars) limit--;/Предотвращение превышения массива вне диапазона (MaxBarsgt; 0) limit = MathMin (limit, MaxBars);/for (int i = limit; igt; = 0; i--) {...} Первый раз через, limit = Bars-1 (или, является MaxBars). После этого обычно 0, пока не появится новый брандмауэр, а затем 1 за один тик. Обратите внимание, это может быть сложно справиться только с i == 1 или i == 0. Иногда я пишу уникальный блок кода только для i == 0, просто для обработки контекста нового бара и повторения одного и того же текущего столбца. (Что касается ограничения, я только что обнаружил ошибку в одной из моих собственных программ с интенсивным использованием процессора, где, как я думал, использует ограничение (в основном 1 или 0), но я случайно сбросил его на Bars-1 каждый тик, и он был невероятно медленным из-за он, и перегрузил мой процессор кучей потраченных впустую расчетов. Исправлено!). ROTATED TEXT DISPLAY MT4 BUG: Независимо от ООП или обычного кода стиля С, Fyi, одна из проблем, которые вы, возможно, обнаружили, заключается в том, что объект OBJ_TEXT при 90 градусах имеет проблему из-за ошибки с MetaTrader4 (b1090). Я наблюдал это, когда цена поднималась выше, поэтому текст будет отмечен на самой вершине диаграммы. 90-градусный повернутый текст полностью исчезает, если какая-либо часть текста находится вне экрана выше или ниже! Вместо этого измените его на 270 градусови это в основном работает нормально. Этот вертикальный текст может исчезнуть при перекрытии левогоправого краев диаграммы, но это, как мы надеемся, редко можно сделать, пока вы используете Chart Shift (это создает некоторое пустое пространство справа от последнего бара, я все равно предпочитаю его) , Ошибка воспроизведет тривиально: вручную нарисуйте любой текст с достаточно длинным описанием. На вкладке «Параметры» для свойств объекта измените угол в градусах до 90.0. Просто перетащите текст вверх или вниз, пока какая-либо часть не коснется верхней или нижней границы, и текст полностью исчезнет. Сделайте его 270, и он работает намного лучше для верхнегонижнего. Сделайте это 115, и он исчезнет для всех четырех краев! Сделайте это 315, и он работает для всех четырех краев. Я сообщил об ошибке для MetaQuotes. Посмотрим, сколько времени потребуется, чтобы исправить это. Из-за этого, это хорошая идея создать (также) стрелку вместе с текстом на 270. Стрелки чуть выше цены всегда должны быть видны, даже когда цена делает новый максимум. Таким образом, если текст исчезнет из-за некоторого совпадения с краем, у вас все еще будет отметка на диаграмме.

  5. #5
    Привет pips4life Прежде всего, большое спасибо за то, что нашли время ответить. Очень щедро вам помочь новичку. Вместо того, чтобы изучать код повсюду, мой подход к этому вопросу заключался в том, чтобы получить достаточно понимания этого только для того, чтобы выполнять мои торговые идеи. Эти идеи для меня ограничены, поэтому теоретически, изучения нескольких конкретных основных процедур должно быть достаточно. Короче говоря, я обычно считал, что код не сам по себе, а то, что доводит вас до сути, как говорится. В конечном счете, надеясь изучить MQL более тщательно по этому маршруту. По этой причине я нашел ваш пост чрезвычайно полезным, а Q вы подняли наиболее уместное и продолжаете подходить коду к моей торговле, а не изучать код для проведения каких-либо торгов, если вы понимаете, что я имею в виду ... A : Я хочу поместить только один текстовый маркер в график на 9 и 1700. A: Только за один временной интервал. A: В конце 9 и 1700 баров. A: Очень хороший момент! Спасибо. Мне очень нужен текст, который будет на максимумах 9 и 1700 баров, когда они закрываются. Я полностью согласен, я хочу, чтобы эти два текстовых события происходили только один раз. В настоящий момент я выполняю все функции void OnTick (), поэтому мой инстинктивный ответ на это будет заключаться в использовании одной переменной для управления сессией дней, чтобы все события могли работать только между 9 и 1700 и другая переменная для управления текстовыми событиями, так что каждая переменная увеличивается с 0 на 1, когда происходят их соответствующие события, сбрасывается на 0 на 1700, готов к следующему дню. Кроме того, теперь я работаю над вашим примером цикла, который предлагает гораздо более комплексное решение. К счастью, я не хочу вращать любой текст, но большое спасибо за головы. Я не считаю MQL самым легким компиляторомIDE для работы, поэтому ничего сложнее, чем системная ошибка. Я очень с тобой согласен, учебный код так стоит. Помощь себе и Nicholishen дать бесценна для людей, начинающих, как я, и я думаю, это может также помочь более опытным проверить некоторые основы в то же время. Кнопка F1 - это хорошо, но начинающий не займет много времени, чтобы ухаживать за техническим разговором. Еще раз спасибо вам за помощь.

  6. #6
    1 Вложения (и)
    Quote Originally Posted by ;
    {quote}, большое спасибо за примеры ООП здесь и в других местах (Держите их в покое!)
    Ну, так как вы спросили, вот тест для проекта, над которым я работаю, чтобы создавать профили диаграмм из диаграммных исследованийобъектов, которые сохраняютзагружают все состояния в файлы, а не взламывают шаблоны. В этом примере представлены несколько более продвинутых шаблонов проектирования и является хорошим примером наследования, полиморфизма и управления круговыми зависимостями. Лучший способ погружения - установить точку останова на OnInit и вставить в неечерез нее ...
    https://www.russia-forex.ru/attachme...5583912874.rar

  7. #7
    1 Вложения (и)
    Quote Originally Posted by ;
    Привет pips4life Прежде всего, большое спасибо за то, что нашли время ответить. Очень щедро вам помочь новичку. Вместо того, чтобы изучать код повсюду, мой подход к этому вопросу заключался в том, чтобы получить достаточно понимания этого только для того, чтобы выполнять мои торговые идеи. Эти идеи для меня ограничены, поэтому теоретически, изучения нескольких конкретных основных процедур должно быть достаточно. Короче говоря, я обычно считал, что код не сам по себе, а то, что доводит вас до сути, как говорится. В конечном счете надеясь узнать MQL более тщательно этим маршрутом ....
    Это должно сделать трюк.
    https://www.russia-forex.ru/attachme...6180098658.mq4

  8. #8
    вау поблагодарить вас за код Nicholishen. Такая большая помощь. Reckon Я должен уметь выяснить, почемукак работают процессы и функции, но не в состоянии найти описание роли, которую lt; и gt; играйте в своей строке #include lt; ChartObjects \ ChartObjectsTxtControls.mqhgt; Пожалуйста, объясните.

  9. #9

    Quote Originally Posted by ;
    вау поблагодарить вас за ваш код. Такая большая помощь. Reckon Я должен уметь выяснить, почемукак работают процессы и функции, но не в состоянии найти описание роли, которую lt; и gt; играйте в своей строке #include lt; ChartObjects \ ChartObjectsTxtControls.mqhgt; Пожалуйста, объясните.
    Вспомните директиву include как механизм копирования и вставки. Это буквально говорит компилятору, чтобы он захватил этот файл и вставлял его содержимое в этом точном месте. Если include использует угловые скобки, то он обращается к файлам с абсолютного пути (включая каталог) и с MQL, который всегда будет папкой MQL \ Include. Поэтому, если вы хотите увидеть код, который вы перейдете в папку include, откройте подпапку и файл, чтобы просмотреть определения. Вы также можете включать файлы с использованием кавычек, которые сообщают компилятору, что он находит файл в относительном пути.
    http://en.cppreference.com/w/cpp/preprocessor/include

  10. #10
    Я забыл добавить, что самый простой способ узнать из кода других людей - использовать встроенный отладчик.
    https://www.metatrader5.com/en/metae...elopment/debugТо, что вы хотите сделать, это установить точку останова в OnInit, например, и использовать кнопку «шаг за шагом» и полностью следовать программе. Если программа использует любые файлы библиотеки, отладчик автоматически откроет эти файлы и перенесет вас в строку исполняемого кода. Вставить видео

Действующие разрешения

  • Вы не можете создавать новые темы
  • Вы не можете размещать ответы
  • Вы не можете использовать вложения
  • Вы не можете редактировать ваши записи
  •  
  • BB-код - Вкл.
  • Смайлики - Вкл.
  • Код [IMG] - Вкл.
  • Код [VIDEO] - Вкл.
  • HTML-код - Выкл.
Веб-сайт использует cookies
Веб-сайт использует cookies, в настоящее время некоторые из них уже установлены. Вы можете ознакомиться с более подробной информацией об использовании нами cookies здесь. Чтобы принять условия использования cookies, пожалуйста, нажмите на кнопку справа. Если вы продолжаете пользоваться веб-сайтом, вы по умолчанию принимаете условия использования cookies.