Поделитесь плиз советником - страница 2

 
FreeLance:

Тащусь от жира...

А можна свой брюлик-творение предъявить?

В назидание потомкам!

;)

Можно, конечно. Держите, например, предпоследнюю версию отправки ордера (часть библиотеки. Сейчас работаю над улучшением).

// Order opening
int DS_OpenOrder_Ex(
   int      iCmd,            // OP_BUY, OP_SELL...
   double   iLot,            // Lot
   int      iMagic = 0,
   double   iSl = 0.0,
   double   iTp = 0.0,
   string   iComment = "",
   string   iSymbol = "",
   double   iPrice = 0.0,  
   int      iDeviation = 0,   // Max deviation - for advanced use
   int      iMaxTries = -1    // DS_Var_MaxTries, if -1
)
{
   // 
   if(iSymbol == "")
      iSymbol = Symbol();
   
   // Maybe it's closed for trading?
   if(!IsTesting()) {
      if(!MarketInfo(iSymbol, MODE_TRADEALLOWED)) {
         DS_SetLastError(3);
         return(-1);
      }  
   }
   
   int SymbolDigits = MarketInfo(iSymbol, MODE_DIGITS);
   
   if(iMaxTries == -1)
      iMaxTries = DS_Var_MaxTries;
      
   int      Ticket = 0;
   double   Price = 0.0;
   double   EtalonPrice = 0.0;
   int      StartTime = TimeCurrent();
   double   SymbolPoint = MarketInfo(iSymbol, MODE_POINT);
      
   for(int Tries = 0; Tries < iMaxTries; Tries++) {
      // Wait for trade context...
      
      while(IsTradeContextBusy()) {
         Sleep(500);
         
         if(TimeCurrent() - StartTime >= DS_Var_MaxOperationTime) {
            DS_SetLastError(2);
            return(-1);
         }   
      }
   
      // We may need the most actual price, if this is market opening
      if(iPrice > DS_Const_Null) {
         Price = iPrice;
      }
      else {
         RefreshRates();
   
         if(DS_NormCmd(iCmd) == OP_BUY)
            Price = Ask;
         else
            Price = Bid;
      }
      
      if(EtalonPrice < DS_Const_Null)  // We'll use it to calculate deviation
         EtalonPrice = Price;

      Ticket = OrderSend(
         iSymbol,
         iCmd,
         NormalizeDouble(iLot, 2),
         NormalizeDouble(Price, SymbolDigits),
         /*iDeviation*/0,                        // We use deviation in our own way
         NormalizeDouble(iSl, SymbolDigits),
         NormalizeDouble(iTp, SymbolDigits),
         iComment,
         iMagic);                  
         
      if(Ticket != -1)
         return(Ticket);   // OK
         
      // Error occured.
      int Error = GetLastError();
      
      switch(Error) {
      case 138:   // Requote
         RefreshRates();
         
         if(DS_NormCmd(iCmd) == OP_BUY) {
            // Ask vs. EtalonPrice
            if((Ask - EtalonPrice) / SymbolPoint >= iDeviation) {
               DS_SetLastError(2);  // Price changed dramatically
               return(-1);
            }
         }
         else {
            // Bid vs. EtalonPrice
            if((EtalonPrice - Bid) / SymbolPoint >= iDeviation) {
               DS_SetLastError(2);  // Price changed dramatically
               return(-1);
            }
         }
         
         continue;
         break;
      // Recoverable errors
      case 4:     // Server busy
      case 135:   // Price changed
      case 136:   // Off quotes
      case 137:   // Broker busy
         continue;
         break;
      default:    // All fuckups :), especially...
      // case 130:   // Invalid stops
      // TODO: max error info
         DS_SetLastError(DS_Const_LastError | Error);
         return(-1);      
      }
   }

   DS_SetLastError(4);
   return(-1);
}
 
Diamant:

Спокойно. Про "пустое место" уместней всего рассуждать перед зеркалом - говорят, здорово чистит карму и заставляет по-новому взглянуть на себя, любимого. Что касается "полезных функций от Kimiv", то они из себя представляют аморфную массу слабочитаемого кода. Они реально ничего полезного в себе не инкапсулируют. Понимаете? Например, невозможно толково обработать ошибки (а ведь, скажем, от ошибок создания ордера может зависеть вся стратегия - согласны?). В целом, невозможно обработать исключительные ситуации согласно логике работы системы. Стоит воткнуть одну "полезную функцию" в свой проект - и все. Функции от кимива - это просто какая-то вещь в себе, блэк-бокс. К тому же, write-only код и отсутствие комментариев... Это не несет в себе ни практической, ни образовательной пользы. На какую-то применимую в реальной работе библиотеку не тянет никак. Видно, что писал их, в лучшем случае, программист-самоучка.


И это только так, что в голову пришло сходу.

PS. Почему это так важно? Да потому, что данный форум, в том числе - форум разработчиков стратегий. Чтобы добиться успеха, нужно алгоритм системы представлять в виде конечного автомата, без, так сказать, подвисших логических концов. Ляпая в свой код такую ерунду, как не к ночи будь помянутые "полезные-функции" - подписываете себя на кучу геморроя на пустом месте. Думаю, все мыслящие программисты на этом форуме со мной согласятся...

А священных коров давайте не будем заводить. Не та область деятельности.

++++++
 
Diamant:

Спокойно. Про "пустое место" уместней всего рассуждать перед зеркалом - говорят, здорово чистит карму и заставляет по-новому взглянуть на себя, любимого. Что касается "полезных функций от Kimiv", то они из себя представляют аморфную массу слабочитаемого кода. Они реально ничего полезного в себе не инкапсулируют. Понимаете? Например, невозможно толково обработать ошибки (а ведь, скажем, от ошибок создания ордера может зависеть вся стратегия - согласны?). В целом, невозможно обработать исключительные ситуации согласно логике работы системы. Стоит воткнуть одну "полезную функцию" в свой проект - и все. Функции от кимива - это просто какая-то вещь в себе, блэк-бокс. К тому же, write-only код и отсутствие комментариев... Это не несет в себе ни практической, ни образовательной пользы. На какую-то применимую в реальной работе библиотеку не тянет никак. Видно, что писал их, в лучшем случае, программист-самоучка.


И это только так, что в голову пришло сходу.

PS. Почему это так важно? Да потому, что данный форум, в том числе - форум разработчиков стратегий. Чтобы добиться успеха, нужно алгоритм системы представлять в виде конечного автомата, без, так сказать, подвисших логических концов. Ляпая в свой код такую ерунду, как не к ночи будь помянутые "полезные-функции" - подписываете себя на кучу геморроя на пустом месте. Думаю, все мыслящие программисты на этом форуме со мной согласятся...

А священных коров давайте не будем заводить. Не та область деятельности.

Советую поменять тональность, я таких смелых хомячков по молодости отлюбил. А по существу, что касается пустого места, я это лично не о вас, хотя учитывая отношение к людям... ну да ладно. Я вот о чем, загляните в свой профиль и проанализируйте что Вы сделали полезного для данного форума, посмотрели? Вот я и говорю - на данный момент пустое место. Вот выкладывайте свою мегагениальную библиотеку в свободный доступ, отвечайте на вопросы чайников и т.д., а потом уже высказывайтесь о Кимовских наработках.
 
Diamant:

Кимив - это ведь автор того самого набора из очень плохих функций и скриптов.

Неудивительно.

Не юзайте всякую помойку.

После такого заявления лучше заведи себе новый ник если будешь ещё появляться на форуме.
 
goldtrader:
После такого заявления лучше заведи себе новый ник если будешь ещё появляться на форуме.
Поддерживаю. Игорь Ким много сделал для сообщества,и высказываться так о нём не стоит. Народ пользуется его наработками выложенными в открытую. А вот выше выложенный текст слишком сложен для восприятия,да и нужна ли такая сложность. Но, каждый пишет по своему усмотрению.
 
Dezil:
Советую поменять тональность, я таких смелых хомячков по молодости отлюбил. А по существу, что касается пустого места, я это лично не о вас, хотя учитывая отношение к людям... ну да ладно. Я вот о чем, загляните в свой профиль и проанализируйте что Вы сделали полезного для данного форума, посмотрели? Вот я и говорю - на данный момент пустое место. Вот выкладывайте свою мегагениальную библиотеку в свободный доступ, отвечайте на вопросы чайников и т.д., а потом уже высказывайтесь о Кимовских наработках.

Не люблю "бокс по переписке". Тем более, в рамках обсуждаемой темы - это точно офтопик. Пишите в личку если есть что сказать лично мне.

По существу. Я и хочу ее выложить, но тогда и только тогда, когда логика работы моей библиотеки станет прозрачна, понятна и - быть может - наведет новичков на ответы на ряд вопросов, подскажет логику обработки ордеров и.т.п. Я сам далеко не новичок в програминге вообще и в MQL в частности. Только зарегался здесь недавно. И давайте не будем про "мегагениальность". Просто плохой код - он путает мысли. Отношение к людям тут не при чем.

 
Diamant:

Можно, конечно. Держите, например, предпоследнюю версию отправки ордера (часть библиотеки. Сейчас работаю над улучшением).

Держу. И прозреваю...

Блеск алмаза... DDD

ждём бибитеку, со всеми функциями.

а так - наброски коня молодого художника.

Конь как всегда в вакууме и сферичен до безобразия.

;)

 
zhuki:
Игорь Ким много сделал для сообщества,и высказываться так о нём не стоит. Народ пользуется его наработками выложенными в открытую. А вот выше выложенный текст слишком сложен для восприятия,да и нужна ли такая сложность. Но, каждый пишет по своему усмотрению.
Видите ли, я не знаю ничего о Игоре Киме. Может, он прекрасный человек в быту и в работе. И добр к домашним животным. Но код Игоря Кима я не считаю хорошим. Наоборот, считаю его плохим. Это мое мнение. То, как все на меня ополчились, свидетельствует об одном - комьюнити не разделяет мое мнение :D Но что поделать.
 
Diamant:
Видите ли, я не знаю ничего о Игоре Киме. Может, он прекрасный человек в быту и в работе. И добр к домашним животным. Но код Игоря Кима я не считаю хорошим. Наоборот, считаю его плохим. Это мое мнение. То, как все на меня ополчились, свидетельствует об одном - комьюнити не разделяет мое мнение :D Но что поделать.
:)
 
Да в том и дело - отношение к людям тут как раз и причем. Данный форум создан для общения ЛЮДЕЙ, и это первично, а красота кода вторична. Это мое мнение
Причина обращения: