0
один уже работает. И этот добьём.*victory* 
avatar

vikas

  • 6 февраля 2015, 20:39
0
Ну всё. ЗАРАБОТАЛО! 7 раз из 7. Ну что могу сказать, Вам Огромное спасибо за по-
мощь и терпение. Надеюсь пообщаемся как нибудь ещё.

avatar

vikas

  • 6 февраля 2015, 20:23
0
Oxy?, всё по порядку. Пришёл домой, изменил код, выставил время в советнике
17:03. (время компа было 18:01), в 17:03 на новом тике появляется цена. Ну
думаю пошло. Проверяю ещё раз — удаляю советника, ставлю заново, выставляю
17:07 (время компа 18:05), время подходит и уже ничего не происходит. И так несколько раз подряд- устанавливаю время оно подходит и тишина.
Попробуйте несколко раз подряд.
avatar

vikas

  • 6 февраля 2015, 19:48
0
Нет Oxy, к сожалению всё то же самое. Пробовал другой предыдущий советник, который
АМ2 написал (он такой же только без трала. Собственно к ниму то я и хотел прикрутить трал.) но и с ним та же проблема. Видимо какаято общая ошибка. Меняю код и ничего принципиально не меняется, только в тестере худший результат.
avatar

vikas

  • 6 февраля 2015, 18:48
0
Хорошо, я вечером попробую тогда и отпишусь. Я просто не дома сейчас.
avatar

vikas

  • 6 февраля 2015, 13:05
0
Так, насколько я понял, т.к. я использую таймфрейм м5, и если изменить код так как вы предлагаете, то при установке времени кратному 5 минутам,
в назначенное время, с появлением новой свечки в менюшке выставиться
значение цены, равное значению цены закрытия предыдущей свечи? Так?
avatar

vikas

  • 6 февраля 2015, 11:52
0
Убегаю на работу.Буду только вечером.
avatar

vikas

  • 6 февраля 2015, 07:17
0
Что касается нагрузки на сервер согласен. А вот версия АМ2:
www.opentraders.ru/downloads/575/. Почему с ней такая же проблема.
Почему, скажем, ставлю время 17:00, он не включается. Затем всё перезагружаю
ставлю на другой паре — скажем 17:15 — включился. Затем ради эксперимента удаляю
его с пары, перезагружаю всё и ставлю вновь на 17:30 — не работает. Ставлю на
другую пару на 17:40 — не работает. Удаляю всё. Перезагружаю всё, ставлю на
18:00 — не работает.И всё это и с этой версией, и с моим тралом, и с тралом АМ2.
avatar

vikas

  • 6 февраля 2015, 07:03
0
ждём.Это оптимальные настройки. Для того чтобы проверить включиться ли он или нет,
можно выставить любое время. пробовать можно и на реале — ведь он сразу не выставляет ордер, а лишь указывает в менюшке цену входа.(должен). Это видно при визуализации в тестере.
avatar

vikas

  • 5 февраля 2015, 22:22
0
Пара GBPUSD. stoploss — 75
TP — 6
step — 10
max trades — 5
начало торговли часы — 0
начало торговли минуты — 0
время истечения орд. — 1
проход цены — 51
расстояние от уровня откр. первой свечи -3
тайм фрейм м5
avatar

vikas

  • 5 февраля 2015, 20:36
0
void ModifyOrders()
  {
   double all=0;
   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()==OP_BUY || OrderType()==OP_SELL)
          {
           all+=OrderOpenPrice();
           count++;
          }
        }
      }
    }   
   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)
          {
           tp=NormalizeDouble(all+TakeProfit*Point,Digits);
           sl=NormalizeDouble(all-StopLoss*Point,Digits);
           bool mod=OrderModify(OrderTicket(),OrderOpenPrice(),sl,tp,0,Yellow);
           
          }
         else 
         if(OrderType()==OP_SELL)
          {
           tp=NormalizeDouble(all-TakeProfit*Point,Digits);
           sl=NormalizeDouble(all+StopLoss*Point,Digits);
           bool mod=OrderModify(OrderTicket(),OrderOpenPrice(),sl,tp,0,Yellow);
          }          
        }
      }
    }      
  }
//+------------------------------------------------------------------+
void OrderMod()
  {
   double pr;
   int count=0;
   bool mod;
   datetime expiration = TimeCurrent()+3600*Expiration;
   for(int i=OrdersTotal()-1;i>=0;i--)
    {
     if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      {
       if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
        {
         if(OrderType()==OP_BUYSTOP)
          {
           if((OrderOpenPrice()-Ask)>Delta*Point+Prohod*Point)
            {
              pr=Ask+Delta*Point+Prohod*Point;
              mod=OrderModify(OrderTicket(),pr,OrderStopLoss(),OrderTakeProfit(),0,Blue);  
            }
          }
         if(OrderType()==OP_SELLSTOP)
          {
           if((Bid-OrderOpenPrice())>Delta*Point+Prohod*Point)
            {
              pr=Bid-Delta*Point-Prohod*Point;
              mod=OrderModify(OrderTicket(),pr,OrderStopLoss(),OrderTakeProfit(),0,Red);
            } 
          }          
        }
      }
    }      
  }  
//+------------------------------------------------------------------+
int FindOrderType()
  {
   int oticket, ticketNumber=0,type=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
    {
     if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      {
       if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
        {
         oticket=OrderTicket();
         if(oticket>ticketNumber)
          {
           ticketNumber=oticket;
           type=OrderType();
          }
        }
      }
    }
    return(type);
  }  
//+------------------------------------------------------------------+
double FindLastBuyPrice()
  {
   int oticket, ticketNumber=0;
   double oprice=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
    {
     if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      {
       if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType()==OP_BUY)
        {
         oticket=OrderTicket();
         if(oticket>ticketNumber)
          {
           ticketNumber=oticket;
           oprice=OrderOpenPrice();
          }
        }
      }
    }
    return(oprice);
  }
//+------------------------------------------------------------------+
double FindLastSellPrice()
  {
   int oticket, ticketNumber=0;
   double oprice=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
    {
     if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      {
       if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType()==OP_SELL)
        {
         oticket=OrderTicket();
         if(oticket>ticketNumber)
          {
           ticketNumber=oticket;
           oprice=OrderOpenPrice();
          }
        }
      }
    }
    return(oprice);
  }      
//+------------------------------------------------------------------+
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()==OP_BUY || OrderType()==OP_SELL)
          count++;
        }
      }
    }
    return(count);
  }
//+------------------------------------------------------------------+
void DelOrder()
  {
   bool del; 
   for (int i=OrdersTotal()-1; i>=0; i--) 
    {
     if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      {
       if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
        {      
         if (OrderType()==OP_BUYSTOP)  del=OrderDelete(OrderTicket()); 
         if (OrderType()==OP_SELLSTOP) del=OrderDelete(OrderTicket());
        }
      }       
    }    
  }
//+------------------------------------------------------------------+
double StepCalc()
  {
   int count;
   double st=0;
   count=CountTrades(); 
   for (int i=0;i<=count;i++) 
    {
     st=Step*MathPow(KStep,i); 
    }
   return(st);    
  }  
//+------------------------------------------------------------------+
double FindLastLot()
  {
   int oticket, ticketNumber=0;
   double llot=0;
     if(OrderSelect(OrdersTotal()-1,SELECT_BY_POS,MODE_TRADES))
      {
       if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && (OrderType()==OP_BUY || OrderType()==OP_SELL))
        {
         oticket=OrderTicket();
         if(oticket>ticketNumber)
          {
           ticketNumber=oticket;
           llot=OrderLots();
          }
        }
      }
    return(llot);
  }  
//+------------------------------------------------------------------+
bool NewBar()
  {
   static datetime lastbar = 0;
   datetime curbar = Time[0];
   if(lastbar!=curbar)
   {
      lastbar=curbar;
      return (true);
   }
   else
   {
    return(false);
   }
  }
//+------------------------------------------------------------------+
avatar

vikas

  • 5 февраля 2015, 20:08
0
//+------------------------------------------------------------------+
//|                                                       VikasB.mq4 |
//|                                              Copyright 2015, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property strict

extern int    StopLoss    = 190;         // стоп лосс ордера
extern int    TakeProfit  = 50;          // тейк профит ордера
extern int    Step        = 10;          // шаг между ордерами
extern int    MaxTrades   = 10;          // количетсво трейдов
extern int    Slip        = 3;           // проскальзывание
extern int    StartHour   = 0;           // начало торговли часы
extern int    StartMin    = 0;           // начало торговли минуты
extern int    Expiration  = 14;          // время истечения ордера
extern int    Prohod      = 10;          // проход цены от уровня открытия первой свечи
extern int    Delta       = 10;          // расстояние от уровня открытия первой свечи для открытия отложки
extern int    Magic       = 24012015;    // магик
extern double Lots        = 0.1;         // начальный торговый объем
extern double KLot        = 1;           // коэффициент увеличения объема
extern double KStep       = 2;           // увеличение шага между ордерами

int ticket,ord=0;
bool trade;
double step,lot,tp,sl,price,open;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   if(Digits==3 || Digits==5)
    {
     TakeProfit*=10;
     StopLoss*=10;     
     Step*=10;
     Slip*=10;
     Delta*=10;
     Prohod*=10;
    }
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {  
   datetime expiration = TimeCurrent()+3600*Expiration;
   if(Hour()==StartHour && Minute()==StartMin && Seconds()==0) open=Close[0];
   double delta=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_BUYSTOP)ord++;
         if(OrderType()==OP_SELLSTOP)ord++; 
        }
      }
    }
   
   if(Hour()==StartHour && Minute()==StartMin && Seconds()==0) trade=true;ord=0;            
   if(CountTrades()==0 && ord<1 && trade==true)
    {
     delta=open-Close[0];
     if(delta>Prohod*Point)
      {
        price=open+Delta*Point;
        step=Step;
        lot=Lots;    
        ticket=OrderSend(Symbol(),OP_BUYSTOP,lot,price,3,price-StopLoss*Point,price+TakeProfit*Point*0.5,"",Magic,expiration,Blue);
        trade=false;
      }
    } 
   
   if(CountTrades()==0 && ord<1 && trade==true)
    {    
     delta=Close[0]-open;
     if(delta>Prohod*Point)
      {     
        price=open-Delta*Point;
        step=Step;
        lot=Lots;         
        ticket=OrderSend(Symbol(),OP_SELLSTOP,lot,price,3,price+StopLoss*Point,price-TakeProfit*Point*0.5,"",Magic,expiration,Red);
        trade=false;
      }     
    }
    
   if(NewBar()==true)
    {   
      if(CountTrades()>0 && CountTrades()<=MaxTrades)
       {
        int otype = FindOrderType();
   
        if(otype == OP_BUY)
         {
          price = FindLastBuyPrice();
          step=StepCalc();
          if((price-Ask)/Point>=step)
           {
            lot=FindLastLot()*KLot;
            ticket=OrderSend(Symbol(),OP_BUY,NormalizeDouble(lot,2),Ask,Slip,0,0,"Buy Order",Magic,0,Blue);
            ModifyOrders();                 
           }
         }
         
        else if(otype == OP_SELL)
         {
          price = FindLastSellPrice();
          step=StepCalc();
          if((Bid-price)/Point>=step)
           {
            lot=FindLastLot()*KLot;
            ticket=OrderSend(Symbol(),OP_SELL,NormalizeDouble(lot,2),Bid,Slip,0,0,"Sell Order",Magic,0,Red);
            ModifyOrders();         
           }       
         }      
       }    
    }
    
   OrderMod();
       
   if(CountTrades()>0)DelOrder();
   Comment("\nЦена в ",StartHour," часов: ",open,
           "\nШаг: ",StepCalc(),
           "\nЛот: ",NormalizeDouble(FindLastLot(),2),
           "\nПозиций : ",CountTrades());    
  }
//+------------------------------------------------------------------+
avatar

vikas

  • 5 февраля 2015, 20:07
0
Хорошо. Только не умещается. Через <
<code>> выдаёт ошибку превышение по колли-
честву символов. Как быть? </code>

может частями?
avatar

vikas

  • 5 февраля 2015, 19:46
0
Наконецто добрался до дома. Так, посмотрите пожалуйста по ссылке вот этот вариант:
www.opentraders.ru/downloads/575/. Дальше там просто два варианта трала, ну это я потом сам вставлю. Главное что бы цена выставлялась.

avatar

vikas

  • 5 февраля 2015, 18:33
0
Логика там какая — по выставленному времени он определяет цену входа. — это
точка отсчёта. Затем после прохождения ценой определённого кол-ва пунктов,
выставляет стоповый ордер.Должен. Ну а раз цена не определилась, ордер не выставляется. А в тестере всё нормально.
avatar

vikas

  • 5 февраля 2015, 06:49
0
На демо то же самое. Устанавливаю на график, выставляю время, время подходит
и ничего не происходит. На менюшке цена входа отсутствует. Т.е. советник не
заработал.
avatar

vikas

  • 5 февраля 2015, 06:42
0
Да.Теперь всё как надо. Ух. Спасибо большое АМ2. Продолжим эксперименты.
avatar

vikas

  • 1 февраля 2015, 22:28
Начать торговлю с Альпари