здравствуйте.
хочу глянуть на свечи.
и реализация наверное начнется так.
//+------------------------------------------------------------------+
//| RoundLevelPaint.mq4 |
//| Copyright 2023 |
//|
example.com/|
//+------------------------------------------------------------------+
#property copyright «Copyright 2023»
#property link «
example.com/»
#property version «1.00»
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 clrRed
extern int RoundDigits = 2; // Количество знаков после запятой для круглых уровней
double Buffer[];
int init()
{
IndicatorBuffers(1);
SetIndexBuffer(0, Buffer);
SetIndexStyle(0, DRAW_NONE);
return(0);
}
int deinit()
{
return(0);
}
int start()
{
int counted_bars = IndicatorCounted();
if(counted_bars < 0) return(-1);
int limit = Bars — counted_bars;
if(limit > 0)
{
for(int i = 0; i < limit; i++)
{
double high = High[i];
double low = Low[i];
// Находим ближайшие круглые уровни
double round_up = NormalizeDouble(MathCeil(high * MathPow(10, RoundDigits)) / MathPow(10, RoundDigits), RoundDigits);
double round_down = NormalizeDouble(MathFloor(low * MathPow(10, RoundDigits)) / MathPow(10, RoundDigits), RoundDigits);
// Проверяем, проходит ли свеча через круглый уровень
if((high >= round_up && low <= round_up) || (high >= round_down && low <= round_down))
{
// Меняем цвет свечи
SetIndexArrow(0, i, 121); // Красный цвет
}
}
}
return(0);
}
### Как работает индикатор:
1. Инициализация: Индикатор создает буфер для хранения данных о свечах и устанавливает стиль отображения на DRAW_NONE, поскольку мы будем менять цвета свечей непосредственно на графике.
2. Поиск круглых уровней: Индикатор находит ближайшие круглые уровни вверх и вниз от максимума и минимума свечи соответственно. Круглые уровни определяются как числа, заканчивающиеся на ноль с точностью до указанного количества знаков после запятой (RoundDigits).
3. Проверка пересечения: Если максимум или минимум свечи пересекает найденный круглый уровень, индикатор изменяет цвет этой свечи на красный.
### Настройка:
— RoundDigits: количество знаков после запятой, которое используется для определения круглого уровня. Например, если установлено значение 2, то круглые уровни будут такими: 1.00, 1.05, 1.10 и так далее.
### Установка:
1. Создайте новый файл с именем RoundLevelPaint.mq4 в папке MQL4\Indicators вашего терминала MetaTrader 4.
2. Скопируйте приведенный выше код и вставьте его в созданный файл.
3. Сохраните файл и перезагрузите терминал MetaTrader 4.
4. В Навигаторе найдите ваш индикатор и перетащите его на график желаемого инструмента.
5. Установите необходимые параметры и нажмите «ОК».
После установки индикатор начнет работать автоматически, окрашивая свечи, которые пересекают круглые уровни.
но на взгляд и усмотрение Андрея.
Андрей сколько стоить будет. и возьметесь ли.
Комментарии (30)
23 igrun Автор Сообщений: 1706 - igrun
1000р. или буду делать по вашему тз. Редактирован: 15 декабря 2024, 14:26
35 AM2 Сообщений: 16419 - Андрей
в принципе советник близок к цели.
напишите в личку номер карты и в какую страну делать перевод.
23 igrun Автор Сообщений: 1706 - igrun
35 AM2 Сообщений: 16419 - Андрей
23 igrun Автор Сообщений: 1706 - igrun
35 AM2 Сообщений: 16419 - Андрей
23 igrun Автор Сообщений: 1706 - igrun
35 AM2 Сообщений: 16419 - Андрей
23 igrun Автор Сообщений: 1706 - igrun
35 AM2 Сообщений: 16419 - Андрей
23 igrun Автор Сообщений: 1706 - igrun
35 AM2 Сообщений: 16419 - Андрей
35 AM2 Сообщений: 16419 - Андрей
35 AM2 Сообщений: 16419 - Андрей
### Шаги:
1. Создание круглых уровней:
Круглые уровни – это цены, заканчивающиеся на нули (например, 10 000, 11 000 и т.д.). Мы будем проверять каждую свечу на то, пересекает ли она такие уровни.
2. Окрашивание свечей:
Если цена открытия или закрытия свечи находится между двумя круглыми уровнями, свеча должна быть окрашена определенным цветом.
3. Тестирование на BTCUSD:
Индикатор должен корректно работать на паре BTCUSD, которая часто используется для торговли биткоином.
### Код индикатора:
//+------------------------------------------------------------------+
//| RoundLevel.mq4 |
//| Copyright 2023, YourNameHere |
//| www.metaquotes.net/terminal:metaeditor |
//+------------------------------------------------------------------+
#property copyright «YourNameHere»
#property link «www.metaquotes.net/terminal:metaeditor»
#property version «1.00»
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 clrGreen
extern int Step = 1000; // Шаг для определения круглого уровня
double ExtBuffer[];
int init() {
IndicatorBuffers(1);
SetIndexStyle(0,DRAW_ARROW);
SetIndexArrow(0,159);
SetIndexEmptyValue(0,EMPTY_VALUE);
return(0);
}
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 рублей не буду
23 igrun Автор Сообщений: 1706 - igrun
35 AM2 Сообщений: 16419 - Андрей
35 AM2 Сообщений: 16419 - Андрей
23 igrun Автор Сообщений: 1706 - igrun
35 AM2 Сообщений: 16419 - Андрей
Вот примерный алгоритм создания такого советника:
### Шаг 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: Реализация стратегии отбоя
Теперь, когда мы можем определять круглые уровни, можно реализовать стратегию отбоя. Вот упрощенный пример:
void OnTick() {
double currentPrice = SymbolInfoDouble(Symbol(), SYMBOL_BID);
int digits = Digits();
int intPart = (int)currentPrice;
double fracPart = currentPrice — intPart;
fracPart = NormalizeDouble(fracPart, digits);
if(fracPart == 0) { // Если текущий уровень круглый
// Проверяем условия для отбоя
if(currentPrice > previousPrice) {
// Отбой вниз
OpenSell();
} else {
// Отбой вверх
OpenBuy();
}
}
}
В этом примере OpenSell() и OpenBuy() являются функциями, открывающими сделки на продажу и покупку соответственно. Вы можете заменить их своими собственными функциями открытия ордеров.
### Заключение
Этот подход позволяет учесть особенности цены актива при создании советника для работы с круглыми уровнями. Важно помнить о необходимости тестирования вашего советника на исторических данных перед использованием его в реальной торговле.
23 igrun Автор Сообщений: 1706 - igrun
23 igrun Автор Сообщений: 1706 - igrun
Сделать входы на отбой пробой по индикатору?
1000р.
35 AM2 Сообщений: 16419 - Андрей
только индикатор подправить — чтобы он был завершен.
23 igrun Автор Сообщений: 1706 - igrun
я потому и спрашиваю что допустим 300 рублей за предыдущую правку,
500 рублей ну ни мне ни тебе за эту правку.
и того 800 реблей, сделаешь индикатор?
23 igrun Автор Сообщений: 1706 - igrun
35 AM2 Сообщений: 16419 - Андрей
количество знаков до запятой и
количество нулей после запятой.
23 igrun Автор Сообщений: 1706 - igrun
если бид 1.08855 а округление 0 — уровень 1.0000
округление 3 — уровень 1.088
округление 4 — уровень 1.0885
35 AM2 Сообщений: 16419 - Андрей
23 igrun Автор Сообщений: 1706 - igrun
На скрине шаг 1000:
35 AM2 Сообщений: 16419 - Андрей
23 igrun Автор Сообщений: 1706 - igrun
Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий