Dim777777
Дмитрий

 
Уровень 14

  Торгую в компаниях:


Группа "Стол заказов MQL"

Рейтинг 2146



РЕКОМЕНДУЮ



Доработка советника Vinin

Arhiv WinRAR.rar (2 Kb)Здравствуйте Андрей, просьба доработать советник.Приведу пример на продажах: Сейчас советник работает так: появилась красная стрелка, голубая линия подвального индикатора находится выше определённого уровня. Закрытие всех ордеров на продажу происходит, если голубая линия пересечёт определённый уровень. Нужно переделать следующее: Пример на покупках: Появилась синяя стрелка вверх, голубая линия подвального индикатора с грубыми настройками находится ниже определённого уровня(настройки), голубая линия подвального индикатора с мелкими настройками находится ниже определённого уровня(настройки).Закрытие всех ордеров на покупку происходит, когда голубая линия подвального индикатора с мелкими настройками пересечёт определённый уровень(настройки).
  • 0
  • Просмотров: 2576
  • 27 октября 2021, 17:02
  • Dim777777
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
Zigzag на горизонтальных линиях экстремумах
27 октября 2021
27 октября 2021

Брокер для ваших роботов, 15 лет на рынке

Комментарии (33)

комментарий был удален 2021-10-27 17:03:41 Dim777777

+
0
avatar

  14  Dim777777 Автор Сообщений: 320 - Дмитрий

  • 27 октября 2021, 17:04
+
0
avatar

  14  Dim777777 Автор Сообщений: 320 - Дмитрий

  • 27 октября 2021, 17:05
+
0
на 28-е
avatar

  35  AM2 Сообщений: 16266 - Андрей

  • 27 октября 2021, 21:08
+
0
когда слишком большой период я ничего не гарантирую
avatar

  35  AM2 Сообщений: 16266 - Андрей

  • 27 октября 2021, 21:09
+
0
он уже работает на большом периоде, к нему просто нужно прилепить мелкий
avatar

  14  Dim777777 Автор Сообщений: 320 - Дмитрий

  • 27 октября 2021, 21:19
+
0
скиньте «FractalZigZagNoRepaint». а то я переустановил винду, индикаторы удалились.

все прописал, но проверить надо с индикатором:


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

//--- Inputs
extern double Lots       = 0.1;      // лот
extern double KLot       = 2;        // умножение лота
extern double MaxLot     = 5;        // максимальный лот
extern int StopLoss      = 500;      // лось
extern int TakeProfit    = 0;        // язь
extern int TrailingStop  = 25;       // трал
extern int Slip          = 30;       // реквот
extern int Shift         = 2;        // бар индикатора
extern int CloseSig      = 1;        // 1-закрытие по сигналу
extern int Magic         = 123;      // магик

extern string IndName    = "FractalZigZagNoRepaint";
extern bool CalculateOnBarClose    = true;
extern int  ZZDepth                = 12;
extern int  ZZDev                  = 5;

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
extern string IndName2   = "VininI_MA_WPR(v1)";
extern int WPR_Period    = 60;
extern int MA_Period     = 50;
extern int WPR_Period2   = 14;
extern int MA_Period2    = 10;
extern int Limit         = 1440;
extern int Level         = 50;
extern int Level2        = 50;

datetime t=0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   Comment("");
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   Comment("");
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
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,0,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(CountTrades()>0)
      lot=NormalizeDouble(Lots*MathPow(KLot,CountTrades()),2);
   if(lot>MaxLot)
      lot=Lots;
   return(lot);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CloseAll(int ot=-1)
  {
   bool cl;
   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==0 && (ot==0 || ot==-1))
              {
               RefreshRates();
               cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,_Digits),Slip,White);
              }
            if(OrderType()==1 && (ot==1 || ot==-1))
              {
               RefreshRates();
               cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,_Digits),Slip,White);
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Trailing()
  {
   bool mod;
   double 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()==OP_BUY)
              {
               if(Bid-OrderOpenPrice()>TrailingStop*_Point)
                 {
                  sl=NormalizeDouble(Bid-TrailingStop*_Point,_Digits);
                  if(OrderStopLoss()<sl)
                    {
                     Print("SL: ",sl, " TP: ",OrderTakeProfit());
                     mod=OrderModify(OrderTicket(),OrderOpenPrice(),sl,OrderTakeProfit(),0,Yellow);
                     return;
                    }
                 }
              }

            if(OrderType()==OP_SELL)
              {
               if(OrderOpenPrice()-Ask>TrailingStop*_Point)
                 {
                  sl=NormalizeDouble(Ask+TrailingStop*_Point,_Digits);
                  if(OrderStopLoss()>sl || (OrderStopLoss()==0))
                    {
                     Print("SL: ",sl, " TP: ",OrderTakeProfit());
                     mod=OrderModify(OrderTicket(),OrderOpenPrice(),sl,OrderTakeProfit(),0,Yellow);
                     return;
                    }
                 }
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   double lim = iCustom(NULL,0,IndName,CalculateOnBarClose,ZZDepth,ZZDev,0,Shift);
   double red = iCustom(NULL,0,IndName,CalculateOnBarClose,ZZDepth,ZZDev,1,Shift);

   double vin = iCustom(NULL,0,IndName2,WPR_Period,MA_Period,Limit,0,Shift);
   
   double vin21 = iCustom(NULL,0,IndName2,WPR_Period2,MA_Period2,Limit,0,Shift);
   double vin22 = iCustom(NULL,0,IndName2,WPR_Period2,MA_Period2,Limit,0,Shift+1);

   bool buy = lim!=EMPTY_VALUE && vin<-Level && vin21<-Level2;
   bool sell = red!=EMPTY_VALUE && vin>Level && vin21>Level2;

   if(TrailingStop>0)
      Trailing();

   if(t!=Time[0])
     {
      if(buy)
        {
         PutOrder(0,Ask);
        }
      if(sell)
        {
         PutOrder(1,Bid);
        }
      t=Time[0];
     }


   if(CloseSig>0)
     {
      if(vin21<Level2 && vin22>Level2)
        {
         CloseAll(0);
        }
      if(vin21>-Level2 && vin22<-Level2)
        {
         CloseAll(1);
        }
     }

   Comment("\n lime: ",lim,
           "\n red: ",red);
  }
//+------------------------------------------------------------------+

avatar

  35  AM2 Сообщений: 16266 - Андрей

  • 28 октября 2021, 14:21
+
0
А как сюда скинуть файл индикатора?
avatar

  14  Dim777777 Автор Сообщений: 320 - Дмитрий

  • 28 октября 2021, 15:28
+
0
//+------------------------------------------------------------------+
//| FractalZigZagNoRepaint.mq4
//| Copyright © www.pointzero-trading.com
//+------------------------------------------------------------------+
#property copyright ""
#property link ""

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 White
#property indicator_color2 Red
#property indicator_width1 3
#property indicator_width2 3
#define ZZBack 1

//-------------------------------
// Input parameters
//-------------------------------
extern bool CalculateOnBarClose = true;
extern int ZZDepth = 12;
extern int ZZDev = 5;

//-------------------------------
// Buffers
//-------------------------------
double ExtMapBuffer1[];
double ExtMapBuffer2[];

//-------------------------------
// Internal variables
//-------------------------------

// Fractals value -mine-
double fr_resistance = 0;
double fr_support = EMPTY_VALUE;
bool fr_resistance_change = EMPTY_VALUE;
bool fr_support_change = EMPTY_VALUE;

// zzvalues
double zzhigh= 0;
double zzlow = 0;

// Offset in chart
int nShift;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
// Arrows
SetIndexStyle(0,DRAW_ARROW,STYLE_DOT,1);
SetIndexArrow(0,233);
SetIndexBuffer(0,ExtMapBuffer1);
SetIndexStyle(1,DRAW_ARROW,STYLE_DOT,1);
SetIndexArrow(1,234);
SetIndexBuffer(1,ExtMapBuffer2);

// Data window
IndicatorShortName(«Fractal Zig Zag No Repaint»);
SetIndexLabel(0,«Fractal Up»);
SetIndexLabel(1,«Fractal Down»);

// Chart offset calculation
switch(Period())
{
case 1: nShift = 1; break;
case 5: nShift = 3; break;
case 15: nShift = 5; break;
case 30: nShift = 10; break;
case 60: nShift = 15; break;
case 240: nShift = 20; break;
case 1440: nShift = 80; break;
case 10080: nShift = 100; break;
case 43200: nShift = 200; break;
}
nShift=nShift*2;
return(0);
}
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
// Start, limit, etc…
int start=0;
int limit;
int counted_bars=IndicatorCounted();

// nothing else to do?
if(counted_bars<0)
return(-1);

// do not check repeated bars
limit=Bars-1-counted_bars;

// Check if ignore bar 0
if(CalculateOnBarClose==true) start=0;

// Check the signal foreach bar from past to present
for(int i=limit; i>=start; i--)
{
// Zig Zag high
double zzhighn=iCustom(Symbol(),0,«ZigZag»,ZZDepth,ZZDev,ZZBack,1,i);
if(zzhighn!=0) zzhigh=zzhighn;

// Zig Zag low
double zzlown=iCustom(Symbol(),0,«ZigZag»,ZZDepth,ZZDev,ZZBack,2,i);
if(zzlown!=0) zzlow=zzlown;

// Last fractals
double resistance=upper_fractal(i);
double support=lower_fractal(i);

//--------------------------------------------------------
// Show signals
//--------------------------------------------------------

// Show signal if it is a fractal and matches last zigzag high value
if(fr_support_change==true && fr_support==zzlow)
{
// Show arrow on fractal and pricetag
ExtMapBuffer1[i+2]=fr_support-nShift*Point;

}
else

// Show signal if it is a fractal and matches last zigzag low value
if(fr_resistance_change==true && fr_resistance==zzhigh)
{
// Show arrow on fractal and pricetag
ExtMapBuffer2[i+2]=fr_resistance+nShift*Point;
}
}
return(0);
}
//+------------------------------------------------------------------+
//| Custom code ahead
//+------------------------------------------------------------------+

/**
* Returns fractal resistance
* @param int shift
*/

double upper_fractal(int shift=0)
{
double middle=iHigh(Symbol(),0,shift+2);
double v1 = iHigh(Symbol(), 0, shift);
double v2 = iHigh(Symbol(), 0, shift+1);
double v3 = iHigh(Symbol(), 0, shift + 3);
double v4 = iHigh(Symbol(), 0, shift + 4);
if(middle>v1 && middle>v2 && middle>v3 && middle>v4/* && v2 > v1 && v3 > v4*/)
{
fr_resistance=middle;
fr_resistance_change=true;
} else {
fr_resistance_change=false;
}
return(fr_resistance);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
/**
* Returns fractal support and stores wether it has changed or not
* @param int shift
*/

double lower_fractal(int shift=0)
{
double middle=iLow(Symbol(),0,shift+2);
double v1 = iLow(Symbol(), 0, shift);
double v2 = iLow(Symbol(), 0, shift+1);
double v3 = iLow(Symbol(), 0, shift + 3);
double v4 = iLow(Symbol(), 0, shift + 4);
if(middle<v1 && middle<v2 && middle<v3 && middle<v4/* && v2 < v1 && v3 < v4*/)
{
fr_support=middle;
fr_support_change=true;
} else {
fr_support_change=false;
}
return(fr_support);
}

//+------------------------------------------------------------------+
avatar

  14  Dim777777 Автор Сообщений: 320 - Дмитрий

  • 28 октября 2021, 15:55
+
+1
avatar

  35  AM2 Сообщений: 16266 - Андрей

  • 28 октября 2021, 19:11
+
0
я не знаю как это сделать
avatar

  14  Dim777777 Автор Сообщений: 320 - Дмитрий

  • 28 октября 2021, 21:16
+
0
подскажите как это сделать
avatar

  14  Dim777777 Автор Сообщений: 320 - Дмитрий

  • 28 октября 2021, 21:30
+
0
я сам нашел у вас в блоге
avatar

  35  AM2 Сообщений: 16266 - Андрей

  • 28 октября 2021, 21:36
+
0
Большое спасибо
avatar

  14  Dim777777 Автор Сообщений: 320 - Дмитрий

  • 29 октября 2021, 06:56
+
0
Здравствуйте Андрей, что то не могу найти настройку уровня закрытия всех ордеров для подвального индикатора с мелкими настройками.
avatar

  14  Dim777777 Автор Сообщений: 320 - Дмитрий

  • 29 октября 2021, 08:12
+
0
для мелкого левел 2


extern int Level2 = 50;

avatar

  35  AM2 Сообщений: 16266 - Андрей

  • 29 октября 2021, 11:43
комментарий был удален 2021-10-29 11:52:18 Dim777777

+
0
А настройка уровня открытия для мелкого тогда где?
avatar

  14  Dim777777 Автор Сообщений: 320 - Дмитрий

  • 29 октября 2021, 11:53
комментарий был удален 2021-10-29 11:51:09 Dim777777

+
0
у меня сейчас стоит такое условие на открытие бай:

1. стрелка
2. большой впр ниже своего минус уровня
3. малый впр ниже своего минус уровня

закрытие бай: малый впр пересек верхний уровень сверху вниз
avatar

  35  AM2 Сообщений: 16266 - Андрей

  • 29 октября 2021, 12:01
+
0
Нет, закрытие нужно такое: Закрытие всех ордеров на покупку происходит, когда голубая линия подвального индикатора с мелкими настройками пересечёт определённый уровень(настройки).
avatar

  14  Dim777777 Автор Сообщений: 320 - Дмитрий

  • 29 октября 2021, 12:04
+
0
Нет, закрытие нужно такое: Закрытие всех ордеров на покупку происходит, когда голубая линия подвального индикатора с мелкими настройками пересечёт определённый уровень(настройки).Например нулевой уровень
avatar

  14  Dim777777 Автор Сообщений: 320 - Дмитрий

  • 29 октября 2021, 12:05
+
0
Т.е нужна отдельная независимая настройка уровня закрытия.Сможете поправить?:) 
avatar

  14  Dim777777 Автор Сообщений: 320 - Дмитрий

  • 29 октября 2021, 12:08
+
0
каким образом пересечет?
avatar

  35  AM2 Сообщений: 16266 - Андрей

  • 29 октября 2021, 12:19
+
0
Например, если открыта сделка на бай, то соответственно голубая линия пересечет например нулевой уровень снизу вверх. при продажах наоборот сверху вниз
avatar

  14  Dim777777 Автор Сообщений: 320 - Дмитрий

  • 29 октября 2021, 12:24
+
0
Нужно было картинку сразу прислать.Накосячил я.*wall* 
avatar

  14  Dim777777 Автор Сообщений: 320 - Дмитрий

  • 29 октября 2021, 12:25
+
0
не зря прошу скрины
avatar

  35  AM2 Сообщений: 16266 - Андрей

  • 29 октября 2021, 12:26
комментарий был удален 2021-10-29 13:08:25 Dim777777

+
0
смотрите если все ок то нет
avatar

  35  AM2 Сообщений: 16266 - Андрей

  • 29 октября 2021, 13:08
+
0
Всё ок, спасибо большое
avatar

  14  Dim777777 Автор Сообщений: 320 - Дмитрий

  • 29 октября 2021, 13:16
+
0
avatar

  35  AM2 Сообщений: 16266 - Андрей

  • 29 октября 2021, 13:07
+
0
Спасибо большое
avatar

  14  Dim777777 Автор Сообщений: 320 - Дмитрий

  • 29 октября 2021, 13:14
+
0
extern int Level         = 50; // уровень открытия большого впр
extern int Level2        = 50; // уровень открытия малого впр
extern int ClLevel       = 60; // уровень закрытия малого впр
avatar

  35  AM2 Сообщений: 16266 - Андрей

  • 29 октября 2021, 13:11

Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий