Отладка DLL в МТ5? - страница 2

 
Alexey Volchanskiy:

Тоже интересно, просьба ТС провести тесты. Тут как-то давно проводились тесты MQL4/5 на скорость, кто может ссылку дать? 

Там заведомая катастрофа даже без тестов.
 
Alexey Volchanskiy:

Тоже интересно, просьба ТС провести тесты. Тут как-то давно проводились тесты MQL4/5 на скорость, кто может ссылку дать? 


какие тесты, в гугле почитайте что такое питон :)

 
Alexey Volchanskiy:

Как выводили на экран через ДЛЛ? Непосредственно писали через GDI+ или DirectX?


Зачем так сложно. Через канвас. Ведь канвас - это просто одномерный массив m_pixels[], и в длл я передаю только ссылку на этот массив. Я создал в канвасе две одинаковых функции, которые рисуют градиентный канал, который смешивается с фоном:

void              FillChannelSG   (int x1,int y1,int y2,int x2,int y3,color clr,double mix0,double mix);
void              FillChannelDllSG(int x1,int y1,int y2,int x2,int y3,color clr,double mix0,double mix);

где FillChannelSG написана на MQL5 , а FillChannelDllSG на C++, благо языки то практически одинаковые.

#import "Canvas.dll"
void   FillChannelSGC(uint &m_pixels[],int m_height,int m_width,int x1,int y1,int y2,int x2,int y3,long clr,double mix0,double mix);
#import
....
void CCanvas::FillChannelDllSG(int x1,int y1,int y2,int x2,int y3,color clr,double mix0,double mix) // mix от 0 до 1
  {
   FillChannelSGC(m_pixels,m_height,m_width,x1,y1,y2,x2,y3,(long)clr,mix0,mix);
   return;
  }

а из самого тела индикатора :

for(int i=(int)ch[0];i>0;i--)
           {              
            to1=GetMicrosecondCount();
            Canvas.FillChannelDllSG(X[i][1],Y[i][1],Y[i][1]+(Y[i][2]-Y[i][1])/2,X[i][2],Y[i][4]+(Y[i][2]-Y[i][1])/2,MixColors(colb,col[(int)ch[0]-i],pro),pro0,pro2);
            Canvas.FillChannelDllSG(X[i][1],Y[i][1],Y[i][1]-(Y[i][2]-Y[i][1])/5,X[i][2],Y[i][4]-(Y[i][2]-Y[i][1])/5,MixColors(colb,col[(int)ch[0]-i],pro),pro0,0.0);
            Canvas.FillChannelDllSG(X[i][1],Y[i][2],Y[i][2]-(Y[i][2]-Y[i][1])/2,X[i][2],Y[i][3]-(Y[i][2]-Y[i][1])/2,MixColors(colb,col[(int)ch[0]-i],pro),pro0,pro2);
            Canvas.FillChannelDllSG(X[i][1],Y[i][2],Y[i][2]+(Y[i][2]-Y[i][1])/5,X[i][2],Y[i][3]+(Y[i][2]-Y[i][1])/5,MixColors(colb,col[(int)ch[0]-i],pro),pro0,0.0);
            to2 += GetMicrosecondCount()-to1;
            to1=GetMicrosecondCount();
            Canvas.FillChannelSG(X[i][1],Y[i][1],Y[i][1]+(Y[i][2]-Y[i][1])/2,X[i][2],Y[i][4]+(Y[i][2]-Y[i][1])/2,MixColors(colb,col[(int)ch[0]-i],pro),pro0,pro2);
            Canvas.FillChannelSG(X[i][1],Y[i][1],Y[i][1]-(Y[i][2]-Y[i][1])/5,X[i][2],Y[i][4]-(Y[i][2]-Y[i][1])/5,MixColors(colb,col[(int)ch[0]-i],pro),pro0,0.0);
            Canvas.FillChannelSG(X[i][1],Y[i][2],Y[i][2]-(Y[i][2]-Y[i][1])/2,X[i][2],Y[i][3]-(Y[i][2]-Y[i][1])/2,MixColors(colb,col[(int)ch[0]-i],pro),pro0,pro2);
            Canvas.FillChannelSG(X[i][1],Y[i][2],Y[i][2]+(Y[i][2]-Y[i][1])/5,X[i][2],Y[i][3]+(Y[i][2]-Y[i][1])/5,MixColors(colb,col[(int)ch[0]-i],pro),pro0,0.0);
            to3 += GetMicrosecondCount()-to1;
           }
 

Тесты делать не буду. Времени нет. Есть более важные задачи. Питон медленный интерпретируемый язык. Но смысл его не в скорости, а в богатстве готовых библиотек. Для машинного обучения и анализа данных он является стандартом.

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