Ошибки, баги, вопросы - страница 2062

 
Sergey Dzyublik:

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

Проблема: есть наработки за год фриланса, разные нестандартные фишки с WinApi и тд... полезные для сообщества. 
Но тратить время на их поиск, обработку, выкладку в кодобазу не вижу смысла - профита 0.


Предложение: предоставить в кодобазе кнопку "Поблагодорить", с помощью которой можно будет при желании задонатить автору в качестве благодарности определенную сумму за предоставленный код. 
Деньги ложатся на MQL счет, в свою очередь MQ изымает определенный процент за предоставляемый сервис.

Интересное предложение. Но в сервисдеск всё же лучше оформить.
 

MQL не умеет сравнивать значение на равенство с нулем? на не равенство умеет, а на равенство не?))


 
Nexxtor:

MQL не умеет сравнивать значение на равенство с нулем? на не равенство умеет, а на равенство не?))


Дело не в mql, а в особенностях предстааления вещественных чисел. По-моему, лишь единицы не знакомы с этим.
Сравнивайте нормализованную разницу двух вещественных чисел с нулём или с неким минимальным значением.
 
Nexxtor:

Работает только так:

else if (arg_buff_MyTrendIndicatorSellConfirmed[0]!=0.0 && mtr_isTrendConfirmed == false){

            //SetSettings("Sell");

            //ShortOpened();

            //mtr_isTrendConfirmed = true;

            //printf("Открытие по подтвержденному тренду позиции Sell (лишь один раз)");

            } 

         }

         if (arg_buff_MyNeuralNetworkIndicatorBuyConfirmed[0] != 0.0 && arg_buff_MyTrendIndicatorSell[0] == 0.0){

            SetSettings("Buy");

            LongOpened();

            printf("Открытие позиции Buy по "" при условии отсутствия тренда");

            }

         else if (arg_buff_MyNeuralNetworkIndicatorSellConfirmed[0] != 0.0 && arg_buff_MyTrendIndicatorBuy[0] == 0.0){

            SetSettings("Sell");

            ShortOpened();

            printf("Открытие позиции Sell по "" при условии отсутствия тренда");

            }


то есть после последнего else if опять начинать блок if  - else, и условие проверки на ноль тут не причем.

Еще один глюк в языке, который миллионами торгует))

Вы не выкладываете полный код, но при этом пыром гоните на язык. А уж что там у вас в коде намешано - не видно. Может на зеркало пеняете?
 
Nexxtor:

MQL не умеет сравнивать значение на равенство с нулем? на не равенство умеет, а на равенство не?))

Умеет, но почему-то с одним знаком равенства.

 
Комбинатор:
Ну может меня заглючило, но я думал кроме алглиба есть opencv хотя бы частично, но найти не смог

Не, такого не видел. OpenCV - это ж жуткая и большая круть по сравнению с алглибом. Если её кто-то и начал портировать на MQL то не скоро закончит ;-).

 
Есть два bmp-объекта с каналами прозрачности. При наложении друг на друга возникают какие-то uint-цвета. Как самому посчитать эти значения, если известны uint-цвета наложенных пикселей каждого объекта?
 
fxsaber:
Есть два bmp-объекта с каналами прозрачности. При наложении друг на друга возникают какие-то uint-цвета. Как самому посчитать эти значения, если известны uint-цвета наложенных пикселей каждого объекта?

static uchar      GetA(const uint fromcolor){return(uchar((fromcolor)>>24));}
   static uchar      GetR(const uint fromcolor){return(uchar((fromcolor)>>16));}
   static uchar      GetG(const uint fromcolor){return(uchar((fromcolor)>>8));}
   static uchar      GetB(const uint fromcolor){return(uchar(fromcolor));}
static uint       ARGBToColor(const uchar a,const uchar r,const uchar g,const uchar b){return((a<<24)|(r<<16)|(g<<8)|(b));}

static uint cColor::Mix(const uint bottom,const uint top)
  {
//===============
// if top color is not transparent => no mixing required
//===============
   if(cColor::GetA(top)==UCHAR_MAX)return(top);
//===============

//===============
   static uint bottomprev=0;
   static uint topprev=0;
   static uint resultprev=0;
//===============

//===============
   if(bottomprev==bottom && topprev==top)return(resultprev);
//===============

//===============
   bottomprev=bottom;
   topprev=top;
//===============

//===============
// Get Params of Colors
//===============
   double topA=(double)cColor::GetA(top);   double bottomA=(double)cColor::GetA(bottom);
   double topR=(double)cColor::GetR(top);   double bottomR=(double)cColor::GetR(bottom);
   double topG=(double)cColor::GetG(top);   double bottomG=(double)cColor::GetG(bottom);
   double topB=(double)cColor::GetB(top);   double bottomB=(double)cColor::GetB(bottom);
//===============

//===============
// Blend components
//===============
   uchar newA=uchar(topA+(bottomA*(255.0-topA)/255.0));
   uchar newR=uchar((topR*topA/255.0)+(bottomR*bottomA *(255.0-topA)/(255.0*255.0)));
   uchar newG=uchar((topG*topA/255.0)+(bottomG*bottomA *(255.0-topA)/(255.0*255.0)));
   uchar newB=uchar((topB*topA/255.0)+(bottomB*bottomA *(255.0-topA)/(255.0*255.0)));
//===============

//===============
   resultprev=cColor::ARGBToColor(newA,newR,newG,newB);
//===============

//===============
// New Color
//===============
   return(resultprev);
//===============
  }
 
Andrey Barinov:

Спасибо! Еще вопрос. Если, например, пять объектов одновременно накладываются друг на друга, то надо пары (top/bottom) составлять снизу-вверх или сверху-вниз?

 
fxsaber:

Спасибо!


Лучше сразу все (bmp) объекты на одном канвасе рисуйте, в долгосроке это более простой подход.