0
сегодня добавлю еще пару моментов из тз
avatar

AM2

  • 19 апреля 2021, 18:02
0
здесь надо будет смотреть получится ли отследить появление треугольника. поставлю на 22-е
avatar

AM2

  • 19 апреля 2021, 17:49
0
вот мой набросок. виноватить никого не буду :) 


//+------------------------------------------------------------------+
//|                                                      Supply2.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       = 1;          // умножение лота
extern double MaxLot     = 5;          // максимальный лот
extern int StopLoss      = 200;        // лось
extern int TakeProfit    = 300;        // язь
extern int Slip          = 30;         // реквот
extern int Magic         = 123;        // магик

extern string ZoneType   = "Untested"; // Untested, Weak

extern string IndName    = "shved_supply_and_demand"; //
extern string IndName2   = "TS-1#2"; //

datetime t=0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   Comment("");
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   Comment("");
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutOrder(int type,double price)
  {
   int r=0;
   color clr=Green;
   double sl=0,tp=0;

   if(type==1 || type==3 || type==5)
     {
      clr=Red;
      if(StopLoss>0)
         sl=NormalizeDouble(price+StopLoss*_Point,_Digits);
      if(TakeProfit>0)
         tp=NormalizeDouble(price-TakeProfit*_Point,_Digits);
     }

   if(type==0 || type==2 || type==4)
     {
      clr=Blue;
      if(StopLoss>0)
         sl=NormalizeDouble(price-StopLoss*_Point,_Digits);
      if(TakeProfit>0)
         tp=NormalizeDouble(price+TakeProfit*_Point,_Digits);
     }

   r=OrderSend(NULL,type,Lot(),NormalizeDouble(price,_Digits),Slip,sl,tp,"",Magic,0,clr);
   return;
  }
//+------------------------------------------------------------------+
//| Подсчет ордеров по типу                                          |
//+------------------------------------------------------------------+
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 || type==-1)
               count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double Lot()
  {
   double lot=Lots;
   for(int i=OrdersHistoryTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderProfit()>0)
               break;
            if(OrderProfit()<0)
              {
               lot=OrderLots()*KLot;
               break;
              }
           }
        }
     }
   if(lot>MaxLot)
      lot=Lots;
   return(lot);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double Sup()
  {
   double max=0;
   for(int i=ObjectsTotal()-1; i>=0; i--)
     {
      if(ObjectType(ObjectName(i))==OBJ_RECTANGLE)
        {
         if(StringFind(ObjectName(i),"SSSR#S",0)>=0)
           {
            double p1=ObjectGetDouble(0,ObjectName(i),OBJPROP_PRICE1);
            if(p1>max)
              {
               max=p1;
              }
           }
        }
     }
   return(max);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double Res()
  {
// 1. берем 1-е значение
// 2. оно минимальное
// 3. берем следующее
// 4. сравниваем
// 5. если меньше то оно минимальное

   double min=0;
   for(int i=ObjectsTotal()-1; i>=0; i--)
     {
      if(ObjectType(ObjectName(i))==OBJ_RECTANGLE)
        {
         if(StringFind(ObjectName(i),"SSSR#R",0)>=0)
           {
            double p2=ObjectGetDouble(0,ObjectName(i),OBJPROP_PRICE2);

            if(min==0)
              {
               min=p2;
              }

            if(p2<min)
              {
               min=p2;
              }
           }
        }
     }
   return(min);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   bool buy=1,sell=1;
   double gre=iCustom(NULL,0,IndName2,1,0);
   double red=iCustom(NULL,0,IndName2,2,0);


   buy=Open[1]<Sup() && Close[1]>Sup() && red<111;
   sell=Open[1]>Res() && Close[1]<Res() && gre<111;

   if(CountOrders()<1)
     {
      for(int i=ObjectsTotal()-1; i>=0; i--)
        {
         if(ObjectType(ObjectName(i))==OBJ_RECTANGLE)
           {
            if(buy)
              {
               PutOrder(0,Ask);
              }
            if(sell)
              {
               PutOrder(1,Bid);
              }
           }
        }
     }

   double ind = iCustom(NULL,0,IndName,0,0);

   Comment("\n Support: ",Sup(),
           "\n Resist: ",Res());

  }
//+------------------------------------------------------------------+

avatar

AM2

  • 17 апреля 2021, 15:33
0
больше 20 убыточных сделок подряд! *shock*  дальше и не стоит продолжать

avatar

AM2

  • 17 апреля 2021, 14:14
0
чтобы проверить работу советника, просто жал на селл :) 



www.opentraders.ru/downloads/2945/
avatar

AM2

  • 15 апреля 2021, 19:43
0
я делал советник на индикаторе «shved_supply_and_demand». на истории все не так радужно. советник называется Supply. смотрите в базе
avatar

AM2

  • 15 апреля 2021, 17:56
0
на 19-е
avatar

AM2

  • 15 апреля 2021, 17:37
0
создайте новый индикатор в МТ4 и скопируйте туда код
avatar

AM2

  • 15 апреля 2021, 17:33
0
в индикаторе есть ошибка:


2021.04.14 20:43:15.903	RSICross EURUSD,H1: array out of range in 'RSICross.mq4' (58,12)


если вы сказали не надо доделывать, править не буду
avatar

AM2

  • 14 апреля 2021, 19:44
0
посмотрел. его даже переписывать не надо. переносите в МТ4 и он работает:

avatar

AM2

  • 14 апреля 2021, 19:30
0
А на некоторых таймфреймах вообще не ставит стрелки.


если не ставит на других тф, значит не выполнилось условие. скажем рси 14 и уровень 20 на Н1 ставит стрелки, а на Н4 уже ставить не будет, т.к. не выполнилось условие пересечения уровней индикатором.

функция фильтра работает так: перед каждой установкой стрелки одного типа, проверяет есть ли стрелка указанное количество баров назад. если есть не ставит. все так как вы просили
avatar

AM2

  • 14 апреля 2021, 18:04
0
я не работаю с чужим кодом
avatar

AM2

  • 13 апреля 2021, 21:52