0
Наидобрейшего!
А как этого золотого охотника пощупать?
avatar

OSS5

  • 2 февраля 2024, 08:04
0
Вместо не рабочей линии, автофибо индикатор.

Эксперт и индикатор здесь: www.opentraders.ru/downloads/3778/
avatar

OSS5

  • 1 февраля 2024, 02:36
0
Спасибо большое.
avatar

OSS5

  • 10 января 2024, 22:39
0
Андрей, получилось скачать индикатор?
avatar

OSS5

  • 10 января 2024, 15:12
0
Сделал через значок «код».
Копировал скопированный код который выложил, вставил в metaeditor, скомпилировал, всё окей без ошибок, у меня всё работает.
avatar

OSS5

  • 9 января 2024, 20:01
0
Так?
//+------------------------------------------------------------------+
//|                                                       ZLines.mq4 |
//|                                              Copyright 2023, AM2 |
//|                                     https://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2023, AM2"
#property link      "https://www.forexsystems.biz"
#property version   "1.00"
#property strict

#property indicator_chart_window

input int Depth = 12;
input int Dev   = 5;
input int Back  = 3;

input bool Mail = 1;
input bool Push = 1;
input bool Alerts = 1;

datetime t=0;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   Comment("");
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double ZZPrice(int n=0)
  {
   double zz=0;
   int k=0;

   for(int i=0; i<1111; i++)
     {
      zz=iCustom(NULL,0,"ZigZag",Depth,Dev,Back,0,i);

      if(zz!=0)
        {
         k++;
         if(k>n)
            return(zz);
        }
     }
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int ZZBar(int n=0)
  {
   double zz=0;
   int k=0;

   for(int i=0; i<1111; i++)
     {
      zz=iCustom(NULL,0,"ZigZag",Depth,Dev,Back,0,i);

      if(zz!=0)
        {
         k++;
         if(k>n)
            return(i);
        }
     }
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutTrendLine(string name,datetime time1,double price1,datetime time2,double price2,color clr)
  {
   ObjectDelete(0,name);
   ObjectCreate(0,name,OBJ_TREND,0,time1,price1,time2,price2);
//--- установим цвет линии
   ObjectSetInteger(0,name,OBJPROP_COLOR,clr);
//--- установим стиль отображения линии
   ObjectSetInteger(0,name,OBJPROP_STYLE,0);
//--- установим толщину линии
   ObjectSetInteger(0,name,OBJPROP_WIDTH,1);
//--- включим (true) или отключим (false) режим продолжения отображения линии вправо
   ObjectSetInteger(0,name,OBJPROP_RAY_RIGHT,1);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutArrow(string name,int code,double p,datetime time,color clr)
  {
   ObjectDelete(0,name);
//--- создадим стрелку
   ObjectCreate(0,name,OBJ_ARROW,0,time,p);
//--- установим код стрелки
   ObjectSetInteger(0,name,OBJPROP_ARROWCODE,code);
//--- установим способ привязки
   ObjectSetInteger(0,name,OBJPROP_ANCHOR,ANCHOR_CENTER);
//--- установим цвет стрелки
   ObjectSetInteger(0,name,OBJPROP_COLOR,clr);
//--- установим размер стрелки
   ObjectSetInteger(0,name,OBJPROP_WIDTH,2);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---

   if(ZZPrice(4)>ZZPrice(2) && ZZPrice(3)>ZZPrice(1))
     {
      PutTrendLine("14b",time[ZZBar(4)],ZZPrice(4),time[ZZBar(1)],ZZPrice(1),Blue);
      PutTrendLine("13b",time[ZZBar(4)],ZZPrice(4),time[ZZBar(2)],ZZPrice(2),Blue);
      PutTrendLine("24b",time[ZZBar(3)],ZZPrice(3),time[ZZBar(1)],ZZPrice(1),Blue);
     }

   if(ZZPrice(4)<ZZPrice(2) && ZZPrice(3)<ZZPrice(1))
     {
      PutTrendLine("14s",time[ZZBar(4)],ZZPrice(4),time[ZZBar(1)],ZZPrice(1),Gold);
      PutTrendLine("13s",time[ZZBar(4)],ZZPrice(4),time[ZZBar(2)],ZZPrice(2),Gold);
      PutTrendLine("24s",time[ZZBar(3)],ZZPrice(3),time[ZZBar(1)],ZZPrice(1),Gold);
     }

   double z13b=ObjectGetValueByShift("13b",1);
   double z13s=ObjectGetValueByShift("13s",1);

   if(t!=Time[0])
     {
      if(Close[1]>z13b && Open[1]<z13b)
        {
         if(Alerts)
            Alert(_Symbol+" Buy!");
         if(Push)
            SendNotification(_Symbol+" Buy!");
         if(Mail)
            SendMail("Buy!",_Symbol+" Buy!");
            
         PutArrow("Buy Arrow",233,Low[1],Time[1],Blue);
        }

      if(Close[1]<z13s && Open[1]>z13s)
        {
         if(Alerts)
            Alert(_Symbol+" Sell!");
         if(Push)
            SendNotification(_Symbol+" Sell!");
         if(Mail)
            SendMail("Buy!",_Symbol+" Sell!");
            
         PutArrow("Sell Arrow",234,High[1],Time[1],Red);
        }
        
      t=Time[0];
     }

//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
avatar

OSS5

  • 9 января 2024, 19:55
0
Старина, самому интересно.
avatar

OSS5

  • 9 января 2024, 17:01
0
Стрелки ставит и в тестере и в реале.
Сегодня:
avatar

OSS5

  • 9 января 2024, 16:58
0
Андрей, вот сам код индикатора. Форум сегодня у меня глючит, пароля на архив нет и не было, почему не открывает, не знаю.
//+------------------------------------------------------------------+
//| ZLines.mq4 |
//| Copyright 2023, AM2 |
//| www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright «Copyright 2023, AM2»
#property link «www.forexsystems.biz»
#property version «1.00»
#property strict

#property indicator_chart_window

input int Depth = 12;
input int Dev = 5;
input int Back = 3;

input bool Mail = 0;
input bool Push = 0;
input bool Alerts = 1;

datetime t=0;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//--- indicator buffers mapping
Comment("");
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
double ZZPrice(int n=0)
{
double zz=0;
int k=0;

for(int i=0; i<1111; i++)
{
zz=iCustom(NULL,0,«ZigZag»,Depth,Dev,Back,0,i);

if(zz!=0)
{
k++;
if(k>n)
return(zz);
}
}
return(0);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int ZZBar(int n=0)
{
double zz=0;
int k=0;

for(int i=0; i<1111; i++)
{
zz=iCustom(NULL,0,«ZigZag»,Depth,Dev,Back,0,i);

if(zz!=0)
{
k++;
if(k>n)
return(i);
}
}
return(0);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void PutTrendLine(string name,datetime time1,double price1,datetime time2,double price2,color clr)
{
ObjectDelete(0,name);
ObjectCreate(0,name,OBJ_TREND,0,time1,price1,time2,price2);
//--- установим цвет линии
ObjectSetInteger(0,name,OBJPROP_COLOR,clr);
//--- установим стиль отображения линии
ObjectSetInteger(0,name,OBJPROP_STYLE,0);
//--- установим толщину линии
ObjectSetInteger(0,name,OBJPROP_WIDTH,1);
//--- включим (true) или отключим (false) режим продолжения отображения линии вправо
ObjectSetInteger(0,name,OBJPROP_RAY_RIGHT,1);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void PutArrow(string name,int code,double p,datetime time,color clr)
{
ObjectDelete(0,name);
//--- создадим стрелку
ObjectCreate(0,name,OBJ_ARROW,0,time,p);
//--- установим код стрелки
ObjectSetInteger(0,name,OBJPROP_ARROWCODE,code);
//--- установим способ привязки
ObjectSetInteger(0,name,OBJPROP_ANCHOR,ANCHOR_CENTER);
//--- установим цвет стрелки
ObjectSetInteger(0,name,OBJPROP_COLOR,clr);
//--- установим размер стрелки
ObjectSetInteger(0,name,OBJPROP_WIDTH,2);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//---

if(ZZPrice(4)>ZZPrice(2) && ZZPrice(3)>ZZPrice(1))
{
PutTrendLine(«14b»,time[ZZBar(4)],ZZPrice(4),time[ZZBar(1)],ZZPrice(1),Blue);
PutTrendLine(«13b»,time[ZZBar(4)],ZZPrice(4),time[ZZBar(2)],ZZPrice(2),Blue);
PutTrendLine(«24b»,time[ZZBar(3)],ZZPrice(3),time[ZZBar(1)],ZZPrice(1),Blue);
}

if(ZZPrice(4)<ZZPrice(2) && ZZPrice(3)<ZZPrice(1))
{
PutTrendLine(«14s»,time[ZZBar(4)],ZZPrice(4),time[ZZBar(1)],ZZPrice(1),Red);
PutTrendLine(«13s»,time[ZZBar(4)],ZZPrice(4),time[ZZBar(2)],ZZPrice(2),Red);
PutTrendLine(«24s»,time[ZZBar(3)],ZZPrice(3),time[ZZBar(1)],ZZPrice(1),Red);
}

double z13b=ObjectGetValueByShift(«13b»,1);
double z13s=ObjectGetValueByShift(«13s»,1);

if(t!=Time[0])
{
if(Close[1]>z13b && Open[1]<z13b)
{
if(Alerts)
Alert(_Symbol+" Buy!");
if(Push)
SendNotification(_Symbol+" Buy!");
if(Mail)
SendMail(«Buy!»,_Symbol+" Buy!");
PutArrow(«Buy Arrow»,233,Low[1],Time[1],Blue);
}

if(Close[1]<z13s && Open[1]>z13s)
{
if(Alerts)
Alert(_Symbol+" Sell!");
if(Push)
SendNotification(_Symbol+" Sell!");
if(Mail)
SendMail(«Buy!»,_Symbol+" Sell!");
PutArrow(«Sell Arrow»,234,High[1],Time[1],Red);
}
t=Time[0];
}

//--- return value of prev_calculated for next call
return(rates_total);
}
avatar

OSS5

  • 9 января 2024, 16:56
0
Спасибо, глянул. Так-то похожий, но нужен по индикатору zlines.
avatar

OSS5

  • 9 января 2024, 14:22
0
В задании не было предусмотрено закрытие по противоположному сигналу.
avatar

OSS5

  • 13 декабря 2023, 13:49
+1
Блин, мастер. Благодарствую. *hi* 
avatar

OSS5

  • 20 октября 2023, 21:56
0
Вроде exp_iCustom_v11.mq4 для этих целей подходит, бум разбираться.
alex30774 спасибо за наводку.
avatar

OSS5

  • 20 октября 2023, 13:14
0
Нет конечно, ручками когда было время. Если бы советником, я не обращался сюда.
avatar

OSS5

  • 20 октября 2023, 12:59
0
Это понятно, а как прописать.
Осталось найти эксперта торгующего по графическим стрелкам.
Если кто знает такого эксперта поделитесь, или хотя бы название эксперта.
Может Андрей такой уже делал.
Спасибо.
avatar

OSS5

  • 20 октября 2023, 12:32
0
А как правильно эдесь указать код?
avatar

OSS5

  • 20 октября 2023, 11:45