Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 589

 
Frostr:
я его уже распотрошил... там гистограмма, вот если способа с барами не найдется придется ее юзать...
Тебе больше нравятся бары, а не свечи? Интересный вопрос, но тратить на него время жалко. По сути бар это тоже гистограмма, а к ней прилеплена метка Open и Close
Если не заморачиваться цветом этих меток, то можно применить и такой метод как в Х.А. Просто посчитать ширину бара в пикселях (есть возможность, я проверял, но не помню где это в справке) и назначить такую ширину гистограммы, а Open и Close останутся цвета заданного в свойствах графика.
 

Почему переопределенный виртуальный метод Compare переопределенный в классе CListNode игнорируется?

#include <Arrays\List.mqh>
#define SIZE 10

class CData : public CObject
  {
public:
   int m_data;
  };

class CListNode : public CList
  {
public:
   virtual int Compare(const CObject *node,const int mode=0) const {
      int _test=1;
      return(_test);
   }
  };

int OnInit() {
        CListNode *node=new CListNode;
        if(CheckPointer(node)==POINTER_INVALID) {
           Print("Не могу создать объект");
           return(INIT_FAILED);
        }
        else Print("Объект создан, работаем дальше");

        MathSrand(GetTickCount());
        for(int i=0;i<SIZE;i++) {
           CData *data=new CData;
           if(data==NULL) {
              Print("Нет возможности получить указатель");delete node;return(INIT_FAILED);
           }
           printf("Узел %i, данные узла %i",i,data.m_data=MathRand());
           node.Add(data);
        }
        
        node.Sort(0);
        int _total=node.Total();
        for(int i=0;i<_total;i++) {
           CData *data=node.GetNodeAtIndex(i);
           if(data==NULL) {
              Print("Нет возможности получить указатель");delete node;return(INIT_FAILED);
           }
           printf("Узел %i, данные узла %i",i,data.m_data);
        }

        if(CheckPointer(node)==POINTER_DYNAMIC) {Alert("Удаляем объект");delete node;}
        else Alert("Non-dynamic object");
   return(INIT_SUCCEEDED);
}
Проверял в отладчике, всегда используется Compare из CObject
 

Здравствуйте, написал вот такой советник. Почему alert сообщает о сигнале не продажу почти каждую секунду?

//+------------------------------------------------------------------+

//| Peresechenie TM.mq4 |

//| Попов Владимир |

//| http://vk.com/id143715412 |

//+------------------------------------------------------------------+

#property copyright "Попов Владимир"

#property link "http://vk.com/id143715412&quot;


double SellPrice;

double TakeProfit;

double StopLoss;


extern string TimeFrame = "current time frame";

extern int HalfLength = 20;

extern int Price = PRICE_CLOSE;

extern double ATRMultiplier = 2.0;

extern int ATRPeriod = 100;

extern bool Interpolate = true;



double PriceHigh, PriceLow, PriceMiddle;

double HighesBuffer[];

double LowesBuffer[];

//+------------------------------------------------------------------+

//| expert initialization function |

//+------------------------------------------------------------------+

int init()

{

if (Digits == 3 || Digits == 5)

{

TakeProfit *= 10;

StopLoss *= 10;

}

return(0);

}

//+------------------------------------------------------------------+

//| expert deinitialization function |

//+------------------------------------------------------------------+

int deinit()

{





return(0);

}

//+------------------------------------------------------------------+

int start()

{

PriceHigh = iCustom (Symbol (), 0, "Time", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate, 2, 0);

PriceLow = iCustom (Symbol (), 0, "Time", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate, 1, 0);

PriceMiddle = iCustom (Symbol (), 0, "Time", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate, 0, 0);


if(Ask <= PriceLow)

{

Alert("Сигнал к покупке");

}

if(Bid >= PriceHigh)

{

Alert("Сигнал к продаже");

}

return(0);

}

//+------------------------------------------------------------------+

 

Подскажите пожалуйста кто знает, возможно ли автоматическое сохранение отчета после тестирования?

Просто нужно сделать много тестовых прогонов в автоматическом режиме (планирую через оптимизацию без ГА) и чтобы полный отчет (включая картинку) о них сохранялся на HDD.

 
tuner:

Подскажите пожалуйста кто знает, возможно ли автоматическое сохранение отчета после тестирования?

Просто нужно сделать много тестовых прогонов в автоматическом режиме (планирую через оптимизацию без ГА) и чтобы полный отчет (включая картинку) о них сохранялся на HDD.


Есть функция TesterStatistics() и OnTester()

Посмотрите их, может поможет

 
Pr0t0tip:

Здравствуйте, написал вот такой советник. Почему alert сообщает о сигнале не продажу почти каждую секунду?



Попробуйте замените

if(Ask <= PriceLow)

 {

 Alert("Сигнал к покупке");

 }

 if(Bid >= PriceHigh)

 {

 Alert("Сигнал к продаже");

 }

 return(0);

на

int static flag=0;
if(Ask <= PriceLow && flag<1)

 {

 Alert("Сигнал к покупке");
flag=1;
 }

 else if(Bid >= PriceHigh && flag>-1)

 {

 Alert("Сигнал к продаже");
flag=-1;
 }
else flag=0;

 return(0);
 
Vinin:


Есть функция TesterStatistics() и OnTester()

Посмотрите их, может поможет


Благодарю за совет, но кажется это не поможет, т.к. нужен именно сам отчет в оригинальном виде (htm) с картинкой. Похоже что готового решения не существует. Попробую сделать скрипт на autoit, который в тестере указанное количество раз нажимает на кнопку "Старт" и после каждого прогона заходит на вкладку "Отчет" и сохраняет результаты в файл
 

Здравствуйте! Помогите, пожалуйста, с такой проблемой: начиная с билда 625, в тестере МТ4 при запуске на график индикатора не выводятся значения от информационных функций Alert (...), Print(...), Comment(...); эти значения выводятся при запуске индикатора на реальную торговлю или через отладчик. Получается, что на исторических данных становится не возможным с данным билдом отслеживать изменения параметров через хотя бы функцию Print(...). С 610-м билдом не было проблем, все значения выводились во вкладке "эксперты" в терминале.

Может быть код надо как-то переделывать на манер MQL5? Не знаю, что делать, пока приходиться со старым билдом работать...

 

Здравствуйте. Встречался уже кто-нибудь с такой проблемой?

В папке есть несколько советников, но на терминале (МТ 4, билд 625) их нет. И те которые есть на терминале - нет в папке. Чудеса?



 
Ale-xander:

Здравствуйте. Встречался уже кто-нибудь с такой проблемой?

В папке есть несколько советников, но на терминале (МТ 4, билд 625) их нет. И те которые есть на терминале - нет в папке. Чудеса?



Никаких чудес.

Файл --> Открыть каталог данных --> В открывшемся окне --> MQL4 --> и вот тут и лежат нужные привычные вам папочки. Это уже триста раз всё расписано, находится на главной странице форума ссылка на статью. Лень просто.