Заработай до
50000$
на приглашении друзей
получить StartUp Bonus
от ИнстаФорекс
Вложений не требуется!
Начни торговлю
без вложений и риска
С новым STARTUP бонусом 1000$
Получи бонус
55%
от ИнстаФорекс
на каждое пополнение
Ответить в теме
Страница 2 из 11
Первая 1 2 3 ... Последняя ◄╝

Показаны сообщения: с 21 по 40 из 211

Тема: MQL4: Некоторые полезные функции

 Перейти в классический вид темы
     
  1. ТОП сообщений
    2014-07-09   14:02
    Лучший ответ #1
    Накопленные выплаты 169700 RUB

    Отправка маркет-ордера на сервер.

    MQL-Код:
    <code><span style="color: #000000">
    <span style="color: #0000BB">int SendMarketOrder</span><span style="color: #007700">(</span><span style="color: #0000BB">int Type</span><span style="color: #007700">, </span><span style="color: #0000BB">double Lots</span><span style="color: #007700">, </span><span style="color: #0000BB">int TP</span><span style="color: #007700">, </span><span style="color: #0000BB">int SL</span><span style="color: #007700">, </span><span style="color: #0000BB">int Magic</span><span style="color: #007700">, </span><span style="color: #0000BB">string Cmnt</span><span style="color: #007700">, </span><span style="color: #0000BB">int</span><span style="color: #007700">&amp; </span><span style="color: #0000BB">Error</span><span style="color: #007700">){</span><span style="color: #0000BB">double Price</span><span style="color: #007700">, </span><span style="color: #0000BB">Take</span><span style="color: #007700">, </span><span style="color: #0000BB">Stop</span><span style="color: #007700">;</span><span style="color: #0000BB">int Ticket</span><span style="color: #007700">, </span><span style="color: #0000BB">Slippage</span><span style="color: #007700">, </span><span style="color: #0000BB">Color</span><span style="color: #007700">, </span><span style="color: #0000BB">Err</span><span style="color: #007700">; </span><span style="color: #0000BB">bool Delay </span><span style="color: #007700">= </span><span style="color: #0000BB">False</span><span style="color: #007700">;if(</span><span style="color: #0000BB">Debug</span><span style="color: #007700">) Print(</span><span style="color: #DD0000">"Функция SendMarketOrder"</span><span style="color: #007700">);while(!</span><span style="color: #0000BB">IsStopped</span><span style="color: #007700">()){if(!</span><span style="color: #0000BB">IsExpertEnabled</span><span style="color: #007700">()){</span><span style="color: #0000BB">Error </span><span style="color: #007700">= </span><span style="color: #0000BB">ERR_TRADE_DISABLED</span><span style="color: #007700">;Print(</span><span style="color: #DD0000">"Работа эксперта запрещена! Кнопка "</span><span style="color: #0000BB">Эксперты</span><span style="color: #DD0000">" отжата."</span><span style="color: #007700">);return(-</span><span style="color: #0000BB">1</span><span style="color: #007700">);}if(</span><span style="color: #0000BB">Debug</span><span style="color: #007700">) Print(</span><span style="color: #DD0000">"Работа эксперта разрешена, кнопка "</span><span style="color: #0000BB">Эксперты</span><span style="color: #DD0000">" нажата."</span><span style="color: #007700">);if(!</span><span style="color: #0000BB">IsConnected</span><span style="color: #007700">()){</span><span style="color: #0000BB">Error </span><span style="color: #007700">= </span><span style="color: #0000BB">ERR_NO_CONNECTION</span><span style="color: #007700">;Print(</span><span style="color: #DD0000">"Связь с сервером отсутствует!"</span><span style="color: #007700">);return(-</span><span style="color: #0000BB">1</span><span style="color: #007700">);}if(</span><span style="color: #0000BB">Debug</span><span style="color: #007700">) Print(</span><span style="color: #DD0000">"Связь с сервером установлена"</span><span style="color: #007700">);if(</span><span style="color: #0000BB">IsTradeContextBusy</span><span style="color: #007700">()){if(</span><span style="color: #0000BB">Debug</span><span style="color: #007700">) Print(</span><span style="color: #DD0000">"Торговый поток занят!"</span><span style="color: #007700">);if(</span><span style="color: #0000BB">Debug</span><span style="color: #007700">) Print(</span><span style="color: #DD0000">"Ожидаем 3 сек..."</span><span style="color: #007700">);</span><span style="color: #0000BB">Sleep</span><span style="color: #007700">(</span><span style="color: #0000BB">3000</span><span style="color: #007700">);</span><span style="color: #0000BB">Delay </span><span style="color: #007700">= </span><span style="color: #0000BB">True</span><span style="color: #007700">;continue;}if(</span><span style="color: #0000BB">Debug</span><span style="color: #007700">) Print(</span><span style="color: #DD0000">"Торговый поток свободен"</span><span style="color: #007700">);if(</span><span style="color: #0000BB">Delay </span><span style="color: #007700">|| (</span><span style="color: #0000BB">LastTickTime </span><span style="color: #007700">!= </span><span style="color: #0000BB">MarketInfo</span><span style="color: #007700">(</span><span style="color: #0000BB">Symbol</span><span style="color: #007700">(),</span><span style="color: #0000BB">MODE_TIME</span><span style="color: #007700">))) {if(</span><span style="color: #0000BB">Debug</span><span style="color: #007700">) Print(</span><span style="color: #DD0000">"Обновляем котировки"</span><span style="color: #007700">);</span><span style="color: #0000BB">RefreshRates</span><span style="color: #007700">();</span><span style="color: #0000BB">LastTickTime </span><span style="color: #007700">= </span><span style="color: #0000BB">MarketInfo</span><span style="color: #007700">(</span><span style="color: #0000BB">Symbol</span><span style="color: #007700">(),</span><span style="color: #0000BB">MODE_TIME</span><span style="color: #007700">);</span><span style="color: #0000BB">Delay </span><span style="color: #007700">= </span><span style="color: #0000BB">False</span><span style="color: #007700">;}else{if(</span><span style="color: #0000BB">Debug</span><span style="color: #007700">) Print(</span><span style="color: #DD0000">"Котировки актуальны"</span><span style="color: #007700">);}switch(</span><span style="color: #0000BB">Type</span><span style="color: #007700">){case </span><span style="color: #0000BB">OP_BUY</span><span style="color: #007700">:if(</span><span style="color: #0000BB">Debug</span><span style="color: #007700">) Print(</span><span style="color: #DD0000">"Инициализируем параметры для BUY-ордера"</span><span style="color: #007700">);</span><span style="color: #0000BB">Price </span><span style="color: #007700">= </span><span style="color: #0000BB">NormalizeDouble</span><span style="color: #007700">( </span><span style="color: #0000BB">Ask</span><span style="color: #007700">, </span><span style="color: #0000BB">Digits</span><span style="color: #007700">);</span><span style="color: #0000BB">Take </span><span style="color: #007700">= </span><span style="color: #0000BB">IIFd</span><span style="color: #007700">(</span><span style="color: #0000BB">TP </span><span style="color: #007700">== </span><span style="color: #0000BB">0</span><span style="color: #007700">, </span><span style="color: #0000BB">0</span><span style="color: #007700">, </span><span style="color: #0000BB">NormalizeDouble</span><span style="color: #007700">( </span><span style="color: #0000BB">Price </span><span style="color: #007700">+ </span><span style="color: #0000BB">TP </span><span style="color: #007700">* </span><span style="color: #0000BB">Point</span><span style="color: #007700">, </span><span style="color: #0000BB">Digits</span><span style="color: #007700">));</span><span style="color: #0000BB">Stop </span><span style="color: #007700">= </span><span style="color: #0000BB">IIFd</span><span style="color: #007700">(</span><span style="color: #0000BB">SL </span><span style="color: #007700">== </span><span style="color: #0000BB">0</span><span style="color: #007700">, </span><span style="color: #0000BB">0</span><span style="color: #007700">, </span><span style="color: #0000BB">NormalizeDouble</span><span style="color: #007700">( </span><span style="color: #0000BB">Price </span><span style="color: #007700">- </span><span style="color: #0000BB">SL </span><span style="color: #007700">* </span><span style="color: #0000BB">Point</span><span style="color: #007700">, </span><span style="color: #0000BB">Digits</span><span style="color: #007700">));</span><span style="color: #0000BB">Color </span><span style="color: #007700">= </span><span style="color: #0000BB">Blue</span><span style="color: #007700">;break;case </span><span style="color: #0000BB">OP_SELL</span><span style="color: #007700">:if(</span><span style="color: #0000BB">Debug</span><span style="color: #007700">) Print(</span><span style="color: #DD0000">"Инициализируем параметры для SELL-ордера"</span><span style="color: #007700">);</span><span style="color: #0000BB">Price </span><span style="color: #007700">= </span><span style="color: #0000BB">NormalizeDouble</span><span style="color: #007700">( </span><span style="color: #0000BB">Bid</span><span style="color: #007700">, </span><span style="color: #0000BB">Digits</span><span style="color: #007700">);</span><span style="color: #0000BB">Take </span><span style="color: #007700">= </span><span style="color: #0000BB">IIFd</span><span style="color: #007700">(</span><span style="color: #0000BB">TP </span><span style="color: #007700">== </span><span style="color: #0000BB">0</span><span style="color: #007700">, </span><span style="color: #0000BB">0</span><span style="color: #007700">, </span><span style="color: #0000BB">NormalizeDouble</span><span style="color: #007700">( </span><span style="color: #0000BB">Price </span><span style="color: #007700">- </span><span style="color: #0000BB">TP </span><span style="color: #007700">* </span><span style="color: #0000BB">Point</span><span style="color: #007700">, </span><span style="color: #0000BB">Digits</span><span style="color: #007700">));</span><span style="color: #0000BB">Stop </span><span style="color: #007700">= </span><span style="color: #0000BB">IIFd</span><span style="color: #007700">(</span><span style="color: #0000BB">SL </span><span style="color: #007700">== </span><span style="color: #0000BB">0</span><span style="color: #007700">, </span><span style="color: #0000BB">0</span><span style="color: #007700">, </span><span style="color: #0000BB">NormalizeDouble</span><span style="color: #007700">( </span><span style="color: #0000BB">Price </span><span style="color: #007700">+ </span><span style="color: #0000BB">SL </span><span style="color: #007700">* </span><span style="color: #0000BB">Point</span><span style="color: #007700">, </span><span style="color: #0000BB">Digits</span><span style="color: #007700">));</span><span style="color: #0000BB">Color </span><span style="color: #007700">= </span><span style="color: #0000BB">Red</span><span style="color: #007700">;break;default:if(</span><span style="color: #0000BB">Debug</span><span style="color: #007700">) Print(</span><span style="color: #DD0000">"Тип ордера не соответствует требованиям."</span><span style="color: #007700">);return(-</span><span style="color: #0000BB">1</span><span style="color: #007700">);}</span><span style="color: #0000BB">Slippage </span><span style="color: #007700">= </span><span style="color: #0000BB">MarketInfo</span><span style="color: #007700">(</span><span style="color: #0000BB">Symbol</span><span style="color: #007700">(), </span><span style="color: #0000BB">MODE_SPREAD</span><span style="color: #007700">);if(</span><span style="color: #0000BB">Debug</span><span style="color: #007700">) Print(</span><span style="color: #DD0000">"Slippage = "</span><span style="color: #007700">,</span><span style="color: #0000BB">Slippage</span><span style="color: #007700">);if(</span><span style="color: #0000BB">IsTradeAllowed</span><span style="color: #007700">()){if(</span><span style="color: #0000BB">Debug</span><span style="color: #007700">) Print(</span><span style="color: #DD0000">"Торговля разрешена, отправляем ордер..."</span><span style="color: #007700">);</span><span style="color: #0000BB">Ticket </span><span style="color: #007700">= </span><span style="color: #0000BB">OrderSend</span><span style="color: #007700">(</span><span style="color: #0000BB">Symbol</span><span style="color: #007700">(), </span><span style="color: #0000BB">Type</span><span style="color: #007700">, </span><span style="color: #0000BB">Lots</span><span style="color: #007700">, </span><span style="color: #0000BB">Price</span><span style="color: #007700">, </span><span style="color: #0000BB">Slippage</span><span style="color: #007700">, </span><span style="color: #0000BB">Stop</span><span style="color: #007700">, </span><span style="color: #0000BB">Take</span><span style="color: #007700">, </span><span style="color: #0000BB">Cmnt</span><span style="color: #007700">, </span><span style="color: #0000BB">Magic</span><span style="color: #007700">, </span><span style="color: #0000BB">0</span><span style="color: #007700">, </span><span style="color: #0000BB">Color</span><span style="color: #007700">);if(</span><span style="color: #0000BB">Ticket </span><span style="color: #007700">&lt; </span><span style="color: #0000BB">0</span><span style="color: #007700">){</span><span style="color: #0000BB">Err </span><span style="color: #007700">= </span><span style="color: #0000BB">GetLastError</span><span style="color: #007700">();if (</span><span style="color: #0000BB">Err </span><span style="color: #007700">== </span><span style="color: #0000BB">4   </span><span style="color: #007700">|| </span><span style="color: #FF8000">/* SERVER_BUSY */</span><span style="color: #0000BB">Err </span><span style="color: #007700">== </span><span style="color: #0000BB">129 </span><span style="color: #007700">|| </span><span style="color: #FF8000">/* INVALID_PRICE */ </span><span style="color: #0000BB">Err </span><span style="color: #007700">== </span><span style="color: #0000BB">135 </span><span style="color: #007700">|| </span><span style="color: #FF8000">/* PRICE_CHANGED */ </span><span style="color: #0000BB">Err </span><span style="color: #007700">== </span><span style="color: #0000BB">137 </span><span style="color: #007700">|| </span><span style="color: #FF8000">/* BROKER_BUSY */ </span><span style="color: #0000BB">Err </span><span style="color: #007700">== </span><span style="color: #0000BB">138 </span><span style="color: #007700">|| </span><span style="color: #FF8000">/* REQUOTE */ </span><span style="color: #0000BB">Err </span><span style="color: #007700">== </span><span style="color: #0000BB">146 </span><span style="color: #007700">|| </span><span style="color: #FF8000">/* TRADE_CONTEXT_BUSY */</span><span style="color: #0000BB">Err </span><span style="color: #007700">== </span><span style="color: #0000BB">136 </span><span style="color: #007700">)  </span><span style="color: #FF8000">/* OFF_QUOTES */</span><span style="color: #007700">{if(</span><span style="color: #0000BB">Debug</span><span style="color: #007700">) Print(</span><span style="color: #DD0000">"Ошибка(OrderSend - "</span><span style="color: #007700">, </span><span style="color: #0000BB">Err</span><span style="color: #007700">, </span><span style="color: #DD0000">"): "</span><span style="color: #007700">, </span><span style="color: #0000BB">ErrorDescription</span><span style="color: #007700">(</span><span style="color: #0000BB">Err</span><span style="color: #007700">));if(</span><span style="color: #0000BB">Debug</span><span style="color: #007700">) Print(</span><span style="color: #DD0000">"Ожидаем 3 сек..."</span><span style="color: #007700">);</span><span style="color: #0000BB">Sleep</span><span style="color: #007700">(</span><span style="color: #0000BB">3000</span><span style="color: #007700">);</span><span style="color: #0000BB">Delay </span><span style="color: #007700">= </span><span style="color: #0000BB">True</span><span style="color: #007700">;continue;}else{if(</span><span style="color: #0000BB">Debug</span><span style="color: #007700">) Print(</span><span style="color: #DD0000">"Критическая ошибка(OrderSend - "</span><span style="color: #007700">, </span><span style="color: #0000BB">Err</span><span style="color: #007700">, </span><span style="color: #DD0000">"): "</span><span style="color: #007700">, </span><span style="color: #0000BB">ErrorDescription</span><span style="color: #007700">(</span><span style="color: #0000BB">Err</span><span style="color: #007700">));</span><span style="color: #0000BB">Error </span><span style="color: #007700">= </span><span style="color: #0000BB">Err</span><span style="color: #007700">;break;}}break;}else{if(</span><span style="color: #0000BB">Debug</span><span style="color: #007700">) Print(</span><span style="color: #DD0000">"Эксперту запрещено торговать! Снята галка в свойствах эксперта."</span><span style="color: #007700">);</span><span style="color: #FF8000">//Print("Ожидаем 3 сек...");//Sleep(3000);//Delay = True;//continue;</span><span style="color: #007700">break;}}if(</span><span style="color: #0000BB">Ticket </span><span style="color: #007700">&gt; </span><span style="color: #0000BB">0</span><span style="color: #007700">)if(</span><span style="color: #0000BB">Debug</span><span style="color: #007700">) Print(</span><span style="color: #DD0000">"Ордер отправлен успешно. Тикет = "</span><span style="color: #007700">,</span><span style="color: #0000BB">Ticket</span><span style="color: #007700">);elseif(</span><span style="color: #0000BB">Debug</span><span style="color: #007700">) Print(</span><span style="color: #DD0000">"Ошибка! Ордер не отправлен. (ErrorCode = "</span><span style="color: #007700">, </span><span style="color: #0000BB">Error</span><span style="color: #007700">, </span><span style="color: #DD0000">": "</span><span style="color: #007700">, </span><span style="color: #0000BB">ErrorDescription</span><span style="color: #007700">(</span><span style="color: #0000BB">Error</span><span style="color: #007700">), </span><span style="color: #DD0000">")"</span><span style="color: #007700">);return(</span><span style="color: #0000BB">Ticket</span><span style="color: #007700">);}</span><span style="color: #FF8000">//+------------------------------------------------------------------+</span><span style="color: #0000BB">double IIFd</span><span style="color: #007700">(</span><span style="color: #0000BB">bool condition</span><span style="color: #007700">, </span><span style="color: #0000BB">double ifTrue</span><span style="color: #007700">, </span><span style="color: #0000BB">double ifFalse</span><span style="color: #007700">) {if (</span><span style="color: #0000BB">condition</span><span style="color: #007700">) return(</span><span style="color: #0000BB">ifTrue</span><span style="color: #007700">); else return(</span><span style="color: #0000BB">ifFalse</span><span style="color: #007700">);} 
    </span><span style="color: #0000BB"></span>
    </span>
    </code>

    2013-11-11   18:36
    Лучший ответ #2
    Накопленные выплаты 1854 RUB

    Приветствую. Вот еще полезная функция, коды ошибок исполнения. Функцию можно просто вставить в свой код и вызывать где надо. Или просто вставить в свой код, оформить в виде комментария и в случае если возникает какая-то ошибка, просто смотреть, что означает эта ошибка.

    MQL-Код:
    <code><span style="color: #000000">
    <span style="color: #0000BB">string ErrorDescript</span><span style="color: #007700">(</span><span style="color: #0000BB">int error_code</span><span style="color: #007700">) {</span><span style="color: #0000BB">string error_string</span><span style="color: #007700">;switch(</span><span style="color: #0000BB">error_code</span><span style="color: #007700">) {</span><span style="color: #FF8000">//---- Коды ошибок, возвращаемые торговым сервером:</span><span style="color: #007700">case </span><span style="color: #0000BB">0</span><span style="color: #007700">:   </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Нет ошибок"</span><span style="color: #007700">;                                                                                             break;case </span><span style="color: #0000BB">1</span><span style="color: #007700">:   </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Нет ошибки, но результат неизвестен"</span><span style="color: #007700">;                                                                    break;case </span><span style="color: #0000BB">2</span><span style="color: #007700">:   </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Общая ошибка"</span><span style="color: #007700">;                                                                                           break;case </span><span style="color: #0000BB">3</span><span style="color: #007700">:   </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Неправильные параметры"</span><span style="color: #007700">;                                                                                 break;case </span><span style="color: #0000BB">4</span><span style="color: #007700">:   </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Торговый сервер занят"</span><span style="color: #007700">;                                                                                  break;case </span><span style="color: #0000BB">5</span><span style="color: #007700">:   </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Старая версия клиентского терминала"</span><span style="color: #007700">;                                                                    break;case </span><span style="color: #0000BB">6</span><span style="color: #007700">:   </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Нет связи с торговым сервером"</span><span style="color: #007700">;                                                                          break;case </span><span style="color: #0000BB">7</span><span style="color: #007700">:   </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Недостаточно прав"</span><span style="color: #007700">;                                                                                      break;case </span><span style="color: #0000BB">8</span><span style="color: #007700">:   </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Слишком частые запросы"</span><span style="color: #007700">;                                                                                 break;case </span><span style="color: #0000BB">9</span><span style="color: #007700">:   </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Недопустимая операция нарушающая функционирование сервера"</span><span style="color: #007700">;                                              break;case </span><span style="color: #0000BB">64</span><span style="color: #007700">:  </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Счет заблокирован"</span><span style="color: #007700">;                                                                                      break;case </span><span style="color: #0000BB">65</span><span style="color: #007700">:  </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Неправильный номер счета"</span><span style="color: #007700">;                                                                               break;case </span><span style="color: #0000BB">128</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Истек срок ожидания совершения сделки"</span><span style="color: #007700">;                                                                  break;case </span><span style="color: #0000BB">129</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Неправильная цена"</span><span style="color: #007700">;                                                                                      break;case </span><span style="color: #0000BB">130</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Неправильные стопы"</span><span style="color: #007700">;                                                                                     break;case </span><span style="color: #0000BB">131</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Неправильный объем"</span><span style="color: #007700">;                                                                                     break;case </span><span style="color: #0000BB">132</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Рынок закрыт"</span><span style="color: #007700">;                                                                                           break;case </span><span style="color: #0000BB">133</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Торговля запрещена"</span><span style="color: #007700">;                                                                                     break;  case </span><span style="color: #0000BB">134</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Недостаточно денег для совершения операции"</span><span style="color: #007700">;                                                             break;case </span><span style="color: #0000BB">135</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Цена изменилась"</span><span style="color: #007700">;                                                                                        break;case </span><span style="color: #0000BB">136</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Нет цен"</span><span style="color: #007700">;                                                                                                break;case </span><span style="color: #0000BB">137</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Брокер занят"</span><span style="color: #007700">;                                                                                           break;case </span><span style="color: #0000BB">138</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Новые цены"</span><span style="color: #007700">;                                                                                             break;case </span><span style="color: #0000BB">139</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Ордер заблокирован и уже обрабатывается"</span><span style="color: #007700">;                                                                break;case </span><span style="color: #0000BB">140</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Разрешена только покупка"</span><span style="color: #007700">;                                                                               break;case </span><span style="color: #0000BB">141</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Слишком много запросов"</span><span style="color: #007700">;                                                                                 break;case </span><span style="color: #0000BB">145</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Модификация запрещена, так как ордер слишком близок к рынку"</span><span style="color: #007700">;                                            break;case </span><span style="color: #0000BB">146</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Подсистема торговли занята"</span><span style="color: #007700">;                                                                             break;case </span><span style="color: #0000BB">147</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Использование даты истечения ордера запрещено брокером"</span><span style="color: #007700">;                                                 break;case </span><span style="color: #0000BB">148</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Количество открытых и отложенных ордеров достигло предела, установленного брокером."</span><span style="color: #007700">;                    break;</span><span style="color: #FF8000">//---- Коды ошибок выполнения MQL4-программы:</span><span style="color: #007700">case </span><span style="color: #0000BB">4000</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Нет ошибки"</span><span style="color: #007700">;                                                                                            break;case </span><span style="color: #0000BB">4001</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Неправильный указатель функции"</span><span style="color: #007700">;                                                                        break;case </span><span style="color: #0000BB">4002</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Индекс массива - вне диапазона"</span><span style="color: #007700">;                                                                        break;case </span><span style="color: #0000BB">4003</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Нет памяти для стека функций"</span><span style="color: #007700">;                                                                          break;case </span><span style="color: #0000BB">4004</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Переполнение стека после рекурсивного вызова"</span><span style="color: #007700">;                                                          break;case </span><span style="color: #0000BB">4005</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"На стеке нет памяти для передачи параметров"</span><span style="color: #007700">;                                                           break;case </span><span style="color: #0000BB">4006</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Нет памяти для строкового параметра"</span><span style="color: #007700">;                                                                   break;case </span><span style="color: #0000BB">4007</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Нет памяти для временной строки"</span><span style="color: #007700">;                                                                       break;case </span><span style="color: #0000BB">4008</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Неинициализированная строка"</span><span style="color: #007700">;                                                                           break;case </span><span style="color: #0000BB">4009</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Неинициализированная строка в массиве"</span><span style="color: #007700">;                                                                 break;case </span><span style="color: #0000BB">4010</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Нет памяти для строкового массива"</span><span style="color: #007700">;                                                                     break;case </span><span style="color: #0000BB">4011</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Слишком длинная строка"</span><span style="color: #007700">;                                                                                break;case </span><span style="color: #0000BB">4012</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Остаток от деления на ноль"</span><span style="color: #007700">;                                                                            break;case </span><span style="color: #0000BB">4013</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Деление на ноль"</span><span style="color: #007700">;                                                                                       break;case </span><span style="color: #0000BB">4014</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Неизвестная команда"</span><span style="color: #007700">;                                                                                   break;case </span><span style="color: #0000BB">4015</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Неправильный переход"</span><span style="color: #007700">;                                                                                  break;case </span><span style="color: #0000BB">4016</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Неинициализированный массив"</span><span style="color: #007700">;                                                                           break;case </span><span style="color: #0000BB">4017</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Вызовы DLL не разрешены"</span><span style="color: #007700">;                                                                               break;case </span><span style="color: #0000BB">4018</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Невозможно загрузить библиотеку"</span><span style="color: #007700">;                                                                       break;case </span><span style="color: #0000BB">4019</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Невозможно вызвать функцию"</span><span style="color: #007700">;                                                                            break;case </span><span style="color: #0000BB">4020</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Вызовы внешних библиотечных функций не разрешены"</span><span style="color: #007700">;                                                      break;case </span><span style="color: #0000BB">4021</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Недостаточно памяти для строки, возвращаемой из функции"</span><span style="color: #007700">;                                               break;case </span><span style="color: #0000BB">4022</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Система занята"</span><span style="color: #007700">;                                                                                        break;case </span><span style="color: #0000BB">4050</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Неправильное количество параметров функции"</span><span style="color: #007700">;                                                            break;case </span><span style="color: #0000BB">4051</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Недопустимое значение параметра функции"</span><span style="color: #007700">;                                                               break;case </span><span style="color: #0000BB">4052</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Внутренняя ошибка строковой функции"</span><span style="color: #007700">;                                                                   break;case </span><span style="color: #0000BB">4053</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Ошибка массива"</span><span style="color: #007700">;                                                                                        break;case </span><span style="color: #0000BB">4054</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Неправильное использование массива-таймсерии"</span><span style="color: #007700">;                                                          break;case </span><span style="color: #0000BB">4055</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Ошибка пользовательского индикатора"</span><span style="color: #007700">;                                                                   break;case </span><span style="color: #0000BB">4056</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Массивы несовместимы"</span><span style="color: #007700">;                                                                                  break;case </span><span style="color: #0000BB">4057</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Ошибка обработки глобальныех переменных"</span><span style="color: #007700">;                                                               break;case </span><span style="color: #0000BB">4058</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Глобальная переменная не обнаружена"</span><span style="color: #007700">;                                                                   break;case </span><span style="color: #0000BB">4059</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Функция не разрешена в тестовом режиме"</span><span style="color: #007700">;                                                                break;case </span><span style="color: #0000BB">4060</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Функция не разрешена"</span><span style="color: #007700">;                                                                                  break;case </span><span style="color: #0000BB">4061</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Ошибка отправки почты"</span><span style="color: #007700">;                                                                                 break;case </span><span style="color: #0000BB">4062</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Ожидается параметр типа string"</span><span style="color: #007700">;                                                                        break;case </span><span style="color: #0000BB">4063</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Ожидается параметр типа integer"</span><span style="color: #007700">;                                                                       break;case </span><span style="color: #0000BB">4064</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Ожидается параметр типа double"</span><span style="color: #007700">;                                                                        break;case </span><span style="color: #0000BB">4065</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"В качестве параметра ожидается массив"</span><span style="color: #007700">;                                                                 break;case </span><span style="color: #0000BB">4066</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Запрошенные исторические данные в состоянии обновления"</span><span style="color: #007700">;                                                break;case </span><span style="color: #0000BB">4067</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Ошибка при выполнении торговой операции"</span><span style="color: #007700">;                                                               break;case </span><span style="color: #0000BB">4099</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Конец файла"</span><span style="color: #007700">;                                                                                           break;case </span><span style="color: #0000BB">4100</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Ошибка при работе с файлом"</span><span style="color: #007700">;                                                                            break;case </span><span style="color: #0000BB">4101</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Неправильное имя файла"</span><span style="color: #007700">;                                                                                break;case </span><span style="color: #0000BB">4102</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Слишком много открытых файлов"</span><span style="color: #007700">;                                                                         break;case </span><span style="color: #0000BB">4103</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Невозможно открыть файл"</span><span style="color: #007700">;                                                                               break;case </span><span style="color: #0000BB">4104</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Несовместимый режим доступа к файлу"</span><span style="color: #007700">;                                                                   break;case </span><span style="color: #0000BB">4105</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Ни один ордер не выбран"</span><span style="color: #007700">;                                                                               break;case </span><span style="color: #0000BB">4106</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Неизвестный символ"</span><span style="color: #007700">;                                                                                    break;case </span><span style="color: #0000BB">4107</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Неправильный параметр цены для торговой функции"</span><span style="color: #007700">;                                                       break;case </span><span style="color: #0000BB">4108</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Неверный номер тикета"</span><span style="color: #007700">;                                                                                 break;case </span><span style="color: #0000BB">4109</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Торговля не разрешена. Необходимо включить опцию Разрешить советнику торговать в свойствах эксперта."</span><span style="color: #007700">;  break;case </span><span style="color: #0000BB">4110</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Длинные позиции не разрешены. Необходимо проверить свойства эксперта."</span><span style="color: #007700">;                                 break;case </span><span style="color: #0000BB">4111</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Короткие позиции не разрешены. Необходимо проверить свойства эксперта."</span><span style="color: #007700">;                                break;case </span><span style="color: #0000BB">4200</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Объект уже существует"</span><span style="color: #007700">;                                                                                 break;case </span><span style="color: #0000BB">4201</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Запрошено неизвестное свойство объекта"</span><span style="color: #007700">;                                                                break;case </span><span style="color: #0000BB">4202</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Объект не существует"</span><span style="color: #007700">;                                                                                  break;case </span><span style="color: #0000BB">4203</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Неизвестный тип объекта"</span><span style="color: #007700">;                                                                               break;case </span><span style="color: #0000BB">4204</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Нет имени объекта"</span><span style="color: #007700">;                                                                                     break;case </span><span style="color: #0000BB">4205</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Ошибка координат объекта"</span><span style="color: #007700">;                                                                              break;case </span><span style="color: #0000BB">4206</span><span style="color: #007700">: </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #DD0000">"Не найдено указанное подокно"</span><span style="color: #007700">;                                                                          break;default:   </span><span style="color: #0000BB">error_string</span><span style="color: #007700">=</span><span style="color: #0000BB">error_code</span><span style="color: #007700">;}return(</span><span style="color: #0000BB">error_string</span><span style="color: #007700">);} 
    </span><span style="color: #0000BB"></span>
    </span>
    </code>

    2019-10-14   19:52
    Лучший ответ #3
    Накопленные выплаты 72086 RUB

    Цитата Сообщение от Gulliwer Посмотреть сообщение
    Добрый день!Нужна функция сравнения двух рыночных ордеров с указанным типом и ID по размеру лота (>/<)..
    Цитата Сообщение от Gulliwer Посмотреть сообщение
    Если кто набросает здесь код этой функции,буду очень признателен..
    Хорошо, напишу вам... только уточните какие есть исходные данные и что нужно получить на выходе функции, цифры или там какие нить слова, чтобы согласовать с вашими дальнейшими действиями.
    Еще такой непонятный момент.. вы написали больше - меньше, но забыли про третье состояние... равенство лотов. Или, при определенных условиях достаточно true/false. Например, лот первого ордера больше второго- true, во всех остальных случаях- false. Уточните.
    Далее.. как минимум, нужны еще их тикеты. Но! если известны тикеты, то тип и ID уже не обязательны. По сему, скорее всего тикеты неизвестны, их нужно найти по каким то признакам, ибо ордеров может быть множество на счете, и с данным типам и с таким ID. Как то так, больше инфы.

    2019-10-17   17:42
    Лучший ответ #4
    Накопленные выплаты 72086 RUB

    Цитата Сообщение от Gulliwer Посмотреть сообщение
    Да,их может быть больше..Тикеты здесь не важны..Нужно простое сравнение лотности ордеров с определенным ID(магиком),определенным типом(BUY,SELL),на одном символе..Например:если лот бай1 больше лот сел2 и OrderSymbol() == Symbol(),то TRUE...дальнейшие мои какие-то действия..Из этой функции сделаю уже сам блок в генератор..Заранее извиняюсь за свою некомпетентность,не знаю,возможно ли так все сделать,выбрать,найти ордер,не учитывая тикер его...
    Все равно не добился от вас признаков, по каким выбирать ордера, если их множество. Можно и без тикетов. Вот привел пробный пример, по вашей просьбе. Однако, она не совсем корректная, если в рынке будет больше двух ордеров или один или 2 одного типа. Старайтесь писать код с перспективой на будущее и учитывать все нюансы. Что непонятно, спрашивайте, подредактируем.
    PHP код:
    <code><span style="color: #000000"> <span style="color: #0000BB"></span><span style="color: #FF8000">//+-------------------------------------------------------------------+//| 17.10.2019 ; https://forexdengi.com |//+-------------------------------------------------------------------+//| Описание : Сравнение лотности двух ордеров разных типов |//+-------------------------------------------------------------------+</span><span style="color: #0000BB">bool CompareLot</span><span style="color: #007700">(</span><span style="color: #0000BB">int ot1</span><span style="color: #007700">=-</span><span style="color: #0000BB">1</span><span style="color: #007700">,</span><span style="color: #0000BB">int ot2</span><span style="color: #007700">=-</span><span style="color: #0000BB">1</span><span style="color: #007700">,</span><span style="color: #0000BB">int mn</span><span style="color: #007700">=-</span><span style="color: #0000BB">1</span><span style="color: #007700">) {</span><span style="color: #0000BB">int type</span><span style="color: #007700">,</span><span style="color: #0000BB">k</span><span style="color: #007700">=</span><span style="color: #0000BB">OrdersTotal</span><span style="color: #007700">();</span><span style="color: #0000BB">double lots_1</span><span style="color: #007700">=</span><span style="color: #0000BB">0.0</span><span style="color: #007700">,</span><span style="color: #0000BB">lots_2</span><span style="color: #007700">=</span><span style="color: #0000BB">0.0</span><span style="color: #007700">;</span><span style="color: #0000BB">bool result</span><span style="color: #007700">=</span><span style="color: #0000BB">false</span><span style="color: #007700">;for(</span><span style="color: #0000BB">i</span><span style="color: #007700">=</span><span style="color: #0000BB">0</span><span style="color: #007700">; </span><span style="color: #0000BB">i</span><span style="color: #007700">&lt;</span><span style="color: #0000BB">k</span><span style="color: #007700">; </span><span style="color: #0000BB">i</span><span style="color: #007700">++) {if(</span><span style="color: #0000BB">OrderSelect</span><span style="color: #007700">(</span><span style="color: #0000BB">i</span><span style="color: #007700">, </span><span style="color: #0000BB">SELECT_BY_POS</span><span style="color: #007700">, </span><span style="color: #0000BB">MODE_TRADES</span><span style="color: #007700">)) { </span><span style="color: #FF8000">// Выбор ордера из списка</span><span style="color: #007700">if(</span><span style="color: #0000BB">OrderSymbol</span><span style="color: #007700">() == </span><span style="color: #0000BB">Symbol</span><span style="color: #007700">() &amp;&amp; </span><span style="color: #0000BB">OrderMagicNumber</span><span style="color: #007700">() == </span><span style="color: #0000BB">mn</span><span style="color: #007700">) { </span><span style="color: #FF8000">// Фильтр по символу и по ID</span><span style="color: #0000BB">type</span><span style="color: #007700">=</span><span style="color: #0000BB">OrderType</span><span style="color: #007700">();if(</span><span style="color: #0000BB">type</span><span style="color: #007700">&gt;</span><span style="color: #0000BB">1</span><span style="color: #007700">) continue;if(</span><span style="color: #0000BB">type</span><span style="color: #007700">==</span><span style="color: #0000BB">OP_BUY </span><span style="color: #007700">&amp;&amp; </span><span style="color: #0000BB">type</span><span style="color: #007700">==</span><span style="color: #0000BB">ot1</span><span style="color: #007700">) </span><span style="color: #0000BB">lots_1</span><span style="color: #007700">=</span><span style="color: #0000BB">OrderLots</span><span style="color: #007700">(); </span><span style="color: #FF8000">// Заносим баерский лот в переменную</span><span style="color: #007700">if(</span><span style="color: #0000BB">type</span><span style="color: #007700">==</span><span style="color: #0000BB">OP_SELL </span><span style="color: #007700">&amp;&amp; </span><span style="color: #0000BB">type</span><span style="color: #007700">==</span><span style="color: #0000BB">ot2</span><span style="color: #007700">) </span><span style="color: #0000BB">lots_2</span><span style="color: #007700">=</span><span style="color: #0000BB">OrderLots</span><span style="color: #007700">(); </span><span style="color: #FF8000">// Заносим селерский лот в переменную</span><span style="color: #007700">}}}if(</span><span style="color: #0000BB">lots_1</span><span style="color: #007700">&gt;</span><span style="color: #0000BB">lots_2</span><span style="color: #007700">) </span><span style="color: #0000BB">result</span><span style="color: #007700">=</span><span style="color: #0000BB">true</span><span style="color: #007700">; </span><span style="color: #FF8000">// Сравниваем лотность</span><span style="color: #007700">return (</span><span style="color: #0000BB">result</span><span style="color: #007700">); </span><span style="color: #FF8000">// Возвращаем результат</span><span style="color: #007700">} </span><span style="color: #FF8000">// Вызов функции сравнения лотности ордеров</span><span style="color: #007700">if(</span><span style="color: #0000BB">CompareLot</span><span style="color: #007700">(</span><span style="color: #0000BB">OP_BUY</span><span style="color: #007700">,</span><span style="color: #0000BB">OP_SELL</span><span style="color: #007700">,</span><span style="color: #0000BB">Magic</span><span style="color: #007700">)) {</span><span style="color: #FF8000">// Здесь какие нить действия, если лот ордера бай больше лота ордера селл</span><span style="color: #007700">}else {</span><span style="color: #FF8000">// Здесь какие нить действия, если лот ордера бай меньше лота ордера селл или равен</span><span style="color: #007700">} </span><span style="color: #0000BB"></span> </span> </code>

    Цитата Сообщение от Gulliwer Посмотреть сообщение
    не знаю,возможно ли так все сделать,выбрать,найти ордер,не учитывая тикер его
    Какие то еще есть признаки... например, максимальная-минимальная цена, время открытия, привязка к барам... исходя из логики проектируемого советника. Нужен уникальный признак, чтобы гарантированно выбрать тот или иной ордер

    2011-03-13   13:21
    Лучший ответ #5
    Накопленные выплаты 14514 RUB

    Добрый день.
    Вот и я решил поделиться кодом написал функцию кодов ошибок на русском языке.

    MQL-Код:
    <code><span style="color: #000000">
    <span style="color: #0000BB">string error</span><span style="color: #007700">(</span><span style="color: #0000BB">int eer</span><span style="color: #007700">){</span><span style="color: #0000BB">string er</span><span style="color: #007700">;switch(</span><span style="color: #0000BB">eer</span><span style="color: #007700">){</span><span style="color: #FF8000">//---- </span><span style="color: #007700">case </span><span style="color: #0000BB">0</span><span style="color: #007700">:case </span><span style="color: #0000BB">1</span><span style="color: #007700">:   </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Нет ошибки, но результат неизвестен"</span><span style="color: #007700">;                         break;case </span><span style="color: #0000BB">2</span><span style="color: #007700">:   </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Общая ошибка"</span><span style="color: #007700">;                                                break;case </span><span style="color: #0000BB">3</span><span style="color: #007700">:   </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Неправильные параметры"</span><span style="color: #007700">;                                      break;case </span><span style="color: #0000BB">4</span><span style="color: #007700">:   </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Торговый сервер занят"</span><span style="color: #007700">;                                       break;case </span><span style="color: #0000BB">5</span><span style="color: #007700">:   </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Старая версия клиентского терминала"</span><span style="color: #007700">;                         break;case </span><span style="color: #0000BB">6</span><span style="color: #007700">:   </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Нет связи с торговым сервером"</span><span style="color: #007700">;                               break;case </span><span style="color: #0000BB">7</span><span style="color: #007700">:   </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Недостаточно прав"</span><span style="color: #007700">;                                           break;case </span><span style="color: #0000BB">8</span><span style="color: #007700">:   </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Слишком частые запросы"</span><span style="color: #007700">;                                      break;case </span><span style="color: #0000BB">9</span><span style="color: #007700">:   </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Недопустимая операция нарушающая функционирование сервера"</span><span style="color: #007700">;   break;case </span><span style="color: #0000BB">64</span><span style="color: #007700">:  </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Счет заблокирован"</span><span style="color: #007700">;                                           break;case </span><span style="color: #0000BB">65</span><span style="color: #007700">:  </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Неправильный номер счета"</span><span style="color: #007700">;                                    break;case </span><span style="color: #0000BB">128</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Истек срок ожидания совершения сделки"</span><span style="color: #007700">;                       break;case </span><span style="color: #0000BB">129</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Неправильная цена"</span><span style="color: #007700">;                                           break;case </span><span style="color: #0000BB">130</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Неправильные стопы"</span><span style="color: #007700">;                                          break;case </span><span style="color: #0000BB">131</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Неправильный объем"</span><span style="color: #007700">;                                          break;case </span><span style="color: #0000BB">132</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Рынок закрыт"</span><span style="color: #007700">;                                                break;case </span><span style="color: #0000BB">133</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Торговля запрещена"</span><span style="color: #007700">;                                          break;case </span><span style="color: #0000BB">134</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Недостаточно денег для совершения операции"</span><span style="color: #007700">;                  break;case </span><span style="color: #0000BB">135</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Цена изменилась"</span><span style="color: #007700">;                                             break;case </span><span style="color: #0000BB">136</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Нет цен"</span><span style="color: #007700">;                                                     break;case </span><span style="color: #0000BB">137</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Брокер занят"</span><span style="color: #007700">;                                                break;case </span><span style="color: #0000BB">138</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Новые цены - Реквот"</span><span style="color: #007700">;                                         break;case </span><span style="color: #0000BB">139</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Ордер заблокирован и уже обрабатывается"</span><span style="color: #007700">;                     break;case </span><span style="color: #0000BB">140</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Разрешена только покупка"</span><span style="color: #007700">;                                    break;case </span><span style="color: #0000BB">141</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Слишком много запросов"</span><span style="color: #007700">;                                      break;case </span><span style="color: #0000BB">145</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Модификация запрещена, так как ордер слишком близок к рынку"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">146</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Подсистема торговли занята"</span><span style="color: #007700">;                                  break;case </span><span style="color: #0000BB">147</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Использование даты истечения ордера запрещено брокером"</span><span style="color: #007700">;      break;case </span><span style="color: #0000BB">148</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Количество открытых и отложенных ордеров достигло предела "</span><span style="color: #007700">;  break;</span><span style="color: #FF8000">//---- </span><span style="color: #007700">case </span><span style="color: #0000BB">4000</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Нет ошибки"</span><span style="color: #007700">;                                                 break;case </span><span style="color: #0000BB">4001</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Неправильный указатель функции"</span><span style="color: #007700">;                             break;case </span><span style="color: #0000BB">4002</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Индекс массива - вне диапазона"</span><span style="color: #007700">;                             break;case </span><span style="color: #0000BB">4003</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Нет памяти для стека функций"</span><span style="color: #007700">;                               break;case </span><span style="color: #0000BB">4004</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Переполнение стека после рекурсивного вызова"</span><span style="color: #007700">;               break;case </span><span style="color: #0000BB">4005</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"На стеке нет памяти для передачи параметров"</span><span style="color: #007700">;                break;case </span><span style="color: #0000BB">4006</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Нет памяти для строкового параметра"</span><span style="color: #007700">;                        break;case </span><span style="color: #0000BB">4007</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Нет памяти для временной строки"</span><span style="color: #007700">;                            break;case </span><span style="color: #0000BB">4008</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Неинициализированная строка"</span><span style="color: #007700">;                                break;case </span><span style="color: #0000BB">4009</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Неинициализированная строка в массиве"</span><span style="color: #007700">;                      break;case </span><span style="color: #0000BB">4010</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Нет памяти для строкового массива"</span><span style="color: #007700">;                          break;case </span><span style="color: #0000BB">4011</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Слишком длинная строка"</span><span style="color: #007700">;                                     break;case </span><span style="color: #0000BB">4012</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Остаток от деления на ноль"</span><span style="color: #007700">;                                 break;case </span><span style="color: #0000BB">4013</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Деление на ноль"</span><span style="color: #007700">;                                            break;case </span><span style="color: #0000BB">4014</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Неизвестная команда"</span><span style="color: #007700">;                                        break;case </span><span style="color: #0000BB">4015</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Неправильный переход"</span><span style="color: #007700">;                                       break;case </span><span style="color: #0000BB">4016</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Неинициализированный массив"</span><span style="color: #007700">;                                break;case </span><span style="color: #0000BB">4017</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Вызовы DLL не разрешены"</span><span style="color: #007700">;                                    break;case </span><span style="color: #0000BB">4018</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Невозможно загрузить библиотеку"</span><span style="color: #007700">;                            break;case </span><span style="color: #0000BB">4019</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Невозможно вызвать функцию"</span><span style="color: #007700">;                                 break;case </span><span style="color: #0000BB">4020</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"eВызовы внешних библиотечных функций не разрешены"</span><span style="color: #007700">;          break;case </span><span style="color: #0000BB">4021</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Недостаточно памяти для строки, возвращаемой из функции"</span><span style="color: #007700">;    break;case </span><span style="color: #0000BB">4022</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Система занята"</span><span style="color: #007700">;                                             break;case </span><span style="color: #0000BB">4050</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Неправильное количество параметров функции"</span><span style="color: #007700">;                 break;case </span><span style="color: #0000BB">4051</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Недопустимое значение параметра функции"</span><span style="color: #007700">;                    break;case </span><span style="color: #0000BB">4052</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Внутренняя ошибка строковой функции"</span><span style="color: #007700">;                        break;case </span><span style="color: #0000BB">4053</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Ошибка массива"</span><span style="color: #007700">;                                             break;case </span><span style="color: #0000BB">4054</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Неправильное использование массива-таймсерии"</span><span style="color: #007700">;               break;case </span><span style="color: #0000BB">4055</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Ошибка пользовательского индикатора"</span><span style="color: #007700">;                        break;case </span><span style="color: #0000BB">4056</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Массивы несовместимы"</span><span style="color: #007700">;                                       break;case </span><span style="color: #0000BB">4057</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Ошибка обработки глобальныех переменных"</span><span style="color: #007700">;                    break;case </span><span style="color: #0000BB">4058</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Глобальная переменная не обнаружена"</span><span style="color: #007700">;                        break;case </span><span style="color: #0000BB">4059</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Функция не разрешена в тестовом режиме"</span><span style="color: #007700">;                     break;case </span><span style="color: #0000BB">4060</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Функция не подтверждена"</span><span style="color: #007700">;                                    break;case </span><span style="color: #0000BB">4061</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Ошибка отправки почты"</span><span style="color: #007700">;                                      break;case </span><span style="color: #0000BB">4062</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Ожидается параметр типа string"</span><span style="color: #007700">;                             break;case </span><span style="color: #0000BB">4063</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Ожидается параметр типа integer"</span><span style="color: #007700">;                            break;case </span><span style="color: #0000BB">4064</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Ожидается параметр типа double"</span><span style="color: #007700">;                             break;case </span><span style="color: #0000BB">4065</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"В качестве параметра ожидается массив"</span><span style="color: #007700">;                      break;case </span><span style="color: #0000BB">4066</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Запрошенные исторические данные в состоянии обновления"</span><span style="color: #007700">;     break;case </span><span style="color: #0000BB">4067</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Ошибка при выполнении торговой операции"</span><span style="color: #007700">;                    break;case </span><span style="color: #0000BB">4099</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Конец файла"</span><span style="color: #007700">;                                                break;case </span><span style="color: #0000BB">4100</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Ошибка при работе с файлом"</span><span style="color: #007700">;                                 break;case </span><span style="color: #0000BB">4101</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Неправильное имя файла"</span><span style="color: #007700">;                                     break;case </span><span style="color: #0000BB">4102</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Слишком много открытых файлов"</span><span style="color: #007700">;                              break;case </span><span style="color: #0000BB">4103</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Невозможно открыть файл"</span><span style="color: #007700">;                                    break;case </span><span style="color: #0000BB">4104</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Несовместимый режим доступа к файлу"</span><span style="color: #007700">;                        break;case </span><span style="color: #0000BB">4105</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Ни один ордер не выбран"</span><span style="color: #007700">;                                    break;case </span><span style="color: #0000BB">4106</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Неизвестный символ"</span><span style="color: #007700">;                                         break;case </span><span style="color: #0000BB">4107</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Неправильный параметр цены для торговой функции"</span><span style="color: #007700">;            break;case </span><span style="color: #0000BB">4108</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Неверный номер тикета"</span><span style="color: #007700">;                                      break;case </span><span style="color: #0000BB">4109</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Торговля не разрешена"</span><span style="color: #007700">;                                      break;case </span><span style="color: #0000BB">4110</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Длинные позиции не разрешены"</span><span style="color: #007700">;                               break;case </span><span style="color: #0000BB">4111</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Короткие позиции не разрешены"</span><span style="color: #007700">;                              break;case </span><span style="color: #0000BB">4200</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Объект уже существует"</span><span style="color: #007700">;                                      break;case </span><span style="color: #0000BB">4201</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Запрошено неизвестное свойство объекта"</span><span style="color: #007700">;                     break;case </span><span style="color: #0000BB">4202</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Объект не существует"</span><span style="color: #007700">;                                       break;case </span><span style="color: #0000BB">4203</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Неизвестный тип объекта"</span><span style="color: #007700">;                                    break;case </span><span style="color: #0000BB">4204</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Нет имени объекта"</span><span style="color: #007700">;                                          break;case </span><span style="color: #0000BB">4205</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Ошибка координат объекта"</span><span style="color: #007700">;                                   break;case </span><span style="color: #0000BB">4206</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Не найдено указанное подокно"</span><span style="color: #007700">;                               break;case </span><span style="color: #0000BB">4207</span><span style="color: #007700">: </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"Ошибка при работе с объектом"</span><span style="color: #007700">;                               break;default:   </span><span style="color: #0000BB">er</span><span style="color: #007700">=</span><span style="color: #DD0000">"unknown error"</span><span style="color: #007700">;}return(</span><span style="color: #0000BB">er</span><span style="color: #007700">);}</span><span style="color: #FF8000">//-------------------------------------------------------------------------------------+ 
    </span><span style="color: #0000BB"></span>
    </span>
    </code>
    Использовать в советнике так
    MQL-Код:
    <code><span style="color: #000000">
    <span style="color: #0000BB">int er</span><span style="color: #007700">=</span><span style="color: #0000BB">GetLastError</span><span style="color: #007700">();</span><span style="color: #0000BB">error</span><span style="color: #007700">(</span><span style="color: #0000BB">er</span><span style="color: #007700">); 
    </span><span style="color: #0000BB"></span>
    </span>
    </code>

    2011-12-08   02:05
    Лучший ответ #6
    Накопленные выплаты 18175 RUB

    Цитата Сообщение от WsForex Посмотреть сообщение
    Полезная функция кто не понимает код ошибок
    Добрый день.
    Вот и я решил поделиться кодом написал функцию кодов ошибок на русском языке.
    Цитата Сообщение от WsForex Посмотреть сообщение
    Использовать в советнике так
    PHP код:
    <code><span style="color: #000000"> <span style="color: #0000BB">int er</span><span style="color: #007700">=</span><span style="color: #0000BB">GetLastError</span><span style="color: #007700">(); </span><span style="color: #0000BB">error</span><span style="color: #007700">(</span><span style="color: #0000BB">er</span><span style="color: #007700">) </span><span style="color: #0000BB"></span> </span> </code>
    ;
    А я вот такую написал, использовать ее намного удобнее, функция возвращает код ошибки:
    PHP код:
    <code><span style="color: #000000"> <span style="color: #0000BB"></span><span style="color: #FF8000">//+------------------------------------------------------------------+ </span><span style="color: #0000BB">int Error</span><span style="color: #007700">(</span><span style="color: #0000BB">string event</span><span style="color: #007700">) </span><span style="color: #FF8000">//Error("");</span><span style="color: #007700">{</span><span style="color: #0000BB">string descr</span><span style="color: #007700">;</span><span style="color: #0000BB">int err </span><span style="color: #007700">= </span><span style="color: #0000BB">GetLastError</span><span style="color: #007700">();switch(</span><span style="color: #0000BB">err</span><span style="color: #007700">){</span><span style="color: #FF8000">// Коды ошибок, возвращаемые торговым сервером или клиентским терминалом:</span><span style="color: #007700">case </span><span style="color: #0000BB">0</span><span style="color: #007700">: </span><span style="color: #FF8000">/*descr= "Нет ошибки";*/ </span><span style="color: #007700">return(</span><span style="color: #0000BB">0</span><span style="color: #007700">);case </span><span style="color: #0000BB">1</span><span style="color: #007700">: </span><span style="color: #0000BB">descr</span><span style="color: #007700">= </span><span style="color: #DD0000">"Нет ошибки, но результат не известен"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">2</span><span style="color: #007700">: </span><span style="color: #0000BB">descr</span><span style="color: #007700">= </span><span style="color: #DD0000">"Общая ошибка"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">3</span><span style="color: #007700">: </span><span style="color: #0000BB">descr</span><span style="color: #007700">= </span><span style="color: #DD0000">"Неправильные параметры"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">4</span><span style="color: #007700">: </span><span style="color: #0000BB">descr</span><span style="color: #007700">= </span><span style="color: #DD0000">"Торговый сервер занят"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">5</span><span style="color: #007700">: </span><span style="color: #0000BB">descr </span><span style="color: #007700">= </span><span style="color: #DD0000">"Старая версия клиентского терминала"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">6</span><span style="color: #007700">: </span><span style="color: #0000BB">descr</span><span style="color: #007700">= </span><span style="color: #DD0000">"Нет связи с торговым сервером"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">7</span><span style="color: #007700">: </span><span style="color: #0000BB">descr</span><span style="color: #007700">= </span><span style="color: #DD0000">"Недостаточно прав"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">8</span><span style="color: #007700">: </span><span style="color: #0000BB">descr</span><span style="color: #007700">= </span><span style="color: #DD0000">"Слишком частые запросы"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">9</span><span style="color: #007700">: </span><span style="color: #0000BB">descr</span><span style="color: #007700">= </span><span style="color: #DD0000">"Недопустимая операция нарушающая функционирование сервера"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">64</span><span style="color: #007700">: </span><span style="color: #0000BB">descr</span><span style="color: #007700">= </span><span style="color: #DD0000">"Счет заблокирован"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">65</span><span style="color: #007700">: </span><span style="color: #0000BB">descr</span><span style="color: #007700">= </span><span style="color: #DD0000">"Неправильный номер счета"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">128</span><span style="color: #007700">: </span><span style="color: #0000BB">descr</span><span style="color: #007700">= </span><span style="color: #DD0000">"Истек срок ожидания совершения сделки"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">129</span><span style="color: #007700">: </span><span style="color: #0000BB">descr</span><span style="color: #007700">= </span><span style="color: #DD0000">"Неправильная цена"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">130</span><span style="color: #007700">: </span><span style="color: #0000BB">descr</span><span style="color: #007700">= </span><span style="color: #DD0000">"Неправильные стопы"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">131</span><span style="color: #007700">: </span><span style="color: #0000BB">descr</span><span style="color: #007700">= </span><span style="color: #DD0000">"Неправильный объем"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">132</span><span style="color: #007700">: </span><span style="color: #0000BB">descr</span><span style="color: #007700">= </span><span style="color: #DD0000">"Рынок закрыт"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">133</span><span style="color: #007700">: </span><span style="color: #0000BB">descr</span><span style="color: #007700">= </span><span style="color: #DD0000">"Торговля запрещена"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">134</span><span style="color: #007700">: </span><span style="color: #0000BB">descr</span><span style="color: #007700">= </span><span style="color: #DD0000">"Недостаточно денег для совершения операции"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">135</span><span style="color: #007700">: </span><span style="color: #0000BB">descr </span><span style="color: #007700">= </span><span style="color: #DD0000">"Цена изменилась"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">136</span><span style="color: #007700">: </span><span style="color: #0000BB">descr </span><span style="color: #007700">= </span><span style="color: #DD0000">"Нет цен"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">137</span><span style="color: #007700">: </span><span style="color: #0000BB">descr </span><span style="color: #007700">= </span><span style="color: #DD0000">"Брокер занят"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">138</span><span style="color: #007700">: </span><span style="color: #0000BB">descr </span><span style="color: #007700">= </span><span style="color: #DD0000">"Новые цены"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">139</span><span style="color: #007700">: </span><span style="color: #0000BB">descr </span><span style="color: #007700">= </span><span style="color: #DD0000">"Ордер заблокирован и уже обрабатывается"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">140</span><span style="color: #007700">: </span><span style="color: #0000BB">descr </span><span style="color: #007700">= </span><span style="color: #DD0000">"Разрешена только покупка"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">141</span><span style="color: #007700">: </span><span style="color: #0000BB">descr </span><span style="color: #007700">= </span><span style="color: #DD0000">"Слишком много запросов"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">145</span><span style="color: #007700">: </span><span style="color: #0000BB">descr </span><span style="color: #007700">= </span><span style="color: #DD0000">"Модификация запрещена, так как ордер слишком близок к рынку"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">146</span><span style="color: #007700">: </span><span style="color: #0000BB">descr </span><span style="color: #007700">= </span><span style="color: #DD0000">"Подсистема торговли занята"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">147</span><span style="color: #007700">: </span><span style="color: #0000BB">descr</span><span style="color: #007700">= </span><span style="color: #DD0000">"Использование даты истечения ордера запрещено брокером"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">148</span><span style="color: #007700">: </span><span style="color: #0000BB">descr</span><span style="color: #007700">= </span><span style="color: #DD0000">"Количество открытых и отложенных ордеров достигло предела, установленного брокером"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">149</span><span style="color: #007700">: </span><span style="color: #0000BB">descr</span><span style="color: #007700">= </span><span style="color: #DD0000">"Попытка открыть противоположную позицию к уже существующей, если хеджирование запрещено"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">150</span><span style="color: #007700">: </span><span style="color: #0000BB">descr</span><span style="color: #007700">= </span><span style="color: #DD0000">"Попытка закрыть позицию по инструменту в противоречии с правилом FIFO"</span><span style="color: #007700">; break;</span><span style="color: #FF8000">// Коды ошибок выполнения MQL4 программы:</span><span style="color: #007700">case </span><span style="color: #0000BB">4000</span><span style="color: #007700">: </span><span style="color: #FF8000">/*descr= "Нет ошибки";*/ </span><span style="color: #007700">return(</span><span style="color: #0000BB">0</span><span style="color: #007700">);case </span><span style="color: #0000BB">4001</span><span style="color: #007700">: </span><span style="color: #0000BB">descr</span><span style="color: #007700">= </span><span style="color: #DD0000">"Неправильный указатель функции"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">4002</span><span style="color: #007700">: </span><span style="color: #0000BB">descr</span><span style="color: #007700">= </span><span style="color: #DD0000">"Индекс массива - вне диапазона"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">4003</span><span style="color: #007700">: </span><span style="color: #0000BB">descr</span><span style="color: #007700">= </span><span style="color: #DD0000">"Нет памяти для стека функций"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">4004</span><span style="color: #007700">: </span><span style="color: #0000BB">descr</span><span style="color: #007700">= </span><span style="color: #DD0000">"Переполнение стека после рекурсивного вызова"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">4005</span><span style="color: #007700">: </span><span style="color: #0000BB">descr</span><span style="color: #007700">= </span><span style="color: #DD0000">"На стеке нет памяти для передачи параметров"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">4006</span><span style="color: #007700">: </span><span style="color: #0000BB">descr</span><span style="color: #007700">= </span><span style="color: #DD0000">"Нет памяти для строкового параметра"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">4007</span><span style="color: #007700">: </span><span style="color: #0000BB">descr</span><span style="color: #007700">= </span><span style="color: #DD0000">"Нет памяти для временной строки"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">4008</span><span style="color: #007700">: </span><span style="color: #0000BB">descr</span><span style="color: #007700">= </span><span style="color: #DD0000">"Неинициализированная строка"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">4009</span><span style="color: #007700">: </span><span style="color: #0000BB">descr</span><span style="color: #007700">= </span><span style="color: #DD0000">"Неинициализированная строка в массиве"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">4010</span><span style="color: #007700">: </span><span style="color: #0000BB">descr</span><span style="color: #007700">= </span><span style="color: #DD0000">"Нет памяти для строкового массива"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">4011</span><span style="color: #007700">: </span><span style="color: #0000BB">descr</span><span style="color: #007700">= </span><span style="color: #DD0000">"Слишком длинная строка"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">4012</span><span style="color: #007700">: </span><span style="color: #0000BB">descr </span><span style="color: #007700">= </span><span style="color: #DD0000">"Остаток от деления на ноль"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">4013</span><span style="color: #007700">: </span><span style="color: #0000BB">descr </span><span style="color: #007700">= </span><span style="color: #DD0000">"Деление на ноль"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">4014</span><span style="color: #007700">: </span><span style="color: #0000BB">descr</span><span style="color: #007700">= </span><span style="color: #DD0000">"Неизвестная команда"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">4015</span><span style="color: #007700">: </span><span style="color: #0000BB">descr</span><span style="color: #007700">= </span><span style="color: #DD0000">"Неправильный переход"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">4016</span><span style="color: #007700">: </span><span style="color: #0000BB">descr</span><span style="color: #007700">= </span><span style="color: #DD0000">"Неинициализированный массив"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">4017</span><span style="color: #007700">: </span><span style="color: #0000BB">descr</span><span style="color: #007700">= </span><span style="color: #DD0000">"Вызовы DLL не разрешены"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">4018</span><span style="color: #007700">: </span><span style="color: #0000BB">descr</span><span style="color: #007700">= </span><span style="color: #DD0000">"Невозможно загрузить библиотеку"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">4019</span><span style="color: #007700">: </span><span style="color: #0000BB">descr </span><span style="color: #007700">= </span><span style="color: #DD0000">"Невозможно вызвать функцию"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">4020</span><span style="color: #007700">: </span><span style="color: #0000BB">descr</span><span style="color: #007700">= </span><span style="color: #DD0000">"Вызовы внешних библиотечных функций не разрешены"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">4021</span><span style="color: #007700">: </span><span style="color: #0000BB">descr</span><span style="color: #007700">= </span><span style="color: #DD0000">"Недостаточно памяти для строки, возвращаемой из функции"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">4022</span><span style="color: #007700">: </span><span style="color: #0000BB">descr</span><span style="color: #007700">= </span><span style="color: #DD0000">"Система занята"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">4050</span><span style="color: #007700">: </span><span style="color: #0000BB">descr</span><span style="color: #007700">= </span><span style="color: #DD0000">"Неправильное количество параметров функции"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">4051</span><span style="color: #007700">: </span><span style="color: #0000BB">descr</span><span style="color: #007700">= </span><span style="color: #DD0000">"Недопустимое значение параметра функции"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">4052</span><span style="color: #007700">: </span><span style="color: #0000BB">descr </span><span style="color: #007700">= </span><span style="color: #DD0000">"Внутренняя ошибка строковой функции"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">4053</span><span style="color: #007700">: </span><span style="color: #0000BB">descr</span><span style="color: #007700">= </span><span style="color: #DD0000">"Ошибка массива"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">4054</span><span style="color: #007700">: </span><span style="color: #0000BB">descr </span><span style="color: #007700">= </span><span style="color: #DD0000">"Неправильное использование массива-таймсерии"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">4055</span><span style="color: #007700">: </span><span style="color: #0000BB">descr</span><span style="color: #007700">= </span><span style="color: #DD0000">"Ошибка пользовательского индикатора"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">4056</span><span style="color: #007700">: </span><span style="color: #0000BB">descr </span><span style="color: #007700">= </span><span style="color: #DD0000">"Массивы несовместимы"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">4057</span><span style="color: #007700">: </span><span style="color: #0000BB">descr</span><span style="color: #007700">= </span><span style="color: #DD0000">"Ошибка обработки глобальныех переменных"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">4058</span><span style="color: #007700">: </span><span style="color: #0000BB">descr</span><span style="color: #007700">= </span><span style="color: #DD0000">"Глобальная переменная не обнаружена"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">4059</span><span style="color: #007700">: </span><span style="color: #0000BB">descr </span><span style="color: #007700">= </span><span style="color: #DD0000">"Функция не разрешена в тестовом режиме"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">4060</span><span style="color: #007700">: </span><span style="color: #0000BB">descr</span><span style="color: #007700">= </span><span style="color: #DD0000">"Функция не подтверждена"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">4061</span><span style="color: #007700">: </span><span style="color: #0000BB">descr</span><span style="color: #007700">= </span><span style="color: #DD0000">"Ошибка отправки почты"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">4062</span><span style="color: #007700">: </span><span style="color: #0000BB">descr</span><span style="color: #007700">= </span><span style="color: #DD0000">"Ожидается параметр типа string"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">4063</span><span style="color: #007700">: </span><span style="color: #0000BB">descr </span><span style="color: #007700">= </span><span style="color: #DD0000">"Ожидается параметр типа integer"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">4064</span><span style="color: #007700">: </span><span style="color: #0000BB">descr</span><span style="color: #007700">= </span><span style="color: #DD0000">"Ожидается параметр типа double"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">4065</span><span style="color: #007700">: </span><span style="color: #0000BB">descr</span><span style="color: #007700">= </span><span style="color: #DD0000">"В качестве параметра ожидается массив"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">4066</span><span style="color: #007700">: </span><span style="color: #0000BB">descr </span><span style="color: #007700">= </span><span style="color: #DD0000">"Запрошенные исторические данные в состоянии обновления"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">4099</span><span style="color: #007700">: </span><span style="color: #0000BB">descr</span><span style="color: #007700">= </span><span style="color: #DD0000">"Конец файла"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">4100</span><span style="color: #007700">: </span><span style="color: #0000BB">descr</span><span style="color: #007700">= </span><span style="color: #DD0000">"Ошибка при работе с файлом"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">4101</span><span style="color: #007700">: </span><span style="color: #0000BB">descr</span><span style="color: #007700">= </span><span style="color: #DD0000">"Неправильное имя файла"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">4102</span><span style="color: #007700">: </span><span style="color: #0000BB">descr</span><span style="color: #007700">= </span><span style="color: #DD0000">"Слишком много открытых файлов"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">4103</span><span style="color: #007700">: </span><span style="color: #0000BB">descr</span><span style="color: #007700">= </span><span style="color: #DD0000">"Невозможно открыть файл"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">4104</span><span style="color: #007700">: </span><span style="color: #0000BB">descr</span><span style="color: #007700">= </span><span style="color: #DD0000">"Несовместимый режим доступа к файлу"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">4105</span><span style="color: #007700">: </span><span style="color: #0000BB">descr </span><span style="color: #007700">= </span><span style="color: #DD0000">"Ни один ордер не выбран"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">4106</span><span style="color: #007700">: </span><span style="color: #0000BB">descr</span><span style="color: #007700">= </span><span style="color: #DD0000">"Неизвестный символ"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">4107</span><span style="color: #007700">: </span><span style="color: #0000BB">descr</span><span style="color: #007700">= </span><span style="color: #DD0000">"Неправильный параметр цены для торговой функции"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">4108</span><span style="color: #007700">: </span><span style="color: #0000BB">descr</span><span style="color: #007700">= </span><span style="color: #DD0000">"Неверный номер тикета"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">4109</span><span style="color: #007700">: </span><span style="color: #0000BB">descr</span><span style="color: #007700">= </span><span style="color: #DD0000">"Торговля не разрешена"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">4110</span><span style="color: #007700">: </span><span style="color: #0000BB">descr</span><span style="color: #007700">= </span><span style="color: #DD0000">"Длинные позиции не разрешены"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">4111</span><span style="color: #007700">: </span><span style="color: #0000BB">descr</span><span style="color: #007700">= </span><span style="color: #DD0000">"Короткие позиции не разрешены"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">4200</span><span style="color: #007700">: </span><span style="color: #0000BB">descr </span><span style="color: #007700">= </span><span style="color: #DD0000">"Объект уже существует"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">4201</span><span style="color: #007700">: </span><span style="color: #0000BB">descr</span><span style="color: #007700">= </span><span style="color: #DD0000">"Запрошено неизвестное свойство объекта"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">4202</span><span style="color: #007700">: </span><span style="color: #0000BB">descr</span><span style="color: #007700">= </span><span style="color: #DD0000">"Объект не существует"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">4203</span><span style="color: #007700">: </span><span style="color: #0000BB">descr</span><span style="color: #007700">= </span><span style="color: #DD0000">"Неизвестный тип объекта"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">4204</span><span style="color: #007700">: </span><span style="color: #0000BB">descr </span><span style="color: #007700">= </span><span style="color: #DD0000">"Нет имени объекта"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">4205</span><span style="color: #007700">: </span><span style="color: #0000BB">descr</span><span style="color: #007700">= </span><span style="color: #DD0000">"Ошибка координат объекта"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">4206</span><span style="color: #007700">: </span><span style="color: #0000BB">descr </span><span style="color: #007700">= </span><span style="color: #DD0000">"Не найдено указанное подокно"</span><span style="color: #007700">; break;case </span><span style="color: #0000BB">4207</span><span style="color: #007700">: </span><span style="color: #0000BB">descr</span><span style="color: #007700">= </span><span style="color: #DD0000">"Ошибка при работе с объектом"</span><span style="color: #007700">; break;}Print(</span><span style="color: #0000BB">event</span><span style="color: #007700">,</span><span style="color: #DD0000">": "</span><span style="color: #007700">,</span><span style="color: #0000BB">descr</span><span style="color: #007700">,</span><span style="color: #DD0000">", № ошибки - "</span><span style="color: #007700">,</span><span style="color: #0000BB">err</span><span style="color: #007700">); return(</span><span style="color: #0000BB">err</span><span style="color: #007700">);} </span><span style="color: #FF8000">//+------------------------------------------------------------------+ </span><span style="color: #0000BB"></span> </span> </code>
    Пользоваться так - Error("описание контролируемого события"); и все .
    Пример:
    PHP код:
    <code><span style="color: #000000"> <span style="color: #0000BB">int start</span><span style="color: #007700">(){ </span><span style="color: #0000BB">Error</span><span style="color: #007700">(</span><span style="color: #DD0000">"В этом месте"</span><span style="color: #007700">);</span><span style="color: #0000BB">int x </span><span style="color: #007700">= </span><span style="color: #0000BB">1</span><span style="color: #007700">/</span><span style="color: #0000BB">x</span><span style="color: #007700">; return(</span><span style="color: #0000BB">0</span><span style="color: #007700">);} </span><span style="color: #0000BB"></span> </span> </code>

    Вложение 181860

    Вложение
    Превью
  2. линк#21
    Кандидат форумных наук
    Nick'Otin приемлемый уровень репутации Nick'Otin приемлемый уровень репутации Nick'Otin приемлемый уровень репутации Аватар для Nick'Otin
    Регистрация:
    16.12.2009
    Сообщений:
    2,320
    Накопленные выплаты (Подробнее):
    3750 RUB
    Поставил(а) лайков:
    74
    Получено лайков:   439
    в 223 сообщениях
    19%
    ПодписатьсяПодписаться
    Подписано 0
    Получить количество ордеров (рыночных либо отложенных) данного типа.
    MQL-Код:
    
    int OrdersCount(int type){  int orders = 0;  int cnt = OrdersTotal();  for (int i=0; i<cnt; i++) {    if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue;    //Опционально    //if (OrderSymbol() != Symbol()) continue;    //Опционально    //if (OrderMagicNumber() != Magic) continue;    if (OrderType() == type) orders++;  }  return (orders);} 
    
    
    

    В эксперте эту функцию можно использовать следующим образом:
    MQL-Код:
    
    int start() {  int BuyCnt = OrdersCount(OP_BUY);  if (BuyCnt > 0) return (0);  ... 
    
    
    

    Последний раз редактировалось Gold; 27.11.2015 в 19:33.

  3. post_thanks Получено лайков: 1

    Kofa (22.10.2017)

    <title>InstaForex</title><meta name="description" content="InstaForex"><a href="https://www.mt5.com/ru/forex_analysis">InstaForex</a>
  4. линк#22
    Свой человек
    no
     
    WsForex приемлемый уровень репутации WsForex приемлемый уровень репутации Аватар для WsForex
    Регистрация:
    12.03.2011
    Пол:
    Мужчина
    Сообщений:
    832
    Накопленные выплаты (Подробнее):
    14514 RUB
    Поставил лайков:
    146
    Получено лайков:   207
    в 148 сообщениях
    25%
    ПодписатьсяПодписаться
    Подписано 0
    Добрый день.
    Вот и я решил поделиться кодом написал функцию кодов ошибок на русском языке.

    MQL-Код:
    
    string error(int eer)
    {
       string er;
       switch(eer)
         {
          //---- 
          case 0:
          case 1:   er="Нет ошибки, но результат неизвестен";                         break;
          case 2:   er="Общая ошибка";                                                break;
          case 3:   er="Неправильные параметры";                                      break;
          case 4:   er="Торговый сервер занят";                                       break;
          case 5:   er="Старая версия клиентского терминала";                         break;
          case 6:   er="Нет связи с торговым сервером";                               break;
          case 7:   er="Недостаточно прав";                                           break;
          case 8:   er="Слишком частые запросы";                                      break;
          case 9:   er="Недопустимая операция нарушающая функционирование сервера";   break;
          case 64:  er="Счет заблокирован";                                           break;
          case 65:  er="Неправильный номер счета";                                    break;
          case 128: er="Истек срок ожидания совершения сделки";                       break;
          case 129: er="Неправильная цена";                                           break;
          case 130: er="Неправильные стопы";                                          break;
          case 131: er="Неправильный объем";                                          break;
          case 132: er="Рынок закрыт";                                                break;
          case 133: er="Торговля запрещена";                                          break;
          case 134: er="Недостаточно денег для совершения операции";                  break;
          case 135: er="Цена изменилась";                                             break;
          case 136: er="Нет цен";                                                     break;
          case 137: er="Брокер занят";                                                break;
          case 138: er="Новые цены - Реквот";                                         break;
          case 139: er="Ордер заблокирован и уже обрабатывается";                     break;
          case 140: er="Разрешена только покупка";                                    break;
          case 141: er="Слишком много запросов";                                      break;
          case 145: er="Модификация запрещена, так как ордер слишком близок к рынку"; break;
          case 146: er="Подсистема торговли занята";                                  break;
          case 147: er="Использование даты истечения ордера запрещено брокером";      break;
          case 148: er="Количество открытых и отложенных ордеров достигло предела ";  break;
          //---- 
          case 4000: er="Нет ошибки";                                                 break;
          case 4001: er="Неправильный указатель функции";                             break;
          case 4002: er="Индекс массива - вне диапазона";                             break;
          case 4003: er="Нет памяти для стека функций";                               break;
          case 4004: er="Переполнение стека после рекурсивного вызова";               break;
          case 4005: er="На стеке нет памяти для передачи параметров";                break;
          case 4006: er="Нет памяти для строкового параметра";                        break;
          case 4007: er="Нет памяти для временной строки";                            break;
          case 4008: er="Неинициализированная строка";                                break;
          case 4009: er="Неинициализированная строка в массиве";                      break;
          case 4010: er="Нет памяти для строкового массива";                          break;
          case 4011: er="Слишком длинная строка";                                     break;
          case 4012: er="Остаток от деления на ноль";                                 break;
          case 4013: er="Деление на ноль";                                            break;
          case 4014: er="Неизвестная команда";                                        break;
          case 4015: er="Неправильный переход";                                       break;
          case 4016: er="Неинициализированный массив";                                break;
          case 4017: er="Вызовы DLL не разрешены";                                    break;
          case 4018: er="Невозможно загрузить библиотеку";                            break;
          case 4019: er="Невозможно вызвать функцию";                                 break;
          case 4020: er="eВызовы внешних библиотечных функций не разрешены";          break;
          case 4021: er="Недостаточно памяти для строки, возвращаемой из функции";    break;
          case 4022: er="Система занята";                                             break;
          case 4050: er="Неправильное количество параметров функции";                 break;
          case 4051: er="Недопустимое значение параметра функции";                    break;
          case 4052: er="Внутренняя ошибка строковой функции";                        break;
          case 4053: er="Ошибка массива";                                             break;
          case 4054: er="Неправильное использование массива-таймсерии";               break;
          case 4055: er="Ошибка пользовательского индикатора";                        break;
          case 4056: er="Массивы несовместимы";                                       break;
          case 4057: er="Ошибка обработки глобальныех переменных";                    break;
          case 4058: er="Глобальная переменная не обнаружена";                        break;
          case 4059: er="Функция не разрешена в тестовом режиме";                     break;
          case 4060: er="Функция не подтверждена";                                    break;
          case 4061: er="Ошибка отправки почты";                                      break;
          case 4062: er="Ожидается параметр типа string";                             break;
          case 4063: er="Ожидается параметр типа integer";                            break;
          case 4064: er="Ожидается параметр типа double";                             break;
          case 4065: er="В качестве параметра ожидается массив";                      break;
          case 4066: er="Запрошенные исторические данные в состоянии обновления";     break;
          case 4067: er="Ошибка при выполнении торговой операции";                    break;
          case 4099: er="Конец файла";                                                break;
          case 4100: er="Ошибка при работе с файлом";                                 break;
          case 4101: er="Неправильное имя файла";                                     break;
          case 4102: er="Слишком много открытых файлов";                              break;
          case 4103: er="Невозможно открыть файл";                                    break;
          case 4104: er="Несовместимый режим доступа к файлу";                        break;
          case 4105: er="Ни один ордер не выбран";                                    break;
          case 4106: er="Неизвестный символ";                                         break;
          case 4107: er="Неправильный параметр цены для торговой функции";            break;
          case 4108: er="Неверный номер тикета";                                      break;
          case 4109: er="Торговля не разрешена";                                      break;
          case 4110: er="Длинные позиции не разрешены";                               break;
          case 4111: er="Короткие позиции не разрешены";                              break;
          case 4200: er="Объект уже существует";                                      break;
          case 4201: er="Запрошено неизвестное свойство объекта";                     break;
          case 4202: er="Объект не существует";                                       break;
          case 4203: er="Неизвестный тип объекта";                                    break;
          case 4204: er="Нет имени объекта";                                          break;
          case 4205: er="Ошибка координат объекта";                                   break;
          case 4206: er="Не найдено указанное подокно";                               break;
          case 4207: er="Ошибка при работе с объектом";                               break;
          default:   er="unknown error";
         }
      return(er);
    }
    //-------------------------------------------------------------------------------------+ 
    
    
    
    Использовать в советнике так

    MQL-Код:
    
    int er=GetLastError();
    
    error(er); 
    
    
    


  5. post_thanks Получено лайков: 5

    Evgast (11.06.2015), harbor (13.03.2013), Newbie (05.10.2011), SimpleJeka1487 (17.11.2012), TSanat (27.02.2015)

  6. линк#23
    Свой человек
    no
     
    WsForex приемлемый уровень репутации WsForex приемлемый уровень репутации Аватар для WsForex
    Регистрация:
    12.03.2011
    Пол:
    Мужчина
    Сообщений:
    832
    Накопленные выплаты (Подробнее):
    14514 RUB
    Поставил лайков:
    146
    Получено лайков:   207
    в 148 сообщениях
    25%
    ПодписатьсяПодписаться
    Подписано 0
    Цитата Сообщение от tsn Посмотреть сообщение
    Подскажите, как реализовать следующие торговые критерии:выставление отложенного ордера по закрытию очередного? Например, закрылся Buy по ТР, а необходимо выставить SellStop на удалении в 15 пунктах от предыдущего Sell Stop (т.е. подвигать отложенники вслед за ценой)?
    Нужно в начале написать функцию проверки как закрылся последний ордер
    вот эта функция от Игоря Кима.
    MQL-Код:
    
    //+----------------------------------------------------------------------------+//|  Автор    : Ким Игорь В. aka KimIV,  [url]http://www.kimiv.ru[/url]                   |//+----------------------------------------------------------------------------+//|  Версия   : 19.05.2008                                                     |//|  Описание : Возвращает флаг закрытия последней позиции по тейку.           |//+----------------------------------------------------------------------------+//|  Параметры:                                                                |//|    sy - наименование инструмента   (""   - любой символ,                   |//|                                     NULL - текущий символ)                 |//|    op - операция                   (-1   - любая позиция)                  |//|    mn - MagicNumber                (-1   - любой магик)                    |//+----------------------------------------------------------------------------+bool isCloseLastPosByTake(string sy="", int op=-1, int mn=-1) {  datetime t;  double   ocp, otp;  int      dg, i, j=-1, k=OrdersHistoryTotal();  if (sy=="0") sy=Symbol();  for (i=0; i<k; i++) {    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {      if (OrderSymbol()==sy || sy=="") {        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {          if (op<0 || OrderType()==op) {            if (mn<0 || OrderMagicNumber()==mn) {              if (t<OrderCloseTime()) {                t=OrderCloseTime();                j=i;              }            }          }        }      }    }  }  if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) {    dg=MarketInfo(OrderSymbol(), MODE_DIGITS);    if (dg==0) if (StringFind(OrderSymbol(), "JPY")<0) dg=4; else dg=2;    ocp=NormalizeDouble(OrderClosePrice(), dg);    otp=NormalizeDouble(OrderTakeProfit(), dg);    if (ocp==otp) return(True);  }  return(False);} 
    
    
    
    Использовать в советнике так
    MQL-Код:
    
    bool flagposTP = isCloseLastPosByTake("", -1, MagicNumber); 
    
    
    

    В место -1 можно указать тип позиции (OP_BUY или OP_SELL) если нужно конкретно для какого-то ордера.
    Функция возвращает True если позиция закрылась по ТР и в нашем случае переменная flagposTP == True;


  7. линк#24
    Свой человек
    no
     
    WsForex приемлемый уровень репутации WsForex приемлемый уровень репутации Аватар для WsForex
    Регистрация:
    12.03.2011
    Пол:
    Мужчина
    Сообщений:
    832
    Накопленные выплаты (Подробнее):
    14514 RUB
    Поставил лайков:
    146
    Получено лайков:   207
    в 148 сообщениях
    25%
    ПодписатьсяПодписаться
    Подписано 0
    Эта функция позволяет работать советнику по времени, отдельно параметры старт советника в понедельник и стоп в пятницу, а также можно указать через запятую в какой день недели советник должен работать.

    Глобальные переменные.
    MQL-Код:
    
    extern bool    ExpertTime  = True; // Использовать функцию работы по времени True-вкл False-выклextern string  TradeDay    = "1,2,3,4,5"; // Дни работы советника 1= понедельник, 5 = пятница. extern int     HourStart   = 0;     // Старт в понедельник extern int     HourStops   = 19;    // Стоп в пятницуextern int     EaStart    = 0;     // Ежедневный старт советникаextern int     EaStop     = 23;    // Ежедневный cтоп советника 
    
    
    

    Функция
    MQL-Код:
    
    //+------------------------------------------------------------------------------+int Tradetime(bool exptime, int OpenHour, int  CloseHour){// ---  int day[];   int i=0, np;  int Trading=0;  string st, tmp=TradeDay;  ArrayResize(day, 0);  while (StringLen(tmp)>0)  {    np=StringFind(tmp, ",");    if (np<0)     {      st=tmp;      tmp="";    }    else    {      st=StringSubstr(tmp, 0, np);      tmp=StringSubstr(tmp, np+1);    }    i++;    ArrayResize(day, i);    day[i-1]=StrToInteger(st);  }// ---  int TradingTime=0;  for (int f=0; f<7; f++) {  if (DayOfWeek()==day[f])Trading=1;  }  if (OpenHour>CloseHour){  if (Hour()<=CloseHour || Hour()>=OpenHour)TradingTime=1;  }  if (OpenHour<CloseHour){  if (Hour()>=OpenHour && Hour()<=CloseHour)TradingTime=1;  }  if (OpenHour==CloseHour){  if (Hour()==OpenHour)TradingTime=1;  }  if (DayOfWeek()==1 && Hour() <= HourStart)TradingTime=0;  if (DayOfWeek()==5 && Hour() >= HourStops)TradingTime=0;   if (Trading!=1)TradingTime=0;  if (exptime!=true)TradingTime=1;// ---  return(TradingTime); }//+------------------------------------------------------------------------------+ 
    
    
    
    Использование в советнике.
    MQL-Код:
    
    if(Tradetime(ExpertTime, EaStart, EaStop)==1 ) {// --------  ....//... Здесь код функций.// --------} 
    
    
    


  8. post_thanks Получено лайков: 2

    harbor (25.09.2012), TSanat (27.02.2015)

  9. линк#25
    Частый гость
    vdmitrich стараюсь положительно себя зарекомендовать Аватар для vdmitrich
    Регистрация:
    30.09.2011
    Пол:
    Мужчина
    Сообщений:
    160
    Накопленные выплаты (Подробнее):
    1574 RUB
    Поставил лайков:
    39
    Получено лайков:   31
    в 30 сообщениях
    19%
    ПодписатьсяПодписаться
    Подписано 0
    Здраствуйте. Я смотрю, что ветка скорее всего умирла, но мало ли кто заглянит.
    В советнике выводится информация на экран, я хотел добавить, чтобы выводилась в углу экрана текущая цена, и спред. Где-то видел в индекаторе, очень понравилось, удобно. В советнике, которым я пользуюсь очень нужная информация.Так вот, добавил такой код по цене, но не работает, кто-нибудь выложил бы код, я был бы очень благодарен.
    MQL-Код:
    
    ObjectCreate("info  1.1",OBJ_LABEL,0,0,0);
    ObjectSet("info  1.1",OBJPROP_CORNER,1);
    ObjectSet("info  1.1",OBJPROP_XDISTANCE,5);
    ObjectSet("info  1.1",OBJPROP_YDISTANCE,30);
    ObjectSetText("info  1.1",StringConcatenate("Текущая цена - ",(Price),11,"Arial",WhiteColor)); 
    
    
    

    Последний раз редактировалось Gold; 28.12.2012 в 00:15.
    ПАММ-счёт (Manual-Auto Trade)

  10. линк#26
    Модератор
    no
     
    Gold наивысший уровень репутации Gold наивысший уровень репутации Gold наивысший уровень репутации Gold наивысший уровень репутации Gold наивысший уровень репутации Gold наивысший уровень репутации Gold наивысший уровень репутации Gold наивысший уровень репутации Gold наивысший уровень репутации Gold наивысший уровень репутации Gold наивысший уровень репутации Аватар для Gold
    Регистрация:
    21.12.2010
    Пол:
    Мужчина
    Сообщений:
    19,613
    Поставил лайков:
    24,160
    Получено лайков:   20,217
    в 8,987 сообщениях
    103%
    Цитата Сообщение от vdmitrich Посмотреть сообщение
    Где-то видел в индекаторе, очень понравилось, удобно.
    Signal Bars

    Цитата Сообщение от vdmitrich Посмотреть сообщение
    кто-нибудь выложил бы код, я был бы очень благодарен.
    Код выкладывать не стану, индикатор декомпилирован и кода там больше чем нужно
    Скачайте, найдите нужный вам код в индикаторе Signal Bars v9. Русифицировал сегодня и немного модифицировал. Уменьшил шрифт отображаемой статистики под индикатором цены, и еще более уменьшил шрифт при включенном режиме Show_Smaller_Size.

    P.S. Только тему вы выбрали не соответствующую.
    paperclip Вложения


  11. post_thanks Получено лайков: 1

    vdmitrich (05.10.2011)

  12. линк#27
    Частый гость
    vdmitrich стараюсь положительно себя зарекомендовать Аватар для vdmitrich
    Регистрация:
    30.09.2011
    Пол:
    Мужчина
    Сообщений:
    160
    Накопленные выплаты (Подробнее):
    1574 RUB
    Поставил лайков:
    39
    Получено лайков:   31
    в 30 сообщениях
    19%
    ПодписатьсяПодписаться
    Подписано 0
    Цитата Сообщение от Gold Посмотреть сообщение
    Signal Bars


    Код выкладывать не стану, индикатор декомпилирован и кода там больше чем нужно
    Скачайте, найдите нужный вам код в индикаторе Signal Bars v9. Русифицировал сегодня и немного модифицировал. Уменьшил шрифт отображаемой статистики под индикатором цены, и еще более уменьшил шрифт при включенном режиме Show_Smaller_Size.

    P.S. Только тему вы выбрали не соответствующую.
    Благодарю за индикатор, посмотрю код, нужное вытащу из него.

    P.S.Почему тема не соответствующая? Немного не допонял вас.

    ПАММ-счёт (Manual-Auto Trade)

  13. линк#28
    Модератор
    no
     
    Gold наивысший уровень репутации Gold наивысший уровень репутации Gold наивысший уровень репутации Gold наивысший уровень репутации Gold наивысший уровень репутации Gold наивысший уровень репутации Gold наивысший уровень репутации Gold наивысший уровень репутации Gold наивысший уровень репутации Gold наивысший уровень репутации Gold наивысший уровень репутации Аватар для Gold
    Регистрация:
    21.12.2010
    Пол:
    Мужчина
    Сообщений:
    19,613
    Поставил лайков:
    24,160
    Получено лайков:   20,217
    в 8,987 сообщениях
    103%
    Цитата Сообщение от vdmitrich Посмотреть сообщение
    тема не соответствующая? Немного не допонял вас.
    Эта тема для размещения готовых к применению функций а не для помощи в доработке советника. За помощью лучше обратиться в тему Несколько вопросов от начинающего или Язык программирования MQL4.

    Если я не прав, пусть модераторы поправят.


  14. линк#29
    Свой человек
    Newbie стараюсь положительно себя зарекомендовать Аватар для Newbie
    Регистрация:
    10.12.2010
    Сообщений:
    252
    Накопленные выплаты (Подробнее):
    2621 RUB
    Поставил(а) лайков:
    8
    Получено лайков:   84
    в 74 сообщениях
    33%
    ПодписатьсяПодписаться
    Подписано 0
    Цитата Сообщение от WsForex Посмотреть сообщение
    Эта функция позволяет работать советнику по времени...
    добавлю еще одну, возвращающую переменную типа bool
    внешние переменные и вызов:
    MQL-Код:
    
    extern string time_op = "09:00";//начало торговextern string time_cl = "22:00";//конец//+------------------------------------------------------------------+if (!IsTradingTime(time_op , time_cl )) {   Comment("Торговля запрещена по времени ");   } 
    
    
    

    сама функция
    MQL-Код:
    
    bool IsTradingTime(string op, string cl) {   int str2time_op = StrToTime(Year() + "." + Month() + "." + Day() + " " + op);   int str2time_cl = StrToTime(Year() + "." + Month() + "." + Day() + " " + cl);   if (str2time_op > str2time_cl) str2time_cl += 86400;   if (TimeCurrent() > str2time_op && TimeCurrent() < str2time_cl) return (TRUE);   return (FALSE);} 
    
    
    

    Последний раз редактировалось Gold; 28.12.2012 в 00:16.

  15. post_thanks Получено лайков: 1

    Gold (06.10.2011)

  16. линк#30
    Частый гость
    vdmitrich стараюсь положительно себя зарекомендовать Аватар для vdmitrich
    Регистрация:
    30.09.2011
    Пол:
    Мужчина
    Сообщений:
    160
    Накопленные выплаты (Подробнее):
    1574 RUB
    Поставил лайков:
    39
    Получено лайков:   31
    в 30 сообщениях
    19%
    ПодписатьсяПодписаться
    Подписано 0
    Цитата Сообщение от Gold Посмотреть сообщение
    Эта тема для размещения готовых к применению функций а не для помощи в доработке советника. За помощью лучше обратиться в тему Несколько вопросов от начинающего или Язык программирования MQL4.
    Я как-то не задался вопросом что за ветка, увидел, что знающие люди коды всякие выклыдывают и решил наверное люди помогут с кодом.Вам спасибо.
    А на будущее учту.

    ПАММ-счёт (Manual-Auto Trade)

  17. post_thanks Получено лайков: 1

    Gold (13.10.2011)

  18. линк#31
    Свой человек
    Newbie стараюсь положительно себя зарекомендовать Аватар для Newbie
    Регистрация:
    10.12.2010
    Сообщений:
    252
    Накопленные выплаты (Подробнее):
    2621 RUB
    Поставил(а) лайков:
    8
    Получено лайков:   84
    в 74 сообщениях
    33%
    ПодписатьсяПодписаться
    Подписано 0
    Функция луча веера фибоначчи(во загнул), для построения используется зигзаг, в конкретном случае DT_ZZ klot'a.
    разрабатывал в качестве стопа
    индикатор на ее основе:
    MQL-Код:
    
    //+------------------------------------------------------------------+//|                                                     ####fibo.mq4 |//+------------------------------------------------------------------+#property indicator_chart_window#property indicator_buffers 2#property indicator_color1 Red#property indicator_color2 SteelBlue//--- input parametersextern int                   ED1 =  72;extern int                   ED2 =  72;extern int        calculateLevel =  2; extern double                lv1 =  0.618;extern double                lv2 =  0.382;//--- buffersdouble ExtMapBuffer1[];double ExtMapBuffer2[];//+------------------------------------------------------------------+//| Custom indicator initialization function                         |//+------------------------------------------------------------------+int init()  {//---- indicators   SetIndexStyle(0,DRAW_LINE);   SetIndexBuffer(0,ExtMapBuffer1);   SetIndexStyle(1,DRAW_LINE);   SetIndexBuffer(1,ExtMapBuffer2);//----   return(0);  }//+------------------------------------------------------------------+//| Custom indicator deinitialization function                       |//+------------------------------------------------------------------+int deinit()  {//---- //----   return(0);  }//+------------------------------------------------------------------+//| Custom indicator iteration function                              |//+------------------------------------------------------------------+int start()  {   int    counted_bars=IndicatorCounted();   if(counted_bars>0) counted_bars--;   int limit=Bars-counted_bars;   if(limit>1000)limit=1000;//----   for(int i=limit;i>=1;i--){      ExtMapBuffer1[i]=fibo(lv1,ED1,i);//      ExtMapBuffer2[i]=fibo(lv2,ED2,i);//      }//----   return(0);  }//+------------------------------------------------------------------+double fibo(double lv,int ExtDepth,int br){   double ktt_price,bar_price;   int bar_low,bar_high,bars_end,ktt_bars;   for(int shift=br+300;shift>=br;shift--){       double zz_H=iCustom(NULL,0,"DT_ZZ",ExtDepth,calculateLeve  l,1,shift);      double zz_L=iCustom(NULL,0,"DT_ZZ",ExtDepth,calculateLeve  l,2,shift);      if(zz_H!=0)bar_high=shift;      if(zz_L!=0)bar_low=shift;      }   ktt_bars=MathAbs(bar_low-bar_high);   if(bar_high>bar_low){      ktt_price=Low[bar_low]-High[bar_high];      bars_end=(bar_high-shift);      bar_price=High[bar_high];      }   if(bar_low>bar_high){      ktt_price=High[bar_high]-Low[bar_low];      bars_end=(bar_low-shift);      bar_price=Low[bar_low];      }   double res=((ktt_price/(ktt_bars+0.1))*bars_end)*lv+bar_price;   return (res);   } 
    
    
    

    сама функция:
    MQL-Код:
    
    double fibo(double lv,int ExtDepth,int br){   double ktt_price,bar_price;   int bar_low,bar_high,bars_end,ktt_bars;   for(int shift=br+300;shift>=br;shift--){       double zz_H=iCustom(NULL,0,"DT_ZZ",ExtDepth,calculateLeve  l,1,shift);      double zz_L=iCustom(NULL,0,"DT_ZZ",ExtDepth,calculateLeve  l,2,shift);      if(zz_H!=0)bar_high=shift;      if(zz_L!=0)bar_low=shift;      }   ktt_bars=MathAbs(bar_low-bar_high);   if(bar_high>bar_low){      ktt_price=Low[bar_low]-High[bar_high];      bars_end=(bar_high-shift);      bar_price=High[bar_high];      }   if(bar_low>bar_high){      ktt_price=High[bar_high]-Low[bar_low];      bars_end=(bar_low-shift);      bar_price=Low[bar_low];      }   double res=((ktt_price/(ktt_bars+0.1))*bars_end)*lv+bar_price;   return (res);   } 
    
    
    

    Последний раз редактировалось Gold; 28.12.2012 в 00:17.

  19. post_thanks Получено лайков: 1

    Gold (13.10.2011)

  20. линк#32
    В начале пути
    Harigal стараюсь положительно себя зарекомендовать Аватар для Harigal
    Регистрация:
    13.10.2011
    Пол:
    Мужчина
    Сообщений:
    3
    Накопленные выплаты (Подробнее):
    39 RUB
    Поставил лайков:
    0
    Получено лайков:   0
    в 0 сообщениях
    0%
    ПодписатьсяПодписаться
    Подписано 0
    Функция int OrdersTotal(
    )

    Возвращает общее количество открытых и отложенных ордеров. Но мне нужно общее количество только открытых ордеров, а такой функции в справочнике MQ4 я не нашел.
    Как это сделать? Мне в программе необходимо установить условие: Если общее количество открытых ордеров равно 4, то F=a, а если общее количество открытых ордеров равно 5, то F=b.


  21. линк#33
    В начале пути
    InstaForex MQL стараюсь положительно себя зарекомендовать Аватар для InstaForex MQL
    Регистрация:
    04.10.2011
    Сообщений:
    11
    Накопленные выплаты (Подробнее):
    219 RUB
    Поставил(а) лайков:
    0
    Получено лайков:   19
    в 13 сообщениях
    173%
    ПодписатьсяПодписаться
    Подписано 0
    Здравствуйте!
    Попробуйте такую функцию:
    MQL-Код:
    
    int count_orders(int magic=-1, int type=-1, string symb="NULL", int time=-1, double lot=-1, string comm="") {  //----  int i=0, c=0;  for (i=OrdersTotal()-1; i>=0; i--) {    if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break;    if(((OrderType()==type) || (type==-1))       && ((OrderMagicNumber()==magic) || (magic==-1))       && ((OrderSymbol()==symb) || (symb=="NULL"))       && ((OrderOpenTime()>=time) || (time==-1))       && ((OrderLots()==lot) || (lot==-1))       && (OrderComment()==comm || comm=="")) {      c++;    }   }    return(c);} 
    
    
    
    Если вызвать без указания параметров, то выдаст число всех ордеров, как OrdersTotal().
    Но если вызвать как
    MQL-Код:
    
    count_orders(-1, OP_BUY)+count_orders(-1, OP_SELL) 
    
    
    
    то получим сумму всех BUY-сделок и SELL-сделок по счёту.
    Также в первом параметре можно указать магическое число, если в советнике оно используется. Тогда будут подсчитаны сделки только данного робота.
    Также третьим параметром можете передать конкретный символ, тогда получите количество открытых сделок по символу. К примеру
    MQL-Код:
    
    count_orders(-1, OP_BUY, Symbol())+count_orders(-1, OP_SELL, Symbol()) 
    
    
    
    даст количество рыночных сделок по текущему инструменту.

    Пример использования в небольшом скрипте:
    MQL-Код:
    
    #property copyright ""#property link      ""int count_orders(int magic=-1, int type=-1, string symb="NULL", int time=-1, double lot=-1, string comm="") {  //----  int i=0, c=0;  for (i=OrdersTotal()-1; i>=0; i--) {    if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break;    if(((OrderType()==type) || (type==-1))       && ((OrderMagicNumber()==magic) || (magic==-1))       && ((OrderSymbol()==symb) || (symb=="NULL"))       && ((OrderOpenTime()>=time) || (time==-1))       && ((OrderLots()==lot) || (lot==-1))       && (OrderComment()==comm || comm=="")) {      c++;    }   }    return(c);} //+------------------------------------------------------------------+//| script program start function                                    |//+------------------------------------------------------------------+int start()  {//----   int market_orders_count=(count_orders(-1, OP_BUY)+count_orders(-1, OP_SELL));   Alert("рыночных ордеров: "+market_orders_count);//----   return(0);  }//+------------------------------------------------------------------+ 
    
    
    

    Последний раз редактировалось Gold; 28.12.2012 в 00:20.

  22. post_thanks Получено лайков: 1

    Gold (13.10.2011)

  23. линк#34
    Свой человек
    Newbie стараюсь положительно себя зарекомендовать Аватар для Newbie
    Регистрация:
    10.12.2010
    Сообщений:
    252
    Накопленные выплаты (Подробнее):
    2621 RUB
    Поставил(а) лайков:
    8
    Получено лайков:   84
    в 74 сообщениях
    33%
    ПодписатьсяПодписаться
    Подписано 0
    Когда-то писал функцию подсчета ордеров, может пригодится..
    глобальные переменные
    MQL-Код:
    
    int ordbuy,ordsell,ordbuystop,ordsellstop; 
    
    
    
    сама функция
    MQL-Код:
    
    void Ord.Total(){   ordbuy=0;   ordsell=0;   ordbuystop=0;   ordsellstop=0;   for(int i=0;i<OrdersTotal();i++){      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic){            switch (OrderType()){               case OP_BUY:                  ordbuy++;               break;               case OP_SELL:                  ordsell++;               break;                  case OP_BUYSTOP:                  ordbuystop++;               break;               case OP_SELLSTOP:                  ordsellstop++;               break;                                      }            }         }      }   } 
    
    
    

    Последний раз редактировалось Gold; 28.12.2012 в 00:20.

  24. линк#35
    В начале пути
    Harigal стараюсь положительно себя зарекомендовать Аватар для Harigal
    Регистрация:
    13.10.2011
    Пол:
    Мужчина
    Сообщений:
    3
    Накопленные выплаты (Подробнее):
    39 RUB
    Поставил лайков:
    0
    Получено лайков:   0
    в 0 сообщениях
    0%
    ПодписатьсяПодписаться
    Подписано 0
    Благодарю Вас за подсказку. Удалось реализовать вывод открытых ордеров. Привожу пример своей реализации.
    Я упростил Ваш вариант для себя, так как мне не нужно было учитывать инструмент и прочее:
    MQL-Код:
    
    int start(){    if(MyOrders()==4 &&  AccountProfit()>Prib4)    {        for(int i=OrdersTotal()-1;i>=0;i--)        {            if(OrderSelect(i,SELECT_BY_POS))            {                if(OrderType()==OP_BUY )                {                    OrderLots();                    OrderClose(OrderTicket(),OrderLots(),Bid,15,clrYel  low);                }                if(OrderType()==OP_BUYLIMIT)                {                    OrderDelete(OrderTicket());                }                        }        }    }return(0);}int MyOrders(){int k=0;    for(int knt = 0 ; knt < 12 ; knt++)    {    OrderSelect(knt,SELECT_BY_POS,MODE_TRADES);        if(OrderType()==OP_BUY)        {            k++;        }    }return(k);} 
    
    
    

    Последний раз редактировалось Gold; 27.11.2015 в 19:53.

  25. линк#36
    Кандидат форумных наук
    no
     
    fore-x хорошая репутация fore-x хорошая репутация fore-x хорошая репутация fore-x хорошая репутация fore-x хорошая репутация fore-x хорошая репутация Аватар для fore-x
    Регистрация:
    18.03.2011
    Пол:
    Мужчина
    Сообщений:
    1,716
    Накопленные выплаты (Подробнее):
    18175 RUB
    Поставил лайков:
    440
    Получено лайков:   588
    в 401 сообщениях
    34%
    ПодписатьсяПодписаться
    Подписано 0
    Написал функцию, для подкачки истории из индикатора или советника по парам, на которых запускалась данная функция:
    MQL-Код:
    
    //+------------------------------------------------------------------+ void History()  {    static int f, frame, s, handle, i;  static string symb;  static bool z = true;        if(f > 8) {f = 0; s++;}    if(f == 0)    {    handle = FileOpen(WindowExpertName()+".txt",FILE_CSV|FILE_R  EAD|FILE_WRITE,';');     FileSeek(handle,0,SEEK_SET);        for(i = -1; i < s; i++)       {      symb = FileReadString(handle);      if(symb == Symbol()) z = false;      if(symb == "") {s = -1; f = 8; break;}      }    if(symb == "" && z == true) FileWrite(handle,Symbol());    FileClose(handle);      }    switch(f)    {    case 0:  frame = PERIOD_M1;  f++; break;    case 1:  frame = PERIOD_M5;  f++; break;    case 2:  frame = PERIOD_M15; f++; break;    case 3:  frame = PERIOD_M30; f++; break;    case 4:  frame = PERIOD_H1;  f++; break;    case 5:  frame = PERIOD_H4;  f++; break;    case 6:  frame = PERIOD_D1;  f++; break;    case 7:  frame = PERIOD_W1;  f++; break;    case 8:  frame = PERIOD_MN1; f++; break;    }    double temp = iClose(symb,frame,0);    Alert(symb,", frame = ",frame,", temp = ",temp); // Пояснение к работе данной функции :)  return;    }    //+------------------------------------------------------------------+ 
    
    
    


    Список пар, сохраняется в текстовом документе...

    Последний раз редактировалось Gold; 28.12.2012 в 00:21.

  26. линк#37
    Кандидат форумных наук
    no
     
    fore-x хорошая репутация fore-x хорошая репутация fore-x хорошая репутация fore-x хорошая репутация fore-x хорошая репутация fore-x хорошая репутация Аватар для fore-x
    Регистрация:
    18.03.2011
    Пол:
    Мужчина
    Сообщений:
    1,716
    Накопленные выплаты (Подробнее):
    18175 RUB
    Поставил лайков:
    440
    Получено лайков:   588
    в 401 сообщениях
    34%
    ПодписатьсяПодписаться
    Подписано 0
    Цитата Сообщение от fore-x Посмотреть сообщение
    Написал функцию, для подкачки истории из индикатора или советника по парам, на которых запускалась данная функция:
    Наверное, так будет правильнее, делать проверку на присутствие бара, по времени сервера:
    MQL-Код:
    
    //+------------------------------------------------------------------+ void History()  {    static int f, frame, s, handle, i;  static string symb, save = "Yes";        if(f > 8) {f = 0; s++;}    if(f == 0)    {    handle = FileOpen(WindowExpertName()+".txt",FILE_CSV|FILE_R  EAD|FILE_WRITE,';');     FileSeek(handle,0,SEEK_SET);        for(i = -1; i < s; i++)       {      symb = FileReadString(handle);      if(symb == Symbol()) save = "No";      if(symb == "") {s = -1; f = 9; break;}      }    if(symb == "" && save == "Yes") FileWrite(handle,Symbol());    FileClose(handle);      }    switch(f)    {    case 0:  frame = PERIOD_M1;  f++; break;    case 1:  frame = PERIOD_M5;  f++; break;    case 2:  frame = PERIOD_M15; f++; break;    case 3:  frame = PERIOD_M30; f++; break;    case 4:  frame = PERIOD_H1;  f++; break;    case 5:  frame = PERIOD_H4;  f++; break;    case 6:  frame = PERIOD_D1;  f++; break;    case 7:  frame = PERIOD_W1;  f++; break;    case 8:  frame = PERIOD_MN1; f++; break;    default: s = -1; f = 9; return;   break;    }    i = iBarShift(symb, frame, TimeCurrent(), true); // Наверное вот так будет правильнее       Alert(symb,", frame = ",frame,", i = ",i,", save = ",save); // Пояснение к работе данной функции :)  return;    }    //+------------------------------------------------------------------+ 
    
    
    


    Кто испытывать будет, оставьте комментарий, нормально получилось или функция бесполезная?

    Последний раз редактировалось Gold; 28.12.2012 в 00:22.

  27. линк#38
    Кандидат форумных наук
    no
     
    fore-x хорошая репутация fore-x хорошая репутация fore-x хорошая репутация fore-x хорошая репутация fore-x хорошая репутация fore-x хорошая репутация Аватар для fore-x
    Регистрация:
    18.03.2011
    Пол:
    Мужчина
    Сообщений:
    1,716
    Накопленные выплаты (Подробнее):
    18175 RUB
    Поставил лайков:
    440
    Получено лайков:   588
    в 401 сообщениях
    34%
    ПодписатьсяПодписаться
    Подписано 0
    Вот еще функцию написал, для определения точности округления, возвращает количество знаков после запятой:

    MQL-Код:
    
    //+------------------------------------------------------------------+int digits(double number)  {  string x; int i , j, k, s, t = 5; // t - предпологаемая точность от 1 до 8     for(k = StringLen(DoubleToStr(number,t)) - 1; ; k--)    {    x = StringSubstr(DoubleToStr(number,t),k,1);    if(x != "0" && s == 0) {s++; i = k;}    if(x == ".") {j = k; break;}    }     return(i-j);  }//+------------------------------------------------------------------+ 
    
    
    

    Последний раз редактировалось Gold; 28.12.2012 в 00:22.

  28. линк#39
    Частый гость
    KimIV хорошая репутация KimIV хорошая репутация KimIV хорошая репутация KimIV хорошая репутация KimIV хорошая репутация KimIV хорошая репутация Аватар для KimIV
    Регистрация:
    01.12.2011
    Пол:
    Мужчина
    Сообщений:
    135
    Накопленные выплаты (Подробнее):
    1290 RUB
    Поставил лайков:
    224
    Получено лайков:   556
    в 101 сообщениях
    412%
    ПодписатьсяПодписаться
    Подписано 0
    Цитата Сообщение от fore-x Посмотреть сообщение
    Вот еще функцию написал, для определения точности округления, возвращает количество знаков после запятой:
    Проверил скриптом
    PHP код:
    void start() { double a=0.123404; double b=0.123405; int c=digits(a); int d=digits(b); Print(DoubleToStr(a, 6), " ", c); Print(DoubleToStr(b, 6), " ", d); } //+------------------------------------------------------------------+ int digits(double number) { string x; int i , j, k, s, t = 5; // t - предпологаемая точность от 1 до 8