Wie kann ich feststellen, ob ich dekompiliert habe oder nicht? - Seite 12

 
Andrey F. Zelinsky:

warum das 4. Forum? -- Er ist jetzt hier - sowohl auf dem Marktplatz als auch als Freiberufler.

Hier ist ein Beispiel seines Codes in der Codebase https://www.mql5.com/ru/code/9835

Kim schrieb alle seine Funktionen auf:

Aber wenn man sich den "Macher"-Code anschaut, wird Kims Urheberrecht dort ausgehebelt.

Wo sind hier die Menschenrechtssprecher?

Das ist der Punkt, an dem das Urheberrecht wirklich verletzt wird.

Die Funktionen in dieser Vorlage wurden direkt von Igor übernommen. Das Einzige, was er tat, war, den Namen zu ändern und das Copyright von Igor in der Kopfzeile zu entfernen. Gleichzeitig habe ich anstelle von Igors Urheberrecht ganz unverhohlen mein eigenes eingefügt:

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

Dies ist eine eindeutige Aneignung der Verdienste eines anderen und eine Verletzung der Urheberschaft von Igor, die er durch seine eigene ersetzt.

 
Artyom Trishkin:

Die Funktionen in dieser Vorlage wurden sauber von Igor übernommen. Ich habe nur den Namen geändert und das Copyright von Igor in der Kopfzeile entfernt. Das Urheberrecht von Igor wird durch sein eigenes ersetzt:

Eindeutige Unterschlagung des Kredits eines anderen und Verletzung der Urheberschaft von Igor, indem man die Urheberschaft durch die eigene ersetzt.

Ich frage mich, warum IC seinen Code nicht aus der Codebasis entfernt?

Denn die Urheberrechtsverletzung ist offensichtlich und leicht zu überprüfen. Der Code von Kim ist öffentlich zugänglich.

Warum werden solche Urheberrechtsverletzungen nicht thematisiert?

Hier sind die Nutzungsbedingungen https://www.mql5.com/ru/about/terms:

3.9 Sie verpflichten sich, den Inhalt von www.mql5.com nicht zu reproduzieren, zu kopieren, zu verkaufen, zu handeln oder weiterzuverkaufen. Die einzige Ausnahme ist, wenn eine separate Vereinbarung mit MQL5 Ltd. etwas anderes zulässt. Wenn Sie Kopien von Inhalten anfertigen, müssen alle in den Originalmaterialien enthaltenen Urheberrechts- und sonstigen Eigentumshinweise auf diesen Kopien beibehalten werden. Sie dürfen den Inhalt nicht verändern oder öffentlich ausstellen, vervielfältigen oder verbreiten. Die Website mql5.com ist Eigentum von MQL5 Ltd. Die Websites von MQL5 Ltd sind durch internationale Urheberrechtsgesetze geschützt. Jede unbefugte Nutzung der Websites von MQL5 Ltd. kann Urheberrechte, Markenrechte und andere Gesetze verletzen.

Ein klarer, eindeutiger, vorsätzlicher, grober und zynischer Verstoß - und das ungestraft.
 

Igors Funktion 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);
    }
  }
}
//+----------------------------------------------------------------------------+

Die Funktion eines Gentleman, der sich die Dinge eines anderen aneignet:

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

Und sagen Sie mir, dass er sie nicht zugewiesen hat, weil er ein paar Zeilen geändert hat...

Ich kann so viele Beispiele für die Zweckentfremdung von Igors Werk anführen, wie ich will.

 
Artyom Trishkin:

Igors Funktion SetOrder()

Die Funktion des Veruntreuers:

Und sagen Sie mir, dass er sie nicht zugewiesen hat, weil er ein paar Zeilen geändert hat...

Nun, Sie liegen falsch - bei Kim heißt es "set order" - und bei ihmheißt es "set pending order" - spüren Sie den Unterschied?

 
Andrey F. Zelinsky:
Nein, Sie irren sich - bei Kim heißt es "set order" - und bei ihm"set pending order" - merken Sie den Unterschied nicht? Bemerken Sie nicht den unschätzbaren Beitrag zu Kims Code?
Oh, Mann... Schade...
 

Übrigens wurde bei Kims Code nicht nur das Urheberrecht entfernt, sondern auch ein Zusatz seiner eigenen Urheberschaft hinzugefügt:

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

Wenn man sich seinen Code in der Codebasis ansieht, ist die Überschreibung von Kims Urheberschaft auf seine eigene Urheberschaft in jeder Funktion von Kim vorhanden.

Zum Beispiel https://www.mql5.com/ru/code/9835.

 

Frage für ein Quiz: Was ist das Urheberrecht?

1

//|                  Copyright 2015, Urain |

2

#property copyright "Copyright 2015, Urain"

Die erste oder die zweite, oder beide?

 
Andrey F. Zelinsky:

Übrigens wurde bei Kims Code nicht nur das Urheberrecht entfernt, sondern auch ein Zusatz seiner eigenen Urheberschaft hinzugefügt:

Wenn man sich seinen Code in der Codebasis ansieht, ist die Überschreibung von Kims Urheberschaft auf seine eigene Urheberschaft in jeder Funktion von Kim vorhanden.

Zum Beispiel https://www.mql5.com/ru/code/9835.

Nun, das habe ich gesagt. Igor hat sogar seine Urheberschaft in jeder Funktion in all seinen Bibliotheken. Auch in den Bibliotheken, die nicht gemeinfrei sind, sondern für den kommerziellen Gebrauch.
 
Das ist einer der grundlegenden Punkte - Sie kennen die Küche nicht, aber Sie versuchen, sofort ein Koch zu werden

Wie kommen Sie darauf, dass ich das nicht weiß? Ich nehme nicht an freiberuflichen Dienstleistungen teil, aber manchmal schreibe ich Code auf Bestellung. Dies ist ein Beispiel für eine unbedachte Anschuldigung)))

Das habe ich nicht, aber ich kann es nicht mit Sicherheit sagen. Ich habe schon Codes von guten Freunden von mir gesehen, die als ihre ausgegeben wurden, indem sie die Kopfzeile im Quellcode änderten und den Rest des Codes "unverändert" ließen. Es wurde sogar in unserem Forum diskutiert. Im vierten Forum hat eine Person im vierten Forum den Code von Igor Kim fälschlicherweise als seinen eigenen ausgegeben. Unverschämtheit und Ungezwungenheit. Quellcode. Das ist verachtenswert, abscheulich und niederträchtig.

Das ist einer der grundlegenden Punkte - Sie kennen die Küche nicht, aber Sie versuchen, ein Koch zu werden.

Glauben Sie nicht, dass ich für die Dekompilierung bin - nein, ich bin definitiv dagegen. Aber man muss sich die Umstände ansehen. Entweder halten Sie jeden, der Ihnen einen Code anbietet, für einen Dieb, oder Sie denken nach, bevor Sie ihn beschuldigen.

Nein, das kann ich nicht. Aber man kann auch nicht beweisen, dass ein Kunde Geld verdient, indem er den Code eines anderen bricht. Oder ist die Unschuldsvermutung abgeschafft worden? Sie sollten also zuerst die Schuld beweisen.

Andernfalls zeige ich Ihnen Code, der wie dekompiliert aussieht - Sie werden zum Dieb, weil Sie diesen Code gesehen haben.

Ich bin gegen jede Form der Dekompilierung, und ich bin wieder einmal überrascht, wie viele Programmierer sich nicht scheuen, sich für einen Penny den Arsch schmutzig zu machen.

Was gibt es zu beweisen? Tatsache ist, dass die Dekompilierung im Studio und die Unkenntnis der Regeln nicht von der Haftung befreit.

 
Nikolay Demko:

Frage für ein Quiz: Was ist das Urheberrecht?

1

2

Die erste oder die zweite, oder beide?

Was meinen Sie dazu?

Zum Beispiel: Urheberschaft?

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