Comment puis-je savoir si j'ai décompilé ou non ? - page 12

 
Andrey F. Zelinsky:

pourquoi sur le forum 4 ? -- il est ici maintenant -- à la fois sur le marché et en freelance.

Voici un exemple de son code dans la base de code https://www.mql5.com/ru/code/9835.

Kim a écrit dans toutes ses fonctions :

Mais si vous regardez le code du "faiseur", le copyright de Kim est frotté là.

Où sont les orateurs des droits de l'homme ici ?

C'est là que le droit d'auteur est vraiment violé.

Les fonctions de ce modèle ont été reprises directement d'Igor. La seule chose qu'il a faite est de changer le nom et de retirer le copyright d'Igor dans l'en-tête. En même temps, au lieu du copyright d'Igor, j'ai inséré le mien de manière flagrante :

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

Un détournement évident des mérites de quelqu'un d'autre et une violation de la paternité d'Igor, en la remplaçant par la sienne.

 
Artyom Trishkin:

Les fonctions de ce modèle ont été reprises proprement d'Igor. J'ai seulement changé le nom et retiré le copyright d'Igor dans l'en-tête. Le copyright d'Igor est remplacé par le sien :

Détournement sans ambiguïté du crédit de quelqu'un d'autre et violation de la paternité d'Igor en se substituant à lui.

Je me demande pourquoi IC ne supprime pas son code de la base de code ?

Parce que la violation du droit d'auteur est évidente et facile à vérifier. Le code de Kim est librement disponible.

Pourquoi les questions relatives à cette violation des droits d'auteur ne sont-elles pas soulevées ?

Voici les conditions d'utilisation https://www.mql5.com/ru/about/terms :

3.9. vous acceptez de ne pas reproduire, copier, vendre, échanger ou revendre le contenu de www.mql5.com. La seule exception est si un accord séparé avec MQL5 Ltd permet le contraire. Si vous faites des copies de tout contenu, tous les droits d'auteur et autres avis de propriété contenus dans les documents originaux doivent être conservés sur ces copies. Vous ne pouvez pas modifier le contenu ni l'afficher, le reproduire ou le distribuer publiquement. Le site mql5.com est la propriété de MQL5 Ltd. Les sites Web de MQL5 Ltd sont protégés par les lois internationales sur le droit d'auteur. Toute utilisation non autorisée des sites Web de MQL5 Ltd peut constituer une violation des droits d'auteur, des marques de commerce et d'autres lois.

Une infraction claire, sans ambiguïté, délibérée, grossière et cynique - et en toute impunité.
 

La fonction SetOrder() d'Igor

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. 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);
    }
  }
}
//+----------------------------------------------------------------------------+

La fonction d'un gentleman qui s'approprie les affaires d'un autre :

//+------------------------------------------------------------------+
//|              Установка отложенного ордера                        |
//+------------------------------------------------------------------+
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    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);
        }
     }
  }
//+------------------------------------------------------------------+

Et dites-moi qu'il ne l'a pas attribué parce qu'il a changé quelques lignes...

Je peux fournir autant d'exemples de détournement de l'œuvre d'Igor que je veux.

 
Artyom Trishkin:

La fonction SetOrder() d'Igor

La fonction de l'auteur du détournement :

Et dites-moi qu'il ne l'a pas attribué parce qu'il a changé quelques lignes...

Eh bien, vous avez tort - dans celui de Kim, il est écrit "établir la commande" - et dans le sien, il estécrit "établir la commande en attente" - sentez-vous la différence ?

 
Andrey F. Zelinsky:
Non, eh bien, vous avez tort - celui de Kim dit "set order" - et le siendit "set pending order" - sentez-vous la différence ? Ne remarquez-vous pas la contribution inestimable au code de Kim ?
Oh, mec... C'est dommage...
 

D'ailleurs, le code de Kim n'est pas seulement dépourvu de droits d'auteur, mais il comporte également un ajout de sa propre paternité :

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

Si vous regardez son code dans la base de code, le remplacement de la paternité de Kim par sa propre paternité est présent dans chaque fonction de Kim.

Par exemple https://www.mql5.com/ru/code/9835 .

 

Question pour un quiz : qu'est-ce qu'un droit d'auteur ?

1

//|                  Copyright 2015, Urain |

2

#property copyright "Copyright 2015, Urain"

Le premier ou le second ? Ou les deux ?

 
Andrey F. Zelinsky:

D'ailleurs, le code de Kim n'est pas seulement dépourvu de droits d'auteur, mais il comporte également un ajout de sa propre paternité :

Si vous regardez son code dans la base de code, le remplacement de la paternité de Kim par sa propre paternité est présent dans chaque fonction de Kim.

Par exemple https://www.mql5.com/ru/code/9835 .

Eh bien, c'est ce que j'ai dit. Igor a même sa paternité dans chaque fonction de toutes ses bibliothèques. Même dans ces bibliothèques, qui ne sont pas dans le domaine public, mais pour un usage commercial.
 
C'est l'un des points fondamentaux - vous ne connaissez pas la cuisine, mais vous essayez de devenir un chef immédiatement.

Qu'est-ce qui te fait croire que je ne sais pas ? Je ne participe pas aux services de freelance mais il m'arrive d'écrire du code sur commande. C'est un exemple d'accusation inconsidérée))))

Je ne l'ai pas fait, mais je ne peux pas en être sûr. J'ai vu des codes de bons amis à moi se faire passer pour les leurs, en changeant l'en-tête dans le code source et en laissant le reste du code "tel quel". Il en a même été question dans notre forum. Sur le quatrième forum, une personne a présenté le code d'Igor Kim comme étant le sien. Avec insolence et sans cérémonie. Code source. C'est méprisable, ignoble et bas.

C'est l'un des points fondamentaux : vous ne connaissez pas la cuisine, mais vous essayez de devenir un chef.

Ne pensez pas que je suis pour les décompilations - non, je suis définitivement contre. Mais il faut regarder les circonstances. Soit vous pensez que toute personne qui vous offre un code est un voleur, soit vous réfléchissez avant d'accuser.

Non, je ne peux pas. Mais vous ne pouvez pas non plus prouver qu'un client gagne de l'argent en cassant le code de quelqu'un d'autre. Ou bien la présomption d'innocence a-t-elle été abolie ? Donc vous feriez mieux de prouver votre culpabilité d'abord.

Sinon, je vous montrerai un code qui ressemble à un code décompilé - vous deviendrez un voleur parce que vous avez vu ce code.

Je suis contre toute forme de décompilation, mais une fois de plus, je suis surpris par le nombre de programmeurs qui n'hésitent pas à se salir le cul pour un sou.

Qu'y a-t-il à prouver ? Le fait est sur le visage de la décompilation dans le studio, et ne pas connaître les règles ne dispense pas de la responsabilité.

 
Nikolay Demko:

Question pour un quiz : qu'est-ce qu'un droit d'auteur ?

1

2

Le premier ou le second ? Ou les deux ?

Qu'en pensez-vous ?

Par exemple, la paternité ?

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. 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);
}