![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Дорогие все, это мой первый шаг в пост о форекс, так что, пожалуйста, постарайтесь быть добрыми, если я говорю что-то слишком неправильно...
Этот сайт является одним из лучших мест, где можно узнать о Форекс, и я читаю о нем уже несколько лет. Я хотел бы обратить внимание на эту ссылку:codebase.mql4.com/5900
Это советник RUBBERBANDS_2 EA Автор: StJojo (2009.08.17 11:30). Он довольно интересен тем, что работает (после минимальной оптимизационной работы) на любой валютной паре. В принципе, его можно использовать как (позвольте мне выражение...) полуавтоматическую автоматизированную стартэгию. Фактически, поскольку она очень хорошо работает на боковом рынке, я обнаружил, что ее можно активировать в новостных интервалах, когда вероятность бокового рынка выше. Поскольку я думаю, что автор сделал код открытым, я хотел бы, если кому-то понравится идея, добавить переменную, чтобы он работал с определенного часа/минуты и "затихал" в определенное время/час/минуту (т.е. :чтобы советник затихал, когда заканчивается текущая сессия). Это значительно облегчило бы "предварительное программирование" времени работы советника на следующий день, относительно предстоящих новостей следующего дня. Я прикрепил файл по ссылке выше.
Я также прикрепил индикаторы "forex_ news_market_clock", которые я использую для чтения новостей на графике.
Спасибо всем за работу, проделанную на этом сайте (и по всей сети... конечно). Надеюсь, кто-нибудь поможет, большое спасибо.
![](https://c.mql5.com/forextsd/smiles/regular_smile.png)
Дорогие все, это мой первый шаг в пост о Форекс, так что, пожалуйста, постарайтесь быть добрыми, если я говорю что-то слишком неправильно...
Этот сайт является одним из лучших мест, где можно узнать о Форекс, и я читаю о нем уже несколько лет. Я хотел бы обратить внимание на эту ссылку:codebase.mql4.com/5900
Это советник RUBBERBANDS_2 EA Автор: StJojo (2009.08.17 11:30). Он довольно интересен тем, что работает (после минимальной оптимизационной работы) на любой валютной паре. В принципе, его можно использовать как (позвольте мне выражение...) полуавтоматическую автоматизированную стартэгию. Фактически, поскольку она очень хорошо работает на боковом рынке, я обнаружил, что ее можно активировать в новостных интервалах, когда вероятность бокового рынка выше. Поскольку я думаю, что автор сделал код открытым, я хотел бы, если кому-то понравится идея, добавить переменную, чтобы он работал с определенного часа/минуты и "затихал" в определенное время/час/минуту (т.е. :чтобы советник затихал, когда заканчивается текущая сессия). Это значительно облегчило бы "предварительное программирование" времени работы советника на следующий день, относительно предстоящих новостей следующего дня. Я прикрепил файл по ссылке выше.
Я также прикрепил индикаторы "forex_ news_market_clock", которые я использую для чтения новостей на графике.
Спасибо всем за работу, проделанную на этом сайте (и по всей сети... конечно). Надеюсь, кто-нибудь поможет, большое спасибо.Здравствуйте Vitoingletto,
Спасибо за советника, добавил фильтр времени и функцию закрытия в пятницу, а также магическое число, чтобы помочь советнику немного различать ордера.
Здравствуйте ...
пути интересно, если вы можете положить в код функцию, которая экспортирует данные непосредственно все сразу (m1, m5, m30, m15, h1, h4, d1 ...) очевидно в отдельных файлах. В настоящее время и вы должны запустить его так много раз ... (для каждого временного кадра).
Я бы существенно сэкономил время на экспорте данных.
Вы можете вставить эту функцию в свой код? Идея может быть похожа на этот прикрепленный скрипт(Period_converter_auto - MQL4 Code Base), который преобразует данные все в одном volta.Si может поиграть в эксперта?
спасибо
привет ...
интересует, можно ли поместить в код функцию, которая экспортирует данные сразу все (m1, m5, m30, m15, h1, h4, d1 ...) очевидно в отдельные файлы. В настоящее время и вы должны запустить его так много раз ... (для каждого временного кадра).
Я бы существенно сэкономил время на экспорте данных.
Вы можете вставить эту функцию в свой код? Идея может быть похожа на этот прикрепленный скрипт(Period_converter_auto - MQL4 Code Base), который преобразует данные все в одном volta.Si может поиграть в эксперта?
спасибоdr.feelgood1989
Используйте этот скрипт и просто прикрепите его ко всем таймфреймам, которые вы хотите экспортировать. Он создаст файлы с именем symbol+"_"+time frame для каждого таймфрейма, на который вы смотрите. Вы можете использовать его как шаблон для экспорта ваших пользовательских индикаторов.
Спасибо за ответ. Младен
На самом деле я уже так и сделал. Скрипт (пример ссылки), который я выложил, получает работу один раз для всех таймфреймов (конвертация).
, эксперт из своего модифицированного "переписывает" один таймфрейм (для отличия файла), когда он используется для одного раза
Я хотел спросить, если запуск одного эксперта переписывается все другие таймфреймы (пример:ea1m запущен на тестере и также файлы записаны в других таймфреймах m5, m15 ...)
спасибо : )
pgtips,
Как выглядит ваш главный цикл (или опубликуйте код, в котором вы пытаетесь это сделать)
PS: Вы должны изменить последний параметр iOpen() и iClose(), чтобы он указывал на правильный день для выбранного бара.Здравствуйте, Младен,
Я застрял с этим, поэтому искал другой способ сделать то же самое.
После нескольких дней поисков я нашел этот индикатор, который близок к тому, что мне нужно, но он сделан по-другому.
Он отображает текущую свечу (из дневной), но нет переменной iopen/close, которую можно выбрать для отображения на один день назад, т.е. сдвиг -1.
Не могли бы вы подсказать мне, как я могу сделать так, чтобы у меня был сдвиг на x дней назад. ? Например, если предыдущий дневной бар был красным, то сделать текущий бокс красным, если предыдущий зеленый, то текущий бокс зеленым.
Я могу наложить индикатор пробойной коробки поверх этого, но было бы очень хорошо, если бы он был ограничен по времени.
Я понимаю, что вы заняты и уделяете свое время бесплатно, но если бы вы могли помочь, я был бы вам очень признателен.
Большое спасибо
PG
Привет,
Я все еще пытаюсь разобраться с этим.
В прикрепленном файле мне удалось использовать индикатор pivot, чтобы получить изменение цвета в день на основе закрытия предыдущего дня, т.е. предыдущий день зеленый или красный.
Теперь мне нужно сделать прямоугольник и заполнить его, основываясь на периоде, который я хочу видеть на экране с 11.00 утра до, скажем, 17.00 вечера, максимум и минимум будут такими, какими они окажутся в течение этого времени.
Я устанавливаю //
ObjectCreate("Rectangle", OBJ_RECTANGLE, 0, Time[periodBegin], Low[1], Time[periodEnd], High[1]);
но получил ошибку, ничего не отображается.
extern int periodBegin = 11; //11:00 утра
extern int periodEnd = 17; //17:00 pm
Я установил extern bool Plot_rectangles=true; так что он "должен" построить что-то для каждого дня.
Что я упускаю?
Спасибо
PG
Я думаю, что знаю ответ на свой вопрос, но... все еще хочу получить подтверждение
a. индикатор является старшим таймфреймом
b. текущий таймфрейм.
Например, я хотел бы использовать a. как тренд b. как вход, можно ли это сделать?
Я думаю, что знаю ответ на свой вопрос, но... все еще хочу получить подтверждение.
a. индикатор является старшим таймфреймом
b. текущий таймфрейм.
например, я хотел бы использовать тренд b. как вход, можно ли это сделать?Да, вы можете.
Просто вызовите a с более высоким таймфреймом в параметре timeFrame и все. Чтобы избежать ловушек при бэктестинге многотаймфреймового советника, используйте закрытый бар на многотаймфреймовом индикаторе (индекс 1 вместо 0), иначе вы получите нереалистично хороший результат из-за того, что metatrader при бэктестинге вызывает не текущие тай мфреймы.
Здравствуйте,
Надеюсь, вы сможете помочь мне с этим. Я хочу, чтобы точки (стрелки; aqua&yellow) инди во втором окне отображались как точки (стрелки) на закрытии (или high для сигнала покупки/low для сигнала продажи) в первом окне (главное окно графика). Я пытался часами, но я никогда не буду кодером ;-)
#property indicator_separate_window
#property indicator_minimum -100.0
#property indicator_maximum 100.0
#property indicator_levelcolor SlateGray
#property indicator_levelstyle 1
#property indicator_buffers 8
#property indicator_color1 Lime
#property indicator_color2 Red
#property indicator_color3 Черный
#property indicator_color4 Black
#property indicator_color5 Черный
#property indicator_color6 Черный
#property indicator_color7 Aqua
#property indicator_color8 Yellow
#property indicator_width1 1
#property indicator_level1 60.0
#property indicator_width2 1
#property indicator_level2 50.0
#property indicator_level3 -50.0
#property indicator_level4 -60.0
extern int WavePeriod = 10;
extern int AvgPeriod = 21;
extern bool SoundAlert = FALSE;
extern bool EmailAlert = FALSE;
double g_ibuf_92[];
double g_ibuf_96[];
double g_ibuf_100[];
double g_ibuf_104[];
double g_ibuf_108[];
double g_ibuf_112[];
double g_ibuf_116[];
double g_ibuf_120[];
int gi_124 = -50;
int gi_128 = 50;
int gi_132;
int init() {
IndicatorShortName("TrendWave");
SetIndexBuffer(0, g_ibuf_100);
SetIndexLabel(0, "ESA");
SetIndexStyle(0, DRAW_NONE);
SetIndexDrawBegin(0, 0);
SetIndexBuffer(1, g_ibuf_112);
SetIndexLabel(1, "DD Values");
SetIndexStyle(1, DRAW_NONE);
SetIndexDrawBegin(1, 0);
SetIndexBuffer(2, g_ibuf_104);
SetIndexLabel(2, "DD");
SetIndexStyle(2, DRAW_NONE);
SetIndexDrawBegin(2, 0);
SetIndexBuffer(3, g_ibuf_108);
SetIndexLabel(3, "CI");
SetIndexStyle(3, DRAW_NONE);
SetIndexDrawBegin(3, 0);
SetIndexBuffer(4, g_ibuf_92);
SetIndexLabel(4, "Bull");
SetIndexStyle(4, DRAW_LINE, STYLE_SOLID, 1, Lime);
SetIndexDrawBegin(4, 0);
SetIndexBuffer(5, g_ibuf_96);
SetIndexLabel(5, "Bear");
SetIndexStyle(5, DRAW_LINE, STYLE_SOLID, 1, Red);
SetIndexDrawBegin(5, 0);
SetIndexBuffer(6, g_ibuf_116);
SetIndexLabel(6, "Купить точку");
SetIndexStyle(6, DRAW_ARROW, STYLE_SOLID, 2, Aqua);
SetIndexArrow(6, 108);
SetIndexDrawBegin(6, 0);
SetIndexBuffer(7, g_ibuf_120);
SetIndexLabel(7, "Sell Dot");
SetIndexStyle(7, DRAW_ARROW, STYLE_SOLID, 2, Yellow);
SetIndexArrow(7, 108);
SetIndexDrawBegin(7, 0);
ArrayResize(g_ibuf_100, Bars);
ArrayResize(g_ibuf_112, Bars);
ArrayResize(g_ibuf_104, Bars);
ArrayResize(g_ibuf_108, Bars);
ArrayResize(g_ibuf_92, Bars);
ArrayResize(g_ibuf_96, Bars);
ArrayResize(g_ibuf_116, Bars);
ArrayResize(g_ibuf_120, Bars);
return (0);
}
int start() {
double l_ima_on_arr_0;
int li_12 = IndicatorCounted();
if (li_12 < 0) return (-1);
if (li_12 > 0) li_12--;
int li_8 = Bars - li_12;
for (int li_16 = li_8; li_16 > 0; li_16--) {
g_ibuf_100[li_16] = iMA(NULL, 0, WavePeriod, 0, MODE_EMA, PRICE_TYPICAL, li_16);
ArraySetAsSeries(g_ibuf_100, TRUE);
}
for (li_16 = li_8; li_16 > 0; li_16--) {
g_ibuf_112[li_16] = MathAbs((iHigh(NULL, 0, li_16) + iClose(NULL, 0, li_16) + iLow(NULL, 0, li_16)) / 3.0 - g_ibuf_100[li_16]);
ArraySetAsSeries(g_ibuf_112, TRUE);
}
for (li_16 = li_8; li_16 > 0; li_16--) {
l_ima_on_arr_0 = iMAOnArray(g_ibuf_112, 0, WavePeriod, 0, MODE_EMA, li_16);
g_ibuf_104[li_16] = l_ima_on_arr_0;
ArraySetAsSeries(g_ibuf_104, TRUE);
}
for (li_16 = li_8; li_16 > 0; li_16--) {
if (g_ibuf_104[li_16] > 0.0) g_ibuf_108[li_16] = ((iHigh(NULL, 0, li_16) + iClose(NULL, 0, li_16) + iLow(NULL, 0, li_16)) / 3.0 - g_ibuf_100[li_16]) / (0.015 * g_ibuf_104[li_16]);
else g_ibuf_108[li_16] = 0;
ArraySetAsSeries(g_ibuf_108, TRUE);
}
for (li_16 = li_8; li_16 > 0; li_16--) {
l_ima_on_arr_0 = iMAOnArray(g_ibuf_108, 0, AvgPeriod, 0, MODE_EMA, li_16);
g_ibuf_92[li_16] = l_ima_on_arr_0;
ArraySetAsSeries(g_ibuf_92, TRUE);
}
for (li_16 = li_8; li_16 > 0; li_16--) {
l_ima_on_arr_0 = iMAOnArray(g_ibuf_92, 0, 4, 0, MODE_SMA, li_16);
g_ibuf_96[li_16] = l_ima_on_arr_0;
ArraySetAsSeries(g_ibuf_96, TRUE);
}
for (li_16 = li_8; li_16 > 0; li_16--) {
if (g_ibuf_92[li_16] >= g_ibuf_96[li_16] && g_ibuf_92[li_16 + 1] <= g_ibuf_96[li_16 + 1] && g_ibuf_92[li_16] < gi_124) {
g_ibuf_116[li_16] = g_ibuf_92[li_16];
SendAlert("купить");
} else g_ibuf_116[li_16] = -1000;
if (g_ibuf_92[li_16] = g_ibuf_96[li_16 + 1] && g_ibuf_92[li_16] > gi_128) {
g_ibuf_120[li_16] = g_ibuf_96[li_16];
SendAlert("sell");
} else g_ibuf_120[li_16] = -1000;
}
return (0);
}
void SendAlert(string as_0) {
if (Time[0] != gi_132) {
if (SoundAlert) {
if (as_0 == "buy") Alert(Symbol() + " => " + TimeToStr(TimeCurrent()) + " buy");
if (as_0 == "sell") Alert(Symbol() + " => " + TimeToStr(TimeCurrent()) + " sell");
}
if (EmailAlert) {
if (as_0 == "buy") SendMail("TrendWave Alert", Symbol() + " => " + TimeToStr(TimeCurrent()) + " buy");
if (as_0 == "sell") SendMail("TrendWave Alert", Symbol() + " => " + TimeToStr(TimeCurrent()) + " sell");
}
gi_132 = Time[0];
}
}