デコンパイルしたかどうか、どうすれば分かりますか? - ページ 12

 
Andrey F. Zelinsky:

なぜ第4回フォーラムなのか?-- 彼は今、マーケットプレイスとフリーランスの両方でここにいます。

以下は、コードベース(https://www.mql5.com/ru/code/9835)にある彼のコードの例である。

金さんは全機能を書き込んだ。

しかし、「やる人」のコードを見ると、キムの著作権はそこに擦り込まれている。

ここで人権を語る人はどこにいるのでしょうか?

そこが本当に著作権の侵害になるのです。

そのテンプレートの中の関数は、Igorから直接引用したものです。名前を変え、ヘッダーのイゴールの著作権を削除しただけである。同時に、イゴールの著作権の代わりに、あからさまに自分の著作権を挿入した。

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

他人の功労を明らかに流用し、イゴールの著作物を代用することでイゴールの著作権を侵害する行為。

 
Artyom Trishkin:

そのテンプレートの中の関数は、Igorからきれいに取られています。名前を変えて、ヘッダーのIgorの著作権を削除しただけです。イゴールの著作権が自分のものに置き換わる。

他人のクレジットの曖昧な流用と、イゴールの著作物を自分に置き換えての侵害。

なぜICは自分のコードをコードベースから削除しないのだろう?

著作権侵害が明らかで、確認しやすいから。キムのコードはパブリックドメインです。

なぜ、このような著作権侵害の問題が出てこないのでしょうか?

以下、利用規約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:
いや、まあ、あなたは間違っています。Kimの方は "set order "と書いてあり、彼の方は"set pending order"と書いてあります。 この違いを感じますか? Kimのコードへの貴重な貢献があることに気づかないんでしょうか?
おいおい...悔しい...。
 

ちなみに、Kimさんのコードは著作権が削除されているだけでなく、自分の著作物が追加されています。

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:

ちなみに、Kimさんのコードは著作権が削除されているだけでなく、自分の著作物が追加されています。

コードベースで彼のコードを見ると、キムのオーサリングを自分のオーサリングにオーバーライドしているのが、すべてのキムの関数に存在しているのです。

例えば、https://www.mql5.com/ru/code/9835 。

まあ、そういうことです。イゴールは、すべてのライブラリーのすべての機能に、自分の著作権を持っているほどだ。パブリックドメインでなく、商業利用を目的とした図書館でも。
 
料理を知らないのに、いきなりシェフになろうとするのは、そこが根本的なところなのです

なぜ私が知らないと思うのですか?フリーランスのサービスには参加しませんが、注文を受けてコードを書くことはあります。これは無思慮な言いがかりの例です)))

していないが、確かなことは分からない。私の親友のコードが、ソースコードのヘッダーを変えて、残りの部分を「そのまま」にして、自分のコードとして流用されているのを見たことがあります。私たちのフォーラムでも話題になったほどです。4番目のフォーラムで、ある人がIgor Kimのコードを自分のものだと誤認していました。無遠慮に、無遠慮に。ソースコードです。これは卑劣で、下劣で、低俗だ。

料理を知らないのにシェフになろうとする、そこが根本的なところです。

私がデコンパイルに賛成していると思わないでください--いえ、絶対に反対です。しかし、状況を見なければならない。コードを提供してくれる人は誰でも泥棒だと思っているのか、それとも非難する前に考えるのか、どちらなのでしょう。

いいえ、できません。でも、お客さんが他人のコードを壊して儲かるというのも証明できないですよね。それとも、推定無罪が廃止されたのでしょうか?だから、まず有罪を証明することが先決だ。

そうでなければ、デコンパイルしたようなコードを見せます。このコードを見たために、あなたは泥棒になるのです。

どんな形であれ、デコンパイルには反対です。改めて、1円のためにケツを汚して恥じないプログラマーの多さに驚かされます。

何を証明するのか?事実はスタジオでデコンパイルしている面もあり、ルールを知らないことは責任を免れることにはならない。

 
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);
}