Jump to content
muvingman

Напишу советник, скрипт, индикатор на MQL бесплатно

Recommended Posts

DVargo
5 часов назад, AntZ сказал:

Здравствуйте. Если одновременно работает несколько сов, существует ли какой простой программный способ, чтоб собирать статистику(прибыль, убыток по закрытым ордерам и просадка) по каждой отдельной сове? Я понимаю что допустим у меня каждая сова даёт свой коммент и можно тупо в экселе отсортировать историю, но макс. просадку так ведь  точно не выведешь.

Можно собирать данные по плавающей прибыли и просадкам в реалтайме.

Такие советники и скрипты есть в кодобазе.

 

Есть скрипты, которые пересчитывают на истории.

Возможно для Excel тоже есть программные решения.

 

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

Share this post


Link to post
Share on other sites
AntZ

Всем спасибо. Буду искать решение.

Share this post


Link to post
Share on other sites
Kopcap

Всех огромное спасибо! И все таки, может кто то и сделает такой советник? Разумеется стоплоссы должны срабатывать при минимальных просадках, зато "выживший" ордер скомпенсирует потери и закроется при максимуме, в случае изменения "кривой" в обратную сторону. Пусть лучше после закрытия обоих ордеров, откроется новая пара..

Share this post


Link to post
Share on other sites
Kopcap
11.07.2019 в 08:48, angel999 сказал:

что то подобное я видел уже. он в сети интернет уже выложен с исходным кодом

А Вы не сможете дать мне ссылку на него?

Share this post


Link to post
Share on other sites
angel999
3 часа назад, Kopcap сказал:

А Вы не сможете дать мне ссылку на него?

вы просите у меня что то нереальное. Когда я ищу что то, я перебираю тысячу сайтов и если я говорю что то видел, то это среди той тысячи ресурсов. Ищите и найдете.

Share this post


Link to post
Share on other sites
sibiryk-patriot

Напишите советник по простой трендовой системе 

фунт сигнал.png

Share this post


Link to post
Share on other sites
unnnamed

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

 

Имеются кнопки для включения и выключения авто прокрутки графика (кстати, можно ли возложить обе функции на одну?) :

 

if(id==CHARTEVENT_OBJECT_CLICK)
      {
         if(sparam=="Scroll on")
         {            
            ChartSetInteger(0,CHART_AUTOSCROLL,true);                                           
         }                 
      }
if(id==CHARTEVENT_OBJECT_CLICK)
      {
         if(sparam=="Scroll off")
         {            
            ChartSetInteger(0,CHART_AUTOSCROLL,false);                               
         }                 
      }

Они работают, кнопки окрашиваются в нужные отжатый и нажатый цвета, но вот при переключении тф, обе вновь становятся отжатыми. Я использовал нижеследующий код для определения статуса скролла, но он не работает:

 

if(CHART_AUTOSCROLL==1){
   ObjectSetInteger(0,"Scroll on",OBJPROP_BGCOLOR,C'50,50,50');
   ObjectSetInteger(0,"Scroll on",OBJPROP_BORDER_COLOR,C'50,50,50');
       
   ObjectSetInteger(0,"Scroll off",OBJPROP_BGCOLOR,Black);
   ObjectSetInteger(0,"Scroll off",OBJPROP_BORDER_COLOR,C'50,50,50');
   }
   
if(CHART_AUTOSCROLL==0){
   ObjectSetInteger(0,"Scroll on",OBJPROP_BGCOLOR,Black);
   ObjectSetInteger(0,"Scroll on",OBJPROP_BORDER_COLOR,C'50,50,50');
       
   ObjectSetInteger(0,"Scroll off",OBJPROP_BGCOLOR,C'50,50,50');
   ObjectSetInteger(0,"Scroll off",OBJPROP_BORDER_COLOR,C'50,50,50');
   }

Вместо CHART_AUTOSCROLL==1 использовал и ChartGetInteger(0,CHART_AUTOSCROLL,true), без толку. Помогите пожалуйста. Как я понимаю, при переключении тф советник не сохраняет текущее положение прокрутки, или же я использую не ту команду.

Share this post


Link to post
Share on other sites
Ugar68
40 минут назад, unnnamed сказал:

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

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

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


Пишу советники и индикаторы по вашим алгоритмам. Пишите в личку.
Чужие программы не переделываю.

Share this post


Link to post
Share on other sites
unnnamed

Какой-нибудь командой можно определить, включена автопрокрутка или нет? 

as.png.72dede5ff34dcb0783827f31d3c9a16f.png

 

Чтобы её вставить вместо CHART_AUTOSCROLL==0 в if.

Share this post


Link to post
Share on other sites
Cenmax

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

С уважением...


"Зло растет и увеличивается, если вы прячетесь от него или делаете вид, что не замечаете.."

Share this post


Link to post
Share on other sites
Ugar68
1 час назад, Cenmax сказал:

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

С уважением...

Набросал бесплатный вариант. Пробуйте.

 

SetSymbolAllChart.mq4

  • Thanks 1

Пишу советники и индикаторы по вашим алгоритмам. Пишите в личку.
Чужие программы не переделываю.

Share this post


Link to post
Share on other sites
Cenmax
1 час назад, Ugar68 сказал:

Набросал бесплатный вариант. Пробуйте.

 

SetSymbolAllChart.mq4

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

Спасибо за помощь.

С уважением...


"Зло растет и увеличивается, если вы прячетесь от него или делаете вид, что не замечаете.."

Share this post


Link to post
Share on other sites
Ugar68
37 минут назад, Cenmax сказал:

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

Спасибо за помощь.

С уважением...

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

  • Thanks 1

Пишу советники и индикаторы по вашим алгоритмам. Пишите в личку.
Чужие программы не переделываю.

Share this post


Link to post
Share on other sites
Cenmax

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

Подкорректируйте индикатор,если это возможно.

Суть его проста он на недельную свечу ставит сетку фибо,но она по чему то не всегда ставиться ровно по хаям или лоям,бывает ровно встанет,а бывает ,что хай или лоу стоит не на месте.

#SpudFiboW.mq4

00000.png


"Зло растет и увеличивается, если вы прячетесь от него или делаете вид, что не замечаете.."

Share this post


Link to post
Share on other sites
Ugar68
44 минуты назад, Cenmax сказал:

Подкорректируйте индикатор,если это возможно.

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

  • Thanks 1

Пишу советники и индикаторы по вашим алгоритмам. Пишите в личку.
Чужие программы не переделываю.

Share this post


Link to post
Share on other sites
Cenmax

Вашу подпись читал ранее,так что я вас понял. Буду ждать,кто сможет помочь. И всем хочу пожелать крепкого здоровья.

С уважением...

  • Upvote 1

"Зло растет и увеличивается, если вы прячетесь от него или делаете вид, что не замечаете.."

Share this post


Link to post
Share on other sites
Kopcap
Posted (edited)

Найдите пожалуйста ошибку, вроде все в норме, но вылазит ошибка...

Скрытый текст



//+------------------------------------------------------------------+
//|                                                         Mart.mq4 |
//|                        Copyright 2019, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

extern double   Lots       = 0.1;
extern int      TakeProfit = 50;
extern int      Step       = 50;
extern double   Multiplier = 1;
extern int      Magic      = 123;

int ticket;
double tp, price, lastlot;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   if (Digits == 3 || Digits == 5)
   {
      TakeProfit *=10;
      Step       *=10;
   
   }
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
     double ima = iMA(Symbol(), PERIOD_H1, 14, 0, MODE_SMA, PRICE_CLOSE, 1);
     
     if (CountTrades() == 0)
     {
     if (Ask > ima)
     {
        tp = NormalizeDouble(Ask + TakeProfit*Point, Digits);
        ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, 5, 0, tp,"", Magic, 0, Blue);
     }
        else 
        {
          tp = NormalizeDouble(Bid - TakeProfit*Point, Digits);
        ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, 5, 0, tp,"", Magic, 0, Red); 
        }
     }
     else
     {
       int order_type = FindLastOrderType();
       if (order_type == OP_BUY)
       {
         price = FindLastOrderPrice(OP_BUY);
         if (Ask <= price - Step*Point)
         {
            lastlot = FindLastLots (OP_BUY);
            lastlot = NormalizeDouble(lastlot*Multiplier, 2);
            ticket=OrderSend(Symbol(), OP_BUY, lastlot, Ask, 5, 0, 0, "", Magic, 0, Blue);
            if (ticket < 1)
            Print("Ошибка открытия ордера на покупку ")
            ModifyOrders(OP_BUY);
         }
       }

       if (order_type == OP_SELL)
       {
         price = FindLastOrderPrice(OP_SELL);
         if (Bid >= price + Step*Point)
         {
            lastlot = FindLastLots (OP_SELL);
            lastlot = NormalizeDouble(lastlot*Multiplier, 2);
            ticket=OrderSend(Symbol(), OP_SELL, lastlot, Bid, 5, 0, 0, "", Magic, 0, Red);
            if (ticket < 1)
                        Print("Ошибка открытия ордера на продажу ")

            ModifyOrders(OP_SELL);
         }
       }
     }
         
  }
//+------------------------------------------------------------------+
void ModifyOrders(int otype)
{
  double avg_price, order_lots=0;
  price=0;
  
  for (int i=OrdersTotal()-1; i>=0; i--)
  {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
    {
       if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == otype)
       {
          price += OrderOpenPrice() * OrderLots();
          order_lots += OrderLots();
       }
    }
  }
  avg_price = NormalizeDouble(price / order_lots, Digits);
  
  if (otype == OP_BUY) tp = NormalizeDouble(avg_price + TakeProfit*Point, Digits);
  if (otype == OP_SELL) tp = NormalizeDouble(avg_price - TakeProfit*Point, Digits);
  
  for (int i= OrdersTotal() -1; i>=0; i--)
  {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
    {
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == otype)
      {
         if (OrderModify(OrderTicket(), OrderOpenPrice(), 0, tp, 0))
         Print ("Ордера успешно модифицированы");
         else Print ("Ошибка модификации ордеров");
      }
    }
  }
} 
//+------------------------------------------------------------------+

 double FindLastLots(int otype)
 {
      int oldticket;
    double oldlots=0;
    ticket=0;
    
    for (int cnt= OrdersTotal()-1; cnt>=0; cnt--)
    {
       if (OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES))
       {
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == otype)
         {
           oldticket = OrderTicket();
           if (oldticket > ticket)
           {
           ticket = oldticket;
           oldlots = OrderLots();
           }
         }
       }
    }
     return(oldlots); 
 }
//+------------------------------------------------------------------+
 double FindLastOrderType(int otype)
 {
    int oldticket;
    double oldopenprice=0;
    ticket=0;
    
    for (int cnt= OrdersTotal()-1; cnt>=0; cnt--)
    {
       if (OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES))
       {
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == otype)
         {
           oldticket = OrderTicket();
           if (oldticket > ticket)
           {
           ticket = oldticket;
           oldopenprice = OrderOpenPrice();
           }
         }
       }
    }
     return(oldopenprice);
 }
//+------------------------------------------------------------------+
  int FindLastOrderType()
  {
    for(int i = OrdersTotal()-1; i>=0; i--)
    {
      if( OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
      {
        if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
          return(OrderType());
      }
    }
     return(-1);
  }
//+------------------------------------------------------------------+

int CountTrades()
{
  int count = 0;
  for (int i=OrdersTotal()-1; i>=0; i--)
  {
    if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
    {
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
      if (OrderType() == OP_BUY || OrderType() == OP_SELL)
        count++;
        
    }
  }
   return(count);
}
//+------------------------------------------------------------------+

 

 

Edited by AntFX
13

Share this post


Link to post
Share on other sites
CCG
Posted (edited)

Здраствуйте. Нужен советник который в указаное время будет закрывать только один ордер из масива открытых ордеров. При этом он должен закрыть ордер указаного типа (sell или buy) с наибольшим профитом (с учетом свопа), а если все ордера в минусе - тогда с самым меньшим убытком(с учетом свопа). Переменные:

1.время

2.направление ордера(sell or buy)

Терминал MT4

Зарание благодарен.

 

 

 

Edited by CCG

Share this post


Link to post
Share on other sites
Ugar68
Posted (edited)
28.07.2019 в 13:47, CCG сказал:

Здраствуйте. Нужен советник который в указаное время будет закрывать только один ордер из масива открытых ордеров. При этом он должен закрыть ордер указаного типа (sell или buy) с наибольшим профитом (с учетом свопа), а если все ордера в минусе - тогда с самым меньшим убытком(с учетом свопа). Переменные:

1.время

2.направление ордера(sell or buy)

Терминал MT4

Зарание благодарен.

Время надо задавать в формате часы:минуты

Прибыль считается не только с учётом свопов, но и комиссий, если они есть.

TimeCloseMaxProfitOrder_Free.mq4

Edited by Ugar68

Пишу советники и индикаторы по вашим алгоритмам. Пишите в личку.
Чужие программы не переделываю.

Share this post


Link to post
Share on other sites
azas
Posted (edited)

У многих на терминале стоит не один шаблон.
Каждый шаблон имеет свое название и очень удобно, если на графике видно название шаблона.

И, конечно, многие были бы безмерно благодарны за такой индикатор для МТ5.

 

Это информативный индикатор по рисунку.
В индикатор трейдер вписывает название своего шаблона.
Расположен в правом нижнем углу с возможностью изменения расположения (вверх-вниз, вправо-влево).
Есть возможность изменения цвета надписей.

 

Уважаемые программисты, пожалуйста, у кого есть время и желание для доброго дела.

 

22.png

Edited by azas

Share this post


Link to post
Share on other sites
CCG
10 часов назад, Ugar68 сказал:

Время надо задавать в формате часы:минуты

Прибыль считается не только с учётом свопов, но и комиссий, если они есть.

TimeCloseMaxProfitOrder_Free.mq4

Большое спасибо.

Share this post


Link to post
Share on other sites
Erex

Приветствую!

Что-то никогда не хотелось, и вдруг опять!

Нашел на ФФ индикатор, прикрепленный к этому посту. Стрелочник. Странный немного...

Могу ли я попросить кого угодно сделать по этому индикатору советник?

Вход в рынок по стрелке. При появлении противоположного сигнала - закрытие текущей и открытие противоположной сделки. Пинг-понг.

В настройках нужны три опции: лотность, период индикатора, обращение сигнала (если начнет сливать при дефолтных стрелках, пусть торгует наоборот - вместо бай открывает сел, а вместо села - бай).

Собственно, все. Индикатор меня заинтересовал. В тестере, вроде, не рисует. Хотя есть вероятность, что в нем он просто видит правую часть графика. Тады упс!..

И тут он понял, что кнопки "Прикрепить файл" нету (((

Рискую навлечь... но не вижу выхода.

Индикатор Up & Down .mq4

Share this post


Link to post
Share on other sites
Ugar68
11 часов назад, Erex сказал:

Приветствую!

Что-то никогда не хотелось, и вдруг опять!

Нашел на ФФ индикатор, прикрепленный к этому посту. Стрелочник. Странный немного...

Могу ли я попросить кого угодно сделать по этому индикатору советник?

Вход в рынок по стрелке. При появлении противоположного сигнала - закрытие текущей и открытие противоположной сделки. Пинг-понг.

В настройках нужны три опции: лотность, период индикатора, обращение сигнала (если начнет сливать при дефолтных стрелках, пусть торгует наоборот - вместо бай открывает сел, а вместо села - бай).

Собственно, все. Индикатор меня заинтересовал. В тестере, вроде, не рисует. Хотя есть вероятность, что в нем он просто видит правую часть графика. Тады упс!..

И тут он понял, что кнопки "Прикрепить файл" нету (((

Рискую навлечь... но не вижу выхода.

Индикатор Up & Down .mq4

Есть такой индикатор Fisher. Он стал классикой перерисовываемых индикаторов. На его основе сделано много других индикаторов, этот в том числе.


Пишу советники и индикаторы по вашим алгоритмам. Пишите в личку.
Чужие программы не переделываю.

Share this post


Link to post
Share on other sites
Erex

Неужели фишер?... Но он же в тестере рисует страшно. А этот не рисует, но при сравнении с реалом показывает сдвиг стрелок.

 

Screenshot_4.png

Share this post


Link to post
Share on other sites
Ugar68
Posted (edited)

Этот стрелки ставит в виде объектов, а не буферами, и не умеет удалять для перерисовки. Но на истории он поставит стрелки как будто они перерисованы, то есть идеальные сигналы. В реальности такого не будет. Советник, на основе этого индикатора будет работать в тестере только в визуальном режиме, ну или на счёте. Увидеть как врёт этот индикатор можно если поставить на счёт, на все вновь появившейся стрелки поставить вертикальные линии. Потом перезапустить терминал, стрелки уже не будут совпадать с линиями. Индикатор поставит стрелки на истории в более красивых местах. В общем, обычное фишерство. Так же будет работать советник на этом индикаторе. Советник откроет и закроет сделки по стрелкам, но после перезапуска терминала, стрелки не будут совпадать со сделками, стрелки будут в других местах.

Фишер это пример сознательно добавленной перерисовки. Это не какой нибудь зигзаг или регрессия, где перерисовка это побочный эффект самого метода. Фишер по сути wpr, в который добавили перерисовку для обмана на истории.

В общем, этот индикатор не стоит никакого внимания, тем более что бы писать по нему советник.

Edited by Ugar68
  • Thanks 1

Пишу советники и индикаторы по вашим алгоритмам. Пишите в личку.
Чужие программы не переделываю.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

×