Перейти к содержанию

Доработка советников: общая тема


Рекомендуемые сообщения

Доработка советников: общая тема Опубликовано

Уважаемые программисты помогите пожалуйста !
Нужен код для советника чтобы закрывал все ордера по профиту депозита но не выключался .Уже не первый день интернет рою а результата нет.
Если кому не лень запихать его туда....

probetest.mq4

Ссылка на сообщение
Поделиться на другие сайты

  • Ответов 2,5k
  • Создано
  • Последний ответ

Популярные авторы

Популярные авторы

Популярные посты

Версия с правками. Я немного свернул код, чтобы не перебирались ордера попусту и чтобы проверка красной/синей зоны делалась в одном месте. Прогнал в тесте с настройками по умолчанию. Ожидаемо лье

Перейти

Нате 1_2_3 _Fraktal.mq4

Перейти

Система маятника, или попрыгунчика, или фиг ее знает как ее еще назвать не намного младше сетки мартингейла. Мы в далеком 2017 писали по ней сов с индикатором на вход: https://tlap.com/forum/labo

Перейти
Доработка советников: общая тема Опубликовано

Добрый день. Пытался сам написать, но видимо руки не оттуда у меня, поэтому прошу помощи у людей с руками из плеч, нужно 2 индикатора с алертом, оба простые и на основе полос боленджера, первый должен сигналить при пробое одной из крайних линий, а второй при обратном пробое (возвращении в канал), желательно чтобы сигнал был секунд за 10 до закрытия свечи

Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано

Здравствуй народ!
Хочу написать сов по такой стратегии, а именно!
Цена пробивает уровень нижний или верхний(сопротивление или поддержку), затем откатывается к этому уровню с низу верх или наоборот сверху вниз, после чего и открываем сделки, что - то написал, но почему не работет никак не вкурю.
for(i = 5; i {
double Closei = Close;
long volumei = Volume;
double LastFractal_UP = iFractals(_Symbol,_Period,MODE_UPPER,i);
double LastFractal_Doun = iFractals(_Symbol,_Period,MODE_LOWER,i);
double Open1 = iClose(NULL,0,1);

if((Close1 > Open1 && Close2 > Open2 && Close1-Open2>20*Point)||(Close1 > Open1 && Close1-Open1 > 20*Point))IMPULS_UP = true;
if((Close1 20*Point)||(Close1 20*Point))IMPULS_LO = true;

if(IMPULS_UP && Close1 > LastFractal_UP_H1 && volumei >= volume_level)Trade(OP_BUYLIMIT, TPCoef);
if(IMPULS_LO && Close1 = volume_level)Trade(OP_SELLLIMIT, TPCoef);
}

Есть идеи?))

ывапывап.jpg
дшшррощ.jpg

Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано
hackas имхо, надо один раз создать массив вершин и направлений фракталов, и в цикле по вершинам определяться со входом. Одновременно искать фракталы по всей истории и определяться со входом не получится.
Нужно делать точность или размер области, размер отскока цены для входа. Ещё есть теория, что с каждым отскоком сила уровня теряется - значит надо считать количество подходов цены ранее... в общем работа не малая.
Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано

Вход по нин бару думаю делать, а на счет массива можно черкануть,если не ирудно))
Если честно то у меня с массивами туго(Это всё что я смог придумать и то, полоивна с сайта tradelikeapro.ru видео обучения MQL4,
а как дальше связать эти массивы не знаю

Спойлер


double FractUp [300];
double FractLo [300];

double Hi [300];
double Lo [300];
ArrayResize(Fract,300);
ArrayResize(FractLevel,300);
int j = 0;
int f = 0;
int m = 0;
int k = 0;
for(i=1;i {
HideTestIndicators(true);
LastFractal_UP = iFractals(_Symbol,60,MODE_UPPER,i);
LastFractal_Doun = iFractals(_Symbol,60,MODE_LOWER,i);
HideTestIndicators(false);
if(LastFractal_UP!=0)
{
FractUp[j]=LastFractal_UP;
j++;
}
if(LastFractal_Doun!=0)
{
FractLo[f]=LastFractal_Doun;
f++;
}
LastHi = iHighest(NULL, 0, MODE_HIGH, History, i)
LastLo = iLowest(NULL, 0, MODE_LOW, History, i)
if(LastHi!=0)
{
Hi[m]=LastHi;
m++;
}
if(LastLo!=0)
{
Lo[k]=LastLo;
k++;
}
}


Подскажите не знающему пожалуйста Изменено пользователем 0ll
Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано

Вам нужно определиться с общим алгоритмом работы, если опыта в программировании нет, то лучше упростить, например:
1. ждём закрытие бара
2. если бар медвежий или дневной минимум, берём Лоу и ищем на периоде 5 дней локальный Хай с точностью Х-пипс
для бычьего бара или дневного хая наоборот
3. если хай на истории найден и отскок цены от этой области в пределах У-пипс - входим

Изменено пользователем 0ll
Ссылка на сообщение
Поделиться на другие сайты

  • 2 weeks later...
Доработка советников: общая тема Опубликовано

Помогите разобраться.Советник не отображается в тестере.На графике есть а в тестере не появляется.

Слева-вверху есть выбор Советник/Индикатор - должен быть выбран Советник.
Потом открываете список советников, он аналогичен списку в панели Навигатор, с которой Вы устанавливаете на график.
Других пояснений у меня нет.
Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано

Добрый день. Подскажите где накосячил? До ввода MAV и внедрения ее в формулу все работало. Но теперь даже при удалении, ново видений остаются те же ошибки только уже относятся к ниже стоящим строкам. Менял название аргумента MAV на более длинное, но без изменений в формуле и при этом все скомпилировалось без ошибок, но после внесения изменений в формулы все опять по пизде, возврат к тому к компилирующемуся состоянию выдает опять ошибку. Может дело в редакторе?

exp.JPG

Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано

блин, точно. Спасибо большое. Тогда может еще один момент кто подскажет: требуется закрывать ордера через определенное время. Как это прописать?

Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано
Sacred70 от времени открытия или от чего?
если от времени открытия:
if ( TimeCurrent() - OrderOpenTime() > xx_sec ) OrderClose(...);
Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано


Sacred70 от времени открытия или от чего?
если от времени открытия:
if ( TimeCurrent() - OrderOpenTime() > xx_sec ) OrderClose(...);



Да, от времени открытия. Но почему то не срабатывает. Может не туда ткнул?

exp1.JPG

Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано

Да, от времени открытия. Но почему то не срабатывает. Может не туда ткнул?


А ордер у Вас предварительно выбран?
Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано


А ордер у Вас предварительно выбран?


он всегда один
Какая разница?
OrderSelect() в любом случае нужен. Из справки:
Спойлер

OrderOpenTimeВозвращает время открытия выбранного ордера.
datetime OrderOpenTime();Возвращаемое значение
Время открытия выбранного ордера.
Примечание
Ордер должен быть предварительно выбран с помощью функции OrderSelect().
Пример:
if(OrderSelect(10, SELECT_BY_POS)==true)
Print("open time for the order 10 ", OrderOpenTime());
else
Print("OrderSelect() вернул ошибку - ",GetLastError());[/spoiler]

  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано
Sacred70 если всегда один ордер, то в момент открытия функция OrderSend() возвращает тикет - вот по номеру тикета и делайте ордер активным:
int tiket = OrderSend(...);
if ( tiket else
{
OrderSelect( tiket, SELECT_BY_TICKET );
// здесь выставление СЛ/ТП
}
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано

Люди добрые и терпеливые))) объясните дураку, где тут косяк, вроде все учел, но все равно на тесте сделки открываются сразу в обе стороны и в ту же закрываются и так каждую минуту

exp2.JPG

Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано
Sacred70 ничего страшного - зато работает! :d
осталось только написать условия открытия и закрытия, работает это так:
- сначала описываем переменные, желательно на глобальном уровне, т.е. выше OnTick():
int TKSELL = -1, TKBUY = -1;

- Вы написали условие открытия на основании индикаторов (нужно добавить условие TKSELL TKSELL = OrderSend(...);
OrderSelect(TKSELL , SELECT_BY_TICKET);
- потом пишите условия закрытия по времени, но нужно добавить TKSELL >= 0 && OrderTimeClose() CLSELL = OderClose(TKSELL, ... );
if ( CLSELL ) TKSELL = -1; // сбрасываем номер тикета

По названию переменной ничего не происходит, она просто хранит число. Для Бай стороны аналогично - попробуй сам.
Удачи!
Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано
0ll
Получилось частично)) Теперь открываются только buy, но закрываются через минуту. Мне кажется все это заговор массонов :-/, ну не могу же я быть таким тупым (наверное)))) уже 3 ночи пишу эту поэму и самое страшное что это даже не половина моей задумки. Ткнит меня носом, пожалуйста))

exp3.JPG

Изменено пользователем Sacred70
Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано
Sacred70 выкладывай весь файл .mq4, по скрину не удобно.
Вы не убрали OrderClose после вызова индикаторов. Есть ощущение что у Вас нет пока понимания как работает советник.
Попробую объяснить:
функция OnTick запускается с приходом каждого тика, т.е. в среднем 1/сек опрашиваются индюки, закрываются ордера, проверяются условия на вход и т.д. Вот зачем Вам на каждом тике закрывать ордера?

Вы не используете {} скобки после операторов if() - это может работать не корректно, нужно сделать на бумаге структуру программы и потом программировать, пример алгоритма:
1. получаем данные индикаторов
2. если нет ордеров Бай, проверяем условия на вход Бай
{ 2.1. если выполнено - вход. запоминаем тикет Бай. }
3. если нет ордеров на селл, проверяем условия на вход Селл.
{ 3.1. если выполнено - вход Селл. запоминаем тикет Селл. }
4. Если есть ордер Бай - проверяем условия на выход Бай
{ 4.1. если выполнено - выход Бай, сбрасываем тикет Бай. }
и т.д. - попробуйте, может поможет.

В программе это выглядит так:

if ( TKBUY {
// проверяем условия на вход Бай
if ( ...&&... . ) TKBUY = OrderSend(...);
}
else // ордер Бай в рынке
{
// проверяем условия на выход
if ( ...&&... . )
{
CLBUY = OrderClose(...);
if ( CLBUY ) TKBUY = -1;
}
}
короче нужна структура программы, иначе утонете в логических ошибках.
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано
0ll
про {} знаю, экспериментировал и как положено и как придется)). Спасибо за направление, завтра начну копать снова. Как и просили выкладываю файл советника.

Expert1.mq4

Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано

Нашел в открытом коде советник FapTurbo. Вроде раньше неплохо ночью зарабатывал, пока не стали повышать ночью спреды. Сейчас можно найти брокеров с приемлемыми ночными спредами. Многие используют для ночной торговли советник Generic, использующий полосы болинджера. FapTurbo использует RSI и МА, а также фильтры. Говорят все новое - хорошо забытое старое. Хотелось бы посмотреть, что можно из него сейчас выжать, но не могу дать ладу, чтобы привести код в актуальное состояние. Коллеги, помогите, пожалуйста, привести код в порядок, ошибок не выдает, но есть предупреждения. В итоге не торгует, в журнале - пусто.

FapTurbo_ver._52.2_NF.mq4

Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано

Нужна помощь программиста. Есть советник,хочу его приспособить под торговлю по ТС Спринт.Для этого нужно изменить только направление входа первого ордера

Если просто СЛ/ТП, то можно сделать, если какое-то сопровождение, то нужно смотреть, могут быть нюансы...
Ссылка на сообщение
Поделиться на другие сайты

  • idinesh changed the title to Assae Elite Pro tlap version source code need i have plan convert this mt4 to mt5 and it possible mt4 dll file modified mt5 version
  • Pavel888 pinned this тема

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

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Специальное предложение


  • ×
    ×
    • Создать...