Напишу советник для МТ4/MT5 по вашему техзаданию

От mqloud, 15 ноября, 2018 в Уголок Программиста

Страница 12 из 15
#276

Здравствуйте, можете сделать:

https://www.mql5.com/ru/job/181327

#277

Ребята, кто может сделать код, начало и конец работы советника (например, начало в 10:00 и конец в 19:00)  

Автор#278
1 час назад, drobayura сказал:

Ребята, кто может сделать код, начало и конец работы советника (например, начало в 10:00 и конец в 19:00)  

 

 

// внешние параметры
input string TimeStart="10:00"; // время начала открытия позиций
input string TimeEnd="19:00"; // время окончания открытия позиций

...

//------------------------------------------------------------------ 
bool CheckTime() // функция проверки времени, заданного строками
{
	datetime dt=TimeCurrent();
	datetime dt1=StringToTime(TimeToString(dt, TIME_DATE)+" "+TimeStart);
	datetime dt2=StringToTime(TimeToString(dt, TIME_DATE)+" "+TimeEnd);
	if (dt1==dt2) return true;
	if (dt1<dt2) if (dt>=dt1 && dt<=dt2) return true;
	if (dt1>dt2) if (dt>=dt1 || dt<=dt2) return true;
	return false ;
}

//------------------------------------------------------------------ 
void OnTick() // обработка тика
{
    if (CheckTime()) // если время разрешает работать
    {
      ...
      /* выполняем какие-то действия в это время
         например открытие позиций
      */
      ...
    }
    ...
    /* выполняем остальные действия, которые нужно делать всегда
       например трал стоплоса
    */
}
                                        
                                       

 

 

 

#279
18 часов назад, mqloud сказал:

 

 

// внешние параметры
input string TimeStart="10:00"; // время начала открытия позиций
input string TimeEnd="19:00"; // время окончания открытия позиций

...

//------------------------------------------------------------------ 
bool CheckTime() // функция проверки времени, заданного строками
{
	datetime dt=TimeCurrent();
	datetime dt1=StringToTime(TimeToString(dt, TIME_DATE)+" "+TimeStart);
	datetime dt2=StringToTime(TimeToString(dt, TIME_DATE)+" "+TimeEnd);
	if (dt1==dt2) return true;
	if (dt1<dt2) if (dt>=dt1 && dt<=dt2) return true;
	if (dt1>dt2) if (dt>=dt1 || dt<=dt2) return true;
	return false ;
}

//------------------------------------------------------------------ 
void OnTick() // обработка тика
{
    if (CheckTime()) // если время разрешает работать
    {
      ...
      /* выполняем какие-то действия в это время
         например открытие позиций
      */
      ...
    }
    ...
    /* выполняем остальные действия, которые нужно делать всегда
       например трал стоплоса
    */
}
                                        
                                       

 

 

 

Спасибо БОЛЬШОЕ.  Всё работает отлично. Эта функция нужна для теста стратегий. В тестере советник шпарит круглые сутки напролёт, а в реалии так не работаем.

#280

Ребята, а можно вставить компелированный индикатор в советник? Индикатор рисует в чарте синие  и красные уровни.

Автор#281

можно, через  #resource

#282
17 часов назад, mqloud сказал:

можно, через  #resource

А если дам исходный код советника и индикатор поможете?

Автор#283

попробуйте

#284

Здравствуйте, возьметесь за написание советника.  Если коротко то: выставляем уровни (бай и селл) на определённом расстоянии от цены. При касании ценой уровни активируются, если цена идёт против нас, то через заданное расстояние открывается новый ордер изменяется тейк и т.д., Если возьметесь подробно опишу Т.З.

#285
2 часа назад, mqloud сказал:

попробуйте

Условия выполнения сделок:

закрытие свечи выше синей BUY, ниже красной SELL.

Сопровождение открытых позиций - цена проходит расстояние равное от открытия ордера до S/L переводим в Б/У и далее тралим кратному расстоянию S/L (проходим 1:2 переводим 1:1, проходим 1:3 переводим 1:2 и т,д.) 

Советник:

High_Low_V00.mq44 скач.

Индикатор:

 

Trend Magic.ex45 скач.

Автор#286
16 минут назад, drobayura сказал:

Условия выполнения сделок

не совсем понял, я думал вам требуется скомпилировать советник, с втягиванием внутрь ex4, чтоб советник+индикатор был одним файлом, а не разными. Вот как вы написали

23 часа назад, drobayura сказал:

а можно вставить компелированный индикатор в советник?

 

если же вам нужно использовать индикатор в советнике, ну так это и так и работает, советник не использует mq4 коды. советник использует именно ex4 файл индикатора, когда вызывает iCustom

Изменено 16 декабря, 2022 пользователем mqloud

#287
2 часа назад, mqloud сказал:

не совсем понял, я думал вам требуется скомпилировать советник, с втягиванием внутрь ex4, чтоб советник+индикатор был одним файлом, а не разными. Вот как вы написали

 

если же вам нужно использовать индикатор в советнике, ну так это и так и работает, советник не использует mq4 коды. советник использует именно ex4 файл индикатора, когда вызывает iCustom

"...когда вызывает iCustom" ну для этого же нужен исходник индикатора

Автор#288
2 часа назад, drobayura сказал:

для этого же нужен исходник индикатора

нет

#289
В 16.12.2022 в 19:38, mqloud сказал:

нет

А можно реализовать в код трал кратный величине S/L.

Попытался реализовать идею на картинке, не знаю на сколько это будет понятно.

 

TZZ.jpg

Автор#290

в самом простом варианте (пример для Бай)

if (OrderClosePrice()-OrderStopLoss()>2*SL*_Point) OrderModify(...);

 

#291
2 часа назад, mqloud сказал:

в самом простом варианте (пример для Бай)

if (OrderClosePrice()-OrderStopLoss()>2*SL*_Point) OrderModify(...);

 

Это прошли два SL, а если пройдём три как будет. " ... )>2*SL*_Point" где двойка какая то переменная наверно должна стоять да? Я здесь не смогу прописать и здесь OrderModify(...) тоже не знаю что писать.

Прошу Вас сделайте пожалуйста на BUY, а SELL по аналогии я попробую сделать сам.

Изменено 19 декабря, 2022 пользователем drobayura

Автор#292
for (int i=OrdersTotal()-1; i>=0; --i)
{
  if (!OrderSelect(i, SELECT_BY_POS)) continue; // ошибка взяти
  if (OrderSymbol()!=Symbol()) continue; // чужой символ
  //if (OrderMagicNumber()!=Magic) continue; // чужой магик
  if (OrderType()==OP_BUY)
  {
    if (OrderClosePrice()-OrderStopLoss()>2*SL*_Point)
    {
      double sl=NormalizeDouble(OrderStopLoss()+SL*_Point, _Digits); // новый СЛ передвинули на шаг SL
      if (!OrderModify(OrderTicekt(), OrderOpenPrice(), sl, OrderTakeProfit(), 0)) Print(GetLastError()); // подвинули
    }
  }
}

 

#293
1 час назад, mqloud сказал:
for (int i=OrdersTotal()-1; i>=0; --i)
{
  if (!OrderSelect(i, SELECT_BY_POS)) continue; // ошибка взяти
  if (OrderSymbol()!=Symbol()) continue; // чужой символ
  //if (OrderMagicNumber()!=Magic) continue; // чужой магик
  if (OrderType()==OP_BUY)
  {
    if (OrderClosePrice()-OrderStopLoss()>2*SL*_Point)
    {
      double sl=NormalizeDouble(OrderStopLoss()+SL*_Point, _Digits); // новый СЛ передвинули на шаг SL
      if (!OrderModify(OrderTicekt(), OrderOpenPrice(), sl, OrderTakeProfit(), 0)) Print(GetLastError()); // подвинули
    }
  }
}

 

Попробую вставить, что получится.

#294
1 час назад, drobayura сказал:

Попробую вставить, что получится.

 

2 часа назад, mqloud сказал:
for (int i=OrdersTotal()-1; i>=0; --i)
{
  if (!OrderSelect(i, SELECT_BY_POS)) continue; // ошибка взяти
  if (OrderSymbol()!=Symbol()) continue; // чужой символ
  //if (OrderMagicNumber()!=Magic) continue; // чужой магик
  if (OrderType()==OP_BUY)
  {
    if (OrderClosePrice()-OrderStopLoss()>2*SL*_Point)
    {
      double sl=NormalizeDouble(OrderStopLoss()+SL*_Point, _Digits); // новый СЛ передвинули на шаг SL
      if (!OrderModify(OrderTicekt(), OrderOpenPrice(), sl, OrderTakeProfit(), 0)) Print(GetLastError()); // подвинули
    }
  }
}

 

Получилось вот что:

void _TrailingStop(){
   int i;
   bool m;
    
   if (OrdersTotal()>0){
      for (i=OrdersTotal()-1; i>=0; i--){
         if (OrderSelect(i, SELECT_BY_POS)){
            if (OrderSymbol()==Symbol() /*&& OrderMagicNumber()==-1*/){
             
               if (OrderType()==OP_BUY) 
               {
                 if (OrderClosePrice() - OrderStopLoss() < 2*SL*_Point)
    {
                  while (IsTradeContextBusy()) Sleep(1000);
                  RefreshRates();
                 double sl=NormalizeDouble(OrderStopLoss()+SL*_Point, _Digits); // новый СЛ передвинули на шаг SL
                 m = OrderModify(OrderTicket(),OrderOpenPrice(),sl,OrderTakeProfit(),OrderExpiration(),CLR_NONE);
    }
 }        
               if (OrderType()==OP_SELL) 
               {
                 if (OrderStopLoss() - OrderClosePrice() > 2*SL*_Point)
    {
                  while (IsTradeContextBusy()) Sleep(1000);
                  RefreshRates();
                 double sl=NormalizeDouble(OrderStopLoss()-SL*_Point, _Digits); // новый СЛ передвинули на шаг SL
                 m = OrderModify(OrderTicket(),OrderOpenPrice(),sl,OrderTakeProfit(),OrderExpiration(),CLR_NONE);
               }
            }
         }
      }
   }
 }
return;
}
Не работает как надо. 

#295

Здравствуйте. Вопрос по реализации клика мышкой в mql4

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

Необходимо для торговли опционами

Автор#296

нужна полная задача, что когда и где кликать

#297

Хотя бы пример, а дальше я сам. Если вкратце есть фунция которая дает сигнал:

 

 GetSign();  

//

код

//

Функция может быть меньше или больше ноля. Мне бы хотя бы в одном случае (например

int sign = GetSign();  
      if( sign > 0 )

 далее код как кликнуть мышью во вкладке браузера. Можно рандомные координаты. Я потом попытаюсь разобраться как ввести нужные). 

Вообще, кликать нужно будет на странице сайта компании торгующей бинарными опционами, 

    Чтобы упростить код - например, я включаю советник, открываю нужную страницу и мышь просто кликает в определенном месте. Не нужно чтобы она еще и сама туда двигалась.

 

Просто я почему то даже пример не могу найти, да есть функция в mql4, но я плохо знаю код. Если бы простейший пример я бы понял бы. У п\Павла есть урок написания скрипта, который запускает вкладку хрома и перезагружает компьютер, а как раз клика по мыши нет.

Изменено 26 декабря, 2022 пользователем pasem

#298
14 часов назад, mqloud сказал:

нужна полная задача, что когда и где кликать

ответил выше

#300
34 минуты назад, mqloud сказал:

я извиняюсь там написано с++, а мне нужно чтобы это было в советнике на mql4

Страница 12 из 15

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

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