0
Смоделировал в тестере для 1-го параметра:

avatar

AM2

  • 12 января 2016, 22:13
0
Дайте ссылку на сам советник?
avatar

AM2

  • 12 января 2016, 21:55
+1
Прибыль за месяц добавил: www.opentraders.ru/downloads/997

avatar

AM2

  • 12 января 2016, 21:46
0
он не всегда обновляется и поэтому Прошу Вас добавить в индикатор скрипт чтоб он сам обновлялся


Я очень хорошо помню этот индикатор. Я тогда потратил массу времени и сил чтобы внести правки в него, но бесполезно.
avatar

AM2

  • 12 января 2016, 21:43
0
Два убитых вечера показали


То что в этом топике, конечно сразу не получится.
avatar

AM2

  • 12 января 2016, 21:37
0
У вас в этом месяце был заказ. Буду смотрть если будет свободное время.
avatar

AM2

  • 12 января 2016, 21:35
0
Там 1000 тейк стоит а иначе сразу закрываются.
avatar

AM2

  • 12 января 2016, 21:05
0
Работы много, если забываю напоминайте, как только выкрою свободное время буду смотреть.
avatar

AM2

  • 12 января 2016, 20:59
0
Посмотрю, если разберусь в чужом коде поправлю. А где ссылка на советник?
avatar

AM2

  • 12 января 2016, 20:33
0
Пока сырой набросок. Ставит общий тейк на все ордера параметр 0 и на первую половину открытых ордеров если количество четное.




//+------------------------------------------------------------------+
//|                                                      MidTake.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

input int    StopLoss    = 3000; // стоп лосс ордера
input int    TakeProfit  = 10;   // тейк профит ордера
input int    Param       = 0;    // 0-All. 1-N/2.
input int    Count       = 10;   // количество ордеров которое считает советник
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Mode(int ord)
  {
   double all=0;
   double count=0,tp=0,sl=0;

   for(int i=ord-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol())
           {
            if(OrderType()==OP_BUY || OrderType()==OP_SELL)
              {
               all+=OrderOpenPrice()*OrderLots();
               count+=OrderLots();
              }
           }
        }
     }
   all=NormalizeDouble(all/count,Digits);

   for(int i=ord-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol())
           {
            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);
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CountTrades()
  {
   int count=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol())
           {
            if(OrderType()==OP_BUY || OrderType()==OP_SELL) count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CountOrders(int type)
  {
   int count=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol())
           {
            if(OrderType()==type) count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutOrder(int type,double pr)
  {
   int r=0;
   color clr=clrNONE;

   if(type==1 || type==3 || type==5)
     {
      clr=Red;
     }

   if(type==0 || type==2 || type==4)
     {
      clr=Blue;
     }

   r=OrderSend(NULL,type,0.1,NormalizeDouble(pr,Digits),0,0,0,"",0,0,clr);
   return;
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(CountTrades()<=Count)
     {
      if(Param==0 && CountTrades()>0) Mode(CountTrades());
      if(Param==1 && CountTrades()>1 && MathMod(CountTrades(),2)==0) Mode(CountTrades()/2);
     }
     
   if(IsTesting())
     {
      if(OrdersTotal()<1)
        {
         for(int i=1;i<=10;i++)
           {
            PutOrder(5,Bid-200*Point*i);
           }
        }
     }

   Comment("\n Остаток: ",MathMod(CountTrades(),2));
  }
//+------------------------------------------------------------------+

avatar

AM2

  • 12 января 2016, 20:30
0
ак трал только на евро и работает. на остальных парах — нет.

Значит нужно убирать контроль по символу
avatar

AM2

  • 12 января 2016, 20:03
0
Работает. Я еще дорабатывал. Обновил: www.opentraders.ru/downloads/1008/

avatar

AM2

  • 12 января 2016, 18:29
0
-Меняем этот же параметр на 2. Соответственно сов при одном ордере в рынке курит бамбук. При вхождении 2го ордера в рынок устанавливает первому ордеру тейк с заданным параметром(те же самые 10 пипс). При вхождении в рынок 3го ордера отдыхает(т. е. не предпринимает ничего). При вхождении в рынок 4го ордера нижним 2м(1му и 2му) устанавливает им усреднённый тейк с заданным параметром(те же самые 10 пипс), исключая 3й и 4й ордера. При вхождении в рынок 5го ордера отдыхает. При вхождении в рынок 6го ордера нижним 3м(1му, 2му и 3му) устанавливает усреднённый тейк с заданным параметром(те же самые 10 пипс), исключая 3й, 5й и 6й ордера.


И нужен простенький(ну как мне кажется)


Это только кажется.

1. 1 ордер — нет действий
2. 2 ордера — тейк первому
3. 3 ордера — нет действий
4. 4 ордера — первым двум усредненный тейк. N — всего, тейк N-2
5. 5 ордеров — нет действий
6. 6 ордеров — усредненный тейк N-3

Алгоритм. Советник включается, когда в рынке четное количество поз и вешает тейк по формуле: N/2 ордерам, где N — где N общее количество поз.

Так получается?
avatar

AM2

  • 12 января 2016, 18:25
0
трал не работает


Поставлю на тест посмотрю.
avatar

AM2

  • 12 января 2016, 17:44
0
Мм, я так понимаю что мне в «стол заказов» вход «заказан».

Парочку другую интересных топиков сделаете и я еще свой плюсик добавлю :) 
avatar

AM2

  • 12 января 2016, 04:43
0
Добавил трал для каждого ордера: www.opentraders.ru/downloads/1008/



Тестируйте и дальше буду добавлять исправлять.
avatar

AM2

  • 12 января 2016, 04:30
0
После лося сразу выставил увеличенный: www.opentraders.ru/downloads/1006/


avatar

AM2

  • 11 января 2016, 22:25
0
1. п.1 Регулируется промежутком времени для выставления ордеров, просто уменьшите его.
2. У меня после лося выставляет на следующий день увеличенным лотом.
avatar

AM2

  • 11 января 2016, 21:23
0
Поправил. Советник открыл серию сел и бай. Вывод в бу могу сделать таким образом:
Указываем количество ордеров BUOrders которые выводим в БУ по профиту, т.е закрываем всю серию если профит достиг уровня BUProfit в валюте.

Делаем так БУ?

avatar

AM2

  • 11 января 2016, 21:16
0
Я пока себе заготовку сделал. Этот код нарисует линию в самом первом окне, если бросаешь на любой график. От этого потом дальше плясать можно.


//+------------------------------------------------------------------+
//|                                                  ChartsLevel.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
#property indicator_chart_window

input double Level1=0.7;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
void PutHLine(long chartid, string name,double price)
  {
   ObjectCreate(0,name,OBJ_HLINE,0,0,price);
//--- установим цвет линии
   ObjectSetInteger(0,name,OBJPROP_COLOR,Red);
//--- установим толщину линии
   ObjectSetInteger(0,name,OBJPROP_WIDTH,1);
  }
//+------------------------------------------------------------------+
//| 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[])
  {
//---
  long ch=ChartFirst();
  ObjectCreate(ch,"rr1",OBJ_HLINE,0,0,Open[0]);
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+

avatar

AM2

  • 11 января 2016, 18:31