По моему статью надо переименовать - зачем просто, когда можно сделать сложно.
верно подмечено.
Interesting:
По крайней мере, суть того, что хотел донести до читателей автор я понял (или считаю, что понял).
про это и речь. Про суть что написано поняли все. Кто из прочитавших воспримет приложенные коды как готовую реализацию какого-то этапа разработки? Да практически никто кроме автора. Статья получилась ознакомительной, из которой можно взять только идею, а не код. А для этого столько букофф не надо было делать.
Если назвался груздем, так полезай в кузовок. Решили занятся обучением других, или поделится своими наработками, тогда писать надо, продумывая каждое слово и структуру излагаемой информации. Если мысли гуляют, и хочется объять необъятное и писать про все на свете, то и нечего браться за написание статей фундаментального плана. И слова, что это версия 1.0 бета неподходят. Так как этим портится репутация грамотного кодера.
Руководству форума желаю внимательней относится к публикуемым материалам и осуществлять более жесткий контроль авторских работ (не только статей но и кодов). И только ради набива числа публикаций не стоит брать все подряд. Чтоб не получилось как c Codebase в MQL4. Действительно ценные работы без аналогов теряются за сотней версий 1.0 бета.
2. Не указывайте корпорации MetaQuotes Software какую маркетинговую политику ей проводить, и как оценивать и выбирать авторов для своего продукта.
Рассматривайте эти пункты ни как пожелание, а как предупреждение. Если Вы и дальше будете продолжать распространять негатив в ветке форума посвященной моей статье, а также указывать MetaQuotes, что ей и как делать, то это будет расценено мной как попытка очернить проделанную мной работу и подвергнуть сомнению профессионализм команды MetaQuotes. В этом случае я оформлю соответственную жалобу модераторам этого раздела, и у меня есть серьезные основания, что возникший конфликт между мной и вами решиться в мою пользу.
Давайте не будем доводить дело до официальных выяснений отношений и просто пойдем на мировое соглашение: вы прекратите писать в ветке посвященной моей статье информацию, которая ни как не относится к рассматриваемой здесь теме и перестанете очернять проделанную мной работу. Будет лучше если вы вообще перестанете что-либо здесь писать. Мне ясна ваша точка зрения, вы высказали ее на предыдущих страницах. Я не согласен с ней, а вы не согласны с моим мнением. Я считаю, что мы оба интеллигентные люди и на этом прекратим бесполезную полемику.
Руководству форума желаю внимательней относится к публикуемым материалам и осуществлять более жесткий контроль авторских работ (не только статей но и кодов). И только ради набива числа публикаций не стоит брать все подряд. Чтоб не получилось как c Codebase в MQL4. Действительно ценные работы без аналогов теряются за сотней версий 1.0 бета.
+1
Я думаю, что раздел " Статьи " надо будеть полезен для потребителям !!! Надо облекчает, не пугает и спутает их !
А сейчас - "Чукча писатель, чукча не читатель" ....
>>>Только представьте,ваш один единственный эксперт торгует сразу по нескольким десяткам торговых стратегий, сразу на всех доступных инструментах и сразу на всех возможных таймфреймах! К тому же этот эксперт прекрасно тестируется в тестере, а для всех стратегий, входящих в его состав, действует одна или сразу несколько систем управления капиталом.<<<
Именно так мой эксперт торгующий на чемпионате и устроен. Все, как мне кажется, проще. Главное - правильно все спроектировать и не мешать в одну кучу.
//+------------------------------------------------------------------+//| Vigor-Levels.mq5 |//| Copyright 2010, MetaQuotes Software Corp. |//| http://www.mql5.com |//+------------------------------------------------------------------+#property copyright "Copyright 2010, MetaQuotes Software Corp."#property link "http://www.mql5.com"#property version "1.00"#include <Vigor\Strategy.mqh>#include <Vigor\TradeSignal.mqh>#include <Vigor\ADXMAStrategy.mqh>#include <Vigor\ADXStrategy.mqh>#include <Vigor\MAVSimpleStrategy.mqh>#include <Vigor\Order.mqh>#include <Vigor\Dispatcher.mqh>#include <Vigor\AdaptiveStrategy.mqh>
CDispatcher dispatcher;
//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+intOnInit()
{
//--- int myTick = 60;
EventSetTimer(myTick);
dispatcher.tickSeconds = myTick;
//-- объект dispatcher работает с ордерами, объекты стратегий
//занимаются только сигналами и с рынком не работают
//-- простые стратегии торгующие отдельно. наследники класса CStrategy
//--strategies
CMAVStrategy *s4 = new CMAVStrategy();
s4.Symbol = "EURGBP";
s4.onBars = true;
s4.TimeFrame = PERIOD_M5;
s4.HourStart = 7;
s4.HourEnd = 18;
s4.Risk = 0.1;
s4.takeProfit = 2000;
s4.stopLoss = 450;
s4.trailingStop = 77;
s4.lots = 0.1;
s4.maxLots = 5;
//--custom;
s4.period1 = 2;
s4.max = 0.0025;
s4.sensity = 0.39;
s4.unsensity = 0.53;
s4.init();
dispatcher.strategies.Add(s4);
//--strategies
CADXStrategy *s2 = new CADXStrategy();
s2.Symbol = "GBPUSD";
s2.onBars = true;
s2.TimeFrame = PERIOD_M5;
//s2.mHourStart = 0;//s2.mHourEnd = 24;
s2.Risk = 0.13;
s2.takeProfit = 2000;
s2.stopLoss = 360;
s2.trailingStop = 150;
s2.lots = 0.1;
s2.maxLots = 5;
//--custom
s2.period = 17;
s2.level = 0.0042;
s2.init();
dispatcher.strategies.Add(s2);
//--и т.д.
//-- адаптивная стратегия содержащая внутри себя виртуальную
//торговлю подключенного списка(наследники CStrategy опять же),
//также наследник CStrategy и для dispetcher'a разницы нет
CAdaptiveStrategy *sadapt4 = new CAdaptiveStrategy();
sadapt4.onBars = false;
sadapt4.mRisk = 0.13;
sadapt4.lots = 0.1;
sadapt4.performance_variant = 2;
sadapt4.maxLots = 5;
sadapt4.init();
// ***************************************** M30
CADXStrategy *s_gbpjpy1 = new CADXStrategy(); s_gbpjpy1.Symbol = "GBPJPY"; s_gbpjpy1.onBars = true; s_gbpjpy1.TimeFrame = PERIOD_M30; s_gbpjpy1.takeProfit = 2000; s_gbpjpy1.trailingStop = 70; s_gbpjpy1.lots = 0.1; s_gbpjpy1.maxLots = 5;
s_gbpjpy1.stopLoss = 300; s_gbpjpy1.init();
sadapt4.strategies.Add(s_gbpjpy1); //все кладем в адаптивную стратегию
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // и т.д.
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dispatcher.strategies.Add(sadapt4);
// наполняем как угодно и чем угодноreturn(0);
}
//+------------------------------------------------------------------+//| Expert deinitialization function |//+------------------------------------------------------------------+voidOnDeinit(constint reason)
{
//---EventKillTimer();
}
//+------------------------------------------------------------------+//| Expert tick function |//+------------------------------------------------------------------+voidOnTimer()
{
//---
dispatcher.control();
}
//+------------------------------------------------------------------+
Приведенный Вами пример на самом деле очень похож на мой. Различий меньше чем может показаться. Все также реализовано через классы и каждая класс-стратегия имеет свои независимые параметры. Самое большое различие в их компоновке, у Вас все стратегии обрабатывает диспетчер, у меня они обрабатываются в списке типа CObject. На самом деле мой подход не сколько не сложнее Вашего, просто мы говорим о одинаковых вещах, но разным языком.
Изначально я задумывал решить своим подходом любое сочетание трех "мульти-": мультитаймфрейм, мультистратегия, мультиинструмент. Сейчас я вижу в нем гораздо больше. Во второй части, я думаю осветить проблему решений эксперта. Эксперт будет сам решать, как ему торговать, чем ему торговать и когда ему торговать. Все это позволяет мой подход. Наверное и ваш подход тоже, и это хорошо, потому что несколько решений одного и того же это развитие.
Кстати можно посмотреть на реализацию самого диспетчера?
Реализацию выкладывать не буду. Тут и так все понятно. Стратегии все потомки CObject. Но их обрабатывает диспетчер. Нужно идти от простого к сложному. Простой интерфейс объектов, для внешнего наблюдателя, должен скрывать все детали реализации. Просто я хочу сказать ничего экстраординарного в мульти мульти мульти нет вообще. Имея ООП и полиморфизм это все просто делается.
Vigor: Реализацию выкладывать не буду. Тут и так все понятно. Стратегии все потомки CObject. Но их обрабатывает диспетчер. Нужно идти от простого к сложному. Простой интерфейс объектов, для внешнего наблюдателя, должен скрывать все детали реализации. Просто я хочу сказать ничего экстраординарного в мульти мульти мульти нет вообще. Имея ООП и полиморфизм это все просто делается.
+1. Полностью согласен. Да и вообще хочу сказать, что мой подход как две капли воды похож на Ваш. Стратегии все потомки базовой стратегии CModel, которая в свою очередь потомок CObject. Также как и у Вас все инициализируется динамически и засовывается в список. Так же как и у вас есть реализован простой интерфейс объектов скрывающий все детали реализации. Другое дело что мне пришлось в статье описать все реализацию целиком, и поэтому многим показалось что это сложно. Но что бы использовать объекты моего типа даже не обязательно знать, как все это устроено внутри.
Василий, огромное спасибо за статью! Читал просто в захлёб! Пошло очень легко, видимо я созрел для такого материала. Над некоторыми вопросами, освещенными в статье, я, как и многие трейдеры, размышлял. Какие-то решил, какие-то нет. А какие-то были только в виде смутной идеи. И было очень приятно-неожиданно увидеть все в таком систематическом изложении.
Масштаб решаемых вопросов и, тем более, перспектив огромен. Не всякий "ум" дозрел даже до их постановки, не говоря уже о решении. В этом причина комментариев в стиле басни Крылова "Лиса и виноград", ибо "хоть видит око, да зуб неймет." А стремление к самоутверждению неукротимо, поэтому комментируют и надеются, что другие подумают: "Ай, Моська! знать, она сильна, что лает на Слона!" :) Не стоит даже обращать на это внимание.
Продолжайте творить, с нетерпением ждем продолжения!
P.S. Хотя на MetaTrader 5 еще нельзя работать в реале, можно воспользоваться статьей "Копирование торговли из MetaTrader 5 в MetaTrader 4". Очень толковая, проверенная вещь! Так что всё очень актуально и можно использовать в торговле уже сегодня!
По моему статью надо переименовать - зачем просто, когда можно сделать сложно.
верно подмечено.
По крайней мере, суть того, что хотел донести до читателей автор я понял (или считаю, что понял).
про это и речь. Про суть что написано поняли все. Кто из прочитавших воспримет приложенные коды как готовую реализацию какого-то этапа разработки? Да практически никто кроме автора. Статья получилась ознакомительной, из которой можно взять только идею, а не код. А для этого столько букофф не надо было делать.
Если назвался груздем, так полезай в кузовок. Решили занятся обучением других, или поделится своими наработками, тогда писать надо, продумывая каждое слово и структуру излагаемой информации. Если мысли гуляют, и хочется объять необъятное и писать про все на свете, то и нечего браться за написание статей фундаментального плана. И слова, что это версия 1.0 бета неподходят. Так как этим портится репутация грамотного кодера.
Руководству форума желаю внимательней относится к публикуемым материалам и осуществлять более жесткий контроль авторских работ (не только статей но и кодов). И только ради набива числа публикаций не стоит брать все подряд. Чтоб не получилось как c Codebase в MQL4. Действительно ценные работы без аналогов теряются за сотней версий 1.0 бета.
Руководству форума желаю...
1. Не указывайте мне как писать и что писать.
2. Не указывайте корпорации MetaQuotes Software какую маркетинговую политику ей проводить, и как оценивать и выбирать авторов для своего продукта.
Рассматривайте эти пункты ни как пожелание, а как предупреждение. Если Вы и дальше будете продолжать распространять негатив в ветке форума посвященной моей статье, а также указывать MetaQuotes, что ей и как делать, то это будет расценено мной как попытка очернить проделанную мной работу и подвергнуть сомнению профессионализм команды MetaQuotes. В этом случае я оформлю соответственную жалобу модераторам этого раздела, и у меня есть серьезные основания, что возникший конфликт между мной и вами решиться в мою пользу.
Давайте не будем доводить дело до официальных выяснений отношений и просто пойдем на мировое соглашение: вы прекратите писать в ветке посвященной моей статье информацию, которая ни как не относится к рассматриваемой здесь теме и перестанете очернять проделанную мной работу. Будет лучше если вы вообще перестанете что-либо здесь писать. Мне ясна ваша точка зрения, вы высказали ее на предыдущих страницах. Я не согласен с ней, а вы не согласны с моим мнением. Я считаю, что мы оба интеллигентные люди и на этом прекратим бесполезную полемику.
Руководству форума желаю внимательней относится к публикуемым материалам и осуществлять более жесткий контроль авторских работ (не только статей но и кодов). И только ради набива числа публикаций не стоит брать все подряд. Чтоб не получилось как c Codebase в MQL4. Действительно ценные работы без аналогов теряются за сотней версий 1.0 бета.
+1
Я думаю, что раздел " Статьи " надо будеть полезен для потребителям !!! Надо облекчает, не пугает и спутает их !
А сейчас - "Чукча писатель, чукча не читатель" ....
>>>Только представьте, ваш один единственный эксперт торгует сразу по нескольким десяткам торговых стратегий, сразу на всех доступных инструментах и сразу на всех возможных таймфреймах! К тому же этот эксперт прекрасно тестируется в тестере, а для всех стратегий, входящих в его состав, действует одна или сразу несколько систем управления капиталом.<<<
Именно так мой эксперт торгующий на чемпионате и устроен. Все, как мне кажется, проще. Главное - правильно все спроектировать и не мешать в одну кучу.
Приведенный Вами пример на самом деле очень похож на мой. Различий меньше чем может показаться. Все также реализовано через классы и каждая класс-стратегия имеет свои независимые параметры. Самое большое различие в их компоновке, у Вас все стратегии обрабатывает диспетчер, у меня они обрабатываются в списке типа CObject. На самом деле мой подход не сколько не сложнее Вашего, просто мы говорим о одинаковых вещах, но разным языком.
Изначально я задумывал решить своим подходом любое сочетание трех "мульти-": мультитаймфрейм, мультистратегия, мультиинструмент. Сейчас я вижу в нем гораздо больше. Во второй части, я думаю осветить проблему решений эксперта. Эксперт будет сам решать, как ему торговать, чем ему торговать и когда ему торговать. Все это позволяет мой подход. Наверное и ваш подход тоже, и это хорошо, потому что несколько решений одного и того же это развитие.
Кстати можно посмотреть на реализацию самого диспетчера?
Реализацию выкладывать не буду. Тут и так все понятно. Стратегии все потомки CObject. Но их обрабатывает диспетчер. Нужно идти от простого к сложному. Простой интерфейс объектов, для внешнего наблюдателя, должен скрывать все детали реализации. Просто я хочу сказать ничего экстраординарного в мульти мульти мульти нет вообще. Имея ООП и полиморфизм это все просто делается.
Василий, огромное спасибо за статью! Читал просто в захлёб! Пошло очень легко, видимо я созрел для такого материала. Над некоторыми вопросами, освещенными в статье, я, как и многие трейдеры, размышлял. Какие-то решил, какие-то нет. А какие-то были только в виде смутной идеи. И было очень приятно-неожиданно увидеть все в таком систематическом изложении.
Масштаб решаемых вопросов и, тем более, перспектив огромен. Не всякий "ум" дозрел даже до их постановки, не говоря уже о решении. В этом причина комментариев в стиле басни Крылова "Лиса и виноград", ибо "хоть видит око, да зуб неймет." А стремление к самоутверждению неукротимо, поэтому комментируют и надеются, что другие подумают: "Ай, Моська! знать, она сильна, что лает на Слона!" :) Не стоит даже обращать на это внимание.
Продолжайте творить, с нетерпением ждем продолжения!
P.S. Хотя на MetaTrader 5 еще нельзя работать в реале, можно воспользоваться статьей "Копирование торговли из MetaTrader 5 в MetaTrader 4". Очень толковая, проверенная вещь! Так что всё очень актуально и можно использовать в торговле уже сегодня!
......
За что же, не боясь греха,
Кукушка хвалит Петуха?
лучше заслуженно похвалить, чем необоснованно оговорить