Вопросы, практика программирования на MQL5 - Страница 54
Страница 54 из 56 ПерваяПервая ... 4 44 50 51 52 53 54 55 56 ПоследняяПоследняя
Показано с 531 по 540 из 551

Тема: Вопросы, практика программирования на MQL5

  1. #531
    Программист
    Регистрация
    16.08.2012
    Адрес
    Челябинск
    Сообщений
    1,735
    Promo (¢)
    45,895
    Благодарности
    Получено: 614
    Отправлено: 65
    Цитата Сообщение от raboco Посмотреть сообщение
    gi_344 = FALSE
    по все видимости автор кода вложил в gi_344 смысл флага: есть сделки в рыке или нет. gi_344 - true - есть.
    Но вот здесь,
    Цитата Сообщение от raboco Посмотреть сообщение
    if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
    bool a5=OrderModify(OrderTicket(), gd_240, OrderStopLoss(), gd_224, 0, Yellow);
    if (OrderTakeProfit() > 0) gi_344 = FALSE;
    Написана семантическая бредятина. В других контекстах назначается true, если есть сделки, но если профит>0 то сделок нет - полный бред.

    Вы не можете благодарить!
    Для заказа кода, напишите в личку - я отвечу на ваше предложение.

  2. #532
    Новичок
    Регистрация
    27.12.2018
    Сообщений
    35
    Promo (¢)
    580
    Благодарности
    Получено: 0
    Отправлено: 18
    пока не понимаю зачем. подобное вроде есть в коде, имхо рано еще для меня

    PHP код:
    bool gi_332 FALSE;
    bool gi_336 FALSE
    PHP код:
    li_52 func1(gi_332gi_336BidAskg_cena_otkritia_buyg_cena_otkritia_sellPointStepLotsg_kolihestvo_znakov); 
    PHP код:
    int func1(int a1int a2double a3double a4double a5double a6double a7double a8double a9)
    {
       
       if ( 
    a1 && a7 a8 a9 <= a5 a4 ) return(1);
       if ( 
    a2 && a3 a6 >= a9 a8 a7 ) return(1);
       return(
    0); 

    PHP код:
     g_est_otkrytye_ordera FALSE;
       
    gi_OrdersOpen f0_16();
       
    //if (gi_OrdersOpen == 0) g_est_otkrytye_ordera = FALSE;
       
    for (g_i OrdersTotal() - 1g_i >= 0g_i--)
        {
          
    bool a1=OrderSelect(g_iSELECT_BY_POSMODE_TRADES);
          if (
    OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber) continue;
          if (
    OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {
             if (
    OrderType() == OP_BUY) {
                
    gi_332 TRUE;
                
    gi_336 FALSE;
                
    obiem_lota_buy OrderLots();
                break; 

    func1 для чего не пойму

    Вы не можете благодарить!

  3. #533
    Программист
    Регистрация
    16.08.2012
    Адрес
    Челябинск
    Сообщений
    1,735
    Promo (¢)
    45,895
    Благодарности
    Получено: 614
    Отправлено: 65
    Цитата Сообщение от raboco Посмотреть сообщение
    func1 для чего не пойму
    Очень похоже на сигнальную систему. Нужно смотреть в коде, как используется func1 - возвращаемые ей результаты, если за ней стоит работа с рынком: открытие, закрытие или ордера модернизации то,- сигнальная система. Ну и конечно, нужно смотреть что за значения передаются ей.

    Вы не можете благодарить!
    Для заказа кода, напишите в личку - я отвечу на ваше предложение.

  4. #534
    Новичок
    Регистрация
    27.12.2018
    Сообщений
    35
    Promo (¢)
    580
    Благодарности
    Получено: 0
    Отправлено: 18
    PHP код:
      int f0_16() 
    {
       
    g_profit_v_pynktah 0;
       
    int N_ord1 0;
       for (
    int N_ord OrdersTotal() - 1N_ord >= 0N_ord--) 
       {  
    bool a6=OrderSelect(N_ordSELECT_BY_POSMODE_TRADES);
          if (
    OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber) continue;
             if (
    OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
                if (
    OrderType() == OP_SELL || OrderType() == OP_BUYN_ord1++;
                   if (
    OrderTakeProfit() == 0//если уровень (take profit)ордера = 0
                   
    {
                   
    g_est_sdelki TRUEg_est_otkrytye_ordera TRUE;
                   }
                   if (
    OrderTakeProfit() > 0.0 && g_profit_v_pynktah == 0
                   { 
                   if (
    OrderType() == OP_SELLg_profit_v_pynktah = (Ask OrderTakeProfit() ) / Point g_kolihestvo_znakov;
                                                         
    //цена продажи - цена закрытия : цену пункта 
                   
    if (OrderType() == OP_BUYg_profit_v_pynktah = (OrderTakeProfit() - Bid) / Point g_kolihestvo_znakov;
                   }
       }
       return (
    N_ord1); 
    вот это тоже не очень понятно, вроде считает профит ордера но возврашает количество ордеров, считаемый профит сумируется или как?

    - - - Добавлено - - -

    Цитата Сообщение от wayfarer Посмотреть сообщение
    Очень похоже на сигнальную систему. Нужно смотреть в коде, как используется func1 - возвращаемые ей результаты, если за ней стоит работа с рынком: открытие, закрытие или ордера модернизации то,- сигнальная система. Ну и конечно, нужно смотреть что за значения передаются ей.
    PHP код:
     if (gi_OrdersOpen && gi_OrdersOpen <= MaxOpenOrders) {
          
    RefreshRates();
          
    g_cena_otkritia_buy CENA_OTKRYTIA_BUY();
          
    g_cena_otkritia_sell CENA_OTKRYTIA_SELL();
          
    li_52 func1(gi_332gi_336BidAskg_cena_otkritia_buyg_cena_otkritia_sellPointStepLotsg_kolihestvo_znakov);
          if (
    li_52 == 1gi_328 TRUE;
          
    g_sms_soobhenie SMS(3); 
    локальная li_52 только она использует эту функцию


    PHP код:
    string SMS(int ai_0) {
       if (
    ai_0 == 0) return ("Ошибка HTTP");
       if (
    ai_0 == 1) return ("Аккаунт не существует или заблокирован");
       if (
    ai_0 == 2) return ("Активация аккаунта прошла успешно");
       if (
    ai_0 == 3) return ("Аутентификация аккаунта прошла успешно");
       if (
    ai_0 == 4) return ("Учетная запись не активирована!!!");
       if (
    ai_0 == 5) return ("Введите действительный идентификатор CLICKBANK.");
       return (
    "Ok"); 
    может это внесет ясность? Аутентификация аккаунта прошла успешно

    Вы не можете благодарить!

  5. #535
    Программист
    Регистрация
    16.08.2012
    Адрес
    Челябинск
    Сообщений
    1,735
    Promo (¢)
    45,895
    Благодарности
    Получено: 614
    Отправлено: 65
    Судя по тем фрагментам что вы показали это жесть переписывать такой бредовы код. При этом видно, что код после декомпилятор правили, чтобы избавиться от сообщений компилятора. Но это не умоляет того программного безобразия которое наворотил автор изначально. Следует предположить , что и стратегия положенная в код представляет такую же бредятину, ущербность. Могу только посоветовать - выбросите это в корзину.
    Часть кода следует вообще удалить как лишнюю - проверка аккаунта.
    В f0_16() идёт присвоение паблик переменным значений. Плохой стиль в программировании не следует его повторять.

    Вы не можете благодарить!
    Для заказа кода, напишите в личку - я отвечу на ваше предложение.

  6. #536
    Новичок
    Регистрация
    27.12.2018
    Сообщений
    35
    Promo (¢)
    580
    Благодарности
    Получено: 0
    Отправлено: 18
    чтобы избавиться от сообщений компилятора
    где об этом можно узнать? предупреждений в компиляторе куча, хочу после заняться их исправлением
    перед этим хочу весь бред вырезать добавить проверку макс мин лот , учитывая все выщесказанное, делее переделать все это через классы в мт5
    тот бред что выше, вы коментировали), а этот к сожалению нет) я пока не вижу как видите это вы, но после ваших коментарии вижу, но ни чего не меняю, пока


    все делается для учебы и понимания
    В f0_16() идёт присвоение паблик переменным значений. Плохой стиль в программировании не следует его повторять.
    почему? в чем минус в чем плюс? на какой следует ?

    советник на демо показывает не плохие результаты потому его и ковыряю,есть илан но там нет объектов для примера,
    может вы посоветуйте свободную сову для болванки?
    PHP код:
    //+------------------------------------------------------------------+
    //| ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕ
    //+------------------------------------------------------------------+
    /*extern*/ 
    bool UseLotFix TRUE;
    bool gi_184 FALSE;
    double gd_188 48.0;
    double gd_196 500.0;
    double g_minlot 0.0;
    bool gi_212 TRUE;
    bool gi_216 FALSE;
    int g_sposob_rascheta 1;
    double gd_224;
    double g_redstva_scheta;
    double gd_240;
    double gd_248;
    double gd_256;
    double g_cena_otkritia_buy;
    double g_cena_otkritia_sell;
    double g_spred_v_valute;
    bool g_est_otkrytye_ordera;
    int g_vrema 0;
    int gi_296;
    int g_stepen 0;
    double g_rasshitanyi_obiem_lota;
    int g_i 0;
    int gi_OrdersOpen;
    double gd_320 0.0;
    bool gi_328 FALSE;
    bool gi_332 FALSE;
    bool gi_336 FALSE;
    int gi_340;
    bool g_est_sdelki FALSE;
    int g_vrem_otkrytiya_bara_buy 0;
    int g_vrem_otkrytiya_bara_sell 0;
    double gd_356;
    double gd_364;
    string g_smsSafeEquityStopOut "OFF";
    string g_smsRejimTorgovli "REAL";
    string g_sms_soobhenie "";

    int g_nomer_tekushchego_scheta 0;
    int g_kolihestvo_znakov;
    int gStartMinutesgStopMinutes;
    double g_profit_v_pynktahg_MaxDD 0;
    //-------------------------------------------------------
    // функция определения разрешения торговли планировшика
    //---------------------------------------------------------
    bool VREMA_TORGOVLI()
    {
      if (
    ostanovit_Torg_posleTP ) return(false);   //если "ostanovit_Torg_posleTP" включен то "bool Vremya torgovli"=(false)
      
    bool RazreshitTorgovlyu true;
      
    gStartMinutes 60 StartHour StartMinute// переводит в минуты, установленое время начала торговли 
      
    gStopMinutes 60 StopHour StopMinute;    // переводит в минуты, установленое время конца торговли 
      
    int day DayOfWeek();                        // определяем день недели и сохраняем значение в "int day"
      
      //анализ разрешенных дней торговли, если торговля не разрешена то "RazreshitTorgovlyu" = false   
      
    if (day NachalnyyTorgovyyDen || day DenOkonchaniyaTorgovliRazreshitTorgovlyu false;
      
      
    int minuntes 60 TimeHour(TimeCurrent()) + TimeMinute(TimeCurrent()); // переводит в минуты, текушее время
      
      //далее идет анализ вписываетсяли торговля в указанное время если нет то "RazreshitTorgovlyu" = false
      
    if (day <= NachalnyyTorgovyyDen && gStartMinutes >= minuntesRazreshitTorgovlyu false;
      if (
    day >= DenOkonchaniyaTorgovli && gStopMinutes minuntesRazreshitTorgovlyu false;
      return(
    RazreshitTorgovlyu);   

    16 пременных осталось
    только что проверил на тестере, странно оно работает)

    Вы не можете благодарить!
    Последний раз редактировалось raboco; 11.02.2019 в 04:08.

  7. #537
    Программист
    Регистрация
    16.08.2012
    Адрес
    Челябинск
    Сообщений
    1,735
    Promo (¢)
    45,895
    Благодарности
    Получено: 614
    Отправлено: 65
    Цитата Сообщение от raboco Посмотреть сообщение
    где об этом можно узнать? предупреждений в компиляторе куча, хочу после заняться их исправлением
    чтобы получить все неоднозначности кода при компилировании ставим #property strict. И, первым делом, устраняем предупреждения компилятора.

    Цитата Сообщение от raboco Посмотреть сообщение
    делее переделать все это через классы в мт5
    Класс следует делать, когда есть обобщение логики работы выделенной функциональности, как единого целого. Просто от того, что Класс, звучит, как "классно", будет не более чем усложнение кода.


    Цитата Сообщение от raboco Посмотреть сообщение
    почему? в чем минус в чем плюс? на какой следует ?
    Из опыта, если паблик переменная меняет свои значения в разных частях кода, то возникает вероятность упустить контроль над ней. Паблик переменная применяется, когда нет иного способа создать управление логикой исполнения функционала. Обычно паблик это флаги состояний системы, задающие режим работы.


    Цитата Сообщение от raboco Посмотреть сообщение
    советник на демо показывает не плохие результаты потому его и ковыряю,есть илан но там нет объектов для примера
    Вот ссылка на Илан, который я переводил с mql4 на 5-ку, это я тренировался.

    Вы не можете благодарить!
    Для заказа кода, напишите в личку - я отвечу на ваше предложение.

  8. #538
    Новичок
    Регистрация
    27.12.2018
    Сообщений
    35
    Promo (¢)
    580
    Благодарности
    Получено: 0
    Отправлено: 18
    отдохнул немного )
    илан слил где этот не слил но дело не в илане а в настройках принцип у них одинаковый, (там 10лот разрешен а тут 15 итп) не важно не в этом суть.

    решил все таки перевести этот код многое тут уже мне понятно и прокоментировано под себя

    PHP код:
       //extern bool on_off_trail = FALSE;
       //extern double TrailStart = 38.0;
       //extern double TrailStop = 18.0;
       //double gd_240;
       // if (on_off_trail) f0_18(TrailStart, TrailStop, gd_240);

    void f0_18(int Trail_Startint Trai_lStopdouble ad_8) {
       
    int li_16;
       
    double ld_20;
       
    double ld_28;
       if (
    Trai_lStop != 0) {
          for (
    int li_36 OrdersTotal() - 1li_36 >= 0li_36--) {
             if (
    OrderSelect(li_36SELECT_BY_POSMODE_TRADES)) {
                if (
    OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber) continue;
                if (
    OrderSymbol() == Symbol() || OrderMagicNumber() == MagicNumber) {
                   if (
    OrderType() == OP_BUY) {
                      
    li_16 NormalizeDouble((Bid ad_8) / Point g_kolihestvo_znakov0);
                      if (
    li_16 Trail_Start) continue;
                      
    ld_20 OrderStopLoss();
                      
    ld_28 Bid Trai_lStop Point g_kolihestvo_znakov;
                      if (
    ld_20 == 0.0 || (ld_20 != 0.0 && ld_28 ld_20)) bool a11=OrderModify(OrderTicket(), ad_8ld_28OrderTakeProfit(), 0Aqua);
                   }
                   if (
    OrderType() == OP_SELL) {
                      
    li_16 NormalizeDouble((ad_8 Ask) / Point g_kolihestvo_znakov0);
                      if (
    li_16 Trail_Start) continue;
                      
    ld_20 OrderStopLoss();
                      
    ld_28 Ask Trai_lStop Point g_kolihestvo_znakov;
                      if (
    ld_20 == 0.0 || (ld_20 != 0.0 && ld_28 ld_20)) bool a12=OrderModify(OrderTicket(), ad_8ld_28OrderTakeProfit(), 0Red);
                   }
                }
                
    Sleep(1000);
             }
          }
       }

    double ad_8 это что за значение?
    gd_240 много где используется

    - - - Добавлено - - -

    как я понял это трал

    - - - Добавлено - - -

    PHP код:
    bool   gi_184 FALSE;

    if (
    on_off_trailf0_18(TrailStartTrailStopgd_240);
       if (
    gi_184
          {
          if (
    TimeCurrent() >= gi_296) {
             
    ZAKRIT_VSE_ORDERA();
             Print(
    "Closed All Trades Due To Server TimeOut"); 
    gi_184 это тоже бзик автора? он ни где далее не встречается

    Вы не можете благодарить!

  9. #539
    Программист
    Регистрация
    16.08.2012
    Адрес
    Челябинск
    Сообщений
    1,735
    Promo (¢)
    45,895
    Благодарности
    Получено: 614
    Отправлено: 65
    Цитата Сообщение от raboco Посмотреть сообщение
    double ad_8 это что за значение?
    Пояснения:
    1. f0_18 () - процедура трала цены Stop Loss
    2. ad_8 - значение цены открытия сделки

    А вот
    PHP код:
    li_16 NormalizeDouble((Bid ad_8) / Point g_kolihestvo_znakov0); 
    это какая-то бредятина. Что бы получить значение текущего удаления цены рынка от цены открытия сделки в пунктах нужно
    PHP код:
    li_16 = (Bid ad_8) / Point
    Аналогично:
    PHP код:
    ld_28 Bid Trai_lStop Point g_kolihestvo_znakov
    - тоже бред.
    Должно быть
    PHP код:
    ld_28 NormalizeDouble(Bid Trai_lStop PointDigits); 
    - - - Добавлено - - -

    Цитата Сообщение от raboco Посмотреть сообщение
    gi_184 это тоже бзик автора?
    Бзик, бред, лажа и другие слова описывающие кривую логику.

    Вы не можете благодарить!
    Для заказа кода, напишите в личку - я отвечу на ваше предложение.

  10. #540
    Новичок
    Регистрация
    27.12.2018
    Сообщений
    35
    Promo (¢)
    580
    Благодарности
    Получено: 0
    Отправлено: 18
    PHP код:
    double f0_9() 
    {
       if (
    f0_16() == 0gd_356 AccountEquity();
       if (
    gd_356 gd_364gd_356 gd_364;
       else 
    gd_356 AccountEquity();
       
    gd_364 AccountEquity();
       return (
    gd_356);

    этот тоже бзик?

    PHP код:
    double f0_9() 
    {
       if (
    f0_16() == 0gd_356 AccountEquity();
       return (
    gd_356);

    так не одно и тоже?


    gd_364, выше только обЪявлена, больше ни где ее нет,
    также как и gd_356

    Вы не можете благодарить!
    Последний раз редактировалось raboco; 16.02.2019 в 04:19.

Страница 54 из 56 ПерваяПервая ... 4 44 50 51 52 53 54 55 56 ПоследняяПоследняя

Похожие темы

  1. Основы программирования в cAlgo
    от Azizkin в разделе Торговая платформа cTrader
    Ответов: 27
    Последнее сообщение: 26.10.2016, 13:59
  2. Вопросы по вебинару "Программирование на языке MQL5"
    от Денис Кириченко в разделе Программирование на MQL
    Ответов: 15
    Последнее сообщение: 11.04.2016, 18:46
  3. Вопросы по вебинару "Эффективное программирование советников в MQL5"
    от Денис Кириченко в разделе Программирование на MQL
    Ответов: 20
    Последнее сообщение: 05.08.2014, 17:47
  4. Вводный курс MQL5 программирования
    от Денис Кириченко в разделе Разное
    Ответов: 48
    Последнее сообщение: 01.12.2013, 15:56
  5. Ответов: 8
    Последнее сообщение: 11.10.2013, 12:16

Метки этой темы

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •