Обсуждение статьи "Создание мульти-экспертов на основе торговых моделей" - страница 4

 

Спасибо большое автору за статью и код. Сегодня переделал код простенького советника под класс модели. После некоторых усилий получилось добиться параллельной работы на разных парах и таймфреймах.

Единственное, что пришлось поправить в коде - слегка модернизировать функцию GetMyPosition(), чтобы она считала объем только по символу, переданному в качестве параметра. В противном случае модель, работающая по связке двух и более пар при вызове GetMyPosition() получает совокупный объем по нескольким парам вместо необходимого отдельного объема по каждой. Ну и еще добавил метод в класс CTableOrders для получения символа ордера.

string            OrderSymbol(){return(m_symbol);}


Еще раз спасибо!

 

Спасибо друзья, за высокую оценку моего труда! Приятно осознавать, что рассматриваемые мною вопросы актуальны и нужны. Не будем вступать в полемику с малограмотными критиканами. Они будут всегда и их не переубедить даже в очевидном.

З.Ы. метод double GetMyPosition() лучше перегрузить соответствующим образом:  double GetMyPosition(string Symbol). Это придаст больше гибкости и универсальности.

Бесспорно,  со временем код будет совершенствоваться и изменяться, ведь учесть сразу все возможные области его применения невозможно.

Еще раз спасибо, и с наступающим Новым 2011 годом! Счастья и удачи!

 
Огромное спасибо автору за статью, обязательно возьму себе на вооружение.
 

Спасибо Василию за статью - на мой взгляд это пока что самый лучший подход. Просто неимоверно как можно было отладить этот код.

Василий - как вы отладили этот код без отладчика в тестере ? Мне очень сложно работать без отладчика в тестере - ведь сигналы бывают разные и по разным условиям.

Поделитесь опытом отладки. 

 

Hallo. Спасибо за этот замечательный туториал. Очень большая похвала вам.

Я отладил этот код и нашел ошибку в строке 355 в Model.mqh

switch(op_type)
 {
 case ORDER_TYPE_BUY:
 case ORDER_TYPE_SELL:
 rez=m_trade.PositionOpen(m_symbol,op_type,lot_send,price,0.0,0.0,comment);
 break;

в ORDER_TYPE_BUY: нет функции Funktion. Это правильно? Нет функции Buy?
Я изменил код в:

.
switch(op_type)
 {
 case ORDER_TYPE_BUY:
 rez=m_trade.PositionOpen(m_symbol,op_type,lot_send,price,0.0,0.0,comment);
 break;
 case ORDER_TYPE_SELL:
 rez=m_trade.PositionOpen(m_symbol,op_type,lot_send,price,0.0,0.0,comment);
 break;


Но, в Jornual вы видите, что у него нет длинной позиции, только короткая.


ea_modelclass



Я не нахожу ошибку. Нужна помощь.


MfG Кристиан

Файлы:
logfile.txt  100 kb
 
После последних обновлений терминала модель перестала работать. Может кто ни будь  объяснить, что случилось? 
 
YYURIYY:
После последних обновлений терминала модель перестала работать. Может кто ни будь  объяснить, что случилось? 


Аналогично. Уже неделю разбираю по запятым код. Стратегия выставляет ордера на продажу, но функция GetNumberOrders() возвращает всего ордеров на продажу = 0, а вот на покупку = 1.

Просьба к Василию, как разработчику данного кода, помочь. Я пока не могу выловить в чем причина.

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров - Документация по MQL5
 

Спасибо за эту статью!!!

Я рад, что все больше людей задумываются над этой идеей. Когда-то давно я пытался разработать шаблон мультивалютного мультистратегического советника на MQL4.

С приходом MQL5 я пытался разработать объектную модель такого советника и начать его реализовывать.

К сожалению, нет свободного времени на эту деятельность... :-(

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

Спасибо за это!!!

PS: вот ссылка, если вам будет интересно...

https:// www.mql5.com/en/forum/118148

Cooperation on interesting projects: TRENDLINE AUTOTRADER and UNIVERSAL MULTICURRENCY MULTISTRATEGY TRADER TEMPLATE - MQL4 forum
  • www.mql5.com
Cooperation on interesting projects: TRENDLINE AUTOTRADER and UNIVERSAL MULTICURRENCY MULTISTRATEGY TRADER TEMPLATE - MQL4 forum
 
YYURIYY:
После последних обновлений терминала модель перестала работать. Может кто ни будь  объяснить, что случилось? 

Кажеться разобрался. В коде необходимо изменить :

#property copyright "Copyright 2010, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"

#include <Trade\_OrderInfo.mqh>
#include <Trade\_HistoryOrderInfo.mqh>
#include <Arrays\List.mqh>
class CTableOrders : CObject
{
private:
   ulong             m_magic;       // Магик эксперта выставившего ордер
   ulong             m_ticket;      // Тикет  основного ордера
   ulong             m_ticket_sl;    // Тикет ордера выкупа сделки, совершенной на основании основного ордера (Stop Loss)
   ulong             m_ticket_tp;    // Тикет ордера выкупа сделки, совершенной на основании основного ордера (Take Profit)
   ENUM_ORDER_TYPE   m_type;         // Тип основного ордера
   datetime          m_time_setup;  // Время установки ордера
   double            m_price;       // Цена ордера
   double            m_sl;          // Цена предполагаемого Stop Loss
   double            m_tp;          // Цена предполагаемого Take Profit
   double            m_volume_initial;      // Объем ордера
public:
                     CTableOrders();
   bool              Add(COrderInfo &order_info, double stop_loss, double take_profit);
   bool              Add(CHistoryOrderInfo &history_order_info, double stop_loss, double take_profit);
   double            StopLoss(void){return(m_sl);}
   double            TakeProfit(void){return(m_tp);}
   ulong             Magic(){return(m_magic);}
   ulong             Ticket(){return(m_ticket);}
   int               Type() const;
   datetime          TimeSetup(){return(m_time_setup);}
   double            Price(){return(m_price);}
   double            VolumeInitial(){return(m_volume_initial);}
};

CTableOrders::CTableOrders(void)
{
   m_magic=0;
   m_ticket=0;
   m_type=0;
   m_time_setup=0;
   m_price=0.0;
   m_volume_initial=0.0;
}

bool CTableOrders::Add(CHistoryOrderInfo &history_order_info, double stop_loss, double take_profit)
{
   if(HistoryOrderSelect(history_order_info.Ticket())){
      m_magic=history_order_info.Magic();
      m_ticket=history_order_info.Ticket();
       m_type=history_order_info.OrderType();
      m_time_setup=history_order_info.TimeSetup();
      m_volume_initial=history_order_info.VolumeInitial();
      m_price=history_order_info.PriceOpen();
      m_sl=stop_loss;
      m_tp=take_profit;
      return(true);
   }
   else return(false);
}

bool CTableOrders::Add(COrderInfo &order_info, double stop_loss, double take_profit)
{
   if(OrderSelect(order_info.Ticket())){
      m_magic=order_info.Magic();
      m_ticket=order_info.Ticket();
      m_type=order_info.OrderType();
      m_time_setup=order_info.TimeSetup();
      m_volume_initial=order_info.VolumeInitial();
      m_price=order_info.PriceOpen();
      m_sl=stop_loss;
      m_tp=take_profit;
      return(true);
   }
   else return(false);
}

int   CTableOrders::Type() const
{
   return((ENUM_ORDER_TYPE)m_type);
}
 

Эта статья очень обширна и *очень* хорошо продумана.

Я не могу выразить словами, насколько я ценю ваши усилия по созданию этого фреймворка; вы также объяснили обоснование вашего подхода на понятном уровне (по крайней мере, для меня!). Эта статья идет гораздо дальше концепций, я согласен - это практическое, правильное, а главное разумное применение методов торговли и ОО программирования!

Просьба - можно ли перевести ваши комментарии в английских файлах? Далее, может ли кто-нибудь направить меня на инструменты для дальнейшей работы с русским языком? Комментарии в MetaEditor даже не отображаются как русский язык, скорее как беспорядочные акцентированные символы, не сильно отличающиеся от этого примера:

 // Èíèöèàëèçèóðóåì óêàçàòåëü ìîäåëüþ MACD

Я уже некоторое время использую Chrome+Google Translate для просмотра русского сайта, но на длинных статьях (особенно на этой) мне удается перевести лишь небольшую часть документа. Мне очень хотелось прочитать эту статью полностью, и пришлось ждать некоторое время, что, по крайней мере для меня, было трудно терпеть! Любые советы, как стать более дружелюбным к иностранным языкам, будут приняты с большим уважением!

Шедевр, господин Соколов. Мои комплименты и благодарность Вам за Ваш труд, и я с нетерпением жду реализации своих видений этого замечательного подхода к торговым системам. Вы разрешили многие противоречия, с которыми я столкнулся, пытаясь разработать систему, которая могла бы удовлетворить мои требования к системе, которой я в конечном итоге хочу торговать. Для оставшихся проблем, которые еще предстоит решить, этот фреймворк направляет мои усилия в правильном направлении.