Ответ
 
Опции темы
Старый 14.02.2016, 06:16   #4561 (permalink)
Программист mql4 mql5
 
Аватар для AlexeyVik
 
Регистрация: 19.11.2009
Сообщений: 2,525
Репутация: 3645
AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik
Сказал(а) спасибо: 1,113
Поблагодарили 3,649 раз(а) в 1,470 сообщениях
Поинты: 2007
Сообщение от Andy200577 Посмотреть сообщение
Здравствуйте!
Хочу задать такой вопрос по поводу ограничения работы советников во времени.
Если мы хотим ограничить торговлю советника в режиме реального времени, то это можно сделать с помощью условия в начале void OnTick() { if(TimeCurrent() > D'дата и время') return;.....}. Но только вот до этой даты советника можно тестировать в тестере стратегий МТ4, т.к. текущее время моделируется на период теста. Можно ли как-то сделать, чтоб при достижении указанной даты нельзя было также использовать советника и в тестере стратегий?
Спасибо.
Не сочти за грубость, но вот вопрос: А вместо написания всего этого не мог проверить как работает TimeCurrent() в тестере? Религия не позволяет? Зачем слушать всякую ахинею по поводу dll и прочих извращений?
В твоём вопросе полный ответ на него. И условие написано правильно, и понимание что время моделируется... Всё есть кроме смелости проверить.
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 14.02.2016, 06:22   #4562 (permalink)
Местный знаток
За призовое место в конкурсе 

 
Аватар для ansol
 
Регистрация: 22.04.2010
Сообщений: 2,009
Репутация: 829
ansol - ansol - ansol - ansol - ansol - ansol - ansol -
Сказал(а) спасибо: 236
Поблагодарили 843 раз(а) в 554 сообщениях
Поинты: 1308
Сообщение от AlexeyVik Посмотреть сообщение
Не сочти за грубость, но вот вопрос: А вместо написания всего этого не мог проверить как работает TimeCurrent() в тестере? Религия не позволяет? Зачем слушать всякую ахинею по поводу dll и прочих извращений?
В твоём вопросе полный ответ на него. И условие написано правильно, и понимание что время моделируется... Всё есть кроме смелости проверить.
Ты вопрос не понял, видимо. Например, сов работает до 15.02.2016 с помощью TimeCurrent(). После 15.02.2016 он работать перестает, но тестер до 15.02.2016 гонять можно легко даже летом 2016 года.
Как это запретить, я не знаю, ты, похоже, тоже не знаешь, да еще хамишь.
ansol на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 14.02.2016, 06:43   #4563 (permalink)
Программист mql4 mql5
 
Аватар для AlexeyVik
 
Регистрация: 19.11.2009
Сообщений: 2,525
Репутация: 3645
AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik
Сказал(а) спасибо: 1,113
Поблагодарили 3,649 раз(а) в 1,470 сообщениях
Поинты: 2007
Сообщение от ansol Посмотреть сообщение
Ты вопрос не понял, видимо. Например, сов работает до 15.02.2016 с помощью TimeCurrent(). После 15.02.2016 он работать перестает, но тестер до 15.02.2016 гонять можно легко даже летом 2016 года.
Как это запретить, я не знаю, ты, похоже, тоже не знаешь, да еще хамишь.
Чтобы моё возмущение не приняли за хамство, я написал: "Не сочти за грубость".
Ну видимо я действительно не так понял вопрос. В таком случае ответ однозначный "НИКАК". Мне кажется уже не осталось таких пользователей которые не умеют перевести дату компьютера взад. И никакие dll и прочие извращения не помогут по той простой причине, что это время не читается по солнцу, а устанавливается шаловливыми руками. Ну разве что через свой сервер на котором поменять дату можешь только сам.
Тогда возникает другой вопрос: "А какова цель такого запрета". Ну потестируют до указанной даты несколько раз... Потом надоест видеть одно и то-же и полетит советник мимо корзины.
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 14.02.2016, 07:02   #4564 (permalink)
Элитный участник
 
Аватар для RoboMaks
 
Регистрация: 19.08.2012
Адрес: Баку, Азербайджан
Сообщений: 651
Репутация: 1128
RoboMaks RoboMaks RoboMaks RoboMaks RoboMaks RoboMaks RoboMaks RoboMaks RoboMaks
Сказал(а) спасибо: 320
Поблагодарили 1,118 раз(а) в 442 сообщениях
Поинты: 623
Отправить сообщение для RoboMaks с помощью Skype™
Сообщение от ansol Посмотреть сообщение
сов работает до 15.02.2016 с помощью TimeCurrent(). После 15.02.2016 он работать перестает, но тестер до 15.02.2016 гонять можно легко даже летом 2016 года.
А откуда в тестере данные TimeCurrent() лета 2016 года? Он сегодня даже ещё и 15.02.2016 смоделировать не может...

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Программирование советников, индикаторов и скриптов для МТ4
контакты для платных работ:
e-mail: maksshukurov@mail.ru
skype: maksshukurov1
RoboMaks вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 14.02.2016, 07:12   #4565 (permalink)
Новичок форума
 
Аватар для Andy200577
 
Регистрация: 20.06.2012
Сообщений: 57
Репутация: 9
Andy200577
Сказал(а) спасибо: 3
Поблагодарили 8 раз(а) в 6 сообщениях
Поинты: 90
Спасибо за ответы. По поводу нафига надо, отвечаю, что это надо, т.к. тестирование это основное назначение советника ( советник для бинарных опционов, не для форекса), а торговля это уже как приложение. Тестирование как раз делается в обычном тестере мт4 и в журнал выводятся результаты. Поэтому вопрос с ограничением работы тестера остается открытым. Подскажите с помощью какой dll можно прочитать дату с какого либо сервера, естественно не с компьютера. Есть ли штантные dll windows такие вроде user32, kernel32....и встроенные в них функции для этого? Спасибо.
Andy200577 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 14.02.2016, 09:19   #4566 (permalink)
Элитный участник
 
Аватар для Ugar
 
Регистрация: 13.03.2009
Сообщений: 2,255
Репутация: 1963
Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar
Сказал(а) спасибо: 349
Поблагодарили 1,892 раз(а) в 1,069 сообщениях
Поинты: 1276
Отправить сообщение для Ugar с помощью ICQ
Сообщение от Andy200577 Посмотреть сообщение
Спасибо за ответы. По поводу нафига надо, отвечаю, что это надо, т.к. тестирование это основное назначение советника ( советник для бинарных опционов, не для форекса), а торговля это уже как приложение. Тестирование как раз делается в обычном тестере мт4 и в журнал выводятся результаты. Поэтому вопрос с ограничением работы тестера остается открытым. Подскажите с помощью какой dll можно прочитать дату с какого либо сервера, естественно не с компьютера. Есть ли штантные dll windows такие вроде user32, kernel32....и встроенные в них функции для этого? Спасибо.
Эта функция возьмёт GMT время с компа. Тестером оно моделироваться не будет. То есть будет всегда локальное время без поправки на часовой пояс, независимо от того на каком участке времени тестируется.
#import "Kernel32.dll"
void GetSystemTime(int& a0 []);
#import

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!

Последний раз редактировалось Ugar; 14.02.2016 в 09:22.
Ugar на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 14.02.2016, 09:58   #4567 (permalink)
Элитный участник
 
Аватар для RoboMaks
 
Регистрация: 19.08.2012
Адрес: Баку, Азербайджан
Сообщений: 651
Репутация: 1128
RoboMaks RoboMaks RoboMaks RoboMaks RoboMaks RoboMaks RoboMaks RoboMaks RoboMaks
Сказал(а) спасибо: 320
Поблагодарили 1,118 раз(а) в 442 сообщениях
Поинты: 623
Отправить сообщение для RoboMaks с помощью Skype™
Сообщение от ansol Посмотреть сообщение
После 15.02.2016 он работать перестает, но тестер до 15.02.2016 гонять можно легко даже летом 2016 года.
Как это запретить
Возможно не так здесь и поняли вопрос, но ведь и вопрос надо задавать немного конкретнее... Сам по себе советник, конечно, работать уже не будет после указанной даты, но тестер будет продолжать "крутить" и дальше. Можно, в принципе, программно остановить дальнейшую работу тестера после этой даты, нажав на ПАУЗУ тестера (из сова).
Попробуйте так.
Вложения:
Тип файла: mq4 EA.mq4 (1.7 Кб, 6 просмотров)

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Программирование советников, индикаторов и скриптов для МТ4
контакты для платных работ:
e-mail: maksshukurov@mail.ru
skype: maksshukurov1
RoboMaks вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 14.02.2016, 12:10   #4568 (permalink)
Активный участник
 
Аватар для innovision
 
Регистрация: 01.03.2012
Сообщений: 32
Репутация: 30
innovision
Сказал(а) спасибо: 6
Поблагодарили 29 раз(а) в 25 сообщениях
Поинты: 44
Сообщение от Understanding Посмотреть сообщение
Ctrl+D в окне данных видим:

Gold
EMA (2) 0.77643
EMA (3) 0.77670
DeepSkyBlue
... и далее.
к сожалению разделить в "окне данных" так как хочется - не получится..
только так:
Gold EMA (2) 0.77643
Gold EMA (3) 0.77670
...
в общем получилось так как на скрине.
Прилагаю компил(билд 910) и исходник
Там все те же 3 выборки...
Предлагаю, раз хочется научиться програмить - допишите оставшиеся 4 блока по известному алгоритму из 3-х уже написанных..
если что не понятно - спрашивайте)
Миниатюры:
Нажмите на изображение для увеличения
Название: 14-02-2016 14-01-42.png
Просмотров: 20
Размер:	62.6 Кб
ID:	234184  
Вложения:
Тип файла: mq4 RainbowMMA.mq4 (17.6 Кб, 3 просмотров)
Тип файла: ex4 RainbowMMA.ex4 (35.2 Кб, 1 просмотров)

Последний раз редактировалось innovision; 14.02.2016 в 12:45.
innovision вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Understanding (14.02.2016)
Старый 14.02.2016, 18:32   #4569 (permalink)
Активный участник
 
Аватар для Understanding
 
Регистрация: 28.01.2016
Адрес: Украина, Одесса
Сообщений: 105
Репутация: 135
Understanding Understanding
Сказал(а) спасибо: 168
Поблагодарили 134 раз(а) в 33 сообщениях
Поинты: 120
Сообщение от innovision Посмотреть сообщение
Предлагаю, раз хочется научиться програмить - допишите оставшиеся 4 блока по известному алгоритму из 3-х уже написанных..
если что не понятно - спрашивайте)
Супер) Спасибо за работу и исходник) Сейчас изучу) Если что, буду спрашивать) Спасибо, правда)

Дополнение к сообщению. Вот только не знаю пока еще, как ввести отдельно взятые линии в радугу. Чтоб МА-шка 200-периодная и 274 были отдельно настраиваемые от общей радуги. А с остальными цветами сейчас "покумекаю" как их добавить сюда.

Последний раз редактировалось Understanding; 14.02.2016 в 18:42.
Understanding вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 14.02.2016, 18:49   #4570 (permalink)
Активный участник
 
Аватар для innovision
 
Регистрация: 01.03.2012
Сообщений: 32
Репутация: 30
innovision
Сказал(а) спасибо: 6
Поблагодарили 29 раз(а) в 25 сообщениях
Поинты: 44
Сообщение от Understanding Посмотреть сообщение
как ввести отдельно взятые линии в радугу. Чтоб МА-шка 200-периодная и 274 были отдельно настраиваемые от общей радуги.
Все тоже самое как и несколько линий (как один блок)
Посмотрев код, думаю все станет легко)
Пробуйте

Алгоритм простой.. 4-й блок:
1. Прописываем входные параметры по 4 блоку
2. добавляем 4-й массив - перевод параметров из строки в массив целых
3. наращиваем кол-во буферов
#property indicator_buffers 38 - плюс 12 4-го блока
4.задаем массивы инд.буферов, начиная с 39-го
5. Init
читаем параметры из строки в массив 4-го блока
рассчитываем наименование для всех линий 4-го блока
устанавливаем соответствие линии и инд.буфера и + задаем наимен. линий
6. Start
рассчитываем значения буферов по параметрам 4-го блока

добавляйте блоки по одному - проверяйте на ошибки компила, данные в "окне данных" и визуализацию
нет ошибок - след. блок..
могу проверить Ваш результат по итогу

===
если не ясно назначение какой-то переменной/функции/присваивания - пишите))

Последний раз редактировалось innovision; 14.02.2016 в 19:40.
innovision вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Understanding (14.02.2016)
Старый 14.02.2016, 20:23   #4571 (permalink)
Активный участник
 
Аватар для Understanding
 
Регистрация: 28.01.2016
Адрес: Украина, Одесса
Сообщений: 105
Репутация: 135
Understanding Understanding
Сказал(а) спасибо: 168
Поблагодарили 134 раз(а) в 33 сообщениях
Поинты: 120
innovision, сделал)) Шик и блеск просто)) Теперь все линии в одном индикаторе) Просто прелесть) Спасибо за такой красивый и лаконичный код) Ах да, а где в коде строки отвечающие за вывод названия цвета по Ctrl+D? Как убрать? А то широковатая менюшка получается. Как можно сделать сокращение цвета? Например Gold = Gd, DeepSkyBlue = DSB, MediumOrchid = MOrch, Pink = Pn и далее ко всем цветам? Это уже дописывать надо неизвестные мне строки в данном коде, да? И как добавить возможность к линии 200 и 274 выбирать стиль линии (чтоб появилась возможность сделать линию толще). Помогите с данным кодом, пожалуйста. тогда индикатор будет просто шикарен))
Вложения:
Тип файла: mq4 RainbowMMA.mq4 (28.2 Кб, 2 просмотров)

Последний раз редактировалось Understanding; 14.02.2016 в 20:26.
Understanding вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
innovision (14.02.2016)
Старый 14.02.2016, 20:31   #4572 (permalink)
Активный участник
 
Аватар для innovision
 
Регистрация: 01.03.2012
Сообщений: 32
Репутация: 30
innovision
Сказал(а) спасибо: 6
Поблагодарили 29 раз(а) в 25 сообщениях
Поинты: 44
Сообщение от Understanding Посмотреть сообщение
а где в коде строки отвечающие за вывод названия цвета по Ctrl+D?
такой функции в коде нет..
label=(string)InpMAcolor01;StringReplace(label,"cl r","");label+=" "+method;
это пример 1-го "блока"
здесь убирается только текст "clr" из наименования цвета
"clr" заменяется на пустоту.. сокращается
для сокращения названия нужно писать отдельную функцию по алгоритму
string MethodToString(int MAMethod)
где задавать короткое имя каждому из уже известных цветов
но получится не универсально
если цвет в новой функции известен - замена произойдет..
если будет новый цвет - замены не будет
==
проще, предполагаю, сделать не по цветам, а по "блокам"
функция будет алгоритмически выглядеть как
string MethodToString(int MAMethod)
в зависимости от цвета - возвращаем его сокращение

Последний раз редактировалось innovision; 14.02.2016 в 20:36.
innovision вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Understanding (14.02.2016)
Старый 14.02.2016, 20:44   #4573 (permalink)
Активный участник
 
Аватар для Understanding
 
Регистрация: 28.01.2016
Адрес: Украина, Одесса
Сообщений: 105
Репутация: 135
Understanding Understanding
Сказал(а) спасибо: 168
Поблагодарили 134 раз(а) в 33 сообщениях
Поинты: 120
Сообщение от innovision Посмотреть сообщение
проще, предполагаю, сделать не по цветам, а по "блокам"
функция будет алгоритмически выглядеть как
string MethodToString(int MAMethod)
в зависимости от цвета - возвращаем его сокращение
покажите, пожалуйста, кодом (в спойлере или как удобно) как добавить к несколько блокам эту функцию и чтоб подошло к отдельной линии (200 и 274) которые, к слову, я тоже вынес в блоки 06 и 07 соотв. И как присвоить возможность выбирать стиль (толщину) линии 200 и 274? Где дописать и что именно? А то сбрасывается стиль на тот, что в коде. наверное, в строках надо заменить NULL на 2 или 3 или 4 для изменения ширины? ExtMapBuffer67[i]=iMA(NULL,0,Period7[0],0,InpMAMethod07,InpMAPrice07,i); --> ExtMapBuffer67[i]=iMA(2,0,Period7[0],0,InpMAMethod07,InpMAPrice07,i); -->?

Последний раз редактировалось Understanding; 14.02.2016 в 20:53.
Understanding вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 14.02.2016, 20:53   #4574 (permalink)
Активный участник
 
Аватар для innovision
 
Регистрация: 01.03.2012
Сообщений: 32
Репутация: 30
innovision
Сказал(а) спасибо: 6
Поблагодарили 29 раз(а) в 25 сообщениях
Поинты: 44
Сообщение от Understanding Посмотреть сообщение
И как добавить возможность к линии 200 и 274 выбирать стиль линии (чтоб появилась возможность сделать линию толще). Помогите с данным кодом, пожалуйста. тогда индикатор будет просто шикарен))
толщина задается в
SetIndexStyle
сделал толщину всем блокам
"1" заменил на InpMAwidth
посмотрите как это выглядит
==
теперь каждому блоку можно назначить "свою" толщину
сделал по умолчанию "тройку" двум последним
==
по цветам .. сейчас порисую
Вложения:
Тип файла: mq4 RainbowMMA.mq4 (29.5 Кб, 3 просмотров)

Последний раз редактировалось innovision; 14.02.2016 в 20:56.
innovision вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Understanding (14.02.2016)
Старый 14.02.2016, 21:01   #4575 (permalink)
Активный участник
 
Аватар для innovision
 
Регистрация: 01.03.2012
Сообщений: 32
Репутация: 30
innovision
Сказал(а) спасибо: 6
Поблагодарили 29 раз(а) в 25 сообщениях
Поинты: 44
Сообщение от Understanding Посмотреть сообщение
заменить NULL на 2 или 3 или 4 для изменения ширины?
нет.. не верно)
став курсором на строку "iMA" и нажав "F1" - увидите в хелпе что значит каждый параметр
в Вашем варианте ExtMapBuffer67[i]=iMA(NULL,0,Period7[0],0,InpMAMethod07,InpMAPrice07,i);
нет толщины - там параметры для расчета iMA
толщину выше описал

---
предлагаю ф-ю по сокращению цвета перенести на завтра)))
innovision вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Understanding (14.02.2016)
Старый 14.02.2016, 21:09   #4576 (permalink)
Активный участник
 
Аватар для Understanding
 
Регистрация: 28.01.2016
Адрес: Украина, Одесса
Сообщений: 105
Репутация: 135
Understanding Understanding
Сказал(а) спасибо: 168
Поблагодарили 134 раз(а) в 33 сообщениях
Поинты: 120
Сообщение от innovision Посмотреть сообщение
нет.. не верно)
став курсором на строку "iMA" и нажав "F1" - увидите в хелпе что значит каждый параметр
в Вашем варианте ExtMapBuffer67[i]=iMA(NULL,0,Period7[0],0,InpMAMethod07,InpMAPrice07,i);
нет толщины - там параметры для расчета iMA
толщину выше описал

---
предлагаю ф-ю по сокращению цвета перенести на завтра)))
Спасибо за все) Можно и завтра с цветом доработать. основное уже сделано) Можно чтоб просто х01 вместо цвета писалось в окне данных. не обязательно цвет выводить сокращенный, чтоб не играться долго с кодом. это уже много надо, наверное, чтоб каждый цвет который поставится, грамотно сокращался. А чтоб х01, х02 и далее вывести вместо цвета в окно данных - долго сейчас с этим, да?)
Understanding вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 14.02.2016, 21:21   #4577 (permalink)
Активный участник
 
Аватар для innovision
 
Регистрация: 01.03.2012
Сообщений: 32
Репутация: 30
innovision
Сказал(а) спасибо: 6
Поблагодарили 29 раз(а) в 25 сообщениях
Поинты: 44
Пожалуйста) Главное чтобы на пользу и на Душе радость
Сообщение от Understanding Посмотреть сообщение
) Можно чтоб просто х01 вместо цвета писалось в окне данных.
можно и так.. это проще всего
имена в окне данных формируются в строках "label=" и далее по строке каждому блоку
Сообщение от Understanding Посмотреть сообщение
чтоб не играться долго с кодом.
играться можно столько - сколько нужно... главное результат в кармане

подсказка: переходите на ренджи... там все лаконичнее стандартов метаквотов
--
все же предложу завтра продолжить .. )
--
определитесь как Вам визуально лучше/проще/короче в окне - так и будем делать
код - это не проблема (просто решите для себя так - так и произойдет со временем)

Последний раз редактировалось innovision; 14.02.2016 в 21:23.
innovision вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Understanding (14.02.2016)
Старый 14.02.2016, 21:34   #4578 (permalink)
Активный участник
 
Аватар для Understanding
 
Регистрация: 28.01.2016
Адрес: Украина, Одесса
Сообщений: 105
Репутация: 135
Understanding Understanding
Сказал(а) спасибо: 168
Поблагодарили 134 раз(а) в 33 сообщениях
Поинты: 120
Сообщение от innovision Посмотреть сообщение
все же предложу завтра продолжить .. )
да, конечно) Я тоже спать отпраляюсь уже. Так что завтра продолжим) Спасибо за это все!) Реально круто и мне очень нравится что так понятно все оказалось по объяснениям и то, что я достаточно быстро вник, хоть и знания по MQL4 (да и по языкам программирования в целом) минимальные. А я завтра спрошу у Вас, как сделать чтоб по сокращению цвета и по названиям групп, чтоб эти данные выводились в окно данных. По-моему, по группам будет проще сделать, но по цветам было бы логичнее, наверное... хотя, кому как. Разберемся) Спасибо) До связи)
Understanding вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 15.02.2016, 06:06   #4579 (permalink)
Активный участник
 
Аватар для innovision
 
Регистрация: 01.03.2012
Сообщений: 32
Репутация: 30
innovision
Сказал(а) спасибо: 6
Поблагодарили 29 раз(а) в 25 сообщениях
Поинты: 44
Сообщение от Understanding Посмотреть сообщение
как сделать чтоб по сокращению цвета
Приветствую, Understanding
поскольку сокращение цвета у нас будет происходить 7 раз - сделаем это присваивание в виде функции

Код:
string ColorToShortString(color Color)
  {
    string cColor=NULL;                                     // сColor - строковое возвращаемое значение функции..
   switch(Color)                                            // ставим переключатель для заранее известных значений цветов
    { case clrGold              : cColor="Gold";break;      // назначаем цвету его короткое имя
      case clrDeepSkyBlue       : cColor="Blue";break;
      case clrLime              : cColor="Lime";break;
      case clrPink              : cColor="Pink";break;
      case clrMediumOrchid      : cColor="Orchid";break;
      case clrWhite             : cColor="White";break;
      case clrLightSlateGray    : cColor="Gray";break;
      default                   : cColor="ERROR:color no case";break;
    }
   return(cColor);
  }
Ф-я принимает цвет в переменную Color (вх.параметр: color Color)
И возвращает строку "string ColorToShortString" с помощью переменной string cColor
В зависимости от заранее известных цветов переключатель switch присваивает текстовое значение переменной cColor и возвращает ее как результат в строковом выражении
Возвращаемое значение - это и есть наш цвет в более сокращенном виде
если нужно еще короче - меняем внутри скобок
"Gold" -> "Gd"
"Gray" -> "Gr"
и т.д.
Надеюсь понятно описал)

=====

далее
в коде, написанном ранее, часть наименования, связанная с цветом, для каждого блока формируется в строке
label=(string)InpMAcolor01;StringReplace(label,"cl r","");
здесь сначала мы строковой переменной label присваиваем наименование цвета блока, преобразовав его из типа "цвет" в тип "строка" : label=(string)InpMAcolor01; здесь, к примеру clrGold - цвет станет "clrGold" - строка
затем StringReplace(label,"clr",""); - здесь мы в значении переменной label ищем подстроку "clr" и заменяем ее на пустоту - сокращаем - и получаем просто "Gold"
---
при появлении функции "короткое имя цвета" (ColorToShortString) этот ранний код не используем
label=(string)InpMAcolor01;StringReplace(label,"cl r","");
и заменим его на вызов нашей новой функции
label=ColorToShortString(InpMAcolor01);
Вложения:
Тип файла: mq4 RainbowMMA.mq4 (30.6 Кб, 5 просмотров)

Последний раз редактировалось innovision; 15.02.2016 в 06:36.
innovision вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Understanding (15.02.2016)
Старый 15.02.2016, 14:53   #4580 (permalink)
Активный участник
 
Аватар для Understanding
 
Регистрация: 28.01.2016
Адрес: Украина, Одесса
Сообщений: 105
Репутация: 135
Understanding Understanding
Сказал(а) спасибо: 168
Поблагодарили 134 раз(а) в 33 сообщениях
Поинты: 120
innovision, и Вам здравствовать!

Вот, уже с цветом покороче выходит. Хороший вариант, как для сокращения цвета.

А может, все-таки сделать без упоминания цвета в окне данных? Например, на планшетах с Windows 10 экран ~10" (у ныне существующих), и окно данных занимает немалую часть экрана, в случае с выводом названия цвета. А если сделать вариант такой: Group [1], Group [2]?... - тоже достаточно понятно смотрится.

Индикатор вышел красивый и настраиваемый полностью, только вот при переключении периодов (М1, М5 и т.д.) он дольше чем тот, что из 11 файлов "думает". Может, его можно как-то оптимизировать? Наверное, это как раз вычисление цвета и вывод имени цвета "кушает" время при переключении таймфреймов? Вариант с Group [1], Group [2] должен быть побыстрее? Как код будет выглядеть в случае варианта Group [1], Group [2]?

И спасибо за работу и помощь с данным вопросом!
Understanding вне форума   Ответить с цитированиемОтветить с цитированием  
Ответ

Метки
mql4, mql4 помощь, вопросы mql4


Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Выкл.
Pingbacks are Выкл.
Refbacks are Выкл.



Текущее время: 16:24. Часовой пояс GMT.


Перевод: zCarot
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd.
SEO by vBSEO