0
что с чем объединить, выделить?
avatar

verta81

  • 19 ноября 2024, 18:15
+1
Сделал как понял
downloads/3925
avatar

verta81

  • 10 ноября 2024, 21:03
0
в базе есть совы с этим индикатором, поищите
avatar

verta81

  • 7 ноября 2024, 23:43
+1
это не индикатор, а просто рисовалка.
Нет буферных данных. Только по меткам или именам объектов можно отслеживать изменения, как выше Андрей писал.
В этом «Индикаторе» используются 5 стандартных терминальных индикаторов на разных таймфреймах. Проще написать сов по этим 5-ти индикаторам. Если конечно будет ТЗ.
avatar

verta81

  • 29 октября 2024, 21:33
+3
//+------------------------------------------------------------------+
//| Создает текстовую метку                                          |
//+------------------------------------------------------------------+
bool LabelCreate(string name,int x,int y,string text,string font,int font_size,color clr)
  {
   long chart_ID=0;               // ID графика
   int sub_window=0;             // номер подокна
   ENUM_BASE_CORNER corner=Corner; // угол графика для привязки
   bool back=false;               // на заднем плане
   bool hidden=true;              // скрыт в списке объектов

   if(ObjectFind(chart_ID,name)<0)
     {
      //--- создадим текстовую метку
      ObjectCreate(chart_ID,name,OBJ_LABEL,sub_window,0,0);
      //--- установим координаты метки
      ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x);
      ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y);
      //--- установим угол графика, относительно которого будут определяться координаты точки
      ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner);
      //--- установим текст
      ObjectSetString(chart_ID,name,OBJPROP_TEXT,text);
      //--- установим шрифт текста
      ObjectSetString(chart_ID,name,OBJPROP_FONT,font);
      //--- установим размер шрифта
      ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,font_size);
      //--- установим цвет
      ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
      //--- установим цвет фона
      ObjectSetInteger(chart_ID,name,OBJPROP_BGCOLOR,White);
      //--- отобразим на переднем (false) или заднем (true) плане
      ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
      //--- скроем (true) или отобразим (false) имя графического объекта в списке объектов
      ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
      //--- успешное выполнение
     }
   return(true);
  }
//+------------------------------------------------------------------+
//| Создает прямоугольную метку                                      |
//+------------------------------------------------------------------+
bool RectLabelCreate(string name,int x,int y,int width,int height,color back_clr,color clr)
  {
   long             chart_ID=0;               // ID графика
   int              sub_window=0;             // номер подокна
   ENUM_BORDER_TYPE border=BORDER_SUNKEN;     // тип границы
   ENUM_BASE_CORNER corner=Corner; // угол графика для привязки
   ENUM_LINE_STYLE  style=STYLE_SOLID;        // стиль плоской границы
   int              line_width=1;             // толщина плоской границы
   bool             back=false;               // на заднем плане
   bool             hidden=true;              // скрыт в списке объектов

   if(ObjectFind(chart_ID,name)<0)
     {
      ObjectCreate(chart_ID,name,OBJ_RECTANGLE_LABEL,sub_window,0,0);
      //--- установим координаты метки
      ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x);
      ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y);
      //--- установим размеры метки
      ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width);
      ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height);
      //--- установим цвет фона
      ObjectSetInteger(chart_ID,name,OBJPROP_BGCOLOR,back_clr);
      //--- установим тип границы
      ObjectSetInteger(chart_ID,name,OBJPROP_BORDER_TYPE,border);
      //--- установим угол графика, относительно которого будут определяться координаты точки
      ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner);
      //--- установим цвет плоской рамки (в режиме Flat)
      ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
      //--- установим стиль линии плоской рамки
      ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
      //--- установим толщину плоской границы
      ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,line_width);
      //--- отобразим на переднем (false) или заднем (true) плане
      ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
      //--- скроем (true) или отобразим (false) имя графического объекта в списке объектов
      ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
     }
//--- успешное выполнение
   return(true);
  }
avatar

verta81

  • 26 октября 2024, 01:43
+3

//+------------------------------------------------------------------+
//|                                                MultiMaSignal.mq4 |
//|                                               Copyright 2024, Ve |
//|                                             kupiscript@yandex.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright 2024, Ve"
#property link      "kupiscript@yandex.ru"
#property version   "1.00"
#property strict

extern string s1 = "======Muving Average======";
extern int ma_period                    = 50;           // период
extern int ma_shift                     = 0;            // сдвиг средней
extern ENUM_MA_METHOD ma_method         = MODE_SMA;      // метод усреднения
extern ENUM_APPLIED_PRICE applied_price = PRICE_CLOSE;  // тип цены
extern string s2="==============================";
extern ENUM_BASE_CORNER Corner          = CORNER_LEFT_UPPER;   // угол привязки
//------------------------------------
datetime t=0;
int array_size;
string Arr_Sym[]={"EURUSD","GBPUSD","AUDCAD","CADJPY","USDJPY","XAUUSD","DOGECOIN","BITCOIN","CARDANO","AUDNZD",
                  "NZDCAD","AUDCHF","AUDCNH","AUDCZK","AUDDKK","AUDHKD","AUDHUF","AUDJPY","AUDMXN","AUDNOK",
                  "AUDPLN","AUDSEK","AUDSGD","AUDUSD","AUDZAR","CADCHF","CADCNH","CADCZK","CADDKK","CADHKD",
                  "CADHUF","CADMXN","CADNOK","CADPLN","CADSEK","CADSGD","CADZAR","CHFCNH","FCZK","CHFDKK",
                  "CHFHKD","CHFHUF","CHFJPY","CHFMXN","CHFNOK","CHFPLN","CHFSEK","CHFSGD","CHFTRY","CHFZAR",
                  "DKKCZK","DKKHKD","DKKHUF","DKKMXN","DKKNOK","DKKPLN","DKKSEK","DKKSGD","DKKZAR","EURAUD",
                  "EURCAD","EURCHF","EURCNH","EURCZK","EURDKK","EURGBP","EURHKD","EURHUF"};
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   array_size=ArraySize(Arr_Sym);
   Draw();
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   ObjectsDeleteAll();
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(t!=Time[0])
     {
      t=Time[0];
      SetText();
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void SetText()
  {
   double ma=0,ma1=0,close1=0,close2=0;
   string text="NULL";
   color clr = clrSilver;
//----------------------
   for(int i=0; i<array_size; i++)
     {
      ma=iMA(Arr_Sym[i],0,ma_period,0,ma_method,applied_price,ma_shift);
      ma1=iMA(Arr_Sym[i],0,ma_period,0,ma_method,applied_price,ma_shift+1);
      close1=iClose(Arr_Sym[i],0,1);
      close2=iClose(Arr_Sym[i],0,2);
      if(close2<ma1 && close1>ma)
        {
         text="BUY";
         clr=clrGreen;
         PlaySound("tick.wav");
        }
      if(close2>ma1 && close1<ma)
        {
         text="SELL";
         clr=clrRed;
         PlaySound("oops.wav");
        }
      ObjectSetString(0,Arr_Sym[i]+"sym2",OBJPROP_TEXT,text);
      ObjectSetInteger(0,Arr_Sym[i]+"rec2",OBJPROP_BGCOLOR,clr);
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Draw()
  {
   int x=10,x1=0,x2=0,x3=0,y=20,y1=0,yd=0;
   double ma=0,close1=0;
   string text="NULL";
   color clr = clrSilver;
   //-----------------------------
   if(Corner==CORNER_LEFT_UPPER)
     {y1=3;x1=61;x2=5;x3=67;}
   if(Corner==CORNER_RIGHT_UPPER)
     {y1=3;x=120;x1=-59;x2=-5;x3=-67;}
   if(Corner==CORNER_LEFT_LOWER)
     {y=30;y1=-3;x=10;x1=61;x2=5;x3=67;}
   if(Corner==CORNER_RIGHT_LOWER)
     {y=30;y1=-3;x=120;x1=-59;x2=-5;x3=-67;}
   //------------------------
   for(int i=0; i<array_size; i++)
     {
      ma=iMA(Arr_Sym[i],0,ma_period,0,ma_method,applied_price,ma_shift);
      close1=iClose(Arr_Sym[i],0,1);
      if(close1>ma)
        {
         text="BUY";
         clr=clrGreen;
        }
      if(close1<ma)
        {
         text="SELL";
         clr=clrRed;
        }
      RectLabelCreate(Arr_Sym[i]+"rec1",x,y+yd,60,20,clrSilver,clrViolet);
      RectLabelCreate(Arr_Sym[i]+"rec2",x+x1,y+yd,40,20,clr,clrViolet);
      LabelCreate(Arr_Sym[i]+"sym1",x+x2,y+yd+y1,Arr_Sym[i],"Arial",8,clrBlack);
      LabelCreate(Arr_Sym[i]+"sym2",x+x3,y+yd+y1,text,"Arial",8,clrBlack);
      yd+=20;
      if(yd/20==15) {yd=0;x+=105;}
     }
  }

avatar

verta81

  • 26 октября 2024, 01:43
+1

//+------------------------------------------------------------------+
//| Simple.mq4 |
//| Copyright 2024, AM2 |
//| www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright «Copyright 2024, AM2»
#property link «www.forexsystems.biz»
#property version «1.00»
#property strict

//--- Inputs
extern double Lots = 0.1; // лот
extern double KLot = 1.2; // умножение лота
extern double MaxLot = 5; // максимальный лот

extern int StopLoss = 0; // лось
extern int TakeProfit = 111; // язь

extern int StartHour = 0; // час начала торговли
extern int StartMin = 30; // минута начала торговли
extern int EndHour = 23; // час окончания торговли
extern int EndMin = 30; // минута окончания торговли

extern int Step = 333; // шаг
extern int Count = 20; // число поз
extern int Slip = 30; // реквот

extern int CloseSig = 0; // 1-закрытие по сигналу
extern int Spread = 33; // спред
extern int Magic = 123; // магик

extern string Comm = «Scalp»;

datetime t=0;

int AccNum = 1234567;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
  if(AccountNumber()!=AccNum)
    return return(INIT_FAILED);
Comment("");
//---
return(INIT_SUCCEEDED);
}
avatar

verta81

  • 25 октября 2024, 20:59
0
Есть. Вам что нужно?
avatar

verta81

  • 2 октября 2024, 21:23
0
Знатоки, могут поделиться своим вариантом)
avatar

verta81

  • 27 сентября 2024, 18:16
+2
Второй вариант, с прямоугольником.
координаты кнопки привязаны к прямоугольнику, тащишь прямоугольник — тащится и кнопка.
//+------------------------------------------------------------------+
//|                                                       Button.mq4 |
//|                                               Copyright 2024, Ve |
//|                                             kupiscript@yandex.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright 2024, Ve"
#property link      "kupiscript@yandex.ru"
#property version   "1.00"
#property strict

int Magic      = 0;
int Slip       = 10;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   ChartSetInteger(0,CHART_EVENT_MOUSE_MOVE,1);
   RectLabelCreate("Main",20,20,120,100,clrSilver);
   ButtonCreate("ButtonClose",40,50,80,30,"Close All",clrYellowGreen,false);
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   ObjectsDeleteAll();
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(ObjectGetInteger(0,"ButtonClose",OBJPROP_STATE)==1)
     {
      if(MessageBox("Действительно вы хотите закрыть все ордера?",NULL,MB_YESNO)==6)
        {
         CloseAll();
        }
      ObjectSetInteger(0,"ButtonClose",OBJPROP_STATE,false);
     }
   
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CloseAll(int ot=-1)
  {
   bool cl;
   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==0 && (ot==0 || ot==-1))
              {
               RefreshRates();
               cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),Slip,White);
              }
            if(OrderType()==1 && (ot==1 || ot==-1))
              {
               RefreshRates();
               cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),Slip,White);
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+ 
//| Создает кнопку                                                   | 
//+------------------------------------------------------------------+ 
bool ButtonCreate(string name,int x,int y,int width,int height,string text,color back_clr,bool state)
  {
   long chart_ID=0;               // ID графика 
   int sub_window=0;             // номер подокна 
   ENUM_BASE_CORNER  corner=CORNER_LEFT_UPPER; // угол графика для привязки 
   string font="Arial";
   int fonts_size=12;             // размер шрифта 
   color clr=clrBlack;             // цвет текста 
   color border_clr=back_clr;       // цвет границы 
   bool back=false;               // на заднем плане 
   bool selection=true;          // выделить для перемещений 
   bool selected =false;
   bool hidden=true;              // скрыт в списке объектов 
   long z_order=0;                // приоритет на нажатие мышью 
   
   if(ObjectFind(name)<0)
    {
//--- сбросим значение ошибки 
   ResetLastError(); 
//--- создадим кнопку 
   ObjectCreate(chart_ID,name,OBJ_BUTTON,sub_window,0,0);
//--- установим координаты кнопки 
   ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x); 
   ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y); 
//--- установим размер кнопки 
   ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width); 
   ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height); 
//--- установим угол графика, относительно которого будут определяться координаты точки 
   ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner); 
//--- установим текст 
   ObjectSetString(chart_ID,name,OBJPROP_TEXT,text); 
//--- установим шрифт текста 
   ObjectSetString(chart_ID,name,OBJPROP_FONT,font); 
//--- установим размер шрифта 
   ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,fonts_size); 
//--- установим цвет текста 
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr); 
//--- установим цвет фона 
   ObjectSetInteger(chart_ID,name,OBJPROP_BGCOLOR,back_clr); 
//--- установим цвет границы 
   ObjectSetInteger(chart_ID,name,OBJPROP_BORDER_COLOR,border_clr); 
//--- отобразим на переднем (false) или заднем (true) плане 
   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back); 
//--- переведем кнопку в заданное состояние 
   ObjectSetInteger(chart_ID,name,OBJPROP_STATE,state); 
//--- включим (true) или отключим (false) режим перемещения кнопки мышью 
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection); 
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selected); 
//--- скроем (true) или отобразим (false) имя графического объекта в списке объектов 
   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden); 
//--- установим приоритет на получение события нажатия мыши на графике 
   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order); 
//--- успешное выполнение 
   }
   return(true); 
  } 
//+------------------------------------------------------------------+ 
//| Создает прямоугольную метку                                      | 
//+------------------------------------------------------------------+ 
bool RectLabelCreate(string name,int x,int y,int width,int height,color back_clr)
  {
   long chart_ID=0;               // ID графика 
   int sub_window=0;             // номер подокна 
   ENUM_BORDER_TYPE border=BORDER_SUNKEN;     // тип границы 
   ENUM_BASE_CORNER corner=CORNER_LEFT_UPPER; // угол графика для привязки 
   color clr=clrRed;               // цвет плоской границы (Flat) 
   ENUM_LINE_STYLE  style=STYLE_SOLID;        // стиль плоской границы 
   int line_width=1;             // толщина плоской границы 
   bool back=false;               // на заднем плане 
   bool selection=true;          // выделить для перемещений 
   bool selected =true;
   bool hidden=true;              // скрыт в списке объектов 
   long z_order=0;                // приоритет на нажатие мышью 
   
   if(ObjectFind(name)<0)
    {
//--- сбросим значение ошибки 
   ResetLastError(); 
//--- создадим прямоугольную метку 
   ObjectCreate(chart_ID,name,OBJ_RECTANGLE_LABEL,sub_window,0,0);
//--- установим координаты метки 
   ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x); 
   ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y); 
//--- установим размеры метки 
   ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width); 
   ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height); 
//--- установим цвет фона 
   ObjectSetInteger(chart_ID,name,OBJPROP_BGCOLOR,back_clr); 
//--- установим тип границы 
   ObjectSetInteger(chart_ID,name,OBJPROP_BORDER_TYPE,border); 
//--- установим угол графика, относительно которого будут определяться координаты точки 
   ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner); 
//--- установим цвет плоской рамки (в режиме Flat) 
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr); 
//--- установим стиль линии плоской рамки 
   ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style); 
//--- установим толщину плоской границы 
   ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,line_width); 
//--- отобразим на переднем (false) или заднем (true) плане 
   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back); 
//--- включим (true) или отключим (false) режим перемещения метки мышью 
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection); 
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selected); 
//--- скроем (true) или отобразим (false) имя графического объекта в списке объектов 
   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden); 
//--- установим приоритет на получение события нажатия мыши на графике 
   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order); 
//--- успешное выполнение 
     }
   return(true); 
  } 
//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
   if(id==CHARTEVENT_MOUSE_MOVE && sparam=="1")
     {
      int x=(int)ObjectGetInteger(0,"Main",OBJPROP_XDISTANCE);
      int y=(int)ObjectGetInteger(0,"Main",OBJPROP_YDISTANCE);
      ObjectSetInteger(0,"ButtonClose",OBJPROP_XDISTANCE,x+20);
      ObjectSetInteger(0,"ButtonClose",OBJPROP_YDISTANCE,y+30);
     }
   if(id==CHARTEVENT_OBJECT_CLICK && sparam=="ButtonClose")
     {
      int x=(int)ObjectGetInteger(0,"Main",OBJPROP_XDISTANCE);
      int y=(int)ObjectGetInteger(0,"Main",OBJPROP_YDISTANCE);
      ObjectSetInteger(0,"ButtonClose",OBJPROP_XDISTANCE,x+20);
      ObjectSetInteger(0,"ButtonClose",OBJPROP_YDISTANCE,y+30);
     }
  }
//+------------------------------------------------------------------+
avatar

verta81

  • 27 сентября 2024, 18:15
+2
Первый вариант.
дабл-клик по кнопке и тащи ее куда хочешь.
//+------------------------------------------------------------------+
//|                                                       Button.mq4 |
//|                                               Copyright 2024, Ve |
//|                                             kupiscript@yandex.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright 2024, Ve"
#property link      "kupiscript@yandex.ru"
#property version   "1.00"
#property strict

int Magic      = 0;
int Slip       = 10;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   ButtonCreate("ButtonClose",40,50,80,30,"Close All",clrYellowGreen,false);
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   ObjectsDeleteAll();
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(ObjectGetInteger(0,"ButtonClose",OBJPROP_STATE)==1)
     {
      if(MessageBox("Действительно вы хотите закрыть все ордера?",NULL,MB_YESNO)==6)
        {
         CloseAll();
        }
      ObjectSetInteger(0,"ButtonClose",OBJPROP_STATE,false);
     }
   
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CloseAll(int ot=-1)
  {
   bool cl;
   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==0 && (ot==0 || ot==-1))
              {
               RefreshRates();
               cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),Slip,White);
              }
            if(OrderType()==1 && (ot==1 || ot==-1))
              {
               RefreshRates();
               cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),Slip,White);
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+ 
//| Создает кнопку                                                   | 
//+------------------------------------------------------------------+ 
bool ButtonCreate(string name,int x,int y,int width,int height,string text,color back_clr,bool state)
  {
   long chart_ID=0;               // ID графика 
   int sub_window=0;             // номер подокна 
   ENUM_BASE_CORNER  corner=CORNER_LEFT_UPPER; // угол графика для привязки 
   string font="Arial";
   int fonts_size=12;             // размер шрифта 
   color clr=clrBlack;             // цвет текста 
   color border_clr=back_clr;       // цвет границы 
   bool back=false;               // на заднем плане 
   bool selection=true;          // выделить для перемещений 
   bool selected =false;
   bool hidden=true;              // скрыт в списке объектов 
   long z_order=0;                // приоритет на нажатие мышью 
   
   if(ObjectFind(name)<0)
    {
//--- сбросим значение ошибки 
   ResetLastError(); 
//--- создадим кнопку 
   ObjectCreate(chart_ID,name,OBJ_BUTTON,sub_window,0,0);
//--- установим координаты кнопки 
   ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x); 
   ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y); 
//--- установим размер кнопки 
   ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width); 
   ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height); 
//--- установим угол графика, относительно которого будут определяться координаты точки 
   ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner); 
//--- установим текст 
   ObjectSetString(chart_ID,name,OBJPROP_TEXT,text); 
//--- установим шрифт текста 
   ObjectSetString(chart_ID,name,OBJPROP_FONT,font); 
//--- установим размер шрифта 
   ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,fonts_size); 
//--- установим цвет текста 
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr); 
//--- установим цвет фона 
   ObjectSetInteger(chart_ID,name,OBJPROP_BGCOLOR,back_clr); 
//--- установим цвет границы 
   ObjectSetInteger(chart_ID,name,OBJPROP_BORDER_COLOR,border_clr); 
//--- отобразим на переднем (false) или заднем (true) плане 
   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back); 
//--- переведем кнопку в заданное состояние 
   ObjectSetInteger(chart_ID,name,OBJPROP_STATE,state); 
//--- включим (true) или отключим (false) режим перемещения кнопки мышью 
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection); 
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selected); 
//--- скроем (true) или отобразим (false) имя графического объекта в списке объектов 
   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden); 
//--- установим приоритет на получение события нажатия мыши на графике 
   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order); 
//--- успешное выполнение 
   }
   return(true); 
  } 
avatar

verta81

  • 27 сентября 2024, 18:13
0
Какие функции у кнопки должны быть?
avatar

verta81

  • 27 сентября 2024, 01:05
+1
здесь все на пальцах расписано)
комменты из топика тоже будут полезны.
avatar

verta81

  • 21 сентября 2024, 22:38
0
Нашел у себя похожее, подлатал под Ваше ТЗ.
downloads/3870/
avatar

verta81

  • 22 июля 2024, 23:22
0
автор топика выложил. см.выше.
avatar

verta81

  • 16 июля 2024, 23:12
0
перезалил.
Сделал все, как в ТЗ
avatar

verta81

  • 16 июля 2024, 16:46
0
Можно взять в место фикс.тейка ширину канала и по фибе закрывать ордер частями в 3 этапа: 1-й, на уровне 150 фибо; 2-й. на уровне 200; 3-й уже можно тралить.
avatar

verta81

  • 12 июля 2024, 17:34
0
Индикатор прикрепите плиз
avatar

verta81

  • 12 июля 2024, 17:30