0
в подвале прерывистая линия либо красного либо зеленого цвета,
которая обозначает что в тот момент можно было открыть сделку которая в убытке не была за всю историю ордера


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

AM2

  • 3 января 2020, 17:23
0
по скорости оксана писала подобное. по тф в онлайн менял, но в тестере не пробовал. посмотрю 8-го.
avatar

AM2

  • 3 января 2020, 14:58
0
Ордера не закрылись


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

AM2

  • 3 января 2020, 14:54
0
уровни от каждой вершины зига это понятно. а в подвале что?
avatar

AM2

  • 3 января 2020, 12:54
0
у нас фибозигогод *crazy* :D 
на 6-е
avatar

AM2

  • 3 января 2020, 12:50
0
я все правильно понял? :D 

avatar

AM2

  • 3 января 2020, 12:39
0
Можно ли в него добавить переключение таймфреймов


вы хотите чтобы во время теста менялся ТФ?

регулировку скорости прокрутки графика


как это должно по вашему выглядеть?
avatar

AM2

  • 3 января 2020, 12:25
0
на скрине видно что ордера установились с увеличением лота и удалились по окончании времени:



www.opentraders.ru/downloads/2530/

avatar

AM2

  • 3 января 2020, 12:20
0
поручитель есть?
avatar

AM2

  • 2 января 2020, 22:38
0
пока так:

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

//--- Inputs
extern double Lots       = 1;        // лот
extern double Risk       = 10;       // риск

extern double Level1     = 23.6;     // уровень 1
extern double Level2     = 38.2;     // уровень 2
extern double Level3     = 50.0;     // уровень 3
extern double Level4     = 61.8;     // уровень 4
extern double Level5     = 100.0;    // уровень 5
extern double Level6     = 161.8;    // уровень 6

extern int StopLoss      = 0;        // лось
extern int TakeProfit    = 0;        // язь
extern int TrailingStop  = 0;        // трал

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

extern int Slip          = 30;       // реквот
extern int MAPeriod      = 3;        // период MA
extern int Exp           = 10;       // истечение в часах
extern int Gamma         = 140;      // фильтр
extern int Magic         = 123;      // магик

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

   Comment("");
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   Comment("");
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool TimeSession(int aStartHour,int aStartMinute,int aStopHour,int aStopMinute,datetime aTimeCur)
  {
//--- время начала сессии
   int StartTime=3600*aStartHour+60*aStartMinute;
//--- время окончания сессии
   int StopTime=3600*aStopHour+60*aStopMinute;
//--- текущее время в секундах от начала дня
   aTimeCur=aTimeCur%86400;
   if(StopTime<StartTime)
     {
      //--- переход через полночь
      if(aTimeCur>=StartTime || aTimeCur<StopTime)
        {
         return(true);
        }
     }
   else
     {
      //--- внутри одного дня
      if(aTimeCur>=StartTime && aTimeCur<StopTime)
        {
         return(true);
        }
     }
   return(false);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
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,TimeCurrent()+3600*Exp,clr);
   return;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CountTrades()
  {
   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()<2)
               count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double Lot()
  {
   double lot=Lots;
   if(Risk>0)
      lot=AccountBalance()*Risk/100000;

   if(lot>100)
      lot=100;
   return(lot);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Trailing()
  {
   bool mod;
   double all=0,count=0,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()<2)
              {
               all+=OrderOpenPrice()*OrderLots();
               count+=OrderLots();
              }
           }
        }
     }

   if(count>0)
      all=NormalizeDouble(all/count,Digits);

   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-all>TrailingStop*Point)
                 {
                  if(OrderStopLoss()<Bid-TrailingStop*Point)
                    {
                     sl=NormalizeDouble(Bid-TrailingStop*Point,Digits);
                     if(OrderStopLoss()!=sl)
                        mod=OrderModify(OrderTicket(),OrderOpenPrice(),sl,OrderTakeProfit(),0,Yellow);
                    }
                 }
              }

            if(OrderType()==OP_SELL)
              {
               if(all-Ask>TrailingStop*Point)
                 {
                  if((OrderStopLoss()>(Ask+TrailingStop*Point)) || (OrderStopLoss()==0))
                    {
                     sl=NormalizeDouble(Bid+TrailingStop*Point,Digits);
                     if(OrderStopLoss()!=sl)
                        mod=OrderModify(OrderTicket(),OrderOpenPrice(),sl,OrderTakeProfit(),0,Yellow);
                    }
                 }
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Подсчет ордеров по типу                                          |
//+------------------------------------------------------------------+
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);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   double up = iMA(NULL,0,MAPeriod,0,3,PRICE_HIGH,0);
   double dn = iMA(NULL,0,MAPeriod,0,3,PRICE_LOW,0);

   if(TrailingStop>0)
      Trailing();

   if(CountTrades()<1 && TimeSession(StartHour,StartMin,EndHour,EndMin,TimeCurrent()) && MathAbs(Open[0]-Bid)>Gamma*_Point)
     {
      if(Bid<dn && CountOrders(2)<1)
        {
         if(Level1>0)
           {
            PutOrder(2,Bid-Gamma*_Point*Level1*0.01);
           }
         if(Level2>0)
           {
            PutOrder(2,Bid-Gamma*_Point*Level2*0.01);
           }
         if(Level3>0)
           {
            PutOrder(2,Bid-Gamma*_Point*Level3*0.01);
           }
         if(Level4>0)
           {
            PutOrder(2,Bid-Gamma*_Point*Level4*0.01);
           }
         if(Level5>0)
           {
            PutOrder(2,Bid-Gamma*_Point*Level5*0.01);
           }
         if(Level6>0)
           {
            PutOrder(2,Bid-Gamma*_Point*Level6*0.01);
           }
        }

      if(Bid>up && CountOrders(3)<1)
        {
         if(Level1>0)
           {
            PutOrder(3,Bid+Gamma*_Point*Level1*0.01);
           }
         if(Level2>0)
           {
            PutOrder(3,Bid+Gamma*_Point*Level2*0.01);
           }
         if(Level3>0)
           {
            PutOrder(3,Bid+Gamma*_Point*Level3*0.01);
           }
         if(Level4>0)
           {
            PutOrder(3,Bid+Gamma*_Point*Level4*0.01);
           }
         if(Level5>0)
           {
            PutOrder(3,Bid+Gamma*_Point*Level5*0.01);
           }
         if(Level6>0)
           {
            PutOrder(3,Bid+Gamma*_Point*Level6*0.01);
           }
        }
     }
  }
//+------------------------------------------------------------------+
avatar

AM2

  • 2 января 2020, 22:33
0
на 3-е
avatar

AM2

  • 2 января 2020, 14:21
+1
в тз не указано какой тип отложек ставить? лимитки?

вот для начала мой вариант WayGrow:



работа оригинала:



www.opentraders.ru/downloads/2529/
avatar

AM2

  • 2 января 2020, 13:31
0
вот вышла цена из канала, 0 фибо ставим на бид. куда ставим 100%?
avatar

AM2

  • 2 января 2020, 12:08
0
разделил уровни: www.opentraders.ru/downloads/2526/


input int UPLevel=70;
input int DNLevel=30;
avatar

AM2

  • 29 декабря 2019, 18:20
0
добавил стоп на границе: www.opentraders.ru/downloads/2525/

avatar

AM2

  • 28 декабря 2019, 19:35
0
пока в таком виде. если уточните логику индикатора, будем продолжать <img src='http://opentraders.ru/templates/skin/g6h/images/smilies/002.gif' alt=' :) '>&nbsp; 



www.opentraders.ru/downloads/2526/
avatar

AM2

  • 27 декабря 2019, 22:25
0
тз на индикатор рассмотрю
avatar

AM2

  • 27 декабря 2019, 20:06
0
переписал на отложенники: www.opentraders.ru/downloads/2514/

avatar

AM2

  • 27 декабря 2019, 19:59