Помогите с трейлингом - страница 3

 
Profi_R, у тебя стоп перетаскивается?
 
Profi_R, у тебя стоп перетаскивается?

в советнике?
 
там где не успевает слить , там передвигает (дневки по фунту с нач.депо 100000, вторая модель)
 
у тебя очень не понятный код, не прослеживается мысли, сумбурно как-то например
   if ((Close[3] > Open[3])
      && ((Close[3] - Open[3]) > iCustom(NULL,0,"EKC", Length,1,0)) 


первое условие явно лишнее , т.к. повторяется во втором ведь значение индюка у тебя всегда положительное, потом я так понял в индикаторе ты хочешь видеть значения в пунктах, тогда нужно заменить "*10000" на "/Point", затем когда ты сравниваешь в эксперте ты опять берешь 1 буфер, у тебя его нет в индикаторе он равен "0" (поэтому условие срабатывает), если возьмешь исправишь на нулевой буфер не забудь перевести обратно в "*Point" иначе в левой части 0,0150, а в правой 140 пунктов и условие никогда не сработает

 
вот рез-ты твоего советника на EURUSD H4
Баров в истории	6740
Смоделировано тиков	151212
Качество моделирования	50.00%
Начальный депозит	100000.00
Общая прибыль	1152742.00
Общий убыток	-964009.50
Чистая прибыль	188732.50
Показатель прибыльности	1.20
Матожидание выигрыша	49.94
Абсолютная просадка	69140.00
Максимальная просадка (%)	92724.50 (28.9%)
Всего сделок	3779
Короткие позиции (% выигравших)	1833 (27.33%)
Длинные позиции (% выигравших)	1946 (31.71%)
Прибыльные сделки (% от всех)	1118 (29.58%)
Убыточные сделки (% от всех)	2661 (70.42%)
	Самая большая
прибыльная сделка	2037.50
убыточная сделка	-1437.00
	Средняя
прибыльная сделка	1031.08
убыточная сделка	-362.27
	Максимальное количество
непрерывных выигрышей (прибыль)	51 (73753.00)
непрерывных проигрышей (убыток)	96 (-43702.00)
	Максимальная
непрерывная прибыль (число выигрышей)	73753.00 (51)
непрерывный убыток (число проигрышей)	-43702.00 (96)
	Средний
непрерывный выигрыш	7
непрерывный проигрыш	17


на D1

Баров в истории	4240
Смоделировано тиков	21505
Качество моделирования	28.64%
Начальный депозит	100000.00
Общая прибыль	271613.50
Общий убыток	-199988.50
Чистая прибыль	71625.00
Показатель прибыльности	1.36
Матожидание выигрыша	183.18
Абсолютная просадка	32502.50
Максимальная просадка (%)	39566.50 (26.5%)
Всего сделок	391
Короткие позиции (% выигравших)	257 (38.13%)
Длинные позиции (% выигравших)	134 (45.52%)
Прибыльные сделки (% от всех)	159 (40.66%)
Убыточные сделки (% от всех)	232 (59.34%)
	Самая большая
прибыльная сделка	2055.50
убыточная сделка	-2641.50
	Средняя
прибыльная сделка	1708.26
убыточная сделка	-862.02
	Максимальное количество
непрерывных выигрышей (прибыль)	32 (62093.00)
непрерывных проигрышей (убыток)	50 (-39566.50)
	Максимальная
непрерывная прибыль (число выигрышей)	62093.00 (32)
непрерывный убыток (число проигрышей)	-39566.50 (50)
	Средний
непрерывный выигрыш	7
непрерывный проигрыш	10

 
Чего то я запутался... голова уже не варит...
 
Чего то я запутался... голова уже не варит...

ну тогда вот твой эксперт
//+------------------------------------------------------------------+
//|                                                          EKC.mq4 |
//|                                        Copyright © 2005, Profi_R |
//|                                               rvm_fam@fromru.com |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2005, Profi_R"
#property link      "rvm_fam@fromru.com"

//---- input parameters
extern int Length=2;
extern double NBars=5;
extern int TakeProfit=200;
//extern int TrailingStop=20;
//extern int StopLoss=30;
double Lots=1.0;
double Slippage=0.0;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//---- TODO: Add your code here.

//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//---- TODO: Add your code here.

//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//---- TODO: Add your code here.
   datetime prevtime;
   //double Tail=2.0, AverageCur=0.0, AveragePre=0.0, Total=0.0;
   int cnt=0;
   double SLSell=0.0,SLBuy=0.0;
   if ((Bars<200) || (TakeProfit<10)) return(0); // на графике менее 200 баров - выходим
                                                 // неверные параметры тейкпрофита
   //if (OrdersTotal()==1) return(0);  // нет ни одного открытого ордера
   if (AccountFreeMargin()<1000) return(0);  // денег нет - выходим
   
   if (prevtime==Time[0]) return(0);
      
   SLSell=High[Highest(NULL,0,MODE_HIGH,NBars,0)];
   SLBuy=Low[Lowest(NULL,0,MODE_LOW,NBars,0)];
   
   if (//(Close[3] > Open[3]) &&
      ((Close[3] - Open[3]) > iCustom(NULL,0,"EKC", Length,0,0)*Point) &&
      (MathMin(Close[2],Open[2])>=Close[3]) &&
      (Close[1] < Open[1]) &&//предыдущая свеча медвежья
      (High[3]<High[2]) &&//High[3] ниже High[2]
      (MathAbs(Open[3]-Close[3])>MathAbs(Open[2]-Close[2])) &&//тело [3] больше тела [2]
      (Close[1] < Close[3]))//предыдущий клоуз ниже клоуза[3]
      {
      OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,SLSell,Bid-TakeProfit*Point,"Вечерняя звезда",003,0,Green);
      SetIndexArrow(0,226);
      return(0);
      }
   if ((Close[3] < Open[3]) &&
      //&& ((Open[3] - Close[3]) > 0.0010)    
      (MathAbs(Open[3]-Close[3])>iCustom(NULL,0,"EKC", Length,0,4)*Point) &&
      (MathMax(Close[2],Open[2]) <= Close[3]) &&
      (Close[1] > Open[1]) &&
      (Low[3]>Low[2])&&
      //&& (MathAbs(Open[3]-Close[3])>MathAbs(Open[2]-Close[2]))
      (Close[1] > Close[3]))
      {
      OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,SLBuy,Ask+TakeProfit*Point,"Утренняя звезда",006,0,Purple);
      SetIndexArrow(0,225);
      return(0);
      }
   for(cnt=1;cnt<=OrdersTotal();cnt++)
      {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
      if (OrderType()<=OP_SELL && // это открытая позиция? OP_BUY или OP_SELL 
         OrderSymbol()==Symbol())    // инструмент совпадает?
         {
         if (OrderType()==OP_BUY)   // открыта длинная позиция
            {
            if (Open[1]<Close[1])
               {
               OrderModify(OrderTicket(),Ask,Low[1],OrderTakeProfit(),0,Blue);
               return(0);
               }
            }   
      else
        {
         if (Open[1]>Close[1])
            {
            OrderModify(OrderTicket(),Bid,High[1],OrderTakeProfit(),0,Blue);
            return(0);
            }
         }
      }
   }
prevtime = Time[0]; 
//----
   return(0);
  }


а это индикатор , я их обоих обозвал "EKC"

//+------------------------------------------------------------------+
//|                                                          EKC.mq4 |
//|                                        Copyright © 2005, Profi_R |
//|                                               rvm_fam@fromru.com |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2005, Profi_R"
#property link      "rvm_fam@fromru.com"

#property indicator_separate_window
#property indicator_minimum 0.0000
#property indicator_maximum 50
extern int Range=8;

#property indicator_color1 Plum

double Buffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_HISTOGRAM);
   SetIndexBuffer(0,Buffer);
   
   SetIndexDrawBegin(0,Range);
   SetIndexShift(0,0);
   SetIndexEmptyValue(0,0.0);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//---- 
       
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int CountedBars=IndicatorCounted();
   double sum=0;
   int i,cb=Bars-CountedBars-1;
//---- initial accumulation
   if(cb<Range) cb=Range;
   for(i=1;i<Range;i++,cb--)
      sum+=MathAbs(Open[cb]-Close[cb]); //складываем предыдущие тела - 7 штук от {1...7}
   while(cb>=0) //два раза
     {
      sum+=MathAbs(Open[cb]-Close[cb]); //прибавляем тело [1], во втором цикле [0]
      Buffer[cb]=(sum/Range)*10000; 
      // предыдущее значение индюка равно=сумма тел {1...7}+[1] деленная на range и умноженная на 10000
      // на втором цикле значение индюка на последнем баре равно=сумма тел {1...7}+[1]+[0] 
      // минус тело [8] деленная на range и умноженная на 10000
      sum-=MathAbs(Open[cb+Range-1]-Close[cb+Range-1]);//вычитаем тело [8]
      Comment(Buffer[cb]);
      cb--;
     }
//----
   return(0);
  }
 
Да, на свежую голову разобрался немного, подправил условия входа, вроде работает хорошо.