0
У меня с этой библиотекой виснет терминал.
avatar

AM2

  • 3 февраля 2016, 10:39
0
Возможно ли зделать этот идикатор #SBNR PRO trend не перерисовываемым? Если да то прошу Вас переделать.

Переделывать чужой индикатор и к тому же декомпил я не возьмусь. Могу попробовать написать по вашему алгоритму, но это будет уже другой заказ.
avatar

AM2

  • 3 февраля 2016, 09:29
0
К индикатору д.б. длл. Ее в архиве нет.
avatar

AM2

  • 3 февраля 2016, 09:23
+3
Нужно делать систему два в одном как хед энд шолдерс :) 
avatar

AM2

  • 3 февраля 2016, 09:15
0
Вы лучше дайте мне ссылку на индикатор и советник, которые нужно совместить и я сам соединю их.
avatar

AM2

  • 3 февраля 2016, 04:43
0
Приветствую! Доработайте Пожалуйста!
1-см. рис.
2- закрытие ордера по: Т.П, С.Л, или обратному сигналу ( сейчас у некоторх Д.Ц ордера закрываются сразу после открытия)
3- остановка торговли после закрытия текущей сетки ордеров


Лучше сделать новым топиком. Опишите все максимально подробно, со скринами, логами, для какого ДЦ будем настраивать, какой тип счета и др. :) 
avatar

AM2

  • 2 февраля 2016, 16:52
0
На 4-х знаке нормально будет работать: www.opentraders.ru/downloads/1026/

avatar

AM2

  • 2 февраля 2016, 10:32
0
В этом индикаторе визуальное отображение не соответствует сигналу, который дает индикатор.
avatar

AM2

  • 2 февраля 2016, 10:06
0
В том то и дело, что недостаточно опыта.


Конечно, нагородили в ТЗ такую тучу условий и модификаций!

В максимально упрощенном варианте есть:

1. Установка рыночного и лимитного ордера по условию.
2. Установка стопа ордеров на один уровень.
3. Удаление отлоги при тейке первого ордера.
4. Мод первого ордера при срабатывании отлоги.


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

extern double Lots         = 0.1;
extern int    StopLoss     = 0;
extern int    TakeProfit   = 0;
extern int    Expiration   = 20;
extern int    Step         = 500;
extern int    Slip         = 30;
extern int    Magic        = 111;

datetime t=0;
double OpenPrice=0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

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

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutOrder(int type,double price)
  {
   int r=0;
   color clr=Green;
   double sl=0,tp=0;
   datetime ex=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==1 && StopLoss>0) sl=NormalizeDouble(price+StopLoss*2*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);
      if(type==0 && StopLoss>0) sl=NormalizeDouble(price-StopLoss*2*Point,Digits);
     }

   if(type==2 || type==3) ex=TimeCurrent()+Expiration*3600;

   r=OrderSend(NULL,type,Lots,NormalizeDouble(price,Digits),Slip,sl,tp,"",Magic,ex,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()==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() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==type) 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()==2 || OrderType()==3) del=OrderDelete(OrderTicket());
           }
        }
     }
   return;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Mode()
  {
   bool m;

   if(OrderSelect(OrdersTotal()-2,SELECT_BY_POS,MODE_TRADES))
     {
      if(OrderSymbol()==Symbol() || OrderMagicNumber()==Magic)
        {
         if(OrderType()==OP_BUY)
           {
            if(OrderTakeProfit()!=OrderOpenPrice()) m=OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),OrderOpenPrice(),0,Yellow);
            return;
           }

         if(OrderType()==OP_SELL)
           {
            if(OrderTakeProfit()!=OrderOpenPrice()) m=OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),OrderOpenPrice(),0,Yellow);
            return;
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| OnTick function                                                  |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(CountTrades()<1 && t!=Time[0])
     {
      //--- sell
      if(Close[1]<Open[1])
        {
         OpenPrice=Bid;
         PutOrder(1,Bid);
         if(CountOrders(3)<1) PutOrder(3,Bid+Step*Point);
        }

      //--- buy 
      if(Close[1]>Open[1])
        {
         OpenPrice=Ask;
         PutOrder(0,Ask);
         if(CountOrders(2)<1) PutOrder(2,Ask-Step*Point);
        }
      t=Time[0];
     }

// сработал тейк удаляем отлогу
   if(Bid>OpenPrice+TakeProfit*Point || Ask<OpenPrice-TakeProfit*Point) DelOrder();
   
// мод стопа первого ордера
   if(CountTrades()>1) Mode();

   Comment("\n");
  }
//+------------------------------------------------------------------+

avatar

AM2

  • 2 февраля 2016, 10:03
0
Я сейчас попробую набросать максимально упрощенный вариант.
avatar

AM2

  • 2 февраля 2016, 08:42
0
Если автор топика напишет не «прошу написать советник» а «нука давай делай мне советник холоп» Вы будете делать или нет!

Здесь все корректно.
avatar

AM2

  • 1 февраля 2016, 22:05
0
а если по человечески без лд? :)  я люблю все упрощать. если грубо то от открытия дня ставим на расстоянии 500 и 1000 туда сюда линии. и вы думаете что из этого выйдет что то путное?
avatar

AM2

  • 1 февраля 2016, 21:58
0
Мне не удалось найти индикатор FisherG.

Он в конце заказа.
avatar

AM2

  • 1 февраля 2016, 21:27
0
Есть сигнал от индикатора, есть сделка. Нет сигнала нет сделки.
avatar

AM2

  • 1 февраля 2016, 21:21
0
Оно?




//+------------------------------------------------------------------+
//|                                                  NonLagMA_v4.mq4 |
//|                                Copyright © 2006, TrendLaboratory |
//|            http://finance.groups.yahoo.com/group/TrendLaboratory |
//|                                   E-mail: igorad2003@yahoo.co.uk |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006, TrendLaboratory"
#property link      "http://finance.groups.yahoo.com/group/TrendLaboratory"


#property indicator_chart_window
#property indicator_buffers 3
#property indicator_color1 Yellow
#property indicator_width1 2
#property indicator_color2 SkyBlue
#property indicator_width2 2
#property indicator_color3 Tomato
#property indicator_width3 2


//---- input parameters
extern int     Price          = 0;
extern int     Length         = 21;
extern int     Displace       = 0;
extern int     Sdvig          = 0; // с какой свечи считаем
extern int     Filter         = 0;
extern int     Color          = 1;
extern int     Corner         = 1;
extern int     ColorBarBack   = 0;
extern double  Deviation      = 0;
extern color   CLR            = Red;

double Cycle=4;

//---- indicator buffers
double MABuffer[];
double UpBuffer[];
double DnBuffer[];
double price[];
double trend[];
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutLabel(string text,string name, int x, int y)
  {
   if(Corner==0 || Corner==2) x-=200;
//--- создадим текстовую метку
   if(ObjectFind(name)<0)
     {
      if(!ObjectCreate(0,name,OBJ_LABEL,0,0,0))
        {
         Print(__FUNCTION__,": не удалось создать текстовую метку! Код ошибки = ",GetLastError());
        }
     }
//--- установим координаты метки
   ObjectSetInteger(0,name,OBJPROP_XDISTANCE,x);
   ObjectSetInteger(0,name,OBJPROP_YDISTANCE,y);
//--- установим угол графика, относительно которого будут определяться координаты точки
   ObjectSetInteger(0,name,OBJPROP_CORNER,Corner);
//--- установим текст
   ObjectSetString(0,name,OBJPROP_TEXT,text);
//--- установим шрифт текста
   ObjectSetString(0,name,OBJPROP_FONT,"Arial");
//--- установим размер шрифта
   ObjectSetInteger(0,name,OBJPROP_FONTSIZE,14);
//--- установим цвет
   ObjectSetInteger(0,name,OBJPROP_COLOR,CLR);
  }
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   int ft=0;
   string short_name;
//---- indicator line
   IndicatorBuffers(5);
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,MABuffer);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,UpBuffer);
   SetIndexStyle(2,DRAW_LINE);
   SetIndexBuffer(2,DnBuffer);
   SetIndexBuffer(3,price);
   SetIndexBuffer(4,trend);
   IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS));
//---- name for DataWindow and indicator subwindow label
   short_name="NonLagMA("+Length+")";
   IndicatorShortName(short_name);
   SetIndexLabel(0,"NLMA");
   SetIndexLabel(1,"Up");
   SetIndexLabel(2,"Dn");
//----
   SetIndexShift(0,Displace);
   SetIndexShift(1,Displace);
   SetIndexShift(2,Displace);

   SetIndexDrawBegin(0,Length*Cycle+Length);
   SetIndexDrawBegin(1,Length*Cycle+Length);
   SetIndexDrawBegin(2,Length*Cycle+Length);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| NonLagMA_v4                                                     |
//+------------------------------------------------------------------+
int start()
  {
   int    i,shift,counted_bars=IndicatorCounted(),limit;
   double alfa,beta,t,Sum,Weight,g;
   double pi=3.1415926535;

   double Coeff=3*pi;
   int Phase=Length-1;
   double Len=Length*Cycle+Phase;

   if(counted_bars>0) limit=Bars-counted_bars;
   if( counted_bars < 0 )  return(0);
   if(counted_bars==0) limit=Bars-Len-1;
   if(counted_bars<1)

      for(i=1;i<Length*Cycle+Length;i++)
        {
         MABuffer[Bars-i]=0;
         UpBuffer[Bars-i]=0;
         DnBuffer[Bars-i]=0;
        }

   for(shift=limit;shift>=Sdvig;shift--)
     {
      Weight=0; Sum=0; t=0;

      for(i=0;i<=Len-1;i++)
        {
         g=1.0/(Coeff*t+1);
         if(t<= 0.5) g = 1;
         beta = MathCos(pi*t);
         alfa = g * beta;
         //if (shift>=1) price[i] = iMA(NULL,0,Per,Displace,Mode,Price,shift+i); 
         //else 
         price[i]=iMA(NULL,0,1,0,MODE_SMA,Price,shift+i);
         Sum+=alfa*price[i];
         Weight+=alfa;
         if(t<1) t+=1.0/(Phase-1);
         else if(t<Len-1) t+=(2*Cycle-1)/(Cycle*Length-1);
        }

      if(Weight>0) MABuffer[shift]=(1.0+Deviation/100)*Sum/Weight;

      if(Filter>0)
        {
         if(MathAbs(MABuffer[shift]-MABuffer[shift+1])<Filter*Point) MABuffer[shift]=MABuffer[shift+1];
        }

      if(Color>0)
        {
         trend[shift]=trend[shift+1];
         if(MABuffer[shift]-MABuffer[shift+1] > Filter*Point) trend[shift]= 1;
         if(MABuffer[shift+1]-MABuffer[shift] > Filter*Point) trend[shift]=-1;

         if(trend[shift]>0)
           {
            UpBuffer[shift]=MABuffer[shift];
            if(trend[shift+ColorBarBack]<0) UpBuffer[shift+ColorBarBack]=MABuffer[shift+ColorBarBack];
            DnBuffer[shift]=EMPTY_VALUE;
           }

         if(trend[shift]<0)
           {
            DnBuffer[shift]=MABuffer[shift];
            if(trend[shift+ColorBarBack]>0) DnBuffer[shift+ColorBarBack]=MABuffer[shift+ColorBarBack];
            UpBuffer[shift]=EMPTY_VALUE;
           }
        }
     }
     
     PutLabel("На текущей:         "+DoubleToString(MABuffer[0],Digits),"1",220,50);
     PutLabel("На предыдущей: "+DoubleToString(MABuffer[1],Digits),"2",220,70);
     
   return(0);
  }
//+------------------------------------------------------------------+

avatar

AM2

  • 1 февраля 2016, 21:14
0
avatar

AM2

  • 1 февраля 2016, 20:20
0
Сейчас займусь.
avatar

AM2

  • 1 февраля 2016, 19:57
0
Если восстановите из декомпила алгоритм расчета уровней, тогда я продолжу :D 

Вот я немного начал:


      ld_0 = ld_100 / li_188;                                                 //iOpen(Symbol(), PERIOD_D1, 0);
      ld_8 = (ld_196 - ld_164 / 2.0) * (ld_196 - ld_164 / 2.0) / li_188;      //(MathSqrt(iOpen(Symbol(), PERIOD_D1, 0))-...
      ld_16 = (ld_196 + ld_164 / 2.0) * (ld_196 + ld_164 / 2.0) / li_188;
      ld_24 = (ld_196 + ld_164) * (ld_196 + ld_164) / li_188;
      ld_32 = (ld_196 - ld_164) * (ld_196 - ld_164) / li_188;
avatar

AM2

  • 1 февраля 2016, 19:34
0
Андрей, может посмотрите мой заказ?!.. Не хотелось бы разводить дубликаты топика, так как этот не попадает под условия заказа, а именно более одного заказа в январе месяце.


Я сейчас смотрю. А почему сами не пишете, у вас ведь нормально получается?
avatar

AM2

  • 1 февраля 2016, 19:08
0
Исходников индикаторов, требуемых для советника нет…  


Желательно конечно, чтобы исходники были.

Привет.

Помогите создать советкика)

Работать будет на мт4.



Он содержит два индикатора

1.SEFC10
cloud.mail.ru/public/8Sbw/59h1HdpL3
2.SEFC05
cloud.mail.ru/public/EWiR/2aGgYZW3u

И так сама работа советника!

Тейк Профит не нужен вообще)
Стоп Лосс по индикатору SEFC10 потом переносится в безубыток на 1п от ордера.
Открытие ордера должно происходить при пересечении линий второго индикатора закрываться также, например:
рынок пошел вверх линии пересеклись открылся ордер buy, потом вниз пересеклись линии ордер buy закрывается, а sell открывается так и дальше.
+ советник должен работать только по закрытым свечам, последнюю свечу не считать!

На конец функции:

1. Размер лота.
2. Время работы.
avatar

AM2

  • 1 февраля 2016, 19:03