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

Показаны сообщения: с 7,861 по 7,876 из 7876

Тема: MQL4: Несколько вопросов от начинающего

 Перейти в классический вид темы
  1. линк#7861
    Частый гость
    OLEKSANDR стараюсь положительно себя зарекомендовать Аватар для OLEKSANDR
    Регистрация:
    04.01.2010
    Сообщений:
    126
    Накопленные выплаты (Подробнее):
    469 RUB
    Поставил(а) лайков:
    0
    Получено лайков:   6
    в 6 сообщениях
    5%
    ПодписатьсяПодписаться
    Подписано: 0
    Продолжение темы [Архив] Несколько вопросов по MQL от начинающего

    -------------------------------------------

    Последний раз редактировалось Helios; 08.09.2020 в 17:15. Причина: архив

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

    vivianalens (27.07.2017)

    Dragon R
     
  3. ТОП сообщений
    2018-09-28   16:21
    Лучший ответ #1
    Накопленные выплаты 165256 RUB

    Цитата Сообщение от Viktor1987 Посмотреть сообщение

    Ты не понял... bool - это не один бит. В MQL bool - это целое число размером в 1 байт. Т.е. bool - это 8 бит, где значение 0b00000000 интерпретируется, как False, а значение 0b00000001(как и остальные всевозможные комбинации битов в этом байте) интерпретируется, как True. Т.е. для типа bool нет никакого смысла в битовых операторах, за исключением оператора логического отрицания "~", при помощи которого можно инвертировать булево значение. Но даже в этом случае результат будет совершенно не таким, как при работе с другими числовыми типами. В MQL битовые операторы, в подавляющем большинстве случаев, тебе могут даже и не понадобиться, а вот при работе с WinAPI они очень даже широко используются.
    Попробуй почитать еще вот это -> https://ravesli.com/urok-46-bitovye-...bitovye-maski/

    2018-08-28   21:53
    Лучший ответ #2
    Накопленные выплаты 27108 RUB

    Цитата Сообщение от json Посмотреть сообщение
    Как так "ниоткуда"? Идет проверка каког-то True, где-то же оно живет, существует! По-простому если, объясните.
    есть логические выражения, их результат имеет всего 2 значения: true и false, а сам результат логического выражения является командой для операторов использующих логические выражения, в нашем случае while() (, но могут быть и if())
    если в логическом выражении результат равен true, тогда будет выполняться цикл while
    т.е. компьютер не видит условие while(a>b) , а сначала вычисляет a>b, результат этого логического выражения подставит в while() и примет решение
    но если мы напишем while(true) то компьютер не будет вычислять логическое выражение - оно константа и уже известно, он сразу будет выполнять while()
    ....
    фух

    2020-01-25   09:45
    Лучший ответ #3
    Накопленные выплаты 21530 RUB

    Цитата Сообщение от buza Посмотреть сообщение
    если не затруднит, не могли бы растолковать почему используется "р", а не 1 или 2 (код причины для индикатора)
    Ну и чтобы "худо-бедно" понять как это работает, попробуйте воспользоваться "отладчиком".
    Замените "функцию-обработчик события" OnDeinit() в вашем индюке, на аналогичную из моего предыдущего сообщения. Вызовите "контекстное меню" и установите "точку останова" на заголовок функций.
    Вложение 3382403
    Должно получиться так.
    Вложение 3382404
    Нажмите кнопку начало отладки.
    Вложение 3382405
    Видим что открылось новое окно с нашим индюком.
    Вложение 3382406
    Переключите период, видим что управление остановилось на заголовке первого оператора. В "контекстном меню" столбца "Выражения" выбираем "Добавить".
    Вложение 3382407
    В появившиеся "текстовое поле" копируем имя нашего параметра.
    Вложение 3382408
    Теперь мы видим значение которое содержит это переменная. Нам осталось проверить что все работает правильно. Нажимаем либо на панели кнопку продолжить, либо клавишу F5.
    Вложение 3382409
    На этом снимке мы видим что действительно "управление" перешло к константе со значением "3".
    Вложение 3382410
    На этом снимке видно что у меня нет "точки останова" на метке "case" со значение "3" и поэтому "управление" сразу переходит в конец метода.
    Вложение 3382411
    Вообщем я как всегда считаю отладчик "первым делом" и настоятельно рекомендую крайне подробно изучить его документацию. Отладчик лично мне сохраняет очень много сил и времени.

    Вложение
    Превью
    2020-06-17   00:54
    Лучший ответ #4
    Накопленные выплаты 125344 RUB

    Цитата Сообщение от ir0407 Посмотреть сообщение
    Это из серии: "А зачем читать книжки если можно и в ютубе все посмотреть?". Гляди ширее... Может у человека тактика такая, при которой для ордеров надо хранить нечто такое, чего сервер хранить не умеет.
    А кто говорил, что будет легко?
    Про маркет небыло ни слова.
    И это, как раз, один из вариантов 6-го пункта из моего поста.
    Я давно уже ни с кем ни спорю )) Вы опытный программист, так что с вами тем более, сами все понимаете. Я просто рассказал про свой подход, у меня история ордеров/позиций в работе робота не используется. А рыночные/отложенные считываю перед запуском. При принятии решения открыть позу считываю всю инфу заново. А вообще, все это технические детали. Разработать стратегию, даже ее элементы, задача сложнее на порядки. Иначе, все крутые проггеры давно были бы миллиардерами
    Вот я в программировании по серьезному с 2000 г., много чего наворотил для российских ж/д, для американцев, немцев, англичан. До этого тоже программировал, начал с самодельного Синклера в конце 80-х, потом всякие турбо-паскали, Дельфи, еще куча языков. На форе с 2006 года примерно. Подруга тогда попросила помочь разобраться с МТ4, она тогда на кухне Телетрейд за 200 бачинских училась ))) Выяснил по быстрому, что можно писать программы для форы и засосал этот омут
    Сейчас точно знаю, что не обязательно хорошо знать программирование, всегда можно найти профи, который напишет советника. Главное, иметь четкую стратегию и умение так же четко изложить ее Исполнителю. 90% Заказчиков вообще не могут связать между собой два слова. До самоизоляции с одним общался по скайпу, у меня куча замечаний по туманному ТЗ, он в возмущении:"Да ведь опытному трейдеру и так все ясно, чего уточнять!" Сказал, что я не опытный, пусть идет к профи..
    Отказался работать, пошел к голодным студентам на mql5, вчера вернулся. Был послан в рай, слово рай тоже на три буквы ))

    2017-12-22   20:40
    Лучший ответ #5
    Накопленные выплаты 165256 RUB

    Цитата Сообщение от Leschich Посмотреть сообщение
    З.Ы. А вообще, почитав справку, может я и не прав... как нить поюзую данную функцию...
    Забей... Лучше возьми на вооружение вот эту:
    MQL код:

    bool IsNewBar()
    {
    static datetime LastBar;
    bool Result = (LastBar != Time[0]);
    if(Result) LastBar = Time[0];
    return(Result);
    }

    2018-02-14   10:00
    Лучший ответ #6
    Накопленные выплаты 29906 RUB

    Цитата Сообщение от IgorM Посмотреть сообщение

    Спасибо, но я сделал так!
    PHP код:
    ENUM_TIMEFRAMES tf_mass[9] = {PERIOD_M1, PERIOD_M5, PERIOD_M15, PERIOD_M30, PERIOD_H1, PERIOD_H4, PERIOD_D1, PERIOD_W1, PERIOD_MN1};
    //+------------------------------------------------------------------+
    //| Расчёт толщины объекта |
    //+------------------------------------------------------------------+
    int CulcObjectWidth(const int obj_tf)
    {
    int cur_tf_ind = 0, obj_tf_ind = 0;
    //---
    for (int x = ArraySize(tf_mass)-1; x >= 0; x--){
    if (
    _Period == tf_mass[x]){
    cur_tf_ind = x;}
    if (
    obj_tf == tf_mass[x]){
    obj_tf_ind = x;}}
    //---
    return (obj_tf_ind - cur_tf_ind + 1);
    }

  4. линк#7868
    Знающий
    no
     
    azfaraon отличная репутация azfaraon отличная репутация azfaraon отличная репутация azfaraon отличная репутация azfaraon отличная репутация azfaraon отличная репутация azfaraon отличная репутация azfaraon отличная репутация azfaraon отличная репутация azfaraon отличная репутация azfaraon отличная репутация Аватар для azfaraon
    Регистрация:
    17.03.2015
    Сообщений:
    3,941
    Накопленные выплаты (Подробнее):
    303661 RUB
    Поставил(а) лайков:
    4,946
    Получено лайков:   6,472
    в 2,869 сообщениях
    164%
    ПодписатьсяПодписаться
    Подписано: 1
    Цитата Сообщение от ir0407 Посмотреть сообщение
    Как вариант, например, так:
    MQL код:
    double value_profit()
    {
    double profit= 0.0;
    int ord_total = OrdersTotal();
    if (ord_total > 0)
    for (int i= ord_total - 1; i>= 0; i--)
    if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
    if (OrderMagicNumber() == magic)
    //profit+= OrderProfit() + OrderSwap() + OrderCommission();
    if(OrderProfit() + OrderSwap() + OrderCommission() > 0.0)
    OrderClose(...);
    return(profit);
    }
    В советнике есть такая функция "void CloseAll()
    {
    bool b;
    int total = OrdersTotal() - 1;
    for (int i = total; i >= 0; i--)
    {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
    {
    if (OrderMagicNumber() == magic)
    {
    if (OrderType() == OP_SELL || OrderType() == OP_BUY)
    b=OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 20, Yellow);
    }
    }
    } "
    Закрытие происходит таким образом "
    void OnTick()
    {
    if (OrdersTotal()!=0)
    {

    if (value_profit()>=profit) {CloseAll();}




    }"


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

    Незарегистрированный (2 пользователя)

  6. линк#7869
    Специалист
    ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация Аватар для ir0407
    Регистрация:
    02.12.2010
    Сообщений:
    7,201
    Накопленные выплаты (Подробнее):
    165256 RUB
    Поставил(а) лайков:
    925
    Получено лайков:   7,277
    в 3,502 сообщениях
    101%
    ПодписатьсяПодписаться
    Подписано: 1
    Цитата Сообщение от azfaraon Посмотреть сообщение
    В советнике есть такая функция "void CloseAll()
    Ну есть... И что? И причем она к вашей хотелке? Ваша CloseAll() прибивает все ордера без разбору. Вам же надо выборочно. Следовательно вам нужно организовать другой механизм(пересмотреть логику), чтоб он соответствовал вашим новым требованиям.
    Как вариант:
    1. Получить тикет ордера с прибылью.
    2. Проверить, что прибыль этого ордера соответствует вашим критериям.
    3. Если все срастается - закрыть ордер.

    Самое простое - взять вашу CloseAll(), и на ее основе создать новую функцию, которая будет делать все, что вам необходимо.
    Вариант:
    MQL код:
    void CloseByProfit(double ExpectedProfit)
    {
    bool b;
    int total = OrdersTotal() - 1;
    for (int i = total; i >= 0; i--)
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
    if (OrderMagicNumber() == magic)
    if (OrderType() == OP_SELL || OrderType() == OP_BUY)
    if(OrderProfit() + OrderSwap() + OrderCommission() > ExpectedProfit)
    b = OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 20, Yellow);
    }

    где ExpectedProfit - нужный, ожидаемый профит.

    Теперь вставляете ее вызов в нужное место советника и будет вам счастье.

    Последний раз редактировалось ir0407; 29.09.2020 в 11:45.

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

    MonyaMaker (29.09.2020), Незарегистрированный (1 пользователь)

  8. линк#7870
    Знающий
    Скромняжка
     
    json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь Аватар для json
    Регистрация:
    01.08.2011
    Пол:
    Мужчина
    Сообщений:
    4,781
    Накопленные выплаты (Подробнее):
    117563 RUB
    Поставил(а) лайков:
    1,737
    Получено лайков:   2,575
    в 1,501 сообщениях
    54%
    ПодписатьсяПодписаться
    Подписано: 0
    Цитата Сообщение от ir0407 Посмотреть сообщение
    Как вариант, например, так:
    MQL код:
    double value_profit()
    {
    double profit= 0.0;
    int ord_total = OrdersTotal();
    if (ord_total > 0)
    for (int i= ord_total - 1; i>= 0; i--)
    if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
    if (OrderMagicNumber() == magic)
    //profit+= OrderProfit() + OrderSwap() + OrderCommission();
    if(OrderProfit() + OrderSwap() + OrderCommission() > 0.0)
    OrderClose(...);
    return(profit);
    }
    Хочу сделать утилитку, которая будет выводить значение заданной переменной через заданный интервал:

    PHP код:
    void my_print(double var, int inter)
    {
    string var_name = как создать имя из переменной var?
    if(
    TimeCurrent() - ltp_var > inter)
    {
    Print(
    var_name, " == ", var);
    ltp_var = TimeCurrent();
    }
    else
    {
    return;
    }
    }
    как создать имя из переменной var? ну, например, var - это CurrentProfit. Как из названия этой переменной создать строковую переменную CurrentProfit? Т.е. чтобы утилита сама писала.


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

    Незарегистрированный (2 пользователя)

  10. линк#7871
    Специалист
    ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация Аватар для ir0407
    Регистрация:
    02.12.2010
    Сообщений:
    7,201
    Накопленные выплаты (Подробнее):
    165256 RUB
    Поставил(а) лайков:
    925
    Получено лайков:   7,277
    в 3,502 сообщениях
    101%
    ПодписатьсяПодписаться
    Подписано: 1
    Цитата Сообщение от json Посмотреть сообщение
    как создать имя из переменной var? ну, например, var - это CurrentProfit. Как из названия этой переменной создать строковую переменную CurrentProfit? Т.е. чтобы утилита сама писала.
    Автоматом, "чтоб само писало" - никак. Потому что в скомпилированном файле(*.ex4), на этапе выполнения кода, имена переменных не имеют значения, а потому и не сохраняются, от слова совсем. Не от хорошей же жизни декомпилятор всем переменным дает имена, состоящие из всяких зубодробительных буквенно-числовых значений. Но что тебе мешает передать в функцию не только значение переменной но и ее имя? Ты то, как кодер, этой инфой владеешь...
    Например:


    Ну а чтоб эту функцию можно было юзать с любыми стандартными типами, а не только с double, и не плодить сущности, можно описать ее в виде шаблона.



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

    json (09.10.2020), Незарегистрированный (1 пользователь)

  12. линк#7872
    Знающий
    Скромняжка
     
    json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь Аватар для json
    Регистрация:
    01.08.2011
    Пол:
    Мужчина
    Сообщений:
    4,781
    Накопленные выплаты (Подробнее):
    117563 RUB
    Поставил(а) лайков:
    1,737
    Получено лайков:   2,575
    в 1,501 сообщениях
    54%
    ПодписатьсяПодписаться
    Подписано: 0
    Цитата Сообщение от ir0407 Посмотреть сообщение

    Ну, до третьей переменной в функции я додумался:

    PHP код:
    void my_print(string var_name, double var, int inter)
    {
    string var_name_for_gv = "ltp_" + var_name;
    double ltp_var;
    ltp_var = Get_GV_dou(var_name_for_gv, ltp_var);
    if(
    TimeCurrent() - ltp_var > inter)
    {
    Print(
    var_name, " == ", var);
    Set_GV_dou(var_name_for_gv, TimeCurrent());
    }
    else
    {
    return;
    }
    }
    а вот с шаблонами не приходилось сталкиваться... Теперь есть повод и о них почитать! Благодарю! Как вегда - исчерпывающе!


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

    Незарегистрированный (2 пользователя)

  14. линк#7873
    Свой человек
    Все пучком
     
    IgorM хорошая репутация IgorM хорошая репутация IgorM хорошая репутация IgorM хорошая репутация IgorM хорошая репутация IgorM хорошая репутация Аватар для IgorM
    Регистрация:
    09.05.2011
    Пол:
    Мужчина
    Сообщений:
    803
    Накопленные выплаты (Подробнее):
    27108 RUB
    Поставил(а) лайков:
    234
    Получено лайков:   694
    в 411 сообщениях
    86%
    ПодписатьсяПодписаться
    Подписано: 0
    Цитата Сообщение от json Посмотреть сообщение
    Хочу сделать утилитку, которая будет выводить значение заданной переменной через заданный интервал:
    MQL код:

    #define PRINT(VAR) Print(#VAR," = ",VAR)

    //+------------------------------------------------------------------+
    void OnStart()
    {
    string mystr = "Hello word!";
    PRINT(mystr);
    double pi = M_PI;
    PRINT(pi);
    for(int x = 0, y = 0, z = 0; x < 10; x++, y += rand(), z -= rand())
    {
    PRINT(x);
    PRINT(y);
    PRINT(z);
    Sleep(500);
    }
    }
    //+------------------------------------------------------------------+


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

    ir0407 (11.10.2020), json (14.10.2020), Незарегистрированный (4 пользователя)

  16. линк#7874
    Знающий
    Скромняжка
     
    json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь Аватар для json
    Регистрация:
    01.08.2011
    Пол:
    Мужчина
    Сообщений:
    4,781
    Накопленные выплаты (Подробнее):
    117563 RUB
    Поставил(а) лайков:
    1,737
    Получено лайков:   2,575
    в 1,501 сообщениях
    54%
    ПодписатьсяПодписаться
    Подписано: 0
    Цитата Сообщение от IgorM Посмотреть сообщение
    MQL код:

    #define PRINT(VAR) Print(#VAR," = ",VAR)

    //+------------------------------------------------------------------+
    void OnStart()
    {
    string mystr = "Hello word!";
    PRINT(mystr);
    double pi = M_PI;
    PRINT(pi);
    for(int x = 0, y = 0, z = 0; x < 10; x++, y += rand(), z -= rand())
    {
    PRINT(x);
    PRINT(y);
    PRINT(z);
    Sleep(500);
    }
    }
    //+------------------------------------------------------------------+
    Хорошо, но... в тестере Sleep() не работает, к сожалению. Опять же, если нужно принтовать через сравнительно большие промежутки времени - тоже не есть хорошо, программа будет в это время спать.


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

    Незарегистрированный (4 пользователя)

  18. линк#7875
    Специалист
    ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация Аватар для ir0407
    Регистрация:
    02.12.2010
    Сообщений:
    7,201
    Накопленные выплаты (Подробнее):
    165256 RUB
    Поставил(а) лайков:
    925
    Получено лайков:   7,277
    в 3,502 сообщениях
    101%
    ПодписатьсяПодписаться
    Подписано: 1
    Цитата Сообщение от json Посмотреть сообщение
    Хорошо, но... в тестере Sleep() не работает, к сожалению. Опять же, если нужно принтовать через сравнительно большие промежутки времени - тоже не есть хорошо, программа будет в это время спать.
    Не в тот корень зришь... Sleep() тут не главное. Он просто для удобной визуализации процесса работы скрипта. Главное тут вариант в макросе PRINT(), который делает как раз то, что тебе нужно. Просто слегка в другой парадигме.


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

    Незарегистрированный (2 пользователя)

  20. линк#7876
    Знающий
    Скромняжка
     
    json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь Аватар для json
    Регистрация:
    01.08.2011
    Пол:
    Мужчина
    Сообщений:
    4,781
    Накопленные выплаты (Подробнее):
    117563 RUB
    Поставил(а) лайков:
    1,737
    Получено лайков:   2,575
    в 1,501 сообщениях
    54%
    ПодписатьсяПодписаться
    Подписано: 0
    Цитата Сообщение от ir0407 Посмотреть сообщение
    Не в тот корень зришь... Sleep() тут не главное. Он просто для удобной визуализации процесса работы скрипта. Главное тут вариант в макросе PRINT(), который делает как раз то, что тебе нужно. Просто слегка в другой парадигме.
    Ога, понятно. Только для мну главное было - не засорять журнал, принтуя через заданные промежутки времени. А так то - да, интересный вариант.


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

    Незарегистрированный (3 пользователя)

  22. линк#7877
    Кандидат форумных наук
    MonyaMaker хорошая репутация MonyaMaker хорошая репутация MonyaMaker хорошая репутация MonyaMaker хорошая репутация MonyaMaker хорошая репутация MonyaMaker хорошая репутация Аватар для MonyaMaker
    Регистрация:
    03.04.2017
    Пол:
    Мужчина
    Сообщений:
    1,712
    Накопленные выплаты (Подробнее):
    60226 RUB
    Поставил(а) лайков:
    278
    Получено лайков:   653
    в 589 сообщениях
    38%
    ПодписатьсяПодписаться
    Подписано: 0
    Цитата Сообщение от json Посмотреть сообщение
    Ога, понятно. Только для мну главное было - не засорять журнал, принтуя через заданные промежутки времени. А так то - да, интересный вариант.
    Лирическое отступление:
    Для того, чтобы лог не загаживать, надо все по существу и вовремя делать, а не на каждом тике или рабочем цикле, т.е. есть что писать в лог - пишем, нет - сидим на заборе.
    Вариант "по кнопке", это если "ну прям сейчас и вот, вот, быстрей, быстрей, именно это...", и это у тебя уже написано.


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

    Незарегистрированный (1 пользователь)

  24. линк#7878
    Специалист
    ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация Аватар для ir0407
    Регистрация:
    02.12.2010
    Сообщений:
    7,201
    Накопленные выплаты (Подробнее):
    165256 RUB
    Поставил(а) лайков:
    925
    Получено лайков:   7,277
    в 3,502 сообщениях
    101%
    ПодписатьсяПодписаться
    Подписано: 1
    Цитата Сообщение от json Посмотреть сообщение
    Только для мну главное было - не засорять журнал, принтуя через заданные промежутки времени.
    Дык и в чем проблемы? Заводим в советнике... Ну, например, какой-то свой таймер(как вариант, на базе твоей функции), который не делает ничего, кроме контроля какого-то одного флага.


    В глобальной области советника заводим какой-то флаг, в OnTick(), в ее начале, вызываем свой таймер, а в конце, в условии, принтуем то чего хоцца.



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

    json (15.10.2020), Незарегистрированный (2 пользователя)

  26. линк#7879
    Знающий
    Скромняжка
     
    json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь Аватар для json
    Регистрация:
    01.08.2011
    Пол:
    Мужчина
    Сообщений:
    4,781
    Накопленные выплаты (Подробнее):
    117563 RUB
    Поставил(а) лайков:
    1,737
    Получено лайков:   2,575
    в 1,501 сообщениях
    54%
    ПодписатьсяПодписаться
    Подписано: 0
    Цитата Сообщение от ir0407 Посмотреть сообщение

    Конечно же, энциклопедически! Я ж хотел всего двумя парамеирами, дойдя в коде до нужной переменной, обойтись:

    PHP код:
    my_print(CurrProfit, Interval);
    Вообще, конечно, странно, что нельзя из переменной CurrProfit (double) сделать строковую переменную CurrProfit

    Думаю, какой-то способ есть, надо только изощриться))) Хотя уже столько вариантов предложено, что можно и не изощряться)))


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

    Незарегистрированный (1 пользователь)

  28. линк#7880
    Специалист
    ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация Аватар для ir0407
    Регистрация:
    02.12.2010
    Сообщений:
    7,201
    Накопленные выплаты (Подробнее):
    165256 RUB
    Поставил(а) лайков:
    925
    Получено лайков:   7,277
    в 3,502 сообщениях
    101%
    ПодписатьсяПодписаться
    Подписано: 1
    Цитата Сообщение от json Посмотреть сообщение
    Вообще, конечно, странно, что нельзя из переменной CurrProfit (double) сделать строковую переменную CurrProfit
    Тут важно понимать, что имена переменных существуют только до того момента, пока код не будет скомпилирован. А после компиляции их в коде уже не существует. Ибо незачем. Отсюда и ответ на твой следующий посыл:

    Цитата Сообщение от json Посмотреть сообщение
    Думаю, какой-то способ есть, надо только изощриться)))
    Хоть изощряйся, хоть нет, а из работающего кода ты имена переменных уже не добудешь аж никак.


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

    json (16.10.2020), Незарегистрированный (1 пользователь)

  30. линк#7881
    Знающий
    Скромняжка
     
    json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь Аватар для json
    Регистрация:
    01.08.2011
    Пол:
    Мужчина
    Сообщений:
    4,781
    Накопленные выплаты (Подробнее):
    117563 RUB
    Поставил(а) лайков:
    1,737
    Получено лайков:   2,575
    в 1,501 сообщениях
    54%
    ПодписатьсяПодписаться
    Подписано: 0
    Цитата Сообщение от ir0407 Посмотреть сообщение
    Тут важно понимать, что имена переменных существуют только до того момента, пока код не будет скомпилирован. А после компиляции их в коде уже не существует. Ибо незачем. Отсюда и ответ на твой следующий посыл:


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


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

    Незарегистрированный (2 пользователя)

  32. линк#7882
    Специалист
    ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация Аватар для ir0407
    Регистрация:
    02.12.2010
    Сообщений:
    7,201
    Накопленные выплаты (Подробнее):
    165256 RUB
    Поставил(а) лайков:
    925
    Получено лайков:   7,277
    в 3,502 сообщениях
    101%
    ПодписатьсяПодписаться
    Подписано: 1
    Цитата Сообщение от json Посмотреть сообщение
    Стопэ... Я ж до компиляции пытаюсь получить строковую переменную из названия. Или как этот процесс происходит?
    Ошибаешься... Твоя хотелка строится на неправильном понимании таких стадий, как этап компиляции(так называемый compile time) и этап выполнения кода(runtime). Твою хотелку, гипотетически, можно оформить в виде двух вариантов функции:
    MQL код:
    1. my_print(double CurrProfit, datetime Interval);
    2. my_print(double &CurrProfit, datetime Interval);


    Теперь, если ты вызываешь функцию:
    MQL код:
    my_print(CurrProfit, Interval);

    тогда во время компиляции компилятор подставит(вместо имени) в качестве первого параметра функции:
    1. Значение переменной, т.е. то, что скрывается под именем переменной.
    2. Адрес этой переменной в памяти подсистемы MQL, по которому лежит ее значение.

    Таким образом, имя твоей переменной, в compile time, нужно только для того, чтоб компилятор мог вычислить, что брать в качестве непосредственно самого значения переменной, либо что брать в качестве ее адреса. И поэтому, в runtime, в исполняющемся коде, от конкретно имени переменной не остается и следа.

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

    Как-то так...


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

    json (18.10.2020), Незарегистрированный (1 пользователь)

    <a href="https://forexdengi.com/attachment/1/0/1.php">Форекс портал</a>
  34. линк#7883
    Знающий
    Скромняжка
     
    json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь Аватар для json
    Регистрация:
    01.08.2011
    Пол:
    Мужчина
    Сообщений:
    4,781
    Накопленные выплаты (Подробнее):
    117563 RUB
    Поставил(а) лайков:
    1,737
    Получено лайков:   2,575
    в 1,501 сообщениях
    54%
    ПодписатьсяПодписаться
    Подписано: 0
    Цитата Сообщение от ir0407 Посмотреть сообщение



    П.С. Что ни пост - то в энциклопию!


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

    ir0407 (18.10.2020)


Страница 394 из 394
Первая ... 384 393 Последняя

Подписанные на тему (75)

Похожие темы

  1. Несколько слов о языке программирования mql4
    от Заз в разделе MQL-программирование, АТС
    Replies: 32
    Последнее сообщение: 26.09.2018, 11:31
  2. 55 вопросов по истории РОССИИ
    от НАИВНЫЙ-СЕРДЦИЕТ в разделе Свободное общение
    Replies: 15
    Последнее сообщение: 25.12.2015, 15:44
  3. [Архив] MQL4: Несколько вопросов от начинающего
    от Nick'Otin в разделе MQL-программирование, АТС
    Replies: 9235
    Последнее сообщение: 26.10.2015, 01:36