Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 884
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
добрый день, Господа. )) прошу прощения за дилетантство..
не понимаю как работает OrderClose :(
мне нужно чтобы был максимум 1 ордер. то есть перед открытием нового, чтобы предыдущий закрылся..
почему так не работает?
OrderClose(nom, 0.01, Bid,5, Red);
OrderSend(Symbol(), OP_SELL, 0.01 , NormalizeDouble(Bid,5), 3 , NormalizeDouble(Ask+0.0005,5), NormalizeDouble(Bid-0.0008,5), "", nom,0,Red);
журнал в основном ругается на неверный Ticket ..
в OrderClose вместо nom, что вставлять нужно? или я вообще не в том направлении думаю?))
Попробуйте минСтопЛосс = Текущая цена +/- (МаксЗначение(2*Спред, СтопЛэвэл));
Изучил, ничего нового не почерпнул, видимо оно (новое для меня) конечно есть, очевидное для всех посвященных, само собой разумеющееся. Найти я не смог, кроме вышеописанной особенности взаимного расположения буферов при индексировании. Эту последовательность соблюл, получил еще более убогую картинку.
Картинки ниже, фал приложен
Может вам очень не повезло, но я не люблю колупаться в чужом коде. Тем более править его...
Следующий вопрос: Как вы думаете как часто значение индикатора будет равно ровно 50?
ColorHistogram_2Buffer1[i]=50;
Как я понял задачу, то должно быть одного цвета >50 и другого цвета <50 а вот ==50 нигде не видел. Конечно чтобы исключить потерю в случае если == 50, надо к одному из сравнений добавить >=50 или другому <=50 Это уже как религия позволяет. Как будет красивей выглядеть.
И второй вопрос: на сколько была необходимость менять всю индексацию буферов? После переиндексации вы точно всё в коде исправили? Может проще было-бы буфер цвета назначить индексом 4, а вспомогательные буферы 5 и 6 соответственно. Меньше пришлось-бы править и меньше вероятность допустить ещё несколько ошибок.
Побовал. Два спреда это 24, так работать не будет, начинает работать на 19 от цены закрытия. От текущей цены открытия работает при трёх спредах.
Проверил. Работает
Странно это все, там написаны все те же минСтопЛосс = Текущая цена +/- (МаксЗначение(2*Спред, СтопЛэвэл)), только под Текущей ценой понимается не цена открытия ордера, а зеркальная цена.
Почему двойной спред подходит ?
Еще возникает два вопроса.
1. Почему для получения значений Digits() и Point(); используется SymbolInfoInteger ?
2. Зачем используется запись (int) перед вызовом функции SymbolInfoInteger? Как я понял это принудительное приведение типов.
Проверил. Работает
Странно это все, там написаны все те же минСтопЛосс = Текущая цена +/- (МаксЗначение(2*Спред, СтопЛэвэл)), только под Текущей ценой понимается не цена открытия ордера, а зеркальная цена.
Почему двойной спред подходит ?
Еще возникает два вопроса.
1. Почему для получения значений Digits() и Point(); используется SymbolInfoInteger ?
2. Зачем используется запись (int) перед вызовом функции SymbolInfoInteger? Как я понял это принудительное приведение типов.
Для получения Point() SymbolInfoInteger никак не подойдёт.)))
А вообще, это необходимо для того, чтобы не забывать, что Point() или _Point только для текущего символа. Для символов отличных от того на котором работает советник нужно использовать именно эту функцию.
Функция SymbolInfoInteger возвращмет не только int значения, но и long, и bool, и перечисления.
Sergey Voytsekhovsky, спасибо за помощь. И еще один вопрос, если не сложно, подскажите функцию, обратную функции CharToStr
(Чтобы из символа получит его код) , а то я пришел из Бейсика и Дельфи, там есть функции для этого, а в С++, я так понял есть два метода:
1 - Функция ascii_cod, которой нет в mql4
2. - Прямое приведение типов. Но у меня почему то код
string st="A";
Print ("Код символа А=",(int)st);
Выводит текст Код символа А=0.
Как быть?
Sergey Voytsekhovsky, спасибо за помощь. И еще один вопрос, если не сложно, подскажите функцию, обратную функции CharToStr
(Чтобы из символа получит его код) , а то я пришел из Бейсика и Дельфи, там есть функции для этого, а в С++, я так понял есть два метода:
1 - Функция ascii_cod, которой нет в mql4
2. - Прямое приведение типов. Но у меня почему то код
string st="A";
Print ("Код символа А=",(int)st);
Выводит текст Код символа А=0.
Как быть?
StringToCharArray в отличии от ваиковой функции преобразует не только по одному символу, а может преобразовать строку в массив типа ucar коды всех символов строки.
В mql4 такая функция тоже есть.
Для получения Point() SymbolInfoInteger никак не подойдёт.)))
А вообще, это необходимо для того, чтобы не забывать, что Point() или _Point только для текущего символа. Для символов отличных от того на котором работает советник нужно использовать именно эту функцию.
Функция SymbolInfoInteger возвращмет не только int значения, но и long, и bool, и перечисления.
Ну вообще-то Point имеет значение double. Значит и запрос нужно делать SymbolInfoDouble
Ну вообще-то Point имеет значение double. Значит и запрос нужно делать SymbolInfoDouble
Там речь идёт об этих функциях для MQL4 из поста #65:
Я не увидел, где тут Point получается через SymbolInfoInteger()
Там речь идёт об этих функциях для MQL4 из поста #65:
Я не увидел, где тут Point получается через SymbolInfoInteger()
Да о том-же. Ладно проскочили. Главное чтоб он понял что к чему...