디 컴파일 여부를 결정하는 방법은 무엇입니까? - 페이지 12

 
Andrey F. Zelinsky :

왜 4차 포럼에서? - 그는 지금 여기에 있습니다 - 그는 시장과 프리랜서 모두에서 일합니다.

다음은 코드베이스 https://www.mql5.com/en/code/9835 에 있는 그의 코드의 예입니다.

Kim은 그의 모든 기능에서 다음과 같이 썼습니다.

하지만 '행위자' 코드를 보면 김씨의 저작권이 닳아 있다.

여기 옹호자들은 어디에 있습니까?

이것은 실제로 저작권이 침해되는 곳입니다.

해당 템플릿의 기능은 순수하게 Igor에서 가져온 것입니다. 이름만 변경되고 헤더에서 Igor의 저작권이 제거되었습니다. 동시에 Igor의 저작권 대신에 그의 무례한 삽입:

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

다른 사람의 공로를 명백히 도용하고 자신을 대신하여 Igor의 저자를 위반하는 것.

 
Artyom Trishkin :

해당 템플릿의 기능은 순수하게 Igor에서 가져온 것입니다. 이름만 변경되고 헤더에서 Igor의 저작권이 제거되었습니다. 동시에 Igor의 저작권 대신에 그의 무례한 삽입:

다른 사람의 공로를 명백히 도용하고 자신을 대신하여 Igor의 저자를 위반하는 것.

MK가 코드 베이스에서 코드를 제거하지 않는 이유가 궁금합니다.

결국 저작권 침해는 명백하고 확인하기 쉽습니다. Kim의 코드는 자유롭게 사용할 수 있습니다.

이러한 저작권 침해 문제가 제기되지 않는 이유는 무엇입니까?

사용 약관은 다음과 같습니다. https://www.mql5.com/en/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() 함수

주인의 기능, 남의 것을 도용:

그리고 내가 몇 줄을 바꿔서 적절하지 않았다고 더 말해 ...

아니요, 당신이 틀렸습니다 - Kim은 "주문 설정"이라고 말하고 그는 " 대기 주문 설정 "이라고 말합니다. 차이점을 느끼십니까? Kim의 코드 개발에 대한 귀중한 공헌을 눈치채지 못하셨습니까?

 
Andrey F. Zelinsky :
아니요, 당신이 틀렸습니다 - Kim은 "주문 설정"이라고 말하고 그는 " 대기 주문 설정 "이라고 말합니다. 차이점을 느끼십니까? Kim의 코드 개발에 대한 귀중한 공헌을 눈치채지 못하셨습니까?
젠장... 매복...
 

그건 그렇고, 그는 Kim의 코드에서 저작권을 제거했을 뿐만 아니라 그의 저자에 대해 추가했습니다.

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

코드베이스에서 그의 코드를 보면 모든 Kim 함수에서 Kim의 저자가 자신의 저자와 인터리브되어 있습니다.

예를 들어 https://www.mql5.com/ru/code/9835 .

 

빠른 질문: 저작권이란 무엇입니까?

하나

 //|                  Copyright 2015, Urain |

2

 #property copyright "Copyright 2015, Urain"

첫 번째 또는 두 번째? 아니면 둘다?

 
Andrey F. Zelinsky :

그건 그렇고, 그는 Kim의 코드에서 저작권을 제거했을 뿐만 아니라 그의 저자에 대해 추가했습니다.

코드베이스에서 그의 코드를 보면 모든 Kim 함수에서 Kim의 저자가 자신의 저자와 인터리브되어 있습니다.

예를 들어 https://www.mql5.com/en/code/9835 .

글쎄, 나는 그것을보고했다. Igor는 각 기능의 모든 라이브러리에서도 그의 저자가 등록되어 있습니다. 무료로 사용할 수는 없지만 상업적으로 사용할 수 있는 라이브러리에서도 마찬가지입니다.
 
이것은 기본 포인트 중 하나입니다. 주방을 모르지만 바로 셰프가 되려고 합니다.

내가 모르는거 어디서 구했어? 프리랜서 서비스에는 참여하지 않지만 가끔 주문해서 글을 씁니다. 이것은 부당한 비난의 한 예입니다.

해보진 않았지만 확실히는 모르겠습니다. 내 친한 친구의 코드가 자신의 것으로 전달되었다는 사실에 직면하여 소스 코드의 헤더를 변경하고 나머지 코드는 "있는 그대로" 남겨둡니다. 심지어 우리는 그것을 가지고 토론했습니다. 네 번째 포럼에서는 한 지도자가 이고르 김의 코드를 자신의 것으로 전달했습니다. 뻔뻔하고 무례하게. 출처. 사악하고 사악하고 낮습니다.

이것은 기본 포인트 중 하나입니다. 주방을 모르지만 바로 셰프가 되려고 합니다.

내가 디컴파일러를 지지한다고 생각하지 마십시오. 아니요, 저는 확실히 반대합니다. 하지만 상황을 봐야 한다. 당신에게 코드를 제안한 사람을 도둑으로 생각하거나, 아니면 비난하기 전에 생각하십시오.

아니 난 할 수 없어. 그러나 당신조차도 다른 사람의 코드를 깨서 고객이 돈을 번다는 것을 증명할 수 없습니다. 아니면 우리가 이미 무죄 추정을 취소했습니까? 그러니 먼저 죄를 증명하기 위해 수고를 하십시오.

그렇지 않으면 이제 디컴파일과 유사한 코드를 보여 드리겠습니다. 이 코드를 보았기 때문에 도둑이 될 것입니다.

나는 어떤 형태의 디컴파일러에도 반대합니다. 나는 한 푼도 더러워지는 것을 경멸하지 않는 프로그래머의 수에 놀랐음을 다시 한 번 반복합니다.

무엇을 증명할 것이 있습니까? 사실은 스튜디오에서 디컴파일된 얼굴이고, 규칙을 모르는 것은 책임이 면제되지 않습니다.

 
Nikolay Demko :

빠른 질문: 저작권이란 무엇입니까?

하나

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