Советники: FAT PANEL - страница 2

 
Vigor:
Мануал сделаю, но короткий. ..................

Угу. И руководство для добавления собственного функционала (индикаторов, лог.элементов, состояний и т.п.).

Идеальный (но непростой) вариант: вообще все функциональные элементы сделать "легко пристёгивающимися", типа плагинов, щёб плодились и размножались в кодебазе как грибы... :)

--

Классную штуку сделали, Игорь. Спасибо! Весь вечер с ней игрался.

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

При беглом осмотре впечатление от кода очень приятное.


 

Блоки пишутся элементарно! Если бы в MQL был механизм подобный get_declared_classes, class_exists и is_subclass_of вся установка нового функционала была бы просто в инклуде/добавлении файла нового класса (потомка одного из базовых).

//+------------------------------------------------------------------+
class CAlgoBlockLogicOr: public CAlgoBlockLogic {
        public:
        //+------------------------------------------------------------------+  
        void CAlgoBlockLogicOr() {              
                setLabel("name",12,20,1,"OR");//--uniq, x, y, fontsize, title                
                 //--connectors
                CConnectPointer* pointer1 = new CConnectPointer();
                pointer1.connectType = ALGO_BOOL;
                pointer1.connectDirection = ALGO_DIRECTION_IN;
                pointer1.x = 0;
                pointer1.y = 0.11;
                connectPointers.Add(pointer1);
                
                CConnectPointer* pointer2 = new CConnectPointer();
                pointer2.connectType = ALGO_BOOL;
                pointer2.connectDirection = ALGO_DIRECTION_IN;
                pointer2.x = 0;
                pointer2.y = 0.89;
                connectPointers.Add(pointer2);
                
                CConnectPointer* pointer3 = new CConnectPointer();
                pointer3.connectType = ALGO_BOOL;
                pointer3.connectDirection = ALGO_DIRECTION_OUT;
                pointer3.x = 1;
                pointer3.y = 0.5;
                connectPointers.Add(pointer3);
        }
        
        bool operate(CAlgoBlockLogic* s1, CAlgoBlockLogic* s2) {
                bool S1 = s1.process();
                bool S2 = s2.process();
                if ( S2 || S1 ) {  
                        return (true);
                }
                return (false);
        }
        
        //+------------------------------------------------------------------+
};

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

 
Здравствуйте автор, у Вас нет возможности выложить скрин собранных блоков, или сохраненный файл, который дал такую картинку на тесте? Это был бы неплохой мануал.
 

В описании для codebase это таже схема из 4 блоков. Только значение 300 в блоке операции ">". Файл схемы в архиве, распаковать в папку

C:\Documents and Settings\All Users\Application Data\MetaQuotes\Terminal\Common\

(путь может отличаться, лучше сделать поиск по файлу fatpanel.dat и заменить его)

Файлы:
FATPANEL.rar  1 kb
 

Пока готовится новая версия, покажу прогон той же самой стратегии с 2005г. Режим тестирования "каждый тик". Эксперименты с трейлинг стопом:

На схеме видны все параметры стратегии и ее принцип. Реинвестиций нет. Версия с дополнительными блоками скоро будет опубликована.

Отчет Тестера стратегий
MetaQuotes-Demo (Build 370)

Настройки
Советник: FatPanel
Символ: EURUSD
Период: M1 (2005.01.01 - 2010.12.17)
Входные параметры:
Брокер: MetaQuotes Software Corp.
Валюта: USD
Начальный депозит: 10 000.00
Плечо: 1:100

Результаты
Бары: 2095758 Тики: 39061924
Чистая прибыль: 468 436.28 Общая прибыль: 1 377 840.48 Общий убыток: -909 404.20
Прибыльность: 1.52 Матожидание выигрыша: 84.33
Фактор восстановления: 16.62 Коэффициент Шарпа: 0.05

Просадка баланса:
Абсолютная просадка по балансу: 4 393.10 Максимальная просадка по балансу: 5 593.40 (8.46%) Относительная просадка по балансу: 8.46% (5 593.40)
Просадка средств:
Абсолютная просадка по средствам: 4 622.90 Максимальная просадка по средствам: 6 119.20 (9.21%) Относительная просадка по средствам: 9.21% (6 119.20)

Всего трейдов: 5555 Короткие трейды (% выигравших): 3237 (56.32%) Длинные трейды (% выигравших): 2318 (60.05%)
Всего сделок: 268659 Прибыльные трейды (% от всех): 3215 (57.88%) Убыточные трейды (% от всех): 2340 (42.12%)

Самый большой прибыльный трейд: 8 040.10 Самый большой убыточный трейд: -7 181.70

Средний прибыльный трейд: 428.57 Средний убыточный трейд: -388.63

Максимальное количество непрерывных выигрышей (прибыль): 75 (9 306.86) Максимальное количество непрерывных проигрышей (убыток): 24 (-13 829.70)

Максимальная непрерывная прибыль (число выигрышей): 12 396.20 (14) Максимальная непрерывный убыток (число проигрышей): -13 829.70 (24)

Средний непрерывный выигрыш: 3 Средний непрерывный проигрыш: 2


 
Ограничение по количеству сделок помоему актуальным будет, ато открывает сделки на каждом тике указанным лотом и что хорошего?
Документация по MQL5: Торговые функции / HistoryDealsTotal
Документация по MQL5: Торговые функции / HistoryDealsTotal
  • www.mql5.com
Торговые функции / HistoryDealsTotal - Документация по MQL5
 
Таким образом набирается объем позиции. Постоянно доливаемыми порциями "на ощупь" в итоге находится локальный экстремум на bid. А если ограничить открытие не более 1 позиции в одном направлении, то пропускаются более выгодные моменты открытия и стратегия сливает. А ограничение добавить несложно: +3 блока на каждое направление. AND и IS_BUY(либо IS_SELL) + NOT
 
Vigor:
Таким образом набирается объем позиции. Постоянно доливаемыми порциями "на ощупь" в итоге находится локальный экстремум на bid. А если ограничить открытие не более 1 позиции в одном направлении, то пропускаются более выгодные моменты открытия и стратегия сливает. А ограничение добавить несложно: +3 блока на каждое направление. AND и IS_BUY(либо IS_SELL) + NOT
Спасибо, я так понимаю конечный объем будет неизвестен, это плохо...
 

Версия 0,2 не хочет работать. Как заставить?

 

 

Эта проблема была в одном из недавних билдов терминала.

https://www.mql5.com/ru/forum/1111/page232

Если терминал обновлен до последней версии(где это исправлено), нужно заново перекомпилить индикатор(в папке mql5/indicators/fatpanel/ ) и советник(mql5/experts/fatpanel/).

Причина обращения: