Como posso saber se me descompilei ou não? - página 12

 
Andrey F. Zelinsky:

por que no fórum 4? -- ele está aqui agora -- tanto no mercado quanto como freelancer.

Aqui está um exemplo de seu código na base de código https://www.mql5.com/ru/code/9835

Kim escreveu em todas as suas funções:

Mas se você olhar para o código "doer", os direitos autorais de Kim são esfregados lá fora.

Onde estão os oradores de direitos humanos aqui?

É aí que os direitos autorais estão sendo realmente violados.

As funções nesse modelo foram tiradas diretamente do Igor. A única coisa que ele fez foi mudar o nome e remover os direitos autorais do Igor no cabeçalho. Ao mesmo tempo, ao invés dos direitos autorais de Igor, eu inseri descaradamente os meus:

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

Uma clara apropriação indevida dos méritos de outra pessoa e uma violação da autoria de Igor, substituindo-a por sua própria autoria.

 
Artyom Trishkin:

As funções nesse modelo são tiradas de forma limpa do Igor. Eu só mudei o nome e removi os direitos autorais do Igor no cabeçalho. Os direitos autorais de Igor são substituídos pelos seus próprios:

Desvio inequívoco do crédito de outra pessoa e violação da autoria de Igor, substituindo a autoria por si mesmo.

Por que será que o IC não remove seu código da base de código?

Porque a violação dos direitos autorais é óbvia e fácil de verificar. O código de Kim está disponível gratuitamente.

Por que não são levantadas questões de tal violação de direitos autorais?

Aqui estão os Termos de Uso https://www.mql5.com/ru/about/terms:

3.9 Você concorda em não reproduzir, copiar, vender, comercializar ou revender o conteúdo do www.mql5.com. A única exceção é se um acordo separado com a MQL5 Ltd permitir o contrário. Se você fizer cópias de qualquer Conteúdo, todos os direitos autorais e outros avisos de propriedade contidos nos materiais originais devem ser retidos em tais cópias. Você não pode modificar o Conteúdo ou exibi-lo, reproduzi-lo ou distribuí-lo publicamente. O site mql5.com é propriedade da MQL5 Ltd. Os sites da MQL5 Ltd são protegidos por leis internacionais de direitos autorais. Qualquer uso não autorizado dos websites da MQL5 Ltd pode violar direitos autorais, marcas registradas e outras leis.

Infração clara, inequívoca, deliberada, grosseira e cínica - e com impunidade.
 

Função do Igor 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);
    }
  }
}
//+----------------------------------------------------------------------------+

A função de um cavalheiro que se apropria das coisas de outra pessoa:

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

E diga-me que ele não a atribuiu porque mudou algumas linhas...

Posso fornecer tantos exemplos de apropriação indevida do trabalho de Igor quanto eu quiser.

 
Artyom Trishkin:

Função do Igor SetOrder()

A função do mal-apropriado:

E diga-me que ele não a atribuiu porque mudou algumas linhas...

Bem, você está errado -- em Kim diz "estabelecer ordem" -- e em elediz "estabelecer ordem pendente" -- você sente a diferença?

 
Andrey F. Zelinsky:
Não, bem, você está errado -- o de Kim diz "estabelecer ordem" -- e o delediz "estabelecer ordem pendente" -- você sente a diferença? Você não percebe a contribuição inestimável para o código de Kim?
Oh, cara... Que chatice...
 

A propósito, o código de Kim não tem apenas os direitos autorais removidos, ele tem uma adição de sua própria autoria:

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

Se você olhar para seu código na base de código, a anulação da autoria de Kim para sua própria autoria está presente em cada função Kim.

Por exemplo https://www.mql5.com/ru/code/9835 .

 

Pergunta para um quiz: o que são os direitos autorais?

1

//|                  Copyright 2015, Urain |

2

#property copyright "Copyright 2015, Urain"

A primeira ou a segunda? ou ambas?

 
Andrey F. Zelinsky:

A propósito, o código de Kim não tem apenas os direitos autorais removidos, ele tem uma adição de sua própria autoria:

Se você olhar para seu código na base de código, a anulação da autoria de Kim para sua própria autoria está presente em cada função Kim.

Por exemplo https://www.mql5.com/ru/code/9835 .

Bem, isso foi o que eu disse. Igor tem até mesmo sua autoria em todas as funções em todas as suas bibliotecas. Mesmo nessas bibliotecas, que não são de domínio público, mas para uso comercial.
 
Esse é um dos pontos fundamentais - você não conhece a cozinha, mas está tentando se tornar um chef imediatamente

O que o faz pensar que eu não sei? Não participo de serviços freelance, mas às vezes escrevo código sob encomenda. Este é um exemplo de uma acusação desconsiderada))))

Eu não tenho, mas não posso ter certeza. Vi códigos de bons amigos meus passarem como os deles, mudando o cabeçalho no código fonte, e deixando o resto do código "como está". Foi até mesmo discutido em nosso fórum. No quarto fórum, uma pessoa no quarto fórum apresentou erroneamente o código de Igor Kim como seu próprio código. Insolente e sem cerimônias. Código fonte. Isto é desprezível, vil e baixo.

Esse é um dos pontos fundamentais - você não conhece a culinária, mas está tentando se tornar um chef.

Não pense que eu sou a favor da descompilação - não, eu sou definitivamente contra. Mas é preciso olhar para as circunstâncias. Ou você pensa que quem lhe oferece o código é um ladrão, ou você pensa antes de acusar.

Não, eu não posso. Mas também não se pode provar que um cliente ganha dinheiro quebrando o código de outra pessoa. Ou a presunção de inocência foi abolida? Portanto, é melhor provar a culpa primeiro.

Caso contrário, eu lhe mostrarei um código que parece descompilado - você se tornará um ladrão porque viu este código.

Sou contra qualquer tipo de descompilação sob qualquer forma, mais uma vez me surpreendo com o número de programadores que não se intimidam em sujar o traseiro por um centavo.

O que há para provar? O fato está em face da descompilação no estúdio, e o desconhecimento das regras não isenta de responsabilidade.

 
Nikolay Demko:

Pergunta para um quiz: O que são os direitos autorais?

1

2

A primeira ou a segunda? ou ambas?

O que você acha?

Por exemplo, autoria?

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