Доработка ботов (советников, индикаторов)

Статус
Закрыто для дальнейших ответов.

SanTana

Активный участник
Хотя ТП нету уже все равно все ТП обнулило. 30 ордеров....)
 

ksardas

Гуру форума
Есть интересный индюк ft.2Chanels-Pro, но корректно работает только на CADJPY
Немного допилил и теперь можно ставить на любую пару
Вот скрин до.... и после...
Возможно кому-нить пригодится:)
 

Вложения

  • eurusdh-1.png
    eurusdh-1.png
    44,6 КБ · Просмотры: 182
  • eurusdh1.png
    eurusdh1.png
    43 КБ · Просмотры: 200
  • ft.2Chanels-Pro.mq4
    ft.2Chanels-Pro.mq4
    18,1 КБ · Просмотры: 101
  • ft.2Chanels-Pro.ex4
    ft.2Chanels-Pro.ex4
    13,8 КБ · Просмотры: 73

leonid45

Новичок форума
Здравствуйте, уважаемые программисты! У меня на одном счету работает сеточник, на другом счету сделки копируются. Мне нужно чтобы первые 2 сделки не копировались, а только начиная с 3 колена. Советник копировщик прилагаю (в формате ех4.) Если есть время посмотрите. Очень надо. Заранее благодарен...

АУУУ! Волшебники, вьі где? Спецьі помогите!!!
 

ksardas

Гуру форума
АУУУ! Волшебники, вьі где? Спецьі помогите!!!
Для начала можно сделать так:
В начале в переменные
PHP:
extern string TradeTime = "3:00-21:20";
в условия открытия ордеров
PHP:
 if (!IsTradeTime()) return;
(если время не подходит-курим)
И блок проверки времени внизу
PHP:
bool IsTradeTime()
{
  if (TradeTime == "0:00-24:00") return (true);
  if (TradeTime == "00:00-24:00") return (true);

  datetime tm1, tm2;

  string TI[];
  split(TI, TradeTime, "-");
  if (ArraySize(TI) != 2) return (false);
    
  datetime tm0 = TimeCurrent();
  tm1 = StrToTime(TimeToStr(tm0, TIME_DATE) + " " + TI[0]);
  tm2 = StrToTime(TimeToStr(tm0, TIME_DATE) + " " + TI[1]);

  bool isTm = false; 
  if (tm1 <= tm2) 
    isTm = isTm || (tm1 <= tm0 && tm0 < tm2);
  else
    isTm = isTm || (tm1 <= tm0 || tm0 < tm2);
  
  return (isTm);
}
Как-то так ;)
 

leonid45

Новичок форума
Для начала можно сделать так:
В начале в переменные
PHP:
extern string TradeTime = "3:00-21:20";
в условия открытия ордеров
PHP:
 if (!IsTradeTime()) return;
(если время не подходит-курим)
И блок проверки времени внизу
PHP:
bool IsTradeTime()
{
  if (TradeTime == "0:00-24:00") return (true);
  if (TradeTime == "00:00-24:00") return (true);

  datetime tm1, tm2;

  string TI[];
  split(TI, TradeTime, "-");
  if (ArraySize(TI) != 2) return (false);
    
  datetime tm0 = TimeCurrent();
  tm1 = StrToTime(TimeToStr(tm0, TIME_DATE) + " " + TI[0]);
  tm2 = StrToTime(TimeToStr(tm0, TIME_DATE) + " " + TI[1]);

  bool isTm = false; 
  if (tm1 <= tm2) 
    isTm = isTm || (tm1 <= tm0 && tm0 < tm2);
  else
    isTm = isTm || (tm1 <= tm0 || tm0 < tm2);
  
  return (isTm);
}
Как-то так ;)
Ничего не понял... При чем здесь временные ограничения? Мне нужно чтоб из серии ордеров не копировал первых два ордера.
 

ZADEL_21

Активный участник
Уважаемые программисты!

Поправьте пожалуйста индикатор.
Не отображается в терминале. Вероятно из-за последних обновлений в МТ4.
 

Вложения

Andrei86

Активный участник

Вложения

ZADEL_21

Активный участник
DLL не хватает. dynamicZone.dll

Спасибо.

Но так вы в формате ex4 индюк выложили а не тот что я загружал в mq4 .

Надеюсь тот тоже будет работать с этой библиотекой. А тот как опять пеерстанет работать мало кто хочет связываться с такой версией ex4. :)

А индюк выглядит реально круто.
 

zhserg

Местный знаток
Здравствуйте Дамы и Господа!

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

может кому пригодится и в таком виде.

:)
 

Вложения

Andrei86

Активный участник
Для начала можно сделать так:
В начале в переменные
PHP:
extern string TradeTime = "3:00-21:20";
в условия открытия ордеров
PHP:
 if (!IsTradeTime()) return;
(если время не подходит-курим)
И блок проверки времени внизу
PHP:
bool IsTradeTime()
{
  if (TradeTime == "0:00-24:00") return (true);
  if (TradeTime == "00:00-24:00") return (true);

  datetime tm1, tm2;

  string TI[];
  split(TI, TradeTime, "-");
  if (ArraySize(TI) != 2) return (false);
    
  datetime tm0 = TimeCurrent();
  tm1 = StrToTime(TimeToStr(tm0, TIME_DATE) + " " + TI[0]);
  tm2 = StrToTime(TimeToStr(tm0, TIME_DATE) + " " + TI[1]);

  bool isTm = false; 
  if (tm1 <= tm2) 
    isTm = isTm || (tm1 <= tm0 && tm0 < tm2);
  else
    isTm = isTm || (tm1 <= tm0 || tm0 < tm2);
  
  return (isTm);
}
Как-то так ;)
Спасибо. Но есть одна ошибка в строке split(TI, TradeTime, "-"); Что за функция split?
 

cmillion

Гуру форума
Здравствуйте, уважаемые программисты! У меня на одном счету работает сеточник, на другом счету сделки копируются. Мне нужно чтобы первые 2 сделки не копировались, а только начиная с 3 колена. Советник копировщик прилагаю (в формате ех4.) Если есть время посмотрите. Очень надо. Заранее благодарен...

Чтобы посмотреть нужен формат mg4 иначе это уже не посмотреть а сломать....
 

anubias

Прохожий
Уважаемые программисты! Добавьте в сов ММ,Trailing Stop и TotalEqRisk% нужно вывести!Спасибо заранее.
 

Вложения

Cyryl

Активный участник
Хорошый сов, но не открывает позицию
Разработчики, пожалуйста, проверьте
 

Вложения

borobor

Элитный участник
Хорошый сов, но не открывает позицию
Разработчики, пожалуйста, проверьте
всё открывает, только очень редко,в тестере за пять месяцев 30 сделок
профит почти никакой
 
Последнее редактирование:

ksardas

Гуру форума
Что за функция split?
Как я понимаю split извлекает из TradeTime два числа от дефиса и присваивает их переменным TI[0]иTI[1] для сравнения с текущ временем
у меня без ошибок, но в 509 билде)

В этом сове _http://forexsystemsru.com/yazyk-programmirovaniya-mql4/65294-bol`nichka-vol-2-a-416.html#post834524 временная функция есть - можно позаимствовать))
PHP:
int IsTradeTime() {
   if (StartHour < StopHour && TimeHour(TimeCurrent()) < StartHour || TimeHour(TimeCurrent()) >= StopHour) return (0);
   if (StartHour > StopHour && (TimeHour(TimeCurrent()) < StopHour && TimeHour(TimeCurrent()) >= StopHour)) return (0);
   if (StopHour == 0) StopHour = 24;
   if (Hour() == StopHour - 1 && Minute() >= gi_136) return (0);
   return (1);
}
 
Последнее редактирование:

ZADEL_21

Активный участник
Нужна помощь!

Здравствуйте!

Помогите пожалуйста сделать MTF версию из этого индюка.
 

Вложения

cmillion

Гуру форума
http://forexsystemsru.com/833641-post9768.html

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

Отслеживают (859) Посмотреть

Верх