Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1925

 
Maxim Kuznetsov #:

нарисовать (ладно, отобразить) уровни "типа-прогрессии, тут далее может быть стоп-лосс" вообще говоря совсем просто. Но не сильно понятно ЗАЧЕМ..

Не пробовали расспросить заказчика, что-же он там в деталях хочет ?

PS/ и да, надо брать "творческую паузу", я так думаю заказчик поймёт ситуацию..нервы не способствуют 

Он более недели думал, и это решил.

Первоначально всё было по-другому, это и было сдано, но после недельной паузы сообщил о введении новшеств. Понимаю, что задание выполнил, но как-то не правильно покинуть заказчика, даже если это не входило в первоначальное ТЗ.

Моя просьба в силе!

 
Vitaly Muzichenko #:

Он более недели думал, и это решил.

Первоначально всё было по-другому, это и было сдано, но после недельной паузы сообщил о введении новшеств. Понимаю, что задание выполнил, но как-то не правильно покинуть заказчика, даже если это не входило в первоначальное ТЗ.

Моя просьба в силе!

успокойтесь Виталий, просьба о чём ?

внести правки в советник ? кода нет и некуда вносить. И не вполне корректно править заказ фриланс в данном топике. Вообще ни с одной стороны

void OnStopLoss() {

    // some code placed here

}

вряд-ди поможет.

 
Maxim Kuznetsov #:

успокойтесь Виталий, просьба о чём ?

внести правки в советник ? кода нет и некуда вносить. И не вполне корректно править заказ фриланс в данном топике. Вообще ни с одной стороны

void OnStopLoss() {

    // some code placed here

}

вряд-ди поможет.

Не совсем советник, отдельный трал, который вешается на один график и следит за всеми символами.

Код сильно раздутый

 
Vitaly Muzichenko #:

Есть позиция, и к ней стоплосс.

В настройках трал 30. Значит показать линию на уровне, где сработает трал, и так все 7 линий: 30-60-90-120-150-180-210, типа прогрессии.

Прошли 30 и достигли линии, трал переводит стопы на уровень цены открытия, по достижении 60, переводит стопы на +30 от цены открытия, то есть на уровень, где срабатывал первый стоп и тд.

Полагаю, что хочет управлять графическими линиями, но это уже сложнее, поэтому нужно сделать упрощённо.

Как вариант, вынести в настройки 7 параметров для уровней.

P.S. Извиняюсь за долгий ответ, пропадал интернет.

7 параметров не вариант) 7 названий горизонтальных линий в параметрах которые он нарисует и назовет. И от них плясать. А если параметры, то диапазон хода цены и количество уровней. Рассчитать и нарисовать. Ну и при срабатывании уровня рисовать линию сл, а если сл совпадает с уровнем цены, менять цвет.
 
Valeriy Yastremskiy #:
7 параметров не вариант) 7 названий горизонтальных линий в параметрах которые он нарисует и назовет. И от них плясать. А если параметры, то диапазон хода цены и количество уровней. Рассчитать и нарисовать. Ну и при срабатывании уровня рисовать линию сл, а если сл совпадает с уровнем цены, менять цвет.

Тут как-бы нужен алгоритм, который нарисует линии по рассчитанным ценам.

По закрытию всех позиций их нужно удалить. 

 
Valeriy Yastremskiy #:
7 параметров не вариант) 7 названий горизонтальных линий в параметрах которые он нарисует и назовет. И от них плясать. А если параметры, то диапазон хода цены и количество уровней. Рассчитать и нарисовать. Ну и при срабатывании уровня рисовать линию сл, а если сл совпадает с уровнем цены, менять цвет.

Уточнение:

В настройках трал 30. Значит показать линии на уровнях, где сработают тралы, и так все 7 линий: 30-60-90-120-150-180-210, типа прогрессии.

Прошли 30 и достигли линии, трал переводит стопы на уровень цены открытия, по достижении 60, переводит стопы на +30 от цены открытия, то есть на уровень, где срабатывал первый стоп и тд.

Изменить код, нарисовать линии и больше ничего.


Спасибо!

 
Добрый день. Ну подскажите новичку, пытаюсь загрузить эксперт в маркет. Выдает ошибку "Ошибка! Загружен неверный тип файла, .....ex4 - Скрипт.
Категория вашего продукта - Эксперты, правильный тип программы для неё - Эксперт" Но это эксперт! Куда копать? 2 дня уже бьюсь!
 
Vycheslav Vyrikov #:
Добрый день. Ну подскажите новичку, пытаюсь загрузить эксперт в маркет. Выдает ошибку "Ошибка! Загружен неверный тип файла, .....ex4 - Скрипт.
Категория вашего продукта - Эксперты, правильный тип программы для неё - Эксперт" Но это эксперт! Куда копать? 2 дня уже бьюсь!

Копать в сторону стандартных обработчиков.

Уверен, что у вас там start(), а не OnStart().

Документация по MQL5: Обработка событий / OnStart
Документация по MQL5: Обработка событий / OnStart
  • www.mql5.com
OnStart - Обработка событий - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Vitaly Muzichenko #:

Тут как-бы нужен алгоритм, который нарисует линии по рассчитанным ценам.

По закрытию всех позиций их нужно удалить. 

double sumLots[2]=0,weight[2]=0;

for(int pos=OrdersTotal()-1;pos>=0;pos--) {

   if (! OrderSelect(pos,SELECT_BY_POS,MODE_TRADES)) continue;

   // тут всякие прочии фильтры

   DrawOrderLevels(); // нарисовать уровни куда может перекатиться стоп-лосс конкретного ордера

   // расчёт общих позиций

   int type=OrderType();

   sumLots[type]+=OrderLots();

   weight[type]+=OrderLots()*OrderOpenPrice();

}

double avg[3]; // общии позиции

if (sumLots[OP_BUY]!=0) avg[OP_BUY]=weight[OP_BUY]/sumLots[OP_BUY]; 

if (sumLots[OP_SELL]!=0) avg[OP_SELL]=weight[OP_SELL]/sumLots[OP_SELL]; 

// совокупная позиция

int posType; // тип

double posPrice; // цена

double posLots; // объём

if (sumLots[OP_BUY]>sumLots[OP_SELL) { posType=OP_BUY; posPrice=avg[OP_BUY]; posLots=sumLots[OP_BUY]-sumLots[OP_SELL]; }

else { posType=OP_SELL; posPrice=avg[OP_SELL]; posLots=sumLots[OP_SELL]-sumLots[OP_BUY]; }

DrawPriceLevels(OP_BUY,avg[OP_BUY]); // нарисовать уровни суммарной позы в BUY

DrawPriceLevels(OP_SELL,avg[OP_SELL]); // нарисовать уровни суммарной позы в SELL

DrawPriceLevels(posType,posPrice); // уровни общей позиции

в имена горизонтальных уровней добавлять номер тикета. Иногда(когда надо) проверять - если тикета нет в рынке, то все уровни с его именем удалять

 
Artyom Trishkin #:

Копать в сторону стандартных обработчиков.

Уверен, что у вас там start(), а не OnStart().

Артём ты уже устал и сам стал допускать неточности. Для эксперта, что пытается загрузить Вячеслав, функция обработки события должна быть OnTick()