我怎样才能知道我是否已经反编译? - 页 12

 
Andrey F. Zelinsky:

为什么在第四论坛上?-- 他现在就在这里 -- 既有市场也有自由职业者。

下面是他在代码库中的一个例子https://www.mql5.com/ru/code/9835

金正日在他所有的功能中写道。

但是,如果你看一下 "行动者 "的代码,金的版权就被揉在那里。

这里的人权发言人在哪里?

这就是真正侵犯版权的地方。

该模板中的功能直接取自Igor。他所做的唯一一件事就是改了名字,并在标题中删除了伊戈尔的版权。同时,我没有插入伊戈尔的版权,而是公然插入了我自己的版权。

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

这显然是盗用了别人的优点,侵犯了伊戈尔的作者资格,用他自己的优点取代了别人的优点。

 
Artyom Trishkin:

该模板中的功能是干净利落地从Igor中提取的。我只改了名字,并删除了伊戈尔在页眉的版权。伊戈尔的版权被他自己的版权所取代。

毫不含糊地盗用别人的功劳,用作者身份代替自己,侵犯了伊戈尔的作者身份。

我想知道为什么IC不把他的代码从代码库中删除?

因为侵犯版权的行为很明显,而且很容易检查。Kim的代码可以免费使用。

为什么不提出这种侵犯版权的问题?

以下是使用条款https://www.mql5.com/ru/about/terms。

3.9. 你同意 不复制、拷贝、出售、交易或转售www.mql5.com 的内容。唯一的例外是,与MQL5有限公司签订的单独协议允许有其他情况。如果你制作任何内容的副本,原始材料中包含的所有版权和其他所有权声明 必须保留 在这些副本上。您不得修改内容或公开展示、复制或分发内容。mql5.com网站是由MQL5有限公司拥有。MQL5有限公司网站受国际版权法的保护。任何未经授权使用MQL5有限公司网站的行为都可能违反版权、商标和其他法律。

明确的、毫不含糊的、故意的、粗暴的和玩世不恭的侵权行为--而且不受惩罚。
 

伊戈尔的函数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()

挪用者的职能。

并告诉我他没有分配,因为他改变了几行......

好吧,你错了 -- 在Kim的文章中写着 "设置订单" -- 而在他的文章中写着 "设置待定订单" -- 你感觉到区别了吗?

 
Andrey F. Zelinsky:
不,好吧,你错了 -- Kim的说 "设置订单" -- 而他的说 "设置待定订单" -- 你感觉到区别了吗? 你难道没有注意到Kim的代码的宝贵贡献吗?
哦,伙计...遗憾的是...
 

顺便说一下,Kim的代码不只是去掉了版权,还增加了他自己的作者身份。

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

如果你看一下他在代码库中的代码,在每一个Kim的函数中都存在将Kim的作者身份覆盖到自己的作者身份。

例如,https://www.mql5.com/ru/code/9835 。

 

问答题:什么是版权?

1

//|                  Copyright 2015, Urain |

2

#property copyright "Copyright 2015, Urain"

第一个还是第二个? 或者两个都是?

 
Andrey F. Zelinsky:

顺便说一下,Kim的代码不只是去掉了版权,还增加了他自己的作者身份。

如果你看一下他在代码库中的代码,在每一个Kim的函数中都存在将Kim的作者身份覆盖到自己的作者身份。

例如,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);
}