0
готово:




//+------------------------------------------------------------------+
//|                                                     Candles4.mq4 |
//|                                              Copyright 2021, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property strict
#property indicator_chart_window

input int count=3;
input bool mail=1;
input bool alert=1;

datetime t=0;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Создание объекта FIBO                                            |
//+------------------------------------------------------------------+
void PutFibo(string name, datetime t1=0, double pr1=0, datetime t2=0, double pr2=0)
  {
   ObjectDelete(name);
//--- создадим "Уровни Фибоначчи" по заданным координатам
   ObjectCreate(0,name,OBJ_FIBO,0,t1,pr1,t2,pr2);
//--- установим цвет
   ObjectSetInteger(0,name,OBJPROP_COLOR,Red);
//--- установим толщину линии
   ObjectSetInteger(0,name,OBJPROP_WIDTH,1);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int Bulls()
  {
   int b=0;

   for(int i=1; i<111; i++)
     {
      if(Close[i]-Open[i]>0)
        {
         b++;
        }
      if(Close[i]-Open[i]<0)
        {
         break;
        }
     }
   return(b);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int Bears()
  {
   int s=0;

   for(int i=1; i<111; i++)
     {
      if(Close[i]-Open[i]<0)
        {
         s++;
        }
      if(Close[i]-Open[i]>0)
        {
         break;
        }
     }
   return(s);
  }
//+------------------------------------------------------------------+
//| 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(t!=time[0])
     {
      if(Bulls()>=count)
        {
         PutFibo("fibo",time[1],high[1],time[Bulls()],low[Bulls()]);

         if(mail)
            SendMail("Signal",string(Bulls()) + " быковатых свечи родимый! ");
         if(alert)
            Alert(string(Bulls()) + " быковатых свечи родимый! ");
        }

      if(Bears()>=count)
        {
         PutFibo("fibo",time[1],low[1],time[Bears()],high[Bears()]);

         if(mail)
            SendMail("Signal",string(Bears()) + " мишкиных свечи родимый! ");
         if(alert)
            Alert(string(Bears()) + " мишкиных свечи родимый! ");
        }
      t=time[0];
     }

   Comment("\n Bulls: ",Bulls(),
           "\n Bears: ",Bears());

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


avatar

AM2

  • 29 мая 2021, 10:31
+1
то что получится быстро сделать поставлю на 31-е
avatar

AM2

  • 29 мая 2021, 09:04
0
этот индикатор только через скачивание с мкл5 можно поставить. сейчас пишет ошибку:

2021.05.28 09:41:37.876 Custom Indicator loading of Slow RSI (EURUSD,H1) failed [561]

avatar

AM2

  • 28 мая 2021, 08:44
0
не удалось скачать индикатор. пишет ошибку:

2021.05.27 22:51:51.468 MQL5 Market failed download product 'Slow RSI' (www.mql5.com:443 send failed [426: ])

avatar

AM2

  • 27 мая 2021, 21:53
0
одна поза будет в рынке или несколько?
avatar

AM2

  • 27 мая 2021, 18:15
+1
в базе около 10 советников на пересечении 2-х ма. если нет ничего подходящего, найдите самый близкий вариант и я его подправлю.
avatar

AM2

  • 27 мая 2021, 18:09
0
такой трал можно написать, но со входами пока непонятно
avatar

AM2

  • 27 мая 2021, 18:06
0
Достаточно ведь одного стопа к самому первому ордеру, который рукам открывается.
А я два месяца мучился с этими стопами для отложек


самый простой вариант — общий тейк всех поз.

в настройках есть только лоси и язи для четырех отложек.
Но не вижу стопа и тейка для цены «0».


сделано на 60%. остальное в следующем топике
avatar

AM2

  • 27 мая 2021, 17:55
0
процентов 60 сделал:




//+------------------------------------------------------------------+
//|                                                    BuySell61.mq4 |
//|                                              Copyright 2021, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property strict

//--- Inputs
extern double Lots       = 0.1;      // лот позы
extern double KLot       = 2;        // умножение лота

extern int Delta1        = 100;      // расстояние от цены 1
extern int Delta2        = 200;      // расстояние от цены 2
extern int Delta3        = 300;      // расстояние от цены 3
extern int Delta4        = 400;      // расстояние от цены 4

extern int StopLoss1     = 2000;     // лось 1
extern int StopLoss2     = 2000;     // лось 2
extern int StopLoss3     = 2000;     // лось 3
extern int StopLoss4     = 2000;     // лось 4

extern int TakeProfit1   = 200;      // язь 1
extern int TakeProfit2   = 200;      // язь 2
extern int TakeProfit3   = 200;      // язь 3
extern int TakeProfit4   = 200;      // язь 4

extern int ClosePro      = 30;       // процент
extern int Slip          = 30;       // реквот
extern int Magic         = 123;      // магик

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   PutButton("B",20,120,"BUY LIMIT");
   PutButton("S",20,80,"SELL LIMIT");
   PutButton("C",20,40,"CLOSE");
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   ObjectDelete(0,"B");
   ObjectDelete(0,"S");
   ObjectDelete(0,"C");
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutButton(string name,int x,int y,string text)
  {
   ObjectCreate(0,name,OBJ_BUTTON,0,0,0);
//--- установим координаты кнопки
   ObjectSetInteger(0,name,OBJPROP_XDISTANCE,x);
   ObjectSetInteger(0,name,OBJPROP_YDISTANCE,y);
//--- установим размер кнопки
   ObjectSetInteger(0,name,OBJPROP_XSIZE,80);
   ObjectSetInteger(0,name,OBJPROP_YSIZE,30);
//--- установим угол графика, относительно которого будут определяться координаты точки
   ObjectSetInteger(0,name,OBJPROP_CORNER,2);
//--- установим текст
   ObjectSetString(0,name,OBJPROP_TEXT,text);
//--- установим шрифт текста
   ObjectSetString(0,name,OBJPROP_FONT,"Arial");
//--- установим размер шрифта
   ObjectSetInteger(0,name,OBJPROP_FONTSIZE,9);
//--- установим цвет текста
   ObjectSetInteger(0,name,OBJPROP_COLOR,Red);
//--- установим цвет фона
   ObjectSetInteger(0,name,OBJPROP_BGCOLOR,White);
//--- установим цвет границы
   ObjectSetInteger(0,name,OBJPROP_BORDER_COLOR,Blue);
//--- скроем (true) или отобразим (false) имя графического объекта в списке объектов
   ObjectSetInteger(0,name,OBJPROP_HIDDEN,false);
//--- установим приоритет на получение события нажатия мыши на графике
   ObjectSetInteger(0,name,OBJPROP_ZORDER,0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
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);
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double Pro()
  {
   double pro=(AccountEquity()-AccountBalance())/AccountBalance()*100;//(1100-1000)/1000
   return(pro);
  }
//+------------------------------------------------------------------+
//| Подсчет ордеров по типу                                          |
//+------------------------------------------------------------------+
int CountOrders(int type=-1)
  {
   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()==type || (OrderType()>=0 && type==-1))
               count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//| Лот                                                              |
//+------------------------------------------------------------------+
double Lot(int type)
  {
   double lots=Lots;

   if(KLot>1)
      lots=NormalizeDouble(Lots*MathPow(KLot,CountOrders(type)),2);
   return(lots);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   int r=0;

   if(Pro()<-ClosePro && ClosePro>0)
      CloseAll();

   if(ObjectGetInteger(0,"B",OBJPROP_STATE)==1)
     {
      r=OrderSend(NULL,2,Lot(2),NormalizeDouble(Ask-Delta1*_Point,_Digits),Slip,NormalizeDouble(Ask-Delta1*_Point-StopLoss1*_Point,_Digits),NormalizeDouble(Ask-Delta1*_Point+TakeProfit1*_Point,_Digits),"",Magic,0,Blue);
      r=OrderSend(NULL,2,Lot(2),NormalizeDouble(Ask-Delta2*_Point,_Digits),Slip,NormalizeDouble(Ask-Delta2*_Point-StopLoss2*_Point,_Digits),NormalizeDouble(Ask-Delta2*_Point+TakeProfit2*_Point,_Digits),"",Magic,0,Blue);
      r=OrderSend(NULL,2,Lot(2),NormalizeDouble(Ask-Delta3*_Point,_Digits),Slip,NormalizeDouble(Ask-Delta3*_Point-StopLoss3*_Point,_Digits),NormalizeDouble(Ask-Delta3*_Point+TakeProfit3*_Point,_Digits),"",Magic,0,Blue);
      r=OrderSend(NULL,2,Lot(2),NormalizeDouble(Ask-Delta4*_Point,_Digits),Slip,NormalizeDouble(Ask-Delta4*_Point-StopLoss4*_Point,_Digits),NormalizeDouble(Ask-Delta1*_Point+TakeProfit4*_Point,_Digits),"",Magic,0,Blue);
      ObjectSetInteger(0,"B",OBJPROP_STATE,0);
     }

   if(ObjectGetInteger(0,"S",OBJPROP_STATE)==1)
     {
      r=OrderSend(NULL,3,Lot(3),NormalizeDouble(Ask+Delta1*_Point,_Digits),Slip,NormalizeDouble(Ask+Delta1*_Point+StopLoss1*_Point,_Digits),NormalizeDouble(Ask+Delta1*_Point-TakeProfit1*_Point,_Digits),"",Magic,0,Red);
      r=OrderSend(NULL,3,Lot(3),NormalizeDouble(Ask+Delta2*_Point,_Digits),Slip,NormalizeDouble(Ask+Delta2*_Point+StopLoss2*_Point,_Digits),NormalizeDouble(Ask+Delta2*_Point-TakeProfit2*_Point,_Digits),"",Magic,0,Red);
      r=OrderSend(NULL,3,Lot(3),NormalizeDouble(Ask+Delta3*_Point,_Digits),Slip,NormalizeDouble(Ask+Delta3*_Point+StopLoss3*_Point,_Digits),NormalizeDouble(Ask+Delta3*_Point-TakeProfit3*_Point,_Digits),"",Magic,0,Red);
      r=OrderSend(NULL,3,Lot(3),NormalizeDouble(Ask+Delta4*_Point,_Digits),Slip,NormalizeDouble(Ask+Delta4*_Point+StopLoss4*_Point,_Digits),NormalizeDouble(Ask+Delta4*_Point-TakeProfit4*_Point,_Digits),"",Magic,0,Red);
      ObjectSetInteger(0,"S",OBJPROP_STATE,0);
     }

   if(ObjectGetInteger(0,"C",OBJPROP_STATE)==1)
     {
      CloseAll();
      ObjectSetInteger(0,"C",OBJPROP_STATE,0);
     }

   Comment("\n Equity: ",Pro());
  }
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+


avatar

AM2

  • 26 мая 2021, 21:38