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

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

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

AM2

  • 29 октября 2021, 12:01
0
на 1-е и скиньте ссылку на советник в базе
avatar

AM2

  • 29 октября 2021, 11:45
0
для мелкого левел 2


extern int Level2 = 50;

avatar

AM2

  • 29 октября 2021, 11:43
0
я сам нашел у вас в блоге
avatar

AM2

  • 28 октября 2021, 21:36
0
Появилась отложка, определили в каком направлении и какой тип. Sel Limit, sell stop. buy limit, buy stop. Выбрали звуковой файл выставили алерт по этой цене, ждем. Сняли ордер, озвучка, мол такой тип ордера снят, по такому инструменты. (Озвучки на делаю.)


avatar

AM2

  • 28 октября 2021, 19:40
+1
проверил. работает: www.opentraders.ru/downloads/3089/



avatar

AM2

  • 28 октября 2021, 19:11
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

AM2

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

AM2

  • 27 октября 2021, 21:09
0
на 28-е
avatar

AM2

  • 27 октября 2021, 21:08
0
а то что у вас на скрине это уже готовый индикатор?
avatar

AM2

  • 27 октября 2021, 11:35
0
сложный запутанный алгоритм. дальше не ко мне
avatar

AM2

  • 27 октября 2021, 11:26
0
не то что я хотел
вот допустим идет зеленая гребенка вверх, вам хочется чтобы при появлении красного столбика открыли сделку, но в реальности сразу может появиться сразу 3-10 красных столбиков.

опишите что делать в таком случае, я сделаю.
avatar

AM2

  • 27 октября 2021, 11:24
0
… стоповые ордера на СЕЛЛ не должны удаляться при появлении сигнала на БАЙ.
Они (не рыночный) удаляются при повторном сигнале этого же направления. И следующим ордером происходит усреднение рыночного ордера.


скрин

Пример: была сетка стоповых селл 0.01; 0.02 — 0.05. Имеем опять сигнал СЕЛЛ. Остаётся ордер 0.01 и удаляются стоповые. выставляется усредняющий селл с увеличением или коэффициентом.


скрин

Число начальных отложенных ордеров сетки на графике, пожалуйста, сделайте ограниченным. И пусть они добавляются по мере продвижения цены без ограничения их количества (число текущих отложек).


скрин

советник непростой. мне как вы написали непонятно
avatar

AM2

  • 26 октября 2021, 17:33
0
Индюк, походу, перерисовывается
рисует сильно. прогоните в тестере и увидите
avatar

AM2

  • 26 октября 2021, 17:27
0
добавил настройки индикатора, сделал сеть на каждом сигнале: www.opentraders.ru/downloads/3156/



покажите на скринах что доделать дальше
avatar

AM2

  • 26 октября 2021, 13:06
0
сейчас есть открытие закрытие по сигналу и несколько ордеров: www.opentraders.ru/downloads/3164/

avatar

AM2

  • 26 октября 2021, 12:27