Помощь в кодировании - страница 95

 

Дорогие все, это мой первый шаг в пост о форекс, так что, пожалуйста, постарайтесь быть добрыми, если я говорю что-то слишком неправильно...

Этот сайт является одним из лучших мест, где можно узнать о Форекс, и я читаю о нем уже несколько лет. Я хотел бы обратить внимание на эту ссылку:codebase.mql4.com/5900

Это советник RUBBERBANDS_2 EA Автор: StJojo (2009.08.17 11:30). Он довольно интересен тем, что работает (после минимальной оптимизационной работы) на любой валютной паре. В принципе, его можно использовать как (позвольте мне выражение...) полуавтоматическую автоматизированную стартэгию. Фактически, поскольку она очень хорошо работает на боковом рынке, я обнаружил, что ее можно активировать в новостных интервалах, когда вероятность бокового рынка выше. Поскольку я думаю, что автор сделал код открытым, я хотел бы, если кому-то понравится идея, добавить переменную, чтобы он работал с определенного часа/минуты и "затихал" в определенное время/час/минуту (т.е. :чтобы советник затихал, когда заканчивается текущая сессия). Это значительно облегчило бы "предварительное программирование" времени работы советника на следующий день, относительно предстоящих новостей следующего дня. Я прикрепил файл по ссылке выше.

Я также прикрепил индикаторы "forex_ news_market_clock", которые я использую для чтения новостей на графике.

Спасибо всем за работу, проделанную на этом сайте (и по всей сети... конечно). Надеюсь, кто-нибудь поможет, большое спасибо.

Файлы:
 
vitoingletto:
Дорогие все, это мой первый шаг в пост о Форекс, так что, пожалуйста, постарайтесь быть добрыми, если я говорю что-то слишком неправильно...

Этот сайт является одним из лучших мест, где можно узнать о Форекс, и я читаю о нем уже несколько лет. Я хотел бы обратить внимание на эту ссылку: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 может поиграть в эксперта?

спасибо

 
dr.feelgood1989:
привет ...

интересует, можно ли поместить в код функцию, которая экспортирует данные сразу все (m1, m5, m30, m15, h1, h4, d1 ...) очевидно в отдельные файлы. В настоящее время и вы должны запустить его так много раз ... (для каждого временного кадра).

Я бы существенно сэкономил время на экспорте данных.

Вы можете вставить эту функцию в свой код? Идея может быть похожа на этот прикрепленный скрипт(Period_converter_auto - MQL4 Code Base), который преобразует данные все в одном volta.Si может поиграть в эксперта?

спасибо

dr.feelgood1989

Используйте этот скрипт и просто прикрепите его ко всем таймфреймам, которые вы хотите экспортировать. Он создаст файлы с именем symbol+"_"+time frame для каждого таймфрейма, на который вы смотрите. Вы можете использовать его как шаблон для экспорта ваших пользовательских индикаторов.

Файлы:
 

Спасибо за ответ. Младен

На самом деле я уже так и сделал. Скрипт (пример ссылки), который я выложил, получает работу один раз для всех таймфреймов (конвертация).

, эксперт из своего модифицированного "переписывает" один таймфрейм (для отличия файла), когда он используется для одного раза

Я хотел спросить, если запуск одного эксперта переписывается все другие таймфреймы (пример:ea1m запущен на тестере и также файлы записаны в других таймфреймах m5, m15 ...)

спасибо : )

 
mladen:
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. как вход, можно ли это сделать?

 
mtuppers:
Я думаю, что знаю ответ на свой вопрос, но... все еще хочу получить подтверждение.

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];

}

}