Обучение языку MQL4 под MetaTrader 4📌

От xbms, 13 апреля, 2013 в Уголок Программиста

#526


А может цикл поможет!


К сожалению, он в первой строчке двигает каретку до бесконечности, но на новую строчку не переходит.
#527

Но ведь мартышку можно удалить. Всего то нужно стоп вмонтировать.

#528


Еще пока нет :(



Вам нужно, чтобы цикл прошёл 8 проходов.
Например: for(int a = 0; a
Запись while (OrderProfit() , не корректна, хотя бы потому, что перед использованием OrderProfit(), этот самый ордер, должен быть выбран командой OrderSelect (она у нас после while), а так как значение выражения (OrderProfit() ) определяется до выполнения оператора, что мы считаем - неизвестно.

Цитата

if(OrderSelect(HistoryTotal()-a,SELECT_BY_POS,MODE_HISTORY))


Вроде OrdersHistoryTotal().
Далее, если ордер выбран, можно проверить OrderProfit() , если выражение ложно, значит выходим из цикла и пишем в переменную, что не нужно открываться большим лотом, если истинно - следующий проход....

В общем, это есть на первой станице ветки и в видео xbms, и в справке.

Изменено 9 ноября, 2013 пользователем Vorchunozavr

Автор#529


Но ведь мартышку можно удалить. Всего то нужно стоп вмонтировать.



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

В общем, нужно более подробно...

А вообще, на мой взгляд это обычный сливатор, на который не стОит тратить время.

Вы ведётесь на линию баланса, которая показывает прибыль и совсем не учитываете еквити, которую упрямо тянут вниз зависшие ордера...

Рекомендую Вам заглянуть лучше в разделы "На заметку" и "Заслуживают внимания".
Там Вы найдёте более достойных кандидатов на реальный счёт.
#530

Здравствуйте, уважаемые форумчане! Я смотрел урок в курсе программирования, где делали советник по индикатору ТМА, я параллельно писал советник , но по индикатору Ao_Adaptive( см. во вложении) Скомпилировался нормально, но не торгует. Дело в том, что это индикатор не будет работать без индикатора EMA-Adaptive( см во вложении). Я думаю моежт в этом дело. Помогите разобраться. Выкладываю советник и индюки


Добавлено: 09-11-2013 14:06:55



Добавлено: 09-11-2013 14:07:41

AO_Adaptive.mq415 скач.
Советник.mq413 скач.
EMA_Adaptive_v22Price.mq413 скач.

#531


Здравствуйте, уважаемые форумчане! Я смотрел урок в курсе программирования, где делали советник по индикатору ТМА, я параллельно писал советник , но по индикатору Ao_Adaptive( см. во вложении) Скомпилировался нормально, но не торгует. Дело в том, что это индикатор не будет работать без индикатора EMA-Adaptive( см во вложении). Я думаю моежт в этом дело. Помогите разобраться. Выкладываю советник и индюки



Привет!
AO - подвальный индикатор, попробуйте вывести в журнал, значения PriceGreen и PriceRed.
Вы увидите, сколь далеки эти значения от Bid или Ask.
И почему, буфер 3 и 4, а не 1 и 2?
#532

Понял, ТМА же отображает цену поэтому в том сове оредера открываются. Как же мне написать условия для открытия чтобы ордер открывался на бай если столбик зеленый, и на селл елси красный. Я на самом деле первый день начал изучать mql. А вот почему буфер 2 и 3 это я просто скопировал с видеоурока, там это было связано с тем, что буферы считаются от 0 . Я в этом ничего не понял. Если не затруднит помогите разобраться. Понимаю что никуому не надо , но может быть......

#533


Понял, ТМА же отображает цену поэтому в том сове оредера открываются. Как же мне написать условия для открытия чтобы ордер открывался на бай если столбик зеленый, и на селл елси красный. Я на самом деле первый день начал изучать mql. А вот почему буфер 2 и 3 это я просто скопировал с видеоурока, там это было связано с тем, что буферы считаются от 0 . Я в этом ничего не понял. Если не затруднит помогите разобраться. Понимаю что никуому не надо , но может быть......



Если стаж программирования = 1 день :) , поэкспериментируйте, для начала, со встроенной функцией iAO
Например:
double AO_1 = iAO(NULL, 0, 1);
double AO_2 = iAO(NULL, 0, 2);
double AO_3 = iAO(NULL, 0, 3);

Если (AO_2 - значит AO_2 красный.
Если (AO_1 > AO_2) - значит AO_1 зелёный.
if (AO_2 0) - значит пересекли нулевую линию снизу вверх.
#534

Спасибо Вам. =)

#535



Еще пока нет :(



Вам нужно, чтобы цикл прошёл 8 проходов.
Например: for(int a = 0; a
Запись while (OrderProfit() , не корректна, хотя бы потому, что перед использованием OrderProfit(), этот самый ордер, должен быть выбран командой OrderSelect (она у нас после while), а так как значение выражения (OrderProfit() ) определяется до выполнения оператора, что мы считаем - неизвестно.

Цитата

if(OrderSelect(HistoryTotal()-a,SELECT_BY_POS,MODE_HISTORY))


Вроде OrdersHistoryTotal().
Далее, если ордер выбран, можно проверить OrderProfit() , если выражение ложно, значит выходим из цикла и пишем в переменную, что не нужно открываться большим лотом, если истинно - следующий проход....

В общем, это есть на первой станице ветки и в видео xbms, и в справке.

Спасибо, буду еще раз пробовать :)

Добавлено: 09-11-2013 21:33:41

О, наконец получилось сделать то, что хотел. Теперь, вопрос, можно ли как то упростить этот код, что бы убрать лишнее?

for (int a = 1; a if(OrderSelect(HistoryTotal() - a, SELECT_BY_POS, MODE_HISTORY)) {

if (OrderProfit() >0) {break;}

if (a>=8 ) {sell();}
}
}

Изменено 10 ноября, 2013 пользователем Ricedeni

#536

Всем, пожалуйста! Старик, спасибо!

Ricedeni
Так будут открываться дополнительные ордера. Т.е., если 8 убыточных - 1, если 9 - ещё один и т.д.
Если так не нужно, значит после sell(), должен быть выход из цикла.
И HistoryTotal() мой редактор не знает, только OrdersHistoryTotal().

#537


Всем, пожалуйста! Старик, спасибо!

Ricedeni
Так будут открываться дополнительные ордера. Т.е., если 8 убыточных - 1, если 9 - ещё один и т.д.
Если так не нужно, значит после sell(), должен быть выход из цикла.
И HistoryTotal() мой редактор не знает, только OrdersHistoryTotal().


HistoryTotal - устаревшая функция, я её даже не сразу нашел в справочнике :) надо переделать с новой.
А выход из цикла не помогает :( На следующем баре, проверка повторяется и последний результат, попадает в новый цикл и открывается 9 ордер.
#538



А может цикл поможет!


К сожалению, он в первой строчке двигает каретку до бесконечности, но на новую строчку не переходит.


Ясно будет время попробую пару идей!!! Если найдёш отпиши мне тоже интересно!
#539


А выход из цикла не помогает :( На следующем баре, проверка повторяется и последний результат, попадает в новый цикл и открывается 9 ордер.



Значит с циклом разобрались. Дальше, машине нужно объяснять, сколько ордеров может быть в рынке - тип ордера (объём). Перед циклом условие, и т.д., в общем - полная свобода творчества.
#540

Ну у меня заработало, спасибо Vorchunozavr, теперь немогу написать код чтобы он закрывал открытую позицию при смене сигнала. Помогите люди добрые)


Добавлено: 10-11-2013 18:05:39

Просто такая ситуация, я сфорексом знаком очень давно и пришёл к такому выводу, что системы практически все сливают, или дают такую маленькую прибыль что даже не стоит заморачиваться. Трендовые сливают во флете, флетовые в тренде, у сов мартингейлу в определенный момент не хватает средств открыть позу и тд. Чем больше идюков в сове или в ручной тс, тем более она/он уязвим . Вот хочу попробоваться написать советник на одном индикаторе, модеры извините за оффтоп .....

Советник_АО.mq416 скач.

Изменено 10 ноября, 2013 пользователем yaakter

#541

Черт, мне прям не поддается цикл for. Вот, вроде бы простая функция, и ошибиться особо негде, а все равно не работает :( где я накосячил?

int e = 0;
int n = 5;
for (int i =1; i if (Close[i+1] {
e ++;
if (e ==n)
{
BuyOrder();
}
}
}

#542
yaakter

Если есть ордер Бай, и (AO_1 (цвет сменился на красный), закрываем Бай (открываем Селл). Селл - наоборот.
Проверять нужно, естественно, на начале каждого бара.

Добавлено: 10-11-2013 20:14:48

Ricedeni

За 4 прохода (i=1,2,3,4), e не станет равно n

Изменено 11 ноября, 2013 пользователем Vorchunozavr

#543

Подскажите плз, а внешние объявленные переменные, которые extern, в самом коде менять нельзя?

#544


yaakter

Если есть ордер Бай, и (AO_1 (цвет сменился на красный), закрываем Бай (открываем Селл). Селл - наоборот.
Проверять нужно, естественно, на начале каждого бара.


Добавлено: 10-11-2013 20:14:48

Ricedeni

За 4 прохода (i=1,2,3,4), e не станет равно n



А ведь и правда :) Спасибо! :)
#545

А подскажите пожалуйста есть ли команда которая позволяет оценить уровень свободной маржи, тот что в процентах. Есть сова которую хочу поставить на две пары, но хочется задать условие на вход чтобы когда на одной из пар есть просадка по второй паре сова не лезла в рынок. Справку курил, поиск юзал, ничего не нашёл.

#546

Ну а в справке в разделе Информация о счете разве ничего не подходит? Полно функций для вызова информаций о балансе, эквити, марже...

#547


Ну а в справке в разделе Информация о счете разве ничего не подходит? Полно функций для вызова информаций о балансе, эквити, марже...


блин точно, вот я осел ))
#548


Подскажите плз, а внешние объявленные переменные, которые extern, в самом коде менять нельзя?


Можно в самом коде.
Можно extern убрать из строчки и оставить только тип данных с переменной.
Я так делаю, когда в iCustom много параметров надо переносить ненужных.
#549

Может не совсем по теме, но проблема такая.
Скачиваю через МТ4 сайт в тхт файл, да и просто если в строчку. То война кодировок происходит с русскими буквами, чем можно воспользоваться, чтобы сделать utf-8 в ansi?

#550

Подскажите, а модифицировать отложки (установка сл - тп) лучше, если они становятся рыночными? Просто у меня при установки отложек и последующей модификации, в тестере вылазит ошибка OrderModify error 130. Причем через раз - первый запуск - ошибка, второй - нет ошибки...

Для публикации сообщений создайте учётную запись или авторизуйтесь

Перейти к списку тем
Форум · 2.0.20260627.0025