Как определить декомпил или нет? - страница 12

 
Andrey F. Zelinsky:

почему на 4м форуме? -- он сейчас здесь -- и в маркете и во фрилансе орудует.

Вот пример его кода в кодабазе https://www.mql5.com/ru/code/9835 

Ким во всех своих функциях писал:

Но если посмотреть код "деятеля", то там копирайт кима потёрт. 

Где тут ораторы-правозащитники?  

Вот где реально нарушаются авторские права.

Функции в том шаблоне взяты вчистую практически у Игоря. Лишь название сменил и в шапке копирайт Игоря удалён. При этом вместо копирайта Игоря вставлен свой внаглую:

string Autor=" Автор функции для шаблона : www.expforex.at.ua";

Однозначное присвоение себе чужих заслуг и нарушение авторства Игоря с подменой авторства на себя.

 
Artyom Trishkin:

Функции в том шаблоне взяты вчистую практически у Игоря. Лишь название сменил и в шапке копирайт Игоря удалён. При этом вместо копирайта Игоря вставлен свой внаглую:

Однозначное присвоение себе чужих заслуг и нарушение авторства Игоря с подменой авторства на себя.

Интересно, почему МК не удалит его кода с кодабазы?

Ведь нарушение авторских прав явное и его легко проверить. Кода Кима в свободном доступе.

Почему вопросы такого нарушения авторских прав не поднимаются? 

Вот Условия использования https://www.mql5.com/ru/about/terms:

3.9. Вы соглашаетесь не воспроизводить, не копировать, не продавать, не обменивать и не перепродавать содержание сайта www.mql5.com. Исключением являются случаи, когда отдельным соглашением с компанией MQL5 Ltd разрешено иное. В случае изготовления копий любых материалов Контента на таких копиях следует сохранять все уведомления об авторском и других имущественных правах, содержащихся в оригинальных материалах. Вы не имеете права изменять Контент, а также открыто демонстрировать, открыто воспроизводить или распространять его. Сайт mql5.com принадлежит компании MQL5 Ltd. Веб-сайты MQL5 Ltd защищены международными законами об авторских правах. Любое несанкционированное использование Веб-сайтов MQL5 Ltd может привести к нарушению законов об авторских правах, товарных знаках и других законов. 

Чёткое, однозначное, сознательное, грубое и циничное нарушение -- причём безнаказанное.
 

Функция Игоря SetOrder()

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 13.03.2008                                                     |
//|  Описание : Установка ордера.                                              |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (NULL или "" - текущий символ)          |
//|    op - операция                                                           |
//|    ll - лот                                                                |
//|    pp - цена                                                               |
//|    sl - уровень стоп                                                       |
//|    tp - уровень тейк                                                       |
//|    mn - Magic Number                                                       |
//|    ex - Срок истечения                                                     |
//+----------------------------------------------------------------------------+
void SetOrder(string sy, int op, double ll, double pp,
              double sl=0, double tp=0, int mn=0, datetime ex=0) {
  color    clOpen;
  datetime ot;
  double   pa, pb, mp;
  int      err, it, ticket, msl;
  string   lsComm=WindowExpertName()+" "+GetNameTF(Period());

  if (sy=="" || sy=="0") sy=Symbol();
  msl=MarketInfo(sy, MODE_STOPLEVEL);
  if (op==OP_BUYLIMIT || op==OP_BUYSTOP) clOpen=clOpenBuy; else clOpen=clOpenSell;
  if (ex>0 && ex<TimeCurrent()) ex=0;
  for (it=1; it<=NumberOfTry; it++) {
    if (!IsTesting() && (!IsExpertEnabled() || IsStopped())) {
      Print("SetOrder(): Остановка работы функции");
      break;
    }
    while (!IsTradeAllowed()) Sleep(5000);
    RefreshRates();
    ot=TimeCurrent();
    ticket=OrderSend(sy, op, ll, pp, Slippage, sl, tp, lsComm, mn, ex, clOpen);
    if (ticket>0) {
      if (UseSound) PlaySound(NameFileSound); break;
    } else {
      err=GetLastError();
      if (err==128 || err==142 || err==143) {
        Sleep(1000*66);
        if (ExistOrders(sy, op, mn, ot)) {
          if (UseSound) PlaySound(NameFileSound); break;
        }
        Print("Error(",err,") set order: ",ErrorDescription(err),", try ",it);
        continue;
      }
      mp=MarketInfo(sy, MODE_POINT);
      pa=MarketInfo(sy, MODE_ASK);
      pb=MarketInfo(sy, MODE_BID);
      // Неправильные стопы
      if (err==130) {
        switch (op) {
          case OP_BUYLIMIT:
            if (pp>pa-msl*mp) pp=pa-msl*mp;
            if (sl>pp-(msl+1)*mp) sl=pp-(msl+1)*mp;
            if (tp>0 && tp<pp+(msl+1)*mp) tp=pp+(msl+1)*mp;
            break;
          case OP_BUYSTOP:
            if (pp<pa+(msl+1)*mp) pp=pa+(msl+1)*mp;
            if (sl>pp-(msl+1)*mp) sl=pp-(msl+1)*mp;
            if (tp>0 && tp<pp+(msl+1)*mp) tp=pp+(msl+1)*mp;
            break;
          case OP_SELLLIMIT:
            if (pp<pb+msl*mp) pp=pb+msl*mp;
            if (sl>0 && sl<pp+(msl+1)*mp) sl=pp+(msl+1)*mp;
            if (tp>pp-(msl+1)*mp) tp=pp-(msl+1)*mp;
            break;
          case OP_SELLSTOP:
            if (pp>pb-msl*mp) pp=pb-msl*mp;
            if (sl>0 && sl<pp+(msl+1)*mp) sl=pp+(msl+1)*mp;
            if (tp>pp-(msl+1)*mp) tp=pp-(msl+1)*mp;
            break;
        }
        Print("SetOrder(): Скорректированы ценовые уровни");
      }
      Print("Error(",err,") set order: ",ErrorDescription(err),", try ",it);
      Print("Ask=",pa,"  Bid=",pb,"  sy=",sy,"  ll=",ll,"  op=",GetNameOP(op),
            "  pp=",pp,"  sl=",sl,"  tp=",tp,"  mn=",mn);
      if (pa==0 && pb==0) Message("SetOrder(): Проверьте в обзоре рынка наличие символа "+sy);
      // Блокировка работы советника
      if (err==2 || err==64 || err==65 || err==133) {
        gbDisabled=True; break;
      }
      // Длительная пауза
      if (err==4 || err==131 || err==132) {
        Sleep(1000*300); break;
      }
      // Слишком частые запросы (8) или слишком много запросов (141)
      if (err==8 || err==141) Sleep(1000*100);
      if (err==139 || err==140 || err==148) break;
      // Ожидание освобождения подсистемы торговли
      if (err==146) while (IsTradeContextBusy()) Sleep(1000*11);
      // Обнуление даты истечения
      if (err==147) {
        ex=0; continue;
      }
      if (err!=135 && err!=138) Sleep(1000*7.7);
    }
  }
}
//+----------------------------------------------------------------------------+

Функция господина, присваивающего себе чужое:

//+------------------------------------------------------------------+
//|              Установка отложенного ордера                        |
//+------------------------------------------------------------------+
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (NULL или "" - текущий символ)          |
//|    op - операция                                                           |
//|    ll - лот                                                                |
//|    pp - цена                                                               |
//|    sl - уровень стоп                                                       |
//|    tp - уровень тейк                                                       |
//|    mn - Magic Number                                                       |
//|    ex - Срок истечения                                                     |
//+----------------------------------------------------------------------------+
int SetOrder(string sy,int op,double ll,double pp,
             double sl=0,double tp=0,int mn=0,datetime ex=0,string lsComm="")
  {
   color    clOpen;
   datetime ot;
   double   pa,pb,mp;
   int      err,it,ticket,msl;
   string Autor=" Автор функции для шаблона : www.expforex.at.ua";

   if(sy=="" || sy=="0") sy=Symbol();
   msl=MarketInfo(sy,MODE_STOPLEVEL);
   if(ex>0 && ex<TimeCurrent()) ex=0;
   for(it=1; it<=5; it++)
     {
      if(!IsTesting() && (!IsExpertEnabled() || IsStopped()))
        {
         Print("SetOrder(): Остановка работы функции");
         break;
        }
      while(!IsTradeAllowed()) Sleep(5000);
      RefreshRates();
      ot=TimeCurrent();
      if(!MarketWatch)ticket=OrderSend(sy,op,ll,NormalizeDouble(pp,MarketInfo(sy,MODE_DIGITS)),Slippage,NormalizeDouble(sl,MarketInfo(sy,MODE_DIGITS)),NormalizeDouble(tp,MarketInfo(sy,MODE_DIGITS)),lsComm,mn,ex,clOpen);
      if(MarketWatch)

        {
         ticket=OrderSend(sy,op,ll,NormalizeDouble(pp,MarketInfo(sy,MODE_DIGITS)),Slippage,0,0,lsComm,mn,ex,clOpen);
         if(SBT(ticket)) ModifyOrder(-1,sl,tp);
        }

      if(ticket>0)
        {

         return(ticket);
         break;
           } else {
         err=GetLastError();
         if(err==128 || err==142 || err==143)
           {
            Sleep(1000*66);

            continue;
           }
         mp=MarketInfo(sy, MODE_POINT);
         pa=MarketInfo(sy, MODE_ASK);
         pb=MarketInfo(sy, MODE_BID);
         if(pa==0 && pb==0) Comment("SetOrder(): Проверьте в обзоре рынка наличие символа "+sy);
         // Неправильные стопы
         if(err==130)
           {
            switch(op)
              {
               case OP_BUYLIMIT:
                  if(pp>pa-msl*mp) pp=pa-msl*mp;
                  if(sl>pp-(msl+1)*mp) sl=pp-(msl+1)*mp;
                  if(tp>0 && tp<pp+(msl+1)*mp) tp=pp+(msl+1)*mp;
                  break;
               case OP_BUYSTOP:
                  if(pp<pa+(msl+1)*mp) pp=pa+(msl+1)*mp;
                  if(sl>pp-(msl+1)*mp) sl=pp-(msl+1)*mp;
                  if(tp>0 && tp<pp+(msl+1)*mp) tp=pp+(msl+1)*mp;
                  break;
               case OP_SELLLIMIT:
                  if(pp<pb+msl*mp) pp=pb+msl*mp;
                  if(sl>0 && sl<pp+(msl+1)*mp) sl=pp+(msl+1)*mp;
                  if(tp>pp-(msl+1)*mp) tp=pp-(msl+1)*mp;
                  break;
               case OP_SELLSTOP:
                  if(pp>pb-msl*mp) pp=pb-msl*mp;
                  if(sl>0 && sl<pp+(msl+1)*mp) sl=pp+(msl+1)*mp;
                  if(tp>pp-(msl+1)*mp) tp=pp-(msl+1)*mp;
                  break;
              }
            Print("SetOrder(): Скорректированы ценовые уровни"+sy+"--op-"+op+"--ll-"+ll+"--pp-"+pp+"---"+Slippage+"--sl-"+sl+"--tp-"+tp+"---"+lsComm+"---"+mn+"---"+ex+"---"+clOpen);
           }
         // Блокировка работы советника
         if(err==2 || err==64 || err==65 || err==133)
           {
            break;
           }
         // Длительная пауза
         if(err==4 || err==131 || err==132)
           {
            Sleep(1000*300); break;
           }
         // Слишком частые запросы (8) или слишком много запросов (141)
         if(err==8 || err==141) Sleep(1000*100);
         if(err==139 || err==140 || err==148) break;
         // Ожидание освобождения подсистемы торговли
         if(err==146) while(IsTradeContextBusy()) Sleep(1000*11);
         // Обнуление даты истечения
         if(err==147)
           {
            ex=0; continue;
           }
         if(err!=135 && err!=138) Sleep(1000*7.7);
        }
     }
  }
//+------------------------------------------------------------------+

И скажите ещё, что не присвоил потому, что пару-тройку строчек поменял...

И таких примеров присвоения трудов Игоря я могу выложить сколь угодно.

 
Artyom Trishkin:

Функция Игоря SetOrder()

Функция господина, присваивающего себе чужое:

И скажите ещё, что не присвоил потому, что пару-тройку строчек поменял...

Не, ну ты не прав -- у Кима написано "установка ордера" -- а у него "установка отложенного ордера" -- чувствуешь разницу? неужели ты не замечаешь неоценимый вклад в развитие кода Кима?

 
Andrey F. Zelinsky:
Не, ну ты не прав -- у Кима написано "установка ордера" -- а у него "установка отложенного ордера" -- чувствуешь разницу? неужели ты не замечаешь неоценимый вклад в развитие кода Кима?
Блиннн... Засада...
 

Кстати, у него в коде Кима не просто удалено авторское право, а есть добавление о своём авторстве:

string Autor=" Автор функции для шаблона : www.expforex.at.ua";

Если посмотреть его код в кодабазе, то перебивка авторства Кима на своё авторство присутствует в каждой функции Кима.

Для примера https://www.mql5.com/ru/code/9835 .

 

Вопрос на засыпку: что является копирайтом?

 1

//|                  Copyright 2015, Urain |

 2 

#property copyright "Copyright 2015, Urain"

Первое или второе? или и то и другое?

 
Andrey F. Zelinsky:

Кстати, у него в коде Кима не просто удалено авторское право, а есть добавление о своём авторстве:

Если посмотреть его код в кодабазе, то перебивка авторства Кима на своё авторство присутствует в каждой функции Кима.

Для примера https://www.mql5.com/ru/code/9835 .

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

С чего Вы взяли что не знаю ? Я не принимаю участие в сервисе фриланс, но иногда пишу на заказ. Это пример не обдуманного обвинения )))

Не сталкивался, но наверняка знать не могу. Сталкивался с тем, что коды моих хороших знакомых выдавали за свои, поменяв в исходнике шапку, и оставив остальной код "как есть". Даже у нас это было и обсуждалось. На четвёртом форуме один деятель коды Игоря Кима выдавал за свои. Нагло и бесцеремонно. Исходники. Это подло, мерзко и низко.

Вот это один из принципиальных моментов - вы не знаете кухни, но пытаетесь стать сразу шеф-поваром

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

Нет, не могу. Но и вы не можете доказать, что заказчик зарабатывает на взломе чужих кодов. Или у нас презумпцию невиновности уже отменили? Так что потрудитесь сначала доказать виновность.

А то я вам сейчас покажу код, похожий на декомпил - вором станете потому, что увидели этот код.

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

Что тут доказывать ? Факт на лицо декомпил в студии , а не знание правил не освобождает от ответственности.

 
Nikolay Demko:

Вопрос на засыпку: что является копирайтом?

 1

 2 

Первое или второе? или и то и другое?

А ты сам как считаешь?

Вот например, авторство?

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 12.03.2008                                                     |
//|  Описание : Возвращает флаг существования ордеров.                         |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любой ордер)                    |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//|    ot - время открытия             ( 0   - любое время установки)          |
//+----------------------------------------------------------------------------+
bool ExistOrders(string sy="", int op=-1, int mn=-1, datetime ot=0) {
  int i, k=OrdersTotal(), ty;
 
  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      ty=OrderType();
      if (ty>1 && ty<6) {
        if ((OrderSymbol()==sy || sy=="") && (op<0 || ty==op)) {
          if (mn<0 || OrderMagicNumber()==mn) {
            if (ot<=OrderOpenTime()) return(True);
          }
        }
      }
    }
  }
  return(False);
}
Причина обращения: