0
Как с этим справиться?


рисовать ручками
avatar

AM2

  • 14 июня 2020, 21:00
0
алгоритм, указанный в ТЗ, не соблюден

я попробовал вытащить эти уровни из индикатора, они по нулям:

avatar

AM2

  • 14 июня 2020, 16:24
0
Несмотря на хорошие результаты в тестере, алгоритм, указанный в ТЗ, не соблюден. В момент открытия ордера гистограмма MACD находилась за пределами канала, образованного динамическими уровнями 35 и 65


вы не указали как формируются уровни 65 и 35, поэтому делал как считал правильным:


extern double Level1      = 35;
extern double Level2      = 65;

....

      if(lim>0 && macd>-Level2/10000 && macd<-Level1/10000)
        {
         PutOrder(0,Ask);
         ModifyOrders();
        }
      if(red>0 && macd<Level2/10000 && macd>Level1/10000)
        {
         PutOrder(1,Bid);
         ModifyOrders();
        }
avatar

AM2

  • 14 июня 2020, 15:36
0
делал по первоначальному тз. MACD-LPCgm сразу пришлось заменить на стандартный т.к. для советника его нужно править и они идентичны с обычным.



www.opentraders.ru/downloads/2688/
avatar

AM2

  • 14 июня 2020, 10:32
0
добавил:

1. продолжение линии вправо.
2. толщина линий.
3. стиль линий.
4. цвет линий.
5. удаление линий при деинициализации.
6. отключение выставления линий в начале работы.
7. расчет значений линий в данный момент.



www.opentraders.ru/downloads/2684/

avatar

AM2

  • 13 июня 2020, 20:43
0
Как только точка цены со следующим тиком окажется хоть на один пипс выше трендовой линии, мы считаем, что касание произошло и открываем ордер по этой сформировавшейся цене. А как в данный момент работает советник?


подобным образом. как только цена оказалась в промежутке между первой и второй линиями.

avatar

AM2

  • 13 июня 2020, 16:18
0
обратите внимание на то, чтобы каналы располагались именно так, как на скрине


как так? как это будем объяснять машине? не берусь.
avatar

AM2

  • 13 июня 2020, 13:45
0
А разве в настоящий момент без предлагаемых исправлений вход не делается при касании ценой первой линии?


что для вас касание линии? и что для машины?
avatar

AM2

  • 13 июня 2020, 13:35
0
вот блок расчета линий в настоящий момент времени, только их нужно протянуть дальше цены вправо. также здесь поправлен вход. он только между первой и второй линией:

   b1=ObjectGetValueByTime(0,"B1",Time[0]);
   b2=ObjectGetValueByTime(0,"B2",Time[0]);
   b3=ObjectGetValueByTime(0,"B3",Time[0]);

   s1=ObjectGetValueByTime(0,"S1",Time[0]);
   s2=ObjectGetValueByTime(0,"S2",Time[0]);
   s3=ObjectGetValueByTime(0,"S3",Time[0]);

   BU();
   if(TrailingStop>0)
      Trailing();

   if(CountTrades()<1)
     {
      if(ObjectGetInteger(0,"B",OBJPROP_STATE)==1)
        {
         if(Ask>b1 && Ask<b2)
            PutOrder(0,Ask);
        }
      if(ObjectGetInteger(0,"S",OBJPROP_STATE)==1)
        {
         if(Bid<s1 && Bid>s2)
            PutOrder(1,Bid);
        }
     }


если так удобнее обновлю в базе
avatar

AM2

  • 13 июня 2020, 11:18
0
нужен нормальный индикатор
avatar

AM2

  • 13 июня 2020, 10:37
0
сделал чтобы линии не слетали после того как изменили их положение, только нужно изменить флаг в настройках или сразу ставите флаг фалсе и рисуете свои:


extern bool Lines  = 1;  // показывать линии


вход в советнике идет по правому концу линии, это нужно учитывать.
также нужно смотреть положение линий для бу. на то он и полуавтомат :) 

www.opentraders.ru/downloads/2684/

avatar

AM2

  • 13 июня 2020, 10:31
0
я переписывать его буду, посмотрю только как торгует. дело за поручителем теперь
avatar

AM2

  • 11 июня 2020, 20:10
0
посмотрю сегодня
avatar

AM2

  • 10 июня 2020, 17:49
0
линии на исходную ставятся при инициализации советника. установите сразу все опции а потом двигайте линии
avatar

AM2

  • 9 июня 2020, 22:39
0
если есть ордер другие не откроются:


      if(CountOrders()<1)
        {
          ...
        }


удаление после начала трала: DelOrder();


                  if(OrderStopLoss()>sl || (OrderStopLoss()==0))
                    {
                     Print("SL: ",sl, " TP: ",OrderTakeProfit());
                     mod=OrderModify(OrderTicket(),OrderOpenPrice(),sl,OrderTakeProfit(),0,Yellow);
                     DelOrder();
                     return;
                    }



//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Trailing()
  {
   bool mod;
   double sl=0;

   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==OP_BUY)
              {
               if(Bid-OrderOpenPrice()>TrailingStop*_Point)
                 {
                  sl=NormalizeDouble(Bid-TrailingStop*_Point,_Digits);
                  if(OrderStopLoss()<sl)
                    {
                     Print("SL: ",sl, " TP: ",OrderTakeProfit());
                     mod=OrderModify(OrderTicket(),OrderOpenPrice(),sl,OrderTakeProfit(),0,Yellow);
                     DelOrder();
                     return;
                    }
                 }
              }

            if(OrderType()==OP_SELL)
              {
               if(OrderOpenPrice()-Ask>TrailingStop*_Point)
                 {
                  sl=NormalizeDouble(Ask+TrailingStop*_Point,_Digits);
                  if(OrderStopLoss()>sl || (OrderStopLoss()==0))
                    {
                     Print("SL: ",sl, " TP: ",OrderTakeProfit());
                     mod=OrderModify(OrderTicket(),OrderOpenPrice(),sl,OrderTakeProfit(),0,Yellow);
                     <DelOrder();
                     return;
                    }
                 }
              }
           }
        }
     }
  }


avatar

AM2

  • 9 июня 2020, 21:29
0
часть закрыли остаток в бу:



www.opentraders.ru/downloads/2684/
avatar

AM2

  • 9 июня 2020, 21:22
0
нужно все подробно на скринах
avatar

AM2

  • 9 июня 2020, 20:24