но Андрей это дополнение к индикатору,
я потому и спрашиваю что допустим 300 рублей за предыдущую правку,
500 рублей ну ни мне ни тебе за эту правку.
и того 800 реблей, сделаешь индикатор?
Создание советника для MetaTrader 4 (MT4), который будет использовать отбой от круглых уровней, требует учета специфики цены актива, включая количество знаков до и после запятой. Это важно, так как разные активы могут иметь различную точность ценовых данных. Например, валютная пара EURUSD может отображаться с точностью до пяти знаков после запятой (например, 1.23456), тогда как другие инструменты могут иметь другую точность.
Вот примерный алгоритм создания такого советника:
### Шаг 1: Определение количества знаков
Для начала нужно определить количество знаков до и после запятой у конкретного инструмента. В MT4 есть встроенная функция Digits, которая возвращает количество знаков после запятой для текущего символа (инструмента).
int digits = Digits(); // Получаем количество знаков после запятой
### Шаг 2: Идентификация круглого уровня
Круглый уровень – это цена, заканчивающаяся на ноль или несколько нулей. Чтобы проверить, является ли текущий уровень круглым, можно воспользоваться следующей логикой:
double currentPrice = SymbolInfoDouble(Symbol(), SYMBOL_BID); // Текущая цена
int intPart = (int)currentPrice; // Целая часть цены
double fracPart = currentPrice — intPart; // Дробная часть цены
bool isRoundLevel = false;
if(fracPart == 0) {
isRoundLevel = true; // Если дробная часть равна нулю, то это круглый уровень
}
### Шаг 3: Учет количества знаков после запятой
Так как количество знаков после запятой влияет на определение круглого уровня, можно модифицировать проверку следующим образом:
// Округляем дробную часть до нужного количества знаков
fracPart = NormalizeDouble(fracPart, digits);
if(fracPart == 0) {
isRoundLevel = true; // Если дробная часть равна нулю, то это круглый уровень
}
Функция NormalizeDouble округляет число до указанного количества знаков после запятой.
### Шаг 4: Реализация стратегии отбоя
Теперь, когда мы можем определять круглые уровни, можно реализовать стратегию отбоя. Вот упрощенный пример:
if(fracPart == 0) { // Если текущий уровень круглый
// Проверяем условия для отбоя
if(currentPrice > previousPrice) {
// Отбой вниз
OpenSell();
} else {
// Отбой вверх
OpenBuy();
}
}
}
В этом примере OpenSell() и OpenBuy() являются функциями, открывающими сделки на продажу и покупку соответственно. Вы можете заменить их своими собственными функциями открытия ордеров.
### Заключение
Этот подход позволяет учесть особенности цены актива при создании советника для работы с круглыми уровнями. Важно помнить о необходимости тестирования вашего советника на исторических данных перед использованием его в реальной торговле.
Для создания индикатора для MetaTrader 4, который будет окрашивать свечи, проходящие через круглые уровни, нужно использовать язык программирования MQL4. В данном случае мы будем работать с таймфреймом H1, но вы можете изменить его под свои нужды.
### Шаги:
1. Создание круглых уровней:
Круглые уровни – это цены, заканчивающиеся на нули (например, 10 000, 11 000 и т.д.). Мы будем проверять каждую свечу на то, пересекает ли она такие уровни.
2. Окрашивание свечей:
Если цена открытия или закрытия свечи находится между двумя круглыми уровнями, свеча должна быть окрашена определенным цветом.
3. Тестирование на BTCUSD:
Индикатор должен корректно работать на паре BTCUSD, которая часто используется для торговли биткоином.
int start() {
int counted_bars=IndicatorCounted();
if(counted_bars<0) return(-1);
for(int i=counted_bars;i>0;--i){
double open = iOpen(_Symbol,_Period,i);
double close = iClose(_Symbol,_Period,i);
bool isCrossingRoundLevel = false;
int levelStart = MathFloor(open / Step) * Step;
int levelEnd = levelStart + Step;
if((open >= levelStart && open <= levelEnd) || (close >= levelStart && close <= levelEnd)) {
isCrossingRoundLevel = true;
}
if(isCrossingRoundLevel) {
ExtBuffer[i] = 1;
} else {
ExtBuffer[i] = EMPTY_VALUE;
}
}
return(0);
}
### Пояснение к коду:
1. Step: Внешний параметр, определяющий шаг для круглых уровней. По умолчанию установлено значение 1000, что означает, что уровни будут находиться каждые 1000 пунктов (например, 20 000, 21 000 и т.д.).
2. ExtBuffer[]: Массив для хранения значений индикатора. Если свеча проходит через круглый уровень, в массив записывается 1, иначе EMPTY_VALUE.
3. start(): Основная функция, которая проверяет каждую свечу на пересечение круглого уровня. Она вычисляет начало и конец текущего уровня (levelStart и levelEnd) и определяет, попадает ли цена открытия или закрытия свечи в этот диапазон.
4. Окраска свечей: Для того чтобы свечи были окрашены, вам необходимо вручную настроить цвета свечей в платформе MT4. Это делается через меню «Графики» → «Свойства», где выбирается нужный график и устанавливаются нужные цвета для бычьих и медвежьих свечей.
### Установка и использование индикатора:
1. Сохраните данный код в редакторе MetaEditor в формате .mq4.
2. Скомпилируйте файл и установите его в вашу платформу MT4.
3. Откройте график пары BTCUSD и добавьте созданный индикатор через меню «Вставка» → «Индикаторы» → «Пользовательские».
4. Настройте параметры индикатора при необходимости.
Теперь ваш индикатор будет отмечать свечи, проходящие через круглые уровни, что поможет вам лучше анализировать рынок и принимать торговые решения.
Андрей можно например так но платить еще более 300 рублей не буду
igrun