+1
Так «центральная сглаженная» и есть машка))
avatar

verta81

  • 16 октября 2023, 23:24
0
советник здесь
демонстрация работы: youtu.be/SoFgt347G9w
avatar

verta81

  • 15 октября 2023, 16:18
0
не вижу, что и как Вы написали, по сему не могу решить проблему с ошибкой.
Если Ваша система работает, используйте Вашу.
avatar

verta81

  • 3 октября 2023, 21:22
0

int step=ProfitToday/10;// шаг индикации
int i=(int)(ProfitToday/step);//замените ProfitToday на нужную переменную 
   

или

int step=5;// шаг индикации
int i=(int)(ProfitToday/step);//замените ProfitToday на нужную переменную 
if(i>10) i=10;
avatar

verta81

  • 3 октября 2023, 21:12
0
самое простое решение
<code>int step=ProfitToday/10;// шаг индикации</code>
avatar

verta81

  • 3 октября 2023, 21:09
0
не вижу, куда и что Вы вписали.
Давайте весь код, поправлю.
avatar

verta81

  • 3 октября 2023, 20:11
0
В функции MeterCreate() добавить еще:
objectCreate("ind2"+string(i),40+(i*7),30);

Где «ind2» Уже имена новых объектов, плюс смещение по оси Х не 30 а 40(например).
Далее в функции OnTick() добавить условие индикации:

if(...)
     {
      for(...)
        ObjectSet("ind2"+string(s),OBJPROP_COLOR,CLR_NONE);
      for(...)
       ObjectSet("ind2"+string(k),OBJPROP_COLOR,clr[k]);
     }
  }


И т.д.
Экспериментируйте.
avatar

verta81

  • 2 октября 2023, 15:47
0
В горизонтальной визуализации заменить:
objectCreate("ind"+string(i),30,30+(i*7));

на строчку:
objectCreate("ind"+string(i),30+(i*7),30);

и вместо "-" можно использовать "|" или "."
avatar

verta81

  • 2 октября 2023, 06:52
+1
//+------------------------------------------------------------------+
//|                                                        Meter.mq4 |
//|                                               Copyright 2023,    |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Copyright 2023"
#property link      ""
#property version   ""
#property strict

color clr[10]={Red,OrangeRed,DarkOrange,Orange,Gold,Yellow,GreenYellow,LawnGreen,Lime,Lime};
int count_step=0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   MeterCreate();
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   ObjectsDeleteAll();
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void MeterCreate()
  {
   for(int i=0; i<10; i++)
     objectCreate("ind"+string(i),30,30+(i*7));
  }
//+------------------------------------------------------------------+
void objectCreate(string name,int x,int y,string text="-",int size=42,
                  string font="Arial",color colour=CLR_NONE)
  {
   ObjectCreate(name,OBJ_LABEL,0,0,0);
   ObjectSet(name,OBJPROP_CORNER,3);
   ObjectSet(name,OBJPROP_COLOR,colour);
   ObjectSet(name,OBJPROP_XDISTANCE,x);
   ObjectSet(name,OBJPROP_YDISTANCE,y);
   ObjectSetText(name,text,size,font,colour);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   int step=5;// шаг индикации
   int i=(int)(ProfitToday/step);//замените ProfitToday на нужную переменную 
   //----------------------
   if(count_step!=i)
     {
      for(int s=10; s>=i; s--)
        ObjectSet("ind"+string(s),OBJPROP_COLOR,CLR_NONE);
      for(int k=0; k<i; k++)
       ObjectSet("ind"+string(k),OBJPROP_COLOR,clr[k]);
      count_step=i;
     }
  }
//+------------------------------------------------------------------+
avatar

verta81

  • 2 октября 2023, 06:43
0
Можно создать массив с цветами, в теле цикла создать 10 объектов с цветом CLR_NONE, и так же в теле цикла задать цвета нужному кол-ву объектов.
пример со свободной маржой:
//+------------------------------------------------------------------+
//|                                                        Meter.mq4 |
//|                                               Copyright 2023,    |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Copyright 2023"
#property link      ""
#property version   ""
#property strict

color clr[10]={Red,OrangeRed,DarkOrange,Orange,Gold,Yellow,GreenYellow,LawnGreen,Lime,Lime};
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   MeterCreate();
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   ObjectsDeleteAll();
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void MeterCreate()
  {
   for(int i=0; i<10; i++)
     objectCreate("ind"+string(i),30,30+(i*7));
  }
//+------------------------------------------------------------------+
void objectCreate(string name,int x,int y,string text="-",int size=42,
                  string font="Arial",color colour=CLR_NONE)
  {
   ObjectCreate(name,OBJ_LABEL,0,0,0);
   ObjectSet(name,OBJPROP_CORNER,3);
   ObjectSet(name,OBJPROP_COLOR,colour);
   ObjectSet(name,OBJPROP_XDISTANCE,x);
   ObjectSet(name,OBJPROP_YDISTANCE,y);
   ObjectSetText(name,text,size,font,colour);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   double Bal=AccountInfoDouble(ACCOUNT_BALANCE);
   double Free=AccountInfoDouble(ACCOUNT_MARGIN_FREE);
   double step=Bal/10;
   int i=(int)(Free/step);
   //----------------------
   for(int s=10; s>=i; s--)
     ObjectSet("ind"+string(s),OBJPROP_COLOR,CLR_NONE);
   for(int k=0; k<i; k++)
    ObjectSet("ind"+string(k),OBJPROP_COLOR,clr[k]);
  }
//+------------------------------------------------------------------+
avatar

verta81

  • 1 октября 2023, 23:48
0
перезалил downloads/3683/
avatar

verta81

  • 30 сентября 2023, 15:31
0
перезалил downloads/3683/
avatar

verta81

  • 29 сентября 2023, 01:18
0

Price1 = ObjectGet(NAME, OBJPROP_PRICE1); 

Значение получается = 0.
Может кто подскажет метод получения цены прямоугольника?
avatar

verta81

  • 28 сентября 2023, 14:52
0
Можно сделать и удаление в пипсах зоны, и ширину прямоугольника в пипсах, если скажите как вычислить цену, хотя бы верхней грани прямоугольника после его перемещения.
avatar

verta81

  • 28 сентября 2023, 14:45
0
Самый простой и быстрый вариант:
downloads/3683/
avatar

verta81

  • 28 сентября 2023, 00:22
0
А если так:

//+------------------------------------------------------------------+
//|   Номер бара фрактала                                            |
//+------------------------------------------------------------------+
int FractalNum(int num,int mode)
  {
   double f=0;
   int p=0,dn=0,n=0;
   for(int i=2; i<100; i++) 
     {
      f=iFractals(NULL,0,MODE_UPPER,i);
      if(f>0 && mode==1)
        {
         n++;
         if(n==num)
          {
           p=i;
           break;
          }
        }

      f=iFractals(NULL,0,MODE_LOWER,i);
      if(f>0 && mode==2)
        {
         n++;
         if(n==num)
          {
           p=i;
           break;
          }
        }
     }
   return(p);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   int r=0;
   double upf1=FractalPrice(1,1);
   double upf2=FractalPrice(2,1);
   double dnf1=FractalPrice(1,2);
   double dnf2=FractalPrice(2,2);
   double num_upf1=FractalNum(1,1);
   double num_upf2=FractalNum(2,1);
   double num_dnf1=FractalNum(1,2);
   double num_dnf2=FractalNum(2,2);
   
   bool buy = (dnf1>dnf2 && upf1>dnf1 && upf1>dnf2 && num_dnf1<num_upf1 && num_upf1<num_dnf2 && num_dnf2<num_upf2);
   bool sell = (upf1<upf2 && dnf1<upf1 && dnf1<upf2 && num_upf1<num_dnf1 && num_dnf1<num_upf2 && num_upf2<num_dnf2);
   
   if(CountTrades()<1)
     {
      if(buy && Bid<upf1 &&  CountOrders(4)<1)
        {
         r=OrderSend(NULL,4,Lots,upf1,Slip,dnf2,upf1+(upf1-dnf2),"",Magic,TimeCurrent()+Expiration*3600,Blue);
        }

      if(sell && Bid>dnf1 &&  CountOrders(5)<1)
        {
         r=OrderSend(NULL,5,Lots,dnf1,Slip,dnf2,dnf1-(upf2-dnf1),"",Magic,TimeCurrent()+Expiration*3600,Red);
        }
     }
  }
//+------------------------------------------------------------------+
avatar

verta81

  • 24 сентября 2023, 15:35
0
Для этого советника нужен блок определения тренда. Допустим тренд определяем на D1 и входим на H1 по Паттерну. Тренд можно идентифицировать например так:

Open[3]<Close[3] && Close[2]>High[3] && Close[1]<Low[2];// Медвежий тренд

т.е. собрали ликвид и закрылись поглощением.
Так же можно и нужно добавить фильтры, правила: время торговли (10:00-20:00), в период новостей нет торговли, Пин бар или 3-я волна — нет торговли.
Все выше сказанное — возможные варианты.
avatar

verta81

  • 23 сентября 2023, 23:24
0
В этой формуле Вы не учли уровень Stop Out:
d_shift_3 = AccountEquity() / (MarketInfo(Symbol(), MODE_TICKVALUE) * lots); 

Правильнее будет так:
d_shift_3 = (AccountEquity() - AccountStopoutLevel()) / MarketInfo(Symbol(), MODE_TICKVALUE) * lots;
avatar

verta81

  • 23 сентября 2023, 00:21