0
сделайте скрины со входами покрупнее и сделайте пояснения на скрине или тестом, здесь бай здесь сел.
avatar

AM2

  • 9 ноября 2019, 12:51
0
пока только набросок:



функцию повторной установки писать надо. быстро я ее не сделал. образец кода нужен.


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

//--- Inputs
extern double Lots       = 1;        // лот
extern int StopLoss      = 0;        // лось
extern int TakeProfit    = 0;        // язь
extern int Delta         = 300;      // расстояние от цены
extern int Count         = 5;        // число ордеров
extern int BULevel       = 250;      // уровень БУ
extern int BUPoint       = 30;       // пункты БУ
extern int Slip          = 0;        // реквот
extern int Magic         = 123;      // магик

double pr=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,Lots,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);
  }
//+------------------------------------------------------------------+
//| Подсчет ордеров по типу                                          |
//+------------------------------------------------------------------+
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 BU()
  {
   bool m;
   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(OrderOpenPrice()<=(Bid-(BULevel+BUPoint)*Point) && OrderOpenPrice()>OrderStopLoss())
                 {
                  m=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+BUPoint*Point,OrderTakeProfit(),0,Yellow);
                  return;
                 }
              }

            if(OrderType()==OP_SELL)
              {
               if(OrderOpenPrice()>=(Ask+(BULevel+BUPoint)*Point) && (OrderOpenPrice()<OrderStopLoss() || OrderStopLoss()==0))
                 {
                  m=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-BUPoint*Point,OrderTakeProfit(),0,Yellow);
                  return;
                 }
              }
           }
        }
     }
  }

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void SecondOrder()
  {
   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==5)
              {

              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(BULevel>0)
      BU();

// первое открытие

   if(CountTrades()<1)
     {
      if(CountOrders(4)<1)
        {
         pr=Bid;
         for(int i=1; i<=Count; i++)
            PutOrder(4,Bid+Delta*_Point*i);
        }
      if(CountOrders(5)<1)
        {
         for(int i=1; i<=Count; i++)
            PutOrder(5,Bid-Delta*_Point*i);
        }
     }

   Comment("\n Цена открытия сетки: ",pr);
  }
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+

avatar

AM2

  • 9 ноября 2019, 11:44
0
на 15-е
avatar

AM2

  • 9 ноября 2019, 10:59
0
доливки не увеличивает, усредняющие множит:



www.opentraders.ru/downloads/2476/
avatar

AM2

  • 8 ноября 2019, 21:43
0
покажите все подробно на скринах. не совсем понятно как открывать повторные ордера
avatar

AM2

  • 8 ноября 2019, 21:06
0
поправил сигнал: www.opentraders.ru/downloads/2451/


   bool buy=macd1>macd2 && macd2<macd3 && Close[2]<dn;
   bool sell=macd1<macd2 && macd2>macd3 && Close[2]>up;
avatar

AM2

  • 8 ноября 2019, 21:01
0
поменял сигнал местами: www.opentraders.ru/downloads/2472/

avatar

AM2

  • 8 ноября 2019, 20:55
0
2 уровня раздельно:


extern int UPLevel = 70;  
extern int DNLevel = 30;  


avatar

AM2

  • 7 ноября 2019, 23:40
0
avatar

AM2

  • 7 ноября 2019, 21:09
+1
Просьба добавить в советник усреднение по количеству баров а не пунктов


такой просьбы еще не было! :D 
на 13-е
avatar

AM2

  • 7 ноября 2019, 18:25
0
на сколько ордеров делать советник?
avatar

AM2

  • 7 ноября 2019, 18:23
0
тогда поставлю простейший вход и на 12-е
avatar

AM2

  • 7 ноября 2019, 18:05
0
Программа по которым составлялся советник — Gannzilla.

т.е. у вас уже есть советник?
avatar

AM2

  • 7 ноября 2019, 18:03
0
можешь по магикам разделить усреднение и доливки или в глобальной переменной по отдельности считать лот
avatar

AM2

  • 7 ноября 2019, 17:51
0
на 11-е
avatar

AM2

  • 6 ноября 2019, 18:02
0
за заказы где решение сразу не просматривается я не берусь
avatar

AM2

  • 6 ноября 2019, 13:01
0
сделал с реверсом и отключаемым закрытием по сигналу. поставил на опт, набирает когда без реверса и закрытия по сигналу:



www.opentraders.ru/downloads/2474/
avatar

AM2

  • 6 ноября 2019, 12:21
0
в базе есть советники в которых выставляются отложки на пробой и при срабатывании ставится еще такая же. по сути одно и то же
avatar

AM2

  • 6 ноября 2019, 11:44