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

Показаны сообщения: с 1 по 20 из 8097

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

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

    Цитата Сообщение от Viktor1987 Посмотреть сообщение
    Нужно пробовать что-то написать с применением прочтённого! Так трудно понять! Всё что приходит в голову это инвертирование состояний флага! Например в свойствах объектов или графика где применяется bool параметр! Можно ли как-то это прикрутить например сюда?
    [php]ChartSetInteger(chart_ID,CHART_SHOW_TRADE_LEVELS,0 ,value)[/php]
    Вместо value использовать битовую маску и не городить проверку текущего состояния отображения торговых уровней, а просто инвертировать флаг!
    Ты не понял... 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
    Накопленные выплаты 24049 RUB

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

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

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

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

    Цитата Сообщение от Leschich Посмотреть сообщение
    З.Ы. А вообще, почитав справку, может я и не прав... как нить поюзую данную функцию...
    Забей... Лучше возьми на вооружение вот эту:
    MQL-Код:
    <code><span style="color: #000000">
    <span style="color: #0000BB">bool IsNewBar</span><span style="color: #007700">(){static </span><span style="color: #0000BB">datetime LastBar</span><span style="color: #007700">;</span><span style="color: #0000BB">bool Result </span><span style="color: #007700">= (</span><span style="color: #0000BB">LastBar </span><span style="color: #007700">!= </span><span style="color: #0000BB">Time</span><span style="color: #007700">[</span><span style="color: #0000BB">0</span><span style="color: #007700">]);if(</span><span style="color: #0000BB">Result</span><span style="color: #007700">) </span><span style="color: #0000BB">LastBar </span><span style="color: #007700">= </span><span style="color: #0000BB">Time</span><span style="color: #007700">[</span><span style="color: #0000BB">0</span><span style="color: #007700">];return(</span><span style="color: #0000BB">Result</span><span style="color: #007700">);} 
    </span><span style="color: #0000BB"></span>
    </span>
    </code>

    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);
    }[/PHP]

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

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

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

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

    vivianalens (27.07.2017)

    ferrari
  4. линк#2
    Кандидат форумных наук
    Все пучком
     
    wawilon1985 приемлемый уровень репутации wawilon1985 приемлемый уровень репутации Аватар для wawilon1985
    Регистрация:
    22.11.2013
    Пол:
    Мужчина
    Сообщений:
    1,175
    Накопленные выплаты (Подробнее):
    11277 RUB
    Поставил лайков:
    90
    Получено лайков:   143
    в 125 сообщениях
    12%
    ПодписатьсяПодписаться
    Подписано 0
    Здраствуйте! Подскажите пожалуйста как сделать так чтобы Otstup = спреду текущей пары! И выставлялось 2 одинаковых ордера!
    MQL-Код:
    
    extern bool     BuyStop     = True;   // Если значение True, то откроется ордер Buy Stop; False - выкл;extern bool     SellStop    = True;   // Если значение True, то откроется ордер Sell Stop; False - выкл;extern double   TP_Exponent = 2.0;    // Во сколько раз TakeProfit будет больше StopLossextern int      Otstup      = 10;     // На такое количество пунктов цена открытия и StopLoss будут установлены от экстремумов бараextern int      Candle      = 1;      // Номер бара выше/ниже которого будет задана цена открытия ордера, 0 - текущий бар, 1 прошлый бар и так далее.extern double   Risk        = 0.3;    // Процент риска на сделку  0.2 = 2%, 0.3 = 3% и т.д.(Для Instaforex ставиться 1%...5%...10%, расчет ведется от свободных средств на счетуextern bool     UseTimeSet  = False;  // Использовать выставление ордеров по времениextern datetime TimeSet     = D'2013.10.26 15:00'; //Время выставления ордеров, если текущее время больше установленного, то выставляются сразуextern int      Magic       = 100;    // Уникальный номер ордеров extern bool     UseAlert    = False;  // Использовать Алерт//----------------------------------int start()//----{   while (TimeCurrent() < TimeSet && (UseTimeSet == true))   {      Sleep(1000);      Comment("Скрипт выставления сетки Stop ордеров Copyright © 2011 [email]cmillion@narod.ru[/email]\n",      TimeToStr(TimeCurrent(),TIME_SECONDS)," До выставления сетки осталось ",TimeToStr(TimeSet-TimeCurrent(),TIME_SECONDS));      RefreshRates();   }// Проверка на пятизнакif (Digits == 5 || Digits == 3){ Otstup=Otstup * 10; }  // Устанавливаем ордер Buy Stopif(BuyStop == True) Open_BuyStop();// Устанавливаем ордер Sell Stop if(SellStop == True) Open_SellStop();//----   return(0);}//+------------------------------------------------------------------+//Функция установки ордера Buy Stopvoid Open_BuyStop(){double Price=High[Candle]+Otstup*Point;double SL=Low[Candle]-Otstup*Point;double TP=Price + (Price-SL)*TP_Exponent;double SL_pips=Price-SL;double Lot=Max_Lot(SL_pips);int Ticket;Price=NormalizeDouble(Price,Digits);SL=NormalizeDouble(SL,Digits);TP=NormalizeDouble(TP,Digits);while (IsTradeContextBusy()) {Sleep(100);}Ticket=OrderSend(Symbol(), OP_BUYSTOP, Lot, Price, 0, SL, TP, " <= BuyStop => ", Magic, 0); if (Ticket<0){Alert("Функция Open_BuyStop","\n", "Ответ сервера: " ,errors(GetLastError()) );}else{double TakeProfit_total = (TP-Price)/Point;double StopLoss_total = (Price-SL)/Point;if (Digits == 5 || Digits == 3){TakeProfit_total=TakeProfit_total / 10;StopLoss_total=StopLoss_total / 10;}  if (UseAlert) Alert("Цена открытия: " , DoubleToStr(Price, Digits), "\n",      "TakeProfit: ", DoubleToStr(TP, Digits), " (", TakeProfit_total, ")", "\n",       "StopLoss: ", DoubleToStr(SL, Digits), " (", StopLoss_total, ")");}} 
    
    
    


  5. линк#3
    Кандидат форумных наук
    Скромняжка
     
    Tekora хорошая репутация Tekora хорошая репутация Tekora хорошая репутация Tekora хорошая репутация Tekora хорошая репутация Tekora хорошая репутация Аватар для Tekora
    Регистрация:
    26.06.2011
    Сообщений:
    1,758
    Накопленные выплаты (Подробнее):
    33438 RUB
    Поставил(а) лайков:
    211
    Получено лайков:   533
    в 425 сообщениях
    30%
    ПодписатьсяПодписаться
    Подписано 0
    Цитата Сообщение от wawilon1985 Посмотреть сообщение
    чтобы Otstup = спреду текущей пары!
    Чтобы узнать различную информацию по символу нужно использовать функцию
    PHP код:
    MarketInfo(_Symbol,MODE_SPREAD);

    , в данном случае с с идентификатором MODE_SPREAD.


    Цитата Сообщение от wawilon1985 Посмотреть сообщение
    И выставлялось 2 одинаковых ордера!
    Ну дык... два раза OrderSend с одинаковыми параметрами.


  6. линк#4
    Специалист
    Сама доброта
     
    Evgast авторитетный пользователь Evgast авторитетный пользователь Evgast авторитетный пользователь Evgast авторитетный пользователь Evgast авторитетный пользователь Evgast авторитетный пользователь Evgast авторитетный пользователь Evgast авторитетный пользователь Evgast авторитетный пользователь Evgast авторитетный пользователь Evgast авторитетный пользователь Аватар для Evgast
    Регистрация:
    13.04.2015
    Пол:
    Мужчина
    Сообщений:
    7,869
    Накопленные выплаты (Подробнее):
    145194 RUB
    Поставил лайков:
    5,091
    Получено лайков:   3,889
    в 1,903 сообщениях
    49%
    Поймано букетов:
    1
    (Подробнее)
    ПодписатьсяПодписаться
    Подписано 0
    Еще раз разрешите побеспокоить. С предыдущем вопросом разобрался. Что интересно при компиляции показывал 0 ошибок и 0 предупреждений, но в тестере не работает как надо выдает в журнале целый комплект разных ошибок и почему то стал торговать сразу в две стороны, но это ладно, устранил. У меня вот такой вопрос. Ставится сетка ордеров по открытию нового бара, на всю сетку свой ТП стопы не ставятся. Отдельно на каждый ордер ставится ТП и трал при превышении этого значения. Но вот только следующий ордер он может открыть с произвольным коэффициентом. То есть закрыл ордер 0.1 а следующий ставит не с таким же значением, а увеличивает на значение коэффициента. Если цена прошла столько что закрылось два ордера, то может открыть произвольно либо больше либо по текущему значению. Добавил NormalizeDouble стали открываться лучше, до этого просто шло увеличение лота по коэффициенту и все. Подскажите решение или какую то идею.


  7. линк#5
    Кандидат форумных наук
    Все пучком
     
    wawilon1985 приемлемый уровень репутации wawilon1985 приемлемый уровень репутации Аватар для wawilon1985
    Регистрация:
    22.11.2013
    Пол:
    Мужчина
    Сообщений:
    1,175
    Накопленные выплаты (Подробнее):
    11277 RUB
    Поставил лайков:
    90
    Получено лайков:   143
    в 125 сообщениях
    12%
    ПодписатьсяПодписаться
    Подписано 0
    Цитата Сообщение от Tekora Посмотреть сообщение
    Чтобы узнать различную информацию по символу нужно использовать функцию
    PHP код:
    MarketInfo(_Symbol,MODE_SPREAD);

    , в данном случае с с идентификатором MODE_SPREAD.



    Ну дык... два раза OrderSend с одинаковыми параметрами.
    А можно поточней, прям код подправьте тот что я выложил, а там я уже сам скрипт исправлю! )


  8. линк#6
    Кандидат форумных наук
    Stam хорошая репутация Stam хорошая репутация Stam хорошая репутация Аватар для Stam
    Регистрация:
    13.09.2015
    Пол:
    Мужчина
    Сообщений:
    1,014
    Накопленные выплаты (Подробнее):
    26752 RUB
    Поставил лайков:
    541
    Получено лайков:   257
    в 206 сообщениях
    25%
    ПодписатьсяПодписаться
    Подписано 0
    Подскажите есть ли такая возможность как неполное закрытие положительного ордера. Просто ходят слухи , а тему не развивают. Ведь в MQL4 такой функции нет. Я нажимал вручную на положительный ордер правой кнопкой мыши и пытался найти чего нибудь , но ничего не нашёл. Например у меня депозит 1000 рублей и объём лота 0.01 и я выиграл 100 тиков. Могу ли я закрыть только 50 тиков и это регулируется лотом или чем то другим?


  9. линк#7
    Inception
    DIIIVERGENT приемлемый уровень репутации DIIIVERGENT приемлемый уровень репутации DIIIVERGENT приемлемый уровень репутации Аватар для DIIIVERGENT
    Регистрация:
    03.03.2014
    Пол:
    Мужчина
    Сообщений:
    1,175
    Накопленные выплаты (Подробнее):
    19705 RUB
    Поставил лайков:
    646
    Получено лайков:   228
    в 176 сообщениях
    19%
    ПодписатьсяПодписаться
    Подписано 0
    Прикручиваю в индикатор алерт. Выдаёт две ошибки.
    '}' - unexpected end of program - эта ошибочка идёт в конце после return
    '{' - unbalanced parentheses - а эта вначале после start
    В чём загвоздка ?


  10. линк#8
    Знающий
    Все пучком
     
    Victor-Y отличная репутация Victor-Y отличная репутация Victor-Y отличная репутация Victor-Y отличная репутация Victor-Y отличная репутация Victor-Y отличная репутация Victor-Y отличная репутация Victor-Y отличная репутация Victor-Y отличная репутация Victor-Y отличная репутация Victor-Y отличная репутация Аватар для Victor-Y
    Регистрация:
    04.06.2012
    Пол:
    Мужчина
    Сообщений:
    3,516
    Накопленные выплаты (Подробнее):
    70943 RUB
    Поставил лайков:
    12,386
    Получено лайков:   8,266
    в 2,753 сообщениях
    235%
    ПодписатьсяПодписаться
    Подписано 0
    Цитата Сообщение от Stam Посмотреть сообщение
    Могу ли я закрыть только 50 тиков и это регулируется лотом или чем то другим?
    Закрыть можно только количество лотов, но никак не пунктов. У вас же объём лота (в конкретно этом примере) равен 0,01, то есть минимальный, а следовательно закрыть часть и так минимального лота нельзя. К примеру, если бы у вас был открыт ордер объёмом 0,03 лота, то вы можете закрыть либо весь ордер (0,03 лота), либо часть, то есть 0,01 или 0,02 лота. Причём не важно ордер в плюсе или в минусе.


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

    DIIIVERGENT (26.10.2015), Stam (01.11.2015)

  12. линк#9
    Знающий
    Все пучком
     
    Victor-Y отличная репутация Victor-Y отличная репутация Victor-Y отличная репутация Victor-Y отличная репутация Victor-Y отличная репутация Victor-Y отличная репутация Victor-Y отличная репутация Victor-Y отличная репутация Victor-Y отличная репутация Victor-Y отличная репутация Victor-Y отличная репутация Аватар для Victor-Y
    Регистрация:
    04.06.2012
    Пол:
    Мужчина
    Сообщений:
    3,516
    Накопленные выплаты (Подробнее):
    70943 RUB
    Поставил лайков:
    12,386
    Получено лайков:   8,266
    в 2,753 сообщениях
    235%
    ПодписатьсяПодписаться
    Подписано 0
    Цитата Сообщение от Shin1ng Посмотреть сообщение
    В чём загвоздка ?
    В коде. Выкладывайте, посмотрим...


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

    DIIIVERGENT (26.10.2015)

  14. линк#10
    Inception
    DIIIVERGENT приемлемый уровень репутации DIIIVERGENT приемлемый уровень репутации DIIIVERGENT приемлемый уровень репутации Аватар для DIIIVERGENT
    Регистрация:
    03.03.2014
    Пол:
    Мужчина
    Сообщений:
    1,175
    Накопленные выплаты (Подробнее):
    19705 RUB
    Поставил лайков:
    646
    Получено лайков:   228
    в 176 сообщениях
    19%
    ПодписатьсяПодписаться
    Подписано 0
    Скинул в личку. Спасибо


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

    Victor-Y (27.10.2015)

  16. линк#11
    Inception
    DIIIVERGENT приемлемый уровень репутации DIIIVERGENT приемлемый уровень репутации DIIIVERGENT приемлемый уровень репутации Аватар для DIIIVERGENT
    Регистрация:
    03.03.2014
    Пол:
    Мужчина
    Сообщений:
    1,175
    Накопленные выплаты (Подробнее):
    19705 RUB
    Поставил лайков:
    646
    Получено лайков:   228
    в 176 сообщениях
    19%
    ПодписатьсяПодписаться
    Подписано 0
    1. Имеет ли смысл такой код и если имеет, то почему так пишется ?
    double prev_price=Close[0];
    if ((prev_price && Close[0]>=LowV)
    Разве левая и права часть не противоречат друг другу ?

    2. Зачем вводить какой то prev_price, который обозначает что то, когда можно просто написать это что то, например: prev_price=Close[0] можно же просто везде писать Close[0] или нет ?

    Последний раз редактировалось DIIIVERGENT; 27.10.2015 в 23:05.

  17. линк#12
    Знающий
    Все пучком
     
    Victor-Y отличная репутация Victor-Y отличная репутация Victor-Y отличная репутация Victor-Y отличная репутация Victor-Y отличная репутация Victor-Y отличная репутация Victor-Y отличная репутация Victor-Y отличная репутация Victor-Y отличная репутация Victor-Y отличная репутация Victor-Y отличная репутация Аватар для Victor-Y
    Регистрация:
    04.06.2012
    Пол:
    Мужчина
    Сообщений:
    3,516
    Накопленные выплаты (Подробнее):
    70943 RUB
    Поставил лайков:
    12,386
    Получено лайков:   8,266
    в 2,753 сообщениях
    235%
    ПодписатьсяПодписаться
    Подписано 0
    Цитата Сообщение от Shin1ng Посмотреть сообщение
    Разве выделенное курсивом и наклонное не одно и тоже по сути своей ?
    1. Это не одно и то же. А вот как может prev_price (Close[0]) одновременно быть и меньше, и (больше или равно) LowV - не понятно. То есть одно из условий противоречит (исключает) другому.
    2. Переменную обычно вводят для того, чтобы раз за разом не обращаться к массиву-таймсерии, при условии того, что Close[0] будет использоваться в коде многократно.

    Последний раз редактировалось Victor-Y; 27.10.2015 в 23:13.

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

    DIIIVERGENT (27.10.2015)

  19. линк#13
    Кандидат форумных наук
    В шоке
     
    work2it хорошая репутация work2it хорошая репутация work2it хорошая репутация Аватар для work2it
    Регистрация:
    01.10.2015
    Пол:
    Мужчина
    Сообщений:
    1,097
    Накопленные выплаты (Подробнее):
    24584 RUB
    Поставил лайков:
    14
    Получено лайков:   216
    в 196 сообщениях
    20%
    ПодписатьсяПодписаться
    Подписано 0
    Цитата Сообщение от Shin1ng Посмотреть сообщение
    1. Имеет ли смысл такой код и если имеет, то почему так пишется ?
    double prev_price=Close[0];
    if ((prev_price=LowV)
    Такой код будет иметь смыслы только в том случае, если поменять строчки местами. т.е. переменная prev_price будет использоваться для сохранения предыдущего значения Close[0]. И соответственно, вторая строка будет проверять пересечение переменной Close[0] уровня LowV. При этом, если работа ведется по барам, то вместо prev_price целесообразнее использовать Close[1] и ничего сохранять не нужно. В том виде, как оно приведено, выражение смысла не имеет - однозначно.

    Реализую за ваши деньги ваши идеи на MQL - mql@fx-prog.ru

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

    DIIIVERGENT (28.10.2015)

  21. линк#14
    Свой человек
    Поболтаем?
     
    coder-ex приемлемый уровень репутации coder-ex приемлемый уровень репутации Аватар для coder-ex
    Регистрация:
    28.09.2015
    Пол:
    Мужчина
    Сообщений:
    545
    Накопленные выплаты (Подробнее):
    9224 RUB
    Поставил лайков:
    100
    Получено лайков:   163
    в 138 сообщениях
    30%
    ПодписатьсяПодписаться
    Подписано 0
    Цитата Сообщение от Shin1ng Посмотреть сообщение

    Такой код очень похож на ошибку в логике, хотя в определенных системах (не на MQL4) это вполне может быть, к примеру высокочастотные торговые системы. Т.е. к примеру Close[] это массив тайм-серия цен закрытия, которая контролирует текущий бар (не закрытый бар) и его состояние может измениться за период, прошедший с:
    PHP код:
    double prev_price = Close[0];

    до момента условия:
    PHP код:
    if(prev_price < LowV && Close[0] >= LowV)

    Но повторюсь, для MQL4 такое практически невыполнимо в силу специфичности связи с сервером, а теоретически нужно дописать пропущенное, т.е. перетряхнуть тайм-серии между первой и второй строкой, что бы получить изменения в тайм-серии. В MQL5 такое будет практически возможно в высокочастотных торговых системах при условии исправления разработчиками одной проблемы. В других биржевых (не форекс кухнях) платформах такое вполне возможно на коннекторах PLAZA II

    Последний раз редактировалось coder-ex; 28.10.2015 в 05:49.

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

    DIIIVERGENT (28.10.2015)

  23. линк#15
    Специалист
    Сама доброта
     
    Evgast авторитетный пользователь Evgast авторитетный пользователь Evgast авторитетный пользователь Evgast авторитетный пользователь Evgast авторитетный пользователь Evgast авторитетный пользователь Evgast авторитетный пользователь Evgast авторитетный пользователь Evgast авторитетный пользователь Evgast авторитетный пользователь Evgast авторитетный пользователь Аватар для Evgast
    Регистрация:
    13.04.2015
    Пол:
    Мужчина
    Сообщений:
    7,869
    Накопленные выплаты (Подробнее):
    145194 RUB
    Поставил лайков:
    5,091
    Получено лайков:   3,889
    в 1,903 сообщениях
    49%
    Поймано букетов:
    1
    (Подробнее)
    ПодписатьсяПодписаться
    Подписано 0
    Здравствуйте такой вопрос. С таким кодом
    MQL-Код:
    
    if (OrderModify(OrderTicket(), a_price_8, price_28, OrderTakeProfit(), 0, Red)); 
    
    
    
    выдает в компиляторе ошибку: empty controlled statement found. Исправил на такой:
    MQL-Код:
    
    Ticket = (!OrderModify(OrderTicket(), a_price_8, price_market, OrderTakeProfit(), 0, Red)); 
    
    
    
    При компиляции все чисто ни ошибок ни предупреждений нет. Но файл он так не сохраняет, только через меню - сохранить как. И в тестере все так же выдает ошибку: OrderModify error 130. Почему так если в компиляторе нет ошибок? В первом случае с ошибкой работает, а во втором без ошибок не работает.

    Последний раз редактировалось Evgast; 28.10.2015 в 08:48. Причина: Правка.

  24. линк#16
    Свой человек
    Поболтаем?
     
    coder-ex приемлемый уровень репутации coder-ex приемлемый уровень репутации Аватар для coder-ex
    Регистрация:
    28.09.2015
    Пол:
    Мужчина
    Сообщений:
    545
    Накопленные выплаты (Подробнее):
    9224 RUB
    Поставил лайков:
    100
    Получено лайков:   163
    в 138 сообщениях
    30%
    ПодписатьсяПодписаться
    Подписано 0
    Цитата Сообщение от Evgast Посмотреть сообщение

    вы уж определитесь какой хотите получить результат т.к. OrederModify к открытию/сохранению файлов ни какого отношения не имеет, плюс не понятно чего вы хотели добиться переделанной строкой...


  25. линк#17
    Специалист
    Сама доброта
     
    Evgast авторитетный пользователь Evgast авторитетный пользователь Evgast авторитетный пользователь Evgast авторитетный пользователь Evgast авторитетный пользователь Evgast авторитетный пользователь Evgast авторитетный пользователь Evgast авторитетный пользователь Evgast авторитетный пользователь Evgast авторитетный пользователь Evgast авторитетный пользователь Аватар для Evgast
    Регистрация:
    13.04.2015
    Пол:
    Мужчина
    Сообщений:
    7,869
    Накопленные выплаты (Подробнее):
    145194 RUB
    Поставил лайков:
    5,091
    Получено лайков:   3,889
    в 1,903 сообщениях
    49%
    Поймано букетов:
    1
    (Подробнее)
    ПодписатьсяПодписаться
    Подписано 0
    Цитата Сообщение от coder-ex Посмотреть сообщение
    чего вы хотели добиться переделанной строкой
    что бы он на каждом тике пересматривал TakeProfit по открытым ордерам. Вроде писал по учебнику. Один ордер закрываем и по оставшимся сразу переставляем TakeProfit не ждем открытия нового ордера что бы пересчитать TakeProfit.

    Последний раз редактировалось Evgast; 28.10.2015 в 09:01. Причина: Правка.

  26. линк#18
    Свой человек
    Поболтаем?
     
    coder-ex приемлемый уровень репутации coder-ex приемлемый уровень репутации Аватар для coder-ex
    Регистрация:
    28.09.2015
    Пол:
    Мужчина
    Сообщений:
    545
    Накопленные выплаты (Подробнее):
    9224 RUB
    Поставил лайков:
    100
    Получено лайков:   163
    в 138 сообщениях
    30%
    ПодписатьсяПодписаться
    Подписано 0
    Цитата Сообщение от Evgast Посмотреть сообщение
    что бы он на каждом тике пересматривал TakeProfit по открытым ордерам. Вроде писал по учебнику. Один ордер закрываем и по оставшимся сразу переставляем TakeProfit не ждем открытия нового ордера что бы пересчитать TakeProfit.
    у вас условие не содержит оператора, который по всей видимости должен выполняться при успешной модификации ордера, во второй строке вообще абсурд, переменной ticket что присваивается? логика?
    не знаю где вы такой учебник нашли, хотя догадываюсь - у MetaQuotes
    мой совет, начните изучать С++, а после его изучения, смело переходите на MQL, либо ищите репетитора, всевозможные вебинары не содержат нужных знаний, я по крайней мере толковых не встречал...
    Есть хороший репетитор А.Волчанский, на форуме MetaQuotes можете его найти, но у него все курсы платные.


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

    Evgast (28.10.2015), Sailo (13.12.2020)

  28. линк#19
    Специалист
    Сама доброта
     
    Evgast авторитетный пользователь Evgast авторитетный пользователь Evgast авторитетный пользователь Evgast авторитетный пользователь Evgast авторитетный пользователь Evgast авторитетный пользователь Evgast авторитетный пользователь Evgast авторитетный пользователь Evgast авторитетный пользователь Evgast авторитетный пользователь Evgast авторитетный пользователь Аватар для Evgast
    Регистрация:
    13.04.2015
    Пол:
    Мужчина
    Сообщений:
    7,869
    Накопленные выплаты (Подробнее):
    145194 RUB
    Поставил лайков:
    5,091
    Получено лайков:   3,889
    в 1,903 сообщениях
    49%
    Поймано букетов:
    1
    (Подробнее)
    ПодписатьсяПодписаться
    Подписано 0
    Цитата Сообщение от coder-ex Посмотреть сообщение
    учебник нашли, хотя догадываюсь - у MetaQuotes
    Да у них самых. Хорошо будем искать. Почему же тогда с первым вариантом он работал хотя в редакторе выдавал ошибку, пустого оператора, а без ошибок не хочет работать?


  29. ferrari
  30. линк#20
    Свой человек
    Поболтаем?
     
    coder-ex приемлемый уровень репутации coder-ex приемлемый уровень репутации Аватар для coder-ex
    Регистрация:
    28.09.2015
    Пол:
    Мужчина
    Сообщений:
    545
    Накопленные выплаты (Подробнее):
    9224 RUB
    Поставил лайков:
    100
    Получено лайков:   163
    в 138 сообщениях
    30%
    ПодписатьсяПодписаться
    Подписано 0
    Цитата Сообщение от Evgast Посмотреть сообщение
    Да у них самых. Хорошо будем искать. Почему же тогда с первым вариантом он работал хотя в редакторе выдавал ошибку, пустого оператора, а без ошибок не хочет работать?
    а что подразумеваете под понятием работал? вот ваша строка:
    MQL-Код:
    
    if (OrderModify(OrderTicket(), a_price_8, price_28, OrderTakeProfit(), 0, Red)); 
    
    
    

    если ее написать в удобочитаемом виде то она будет выглядеть вот так:
    MQL-Код:
    
    if(OrderModify(OrderTicket(), a_price_8, price_28, OrderTakeProfit(), 0, Red)   // тут место для оператора условия [COLOR="blue"]if[/COLOR]   // последняя скобочка лишняя 
    
    
    

    Последний раз редактировалось coder-ex; 28.10.2015 в 10:38.

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

    Evgast (28.10.2015)


Страница 1 из 405
1 2 11 ... Последняя ◄╝

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

Похожие темы

  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