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

Показаны сообщения: с 61 по 80 из 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]
    bool IsNewBar()
    {
    static datetime LastBar;
    bool Result = (LastBar != Time[0]);
    if(Result) LastBar = Time[0];
    return(Result);
    }[/MQL]

    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. линк#61
    Частый гость
    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)

  4. линк#62
    Три Полоски
    no
     
    Сержант наивысший уровень репутации Сержант наивысший уровень репутации Сержант наивысший уровень репутации Сержант наивысший уровень репутации Сержант наивысший уровень репутации Сержант наивысший уровень репутации Сержант наивысший уровень репутации Сержант наивысший уровень репутации Сержант наивысший уровень репутации Сержант наивысший уровень репутации Сержант наивысший уровень репутации Аватар для Сержант
    Регистрация:
    14.09.2010
    Пол:
    Мужчина
    Сообщений:
    8,866
    Накопленные выплаты (Подробнее):
    14887 RUB
    Поставил лайков:
    26,073
    Получено лайков:   26,286
    в 8,331 сообщениях
    296%
    ПодписатьсяПодписаться
    Подписано 0
    Цитата Сообщение от AngelDeaths Посмотреть сообщение

    К примеру, советник открывает любое количество ордеров в одном направлении, пока не наступит сетап для открытия в противоположную сторону. Тогда он всё фиксит и открывается по новому сетапу.

    PHP код:
    { int _typeTrade=typeTrade(); if(_typeTrade==1){ openOrder(OP_BUY,lot,SL,TP); closeAllSell();} if(_typeTrade==-1){ openOrder(OP_SELL,lot,SL,TP); closeAllBuy();} }
    Вот, например, серия лонгов на картинке:

    Нажмите на изображение для увеличения
Название: 55.jpg
Просмотров: 124
Размер:	126.9 КБ
ID:	1066940

    первые три сделки под ма (или одной ма, или обеими) выделил желтыми кружками, и последняя сделка выше обеих машек. Вот для тех, кто под машкой в желтых кружках и нужно ограничение для лонгов, чтобы открывались не более заданного количества. Т.е. мне нужно, чтобы советник не открывал ордеров в бай (ниже машек) больше того количества, которое я ему задаю
    Для шортов наоборот Как это прописать в коде не знаю(

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

  5. линк#63
    Частый гость
    AngelDeaths стараюсь положительно себя зарекомендовать Аватар для AngelDeaths
    Регистрация:
    30.06.2015
    Пол:
    Женщина
    Сообщений:
    76
    Накопленные выплаты (Подробнее):
    1194 RUB
    Поставила лайков:
    19
    Получено лайков:   10
    в 9 сообщениях
    13%
    ПодписатьсяПодписаться
    Подписано 0
    PHP код:
    int order=3; //переменная количества ордеров как BAY и SELL (){int _typeTrade=typeTrade();if(_typeTrade==1) {if (order>count()) {openOrder(OP_BUY,lot,SL,TP); closeAllSell();}if(_typeTrade==-1) {if (order>count()){openOrder(OP_SELL,lot,SL,TP); closeAllBuy();}}//////////////////////////////////////////////////////////////////////////////////////////int count() //Функция подсчёта ордера на рынке. { int cnt=0;//Обнуляем счетчик ордеров if(OrdersTotal()>0){//Если в рынке присутствуют ордера for(int i=OrdersTotal();i>=0;i--){//начнем цикл перебора ордеров OrderSelect(i,SELECT_BY_POS,MODE_TRADES);//Выбираем ордер if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic) //Если Символ ордера равен нашему и Позицияравна задданоой в переданном параметре и магический номер ордера соответствует нашему { cnt++;//Увеличиваем счетчик ордеров на один } } return(cnt);//Возвращаем кол-во найденных ордеров соответствующих критерию отбора } return(0);}


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

    Сержант (01.11.2015)

  7. линк#64
    Модератор
    no
     
    Gold наивысший уровень репутации Gold наивысший уровень репутации Gold наивысший уровень репутации Gold наивысший уровень репутации Gold наивысший уровень репутации Gold наивысший уровень репутации Gold наивысший уровень репутации Gold наивысший уровень репутации Gold наивысший уровень репутации Gold наивысший уровень репутации Gold наивысший уровень репутации Аватар для Gold
    Регистрация:
    21.12.2010
    Пол:
    Мужчина
    Сообщений:
    19,609
    Поставил лайков:
    24,158
    Получено лайков:   20,213
    в 8,985 сообщениях
    103%
    Цитата Сообщение от Сержант Посмотреть сообщение
    Т.е. мне нужно, чтобы советник не открывал ордеров в бай (ниже машек) больше того количества, которое я ему задаю
    Для шортов наоборот Как это прописать в коде не знаю(
    Если цена под скользящей, есть сигнал на покупку и нет открытых buy ордеров (или их количество не достигло заданного лимита) - открыть buy. Если buy есть - условие не выполнится и еще один ордер не откроется.


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

    Сержант (01.11.2015)

  9. линк#65
    Кандидат форумных наук
    Stam хорошая репутация Stam хорошая репутация Stam хорошая репутация Аватар для Stam
    Регистрация:
    13.09.2015
    Пол:
    Мужчина
    Сообщений:
    1,014
    Накопленные выплаты (Подробнее):
    26752 RUB
    Поставил лайков:
    541
    Получено лайков:   257
    в 206 сообщениях
    25%
    ПодписатьсяПодписаться
    Подписано 0
    Цитата Сообщение от Victor-Y Посмотреть сообщение
    Закрыть можно только количество лотов, но никак не пунктов. У вас же объём лота (в конкретно этом примере) равен 0,01, то есть минимальный, а следовательно закрыть часть и так минимального лота нельзя. К примеру, если бы у вас был открыт ордер объёмом 0,03 лота, то вы можете закрыть либо весь ордер (0,03 лота), либо часть, то есть 0,01 или 0,02 лота. Причём не важно ордер в плюсе или в минусе.
    Спасибо, про закрытие я вроде понял. У меня после прочтения ответа появился противоположный вопрос. А можно ли на открытом ордере не уменьшать лот, а наоборот его увеличивать? Ведь тогда не надо будет платить спрэд за открытие второго ордера, и можно вполне придумать какую нибудь стратегию. И тогда вместо стратегии СЕТКА ОРДЕРОВ можно использовать эту возможность. И как я понимаю, можно несколько раз снижать объём лота, пока ордер сам не закроешь?


  10. линк#66
    Три Полоски
    no
     
    Сержант наивысший уровень репутации Сержант наивысший уровень репутации Сержант наивысший уровень репутации Сержант наивысший уровень репутации Сержант наивысший уровень репутации Сержант наивысший уровень репутации Сержант наивысший уровень репутации Сержант наивысший уровень репутации Сержант наивысший уровень репутации Сержант наивысший уровень репутации Сержант наивысший уровень репутации Аватар для Сержант
    Регистрация:
    14.09.2010
    Пол:
    Мужчина
    Сообщений:
    8,866
    Накопленные выплаты (Подробнее):
    14887 RUB
    Поставил лайков:
    26,073
    Получено лайков:   26,286
    в 8,331 сообщениях
    296%
    ПодписатьсяПодписаться
    Подписано 0
    Спасибо. Ну таким образом мы выставим ограничение на общее количество ордеров, насколько я понимаю ) а на самом деле нужно отфильтровать нежелательные, не ограничивая общее количество. К примеру, в бай-серии до наступления селл-условия может быть хоть 20 ордеров, часть из них ниже мувингов, часть - выше них. Вот для тех, кто ниже, и хотелось бы ввести ограничение, чтобы открывалось не более 0, 1, 2,3 и т.д., но при этом не ущемлять в правах тех, кто выше)) ну для селл-серии наоборот соответственно.

    да ладно, это походу нерешимая задача, забыли в общем)


  11. линк#67
    Кандидат форумных наук
    В думах
     
    mql4coder хорошая репутация mql4coder хорошая репутация mql4coder хорошая репутация mql4coder хорошая репутация mql4coder хорошая репутация Аватар для mql4coder
    Регистрация:
    28.05.2014
    Пол:
    Мужчина
    Сообщений:
    1,028
    Накопленные выплаты (Подробнее):
    9147 RUB
    Поставил лайков:
    51
    Получено лайков:   454
    в 387 сообщениях
    44%
    ПодписатьсяПодписаться
    Подписано 0
    Цитата Сообщение от Сержант Посмотреть сообщение
    Спасибо. Ну таким образом мы выставим ограничение на общее количество ордеров, насколько я понимаю ) а на самом деле нужно отфильтровать нежелательные, не ограничивая общее количество. К примеру, в бай-серии до наступления селл-условия может быть хоть 20 ордеров, часть из них ниже мувингов, часть - выше них. Вот для тех, кто ниже, и хотелось бы ввести ограничение, чтобы открывалось не более 0, 1, 2,3 и т.д., но при этом не ущемлять в правах тех, кто выше)) ну для селл-серии наоборот соответственно.

    да ладно, это походу нерешимая задача, забыли в общем)
    Да почему не решаемая то? Это же Элементарная задача.
    Сейчас набросаю вам примерный код.

    --------------------------------------------------
    ~разрабатываю Софт под мт4 на заказ.~
    --------------------------------------------------

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

    Сержант (02.11.2015)

  13. линк#68
    Кандидат форумных наук
    В думах
     
    mql4coder хорошая репутация mql4coder хорошая репутация mql4coder хорошая репутация mql4coder хорошая репутация mql4coder хорошая репутация Аватар для mql4coder
    Регистрация:
    28.05.2014
    Пол:
    Мужчина
    Сообщений:
    1,028
    Накопленные выплаты (Подробнее):
    9147 RUB
    Поставил лайков:
    51
    Получено лайков:   454
    в 387 сообщениях
    44%
    ПодписатьсяПодписаться
    Подписано 0
    Цитата Сообщение от Сержант Посмотреть сообщение
    Спасибо. Ну таким образом мы выставим ограничение на общее количество ордеров, насколько я понимаю ) а на самом деле нужно отфильтровать нежелательные, не ограничивая общее количество. К примеру, в бай-серии до наступления селл-условия может быть хоть 20 ордеров, часть из них ниже мувингов, часть - выше них. Вот для тех, кто ниже, и хотелось бы ввести ограничение, чтобы открывалось не более 0, 1, 2,3 и т.д., но при этом не ущемлять в правах тех, кто выше)) ну для селл-серии наоборот соответственно.

    да ладно, это походу нерешимая задача, забыли в общем)
    Забирайте пробуйте. В коде все прокомментировано. Главное помните, пишите условия ГРАМОТНО!. Потому что условия для открытия ордера под мувингом к примеру, может выполнится а ордер открыться над мувингом, если цена была достаточно близко. Поэтому вводите доп параметры проверки, дабы избежать дестабилизации счетчика ордеров.
    PHP код:
    #property copyright "Copyright © 2015, by mql4coder, https://forexdengi.com/members/200268-mql4coder"#property link "https://forexdengi.com/members/200268-mql4coder"#property version "1.0"#property strictenum modes {underMa,aboveMa};//енам для выбора метода подсчета ордеров, над и под мувингомextern int magic = 2015;//уникальный номер экспертаextern int step = 10;//расстояние между мувингами, нужно для правильной генерации игнала.extern int maxtrades = 3;//лимит ордеров каждого типа над и под мувингомextern string st1 = "Настройки мувинга для определения тренда";extern int Periods = 100;extern int ShiftsMa = 0;extern ENUM_MA_METHOD Method = 0;extern ENUM_APPLIED_PRICE AppliedPrice = 0;extern string st2 = "Настройки сигнального мувинга";extern int Periods2 = 25;extern int ShiftsMa2 = 0;extern ENUM_MA_METHOD Method2 = 0;extern ENUM_APPLIED_PRICE AppliedPrice2 = 0;int check,dg,mt;double pt;int OnInit(){ dg=_Digits; if(dg==3 || dg==5){pt=Point*10;mt=10;}else{pt=Point;mt=1;}//Адаптируем эксперт под 4 и 5 знаков return(INIT_SUCCEEDED);}void OnDeinit(const int reason){ GlobalVariableDel("time"+_Symbol);//Удаляем глоабльную переменную для функции NewBar}void OnTick(){ getTrade();//Загружаем основную рабочую функцию }void getTrade(){ double ma1=getIndi(Periods,ShiftsMa,Method,AppliedPrice,1);//Получаем первый мувинг double ma2=getIndi(Periods2,ShiftsMa2,Method2,AppliedPrice2,1);//Получаем второй мувинг //Проверяем, есле предыдущий бар пересек мувинг2 снизу вверх, и цена находится выше мувинга 1, и расстояние между мувингами позволяет открыть сделку, и у нас ордеров над мувингом меньше максимального, а также это нвоый бар if(Close[1]>ma2 && Open[1]<ma2 && Bid>ma1 && NormalizeDouble(MathAbs(ma1-ma2),dg)>step*pt &&count(OP_BUY,aboveMa)<maxtrades && NewBar()){ check=OrderSend(_Symbol,OP_BUY,0.1,Ask,0,0,0,"BUY",magic,0,Blue);//Открываем сделку } //Проверяем, есле предыдущий бар пересек мувинг2 сверху вниз, и цена находится выше мувинга 1, и расстояние между мувингами позволяет открыть сделку, и у нас ордеров над мувингом меньше максимального, а также это нвоый бар if(Close[1]<ma2 && Open[1]>ma2 && Ask>ma1 && NormalizeDouble(MathAbs(ma1-ma2),dg)>step*pt && count(OP_SELL,aboveMa)<maxtrades && NewBar()){ check=OrderSend(_Symbol,OP_SELL,0.1,Bid,0,0,0,"SELL",magic,0,Red);//Открываем сделку } //Проверяем, есле предыдущий бар пересек мувинг2 снизу вверх, и цена находится нижу мувинга 1, и расстояние между мувингами позволяет открыть сделку, и у нас ордеров под мувингом меньше максимального, а также это нвоый бар if(Close[1]>ma2 && Open[1]<ma2 && Bid<ma1 && NormalizeDouble(MathAbs(ma1-ma2),dg)>step*pt && count(OP_BUY,underMa)<maxtrades && NewBar()){ check=OrderSend(_Symbol,OP_BUY,0.1,Ask,0,0,0,"BUY",magic,0,Blue);//Открываем сделку } //Проверяем, есле предыдущий бар пересек мувинг2 сверху вниз, и цена находится нижу мувинга 1, и расстояние между мувингами позволяет открыть сделку, и у нас ордеров под мувингом меньше максимального, а также это нвоый бар if(Close[1]<ma2 && Open[1]>ma2 && Ask<ma1 && NormalizeDouble(MathAbs(ma1-ma2),dg)>step*pt && count(OP_SELL,underMa)<maxtrades && NewBar()){ check=OrderSend(_Symbol,OP_SELL,0.1,Bid,0,0,0,"SELL",magic,0,Red);//Открываем сделку }}double getIndi(int PeriodMa,int ShiftMa,ENUM_MA_METHOD MethodMa,ENUM_APPLIED_PRICE AppliedPriceMa,int shift){//Функция получения показаний индикатора return(NormalizeDouble(iMA(_Symbol,0,PeriodMa,ShiftMa,MethodMa,AppliedPriceMa,shift),dg));//получаем значение мувинг аверейджа}// Counter ***************************************************************************************int count(int type, modes mode){//Функция подсчета ордеров по типу и нахождению над и под мувингом int cnt=0,x=0;//обнуляем счетчики if(OrdersTotal()>0){//если присутствуют ордера в рынке for(int i=OrdersTotal();i>=0;i--){//Начинаем перебор ордеров x=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);//выбираем ордер if(OrderSymbol()==_Symbol && OrderType()==type && OrderMagicNumber()==magic){//если ордер нашего эксперта if(mode==underMa){//Проверяем передаваемый метод анализа ордеров. Если он равен - под мувингом //проверяем, если цена открытия ордера под мувингом if(NormalizeDouble(OrderOpenPrice(),dg)<getIndi(Periods,ShiftsMa,Method,AppliedPrice,iBarShift(_Symbol,0,OrderOpenTime()))){ cnt++;//Увеличиваем счетчик } else continue;//иначе продолжаем } if(mode==aboveMa){//Проверяем передаваемый метод анализа ордеров. Если он равен - над мувингом //проверяем, если цена открытия ордера нал мувингом if(NormalizeDouble(OrderOpenPrice(),dg)>getIndi(Periods,ShiftsMa,Method,AppliedPrice,iBarShift(_Symbol,0,OrderOpenTime()))){ cnt++;//Увеличиваем счетчик } else continue;//иначе продолжаем } } } return(cnt);//Возвращаем кол-во найденных ордеров } return(0);}// get New Bar ***************************************************************************************************************bool NewBar()//Функция поиска нового бара. Для того чтобы на одном баре открывался только один ордер{ static datetime LastTime;//Вводим переменную последнего известного бара if(!GlobalVariableCheck("time"+_Symbol)){//проверяем, если у нас глобальная переменая, если вдруг был сбой LastTime = 0;//если нет то время последнего бара равно нулю } else{ LastTime=(datetime)GlobalVariableGet("time"+_Symbol);//Если нашли глобальную переменную загружаем ее как время последнего бара } if (iTime(Symbol(), Period(), 0) != LastTime)//если пришел новый бар { LastTime = iTime(Symbol(), Period(), 0);//Запоминаем его время GlobalVariableSet("time"+_Symbol,LastTime);//устанавливаем ег ов глобальную переменную return (true);//возвращаем флаг события о приходе новго бара } else return (false);//иначе говорим что нового бара нет}

    --------------------------------------------------
    ~разрабатываю Софт под мт4 на заказ.~
    --------------------------------------------------

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

    Сержант (02.11.2015)

  15. линк#69
    Три Полоски
    no
     
    Сержант наивысший уровень репутации Сержант наивысший уровень репутации Сержант наивысший уровень репутации Сержант наивысший уровень репутации Сержант наивысший уровень репутации Сержант наивысший уровень репутации Сержант наивысший уровень репутации Сержант наивысший уровень репутации Сержант наивысший уровень репутации Сержант наивысший уровень репутации Сержант наивысший уровень репутации Аватар для Сержант
    Регистрация:
    14.09.2010
    Пол:
    Мужчина
    Сообщений:
    8,866
    Накопленные выплаты (Подробнее):
    14887 RUB
    Поставил лайков:
    26,073
    Получено лайков:   26,286
    в 8,331 сообщениях
    296%
    ПодписатьсяПодписаться
    Подписано 0
    Цитата Сообщение от mql4coder Посмотреть сообщение
    Забирайте пробуйте. В коде все прокомментировано. Главное помните, пишите условия ГРАМОТНО!. Потому что условия для открытия ордера под мувингом к примеру, может выполнится а ордер открыться над мувингом, если цена была достаточно близко. Поэтому вводите доп параметры проверки, дабы избежать дестабилизации счетчика ордеров.
    Спасибище! Завтра буду испытывать


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


  17. линк#71
    Кандидат форумных наук
    В шоке
     
    work2it хорошая репутация work2it хорошая репутация work2it хорошая репутация Аватар для work2it
    Регистрация:
    01.10.2015
    Пол:
    Мужчина
    Сообщений:
    1,097
    Накопленные выплаты (Подробнее):
    24584 RUB
    Поставил лайков:
    14
    Получено лайков:   216
    в 196 сообщениях
    20%
    ПодписатьсяПодписаться
    Подписано 0
    Цитата Сообщение от Stam Посмотреть сообщение
    Ведь в окне тестера (свойства эксперта) где мы указываем размеры депозита там стоят только USD, EUR и другие иностранные валюты, а рубля нет
    А вы считаете что для терминала есть разница какой валютной парой торговать? Ведь валюта депозита никогда не совпадает с торгуемой валютной парой. Если депозит в долларах, то вы можете торговать EURUSD, USDJPY, USDCHF по прямым курсам, а вот EURGBP, EURJPY, CADJPY - через cross-курсы. Например, EURUSD/GBPUSD = EURGBP. С рублевым депозитом все аналогично: EURRUB/USDRUB = EURUSD. Ну а в терминале можно получить стоимость тика торгуемого инструмента в валюте депозита:
    PHP код:
    MarketInfo(Symbol(),MODE_TICKVALUE)

    Последний раз редактировалось Gold; 03.11.2015 в 11:07.
    Реализую за ваши деньги ваши идеи на MQL - mql@fx-prog.ru

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

    Stam (03.11.2015)

  19. линк#72
    V.I.P.
    no
     
    Kamazoov наивысший уровень репутации Kamazoov наивысший уровень репутации Kamazoov наивысший уровень репутации Kamazoov наивысший уровень репутации Kamazoov наивысший уровень репутации Kamazoov наивысший уровень репутации Kamazoov наивысший уровень репутации Kamazoov наивысший уровень репутации Kamazoov наивысший уровень репутации Kamazoov наивысший уровень репутации Kamazoov наивысший уровень репутации Аватар для Kamazoov
    Регистрация:
    13.03.2012
    Пол:
    Мужчина
    Сообщений:
    14,950
    Накопленные выплаты (Подробнее):
    265574 RUB
    Поставил лайков:
    39,170
    Получено лайков:   27,585
    в 11,221 сообщениях
    185%
    ПодписатьсяПодписаться
    Подписано 0
    Скажите пожалуйста каким образом заставить советник работать на нескольких таймфреймах? Если например ставить его на один символ, но на несколько временных графиков, то если в нём присутствует ограничение на количество открытых позиций, будет он учитывать то, что открылось на этом символе, но на другом графике, с другим временным таймфреймом?


  20. линк#73
    Кандидат форумных наук
    В думах
     
    mql4coder хорошая репутация mql4coder хорошая репутация mql4coder хорошая репутация mql4coder хорошая репутация mql4coder хорошая репутация Аватар для mql4coder
    Регистрация:
    28.05.2014
    Пол:
    Мужчина
    Сообщений:
    1,028
    Накопленные выплаты (Подробнее):
    9147 RUB
    Поставил лайков:
    51
    Получено лайков:   454
    в 387 сообщениях
    44%
    ПодписатьсяПодписаться
    Подписано 0
    Цитата Сообщение от Kamazoov Посмотреть сообщение
    Скажите пожалуйста каким образом заставить советник работать на нескольких таймфреймах? Если например ставить его на один символ, но на несколько временных графиков, то если в нём присутствует ограничение на количество открытых позиций, будет он учитывать то, что открылось на этом символе, но на другом графике, с другим временным таймфреймом?
    Для такой цели в эксперте должен быть параметр magic - уникальный номер эксперта, который присваивается ордерам открытым именно им.
    Можете сколько угодно цеплять данный эксперт на разные пары или таймфреймы, но не забывайте менять magic каждому из экспертов.

    --------------------------------------------------
    ~разрабатываю Софт под мт4 на заказ.~
    --------------------------------------------------

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

    Kamazoov (03.11.2015)

  22. линк#74
    В начале пути
    nil9 стараюсь положительно себя зарекомендовать Аватар для nil9
    Регистрация:
    09.02.2015
    Пол:
    Мужчина
    Сообщений:
    49
    Накопленные выплаты (Подробнее):
    370 RUB
    Поставил лайков:
    15
    Получено лайков:   16
    в 8 сообщениях
    33%
    ПодписатьсяПодписаться
    Подписано 0
    Скажите пожалуйста, как написать, чтобы советник находил экстремумы за определенный период времени (допустим с 8:00 до 17:00)


  23. линк#75
    Свой человек
    Поболтаем?
     
    coder-ex приемлемый уровень репутации coder-ex приемлемый уровень репутации Аватар для coder-ex
    Регистрация:
    28.09.2015
    Пол:
    Мужчина
    Сообщений:
    545
    Накопленные выплаты (Подробнее):
    9224 RUB
    Поставил лайков:
    100
    Получено лайков:   163
    в 138 сообщениях
    30%
    ПодписатьсяПодписаться
    Подписано 0
    Цитата Сообщение от nil9 Посмотреть сообщение
    Скажите пожалуйста, как написать, чтобы советник находил экстремумы за определенный период времени (допустим с 8:00 до 17:00)
    В справке посмотрите работу функций iHighest и iLowest
    Если будет не понятно что то по их использованию, то спрашивайте.


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

    nil9 (05.11.2015)

  25. линк#76
    В начале пути
    nil9 стараюсь положительно себя зарекомендовать Аватар для nil9
    Регистрация:
    09.02.2015
    Пол:
    Мужчина
    Сообщений:
    49
    Накопленные выплаты (Подробнее):
    370 RUB
    Поставил лайков:
    15
    Получено лайков:   16
    в 8 сообщениях
    33%
    ПодписатьсяПодписаться
    Подписано 0
    PHP код:
    double max;int max = iHighest(NULL,0,MODE_HIGH,10,0);
    правильно ли я написал? я назначил max наибольшим значением последних 10 баров. Если советник начнет это делать в 17:00, то он найдет экстремум цены с 8:00 до 17:00

    Последний раз редактировалось Gold; 05.11.2015 в 14:37.

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

    у вас две переменные имеют одинаковое имя:
    PHP код:
    // double max; // это не нужно :) int _iIndH = iHighest(NULL,0,MODE_HIGH,10,0);

    Последний раз редактировалось Gold; 05.11.2015 в 14:38.

  27. линк#78
    В начале пути
    nil9 стараюсь положительно себя зарекомендовать Аватар для nil9
    Регистрация:
    09.02.2015
    Пол:
    Мужчина
    Сообщений:
    49
    Накопленные выплаты (Подробнее):
    370 RUB
    Поставил лайков:
    15
    Получено лайков:   16
    в 8 сообщениях
    33%
    ПодписатьсяПодписаться
    Подписано 0
    Цитата Сообщение от coder-ex Посмотреть сообщение

    тоесть если я напишу:
    PHP код:
    int max = iHighest(NULL,0,MODE_HIGH,10,0);int min = iLowest(NULL,0,MODE_LOW,10,0);vol = max-min
    то получу волатильность этих 10 баров?

    Последний раз редактировалось Gold; 05.11.2015 в 14:39.

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

    если результат данного вычисления вы называете волатильностью 10 баров, то да

    Последний раз редактировалось Gold; 05.11.2015 в 14:39.

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

    nil9 (05.11.2015)

  30. линк#80
    В начале пути
    nil9 стараюсь положительно себя зарекомендовать Аватар для nil9
    Регистрация:
    09.02.2015
    Пол:
    Мужчина
    Сообщений:
    49
    Накопленные выплаты (Подробнее):
    370 RUB
    Поставил лайков:
    15
    Получено лайков:   16
    в 8 сообщениях
    33%
    ПодписатьсяПодписаться
    Подписано 0
    Цитата Сообщение от coder-ex Посмотреть сообщение
    если результат данного вычисления вы называете волатильностью 10 баров, то да
    PHP код:
    //+------------------------------------------------------------------+//| Установка ордеров |//+------------------------------------------------------------------+void SetOrders() { double ldStop=0,ldTake=0; int max = iHighest(NULL,0,MODE_HIGH,10,0); int min = iLowest(NULL,0,MODE_LOW,10,0); double vol = max-min; double TakeProfit=vol; double StopLoss=vol/2; double pAsk=Ask+DistanceSet*Point; double pBid=Bid-DistanceSet*Point; if(!ExistOrder(1)) { if(StopLoss!=0) ldStop=pAsk+StopLoss*Point; if(TakeProfit!=0) ldTake=pAsk-TakeProfit*Point; SetOrder(OP_SELLLIMIT,pAsk,ldStop,ldTake,1); } if(!ExistOrder(2)) { if(StopLoss!=0) ldStop=pBid-StopLoss*Point; if(TakeProfit!=0) ldTake=pBid+TakeProfit*Point; SetOrder(OP_BUYLIMIT,pBid,ldStop,ldTake,2); }
    Все равно что-то не так. Помогите найти ошибку. Ордер не открывает

    Последний раз редактировалось Gold; 05.11.2015 в 14:43.

  31. <title>InstaForex</title><meta name="description" content="InstaForex"><a href="https://instaforex.org/ru/company_news">InstaForex</a>
  32. линк#81
    Знающий
    Все пучком
     
    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
    Цитата Сообщение от nil9 Посмотреть сообщение
    Помогите найти ошибку
    Вы внимательно прочитали то, что Вам коллега coder-ex посоветовал?

    Цитата Сообщение от coder-ex Посмотреть сообщение
    В справке посмотрите работу функций
    Прочтите ещё раз, что Вам возвращают ф-ции iHighest и iLowest.


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

    coder-ex (05.11.2015)


Страница 4 из 405
Первая ... 3 4 5 14 ... Последняя ◄╝

Подписанные на тему (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