0
как вы предлагаете объяснить машине что это шкала и даблклик?
avatar

AM2

  • 24 апреля 2018, 20:23
+1
этот вариант попробуйте на постоянном поддержании:


//+------------------------------------------------------------------+
//|                                                         Lock.mq4 |
//|                                              Copyright 2018, AM2 |
//|                                      http://www.forexsyatems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, AM2"
#property link      "http://www.forexsyatems.biz"
#property version   "1.00"
#property strict

extern double BLot       = 0.1;      // бай лот
extern double SLot       = 0.05;     // селл лот
extern double Pro        = 30;       // процент
extern int Slip          = 30;       // реквот
extern int Magic         = 111;      // магик 
extern int LMagic        = 222;      // магик лока
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

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

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutOrder(int type,double price,double lot,int mn)
  {
   int r=0;
   color clr=Green;

   if(type==1 || type==3 || type==5)
     {
      clr=Red;
     }

   if(type==0 || type==2 || type==4)
     {
      clr=Blue;
     }

   r=OrderSend(NULL,type,lot,NormalizeDouble(price,Digits),Slip,0,0,"",mn,0,clr);
   return;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CountTrades(int mn)
  {
   int count=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==mn)
           {
            if(OrderType()<2) count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double Lots(int type)
  {
   double lot=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol())
           {
            if(OrderType()==type) lot+=OrderLots();
           }
        }
     }
   return(lot);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(CountTrades(Magic)<1)
     {
      PutOrder(0,Ask,BLot,Magic);
      PutOrder(1,Bid,SLot,Magic);
     }

   if(Lots(1)/Lots(0)*100<Pro && Lots(0)>Lots(1)) PutOrder(1,Ask,Lots(0)*Pro*0.01-Lots(1),LMagic);
   if(Lots(0)/Lots(1)*100<Pro && Lots(1)>Lots(0)) PutOrder(1,Bid,Lots(1)*Pro*0.01-Lots(0),LMagic);

   Comment("\n Buy Lots: ",Lots(0),
           "\n Sell Lots: ",Lots(1));
  }
//+------------------------------------------------------------------+

avatar

AM2

  • 24 апреля 2018, 19:55
+1
Советник должен всегда поддерживать минимальный % от противоположных ордеров.


пока реализовано только однократное выставление лока




//+------------------------------------------------------------------+
//|                                                         Lock.mq4 |
//|                                              Copyright 2018, AM2 |
//|                                      http://www.forexsyatems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, AM2"
#property link      "http://www.forexsyatems.biz"
#property version   "1.00"
#property strict

extern double BLot       = 0.1;      // бай лот
extern double SLot       = 0.05;     // селл лот
extern double Pro        = 30;       // процент
extern int Slip          = 30;       // реквот
extern int Magic         = 111;      // магик 
extern int LMagic        = 222;      // магик лока
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

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

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutOrder(int type,double price,double lot,int mn)
  {
   int r=0;
   color clr=Green;

   if(type==1 || type==3 || type==5)
     {
      clr=Red;
     }

   if(type==0 || type==2 || type==4)
     {
      clr=Blue;
     }

   r=OrderSend(NULL,type,lot,NormalizeDouble(price,Digits),Slip,0,0,"",mn,0,clr);
   return;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CountTrades(int mn)
  {
   int count=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==mn)
           {
            if(OrderType()<2) count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double Lots(int type)
  {
   double lot=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) lot+=OrderLots();
           }
        }
     }
   return(lot);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(CountTrades(Magic)<1)
     {
      PutOrder(0,Ask,BLot,Magic);
      PutOrder(1,Bid,SLot,Magic);
     }

   if(CountTrades(LMagic)<1)
     {
      if(Lots(1)/Lots(0)*100<Pro && Lots(0)>Lots(1)) PutOrder(1,Ask,Lots(0)*Pro*0.01-Lots(1),LMagic); 
      if(Lots(0)/Lots(1)*100<Pro && Lots(1)>Lots(0)) PutOrder(1,Bid,Lots(1)*Pro*0.01-Lots(0),LMagic);
     }
     
   Comment("\n Buy Lots: ",Lots(0),
           "\n Sell Lots: ",Lots(1));
  }
//+------------------------------------------------------------------+

avatar

AM2

  • 24 апреля 2018, 19:50
+1
посмотрю сегодня.
avatar

AM2

  • 24 апреля 2018, 17:00
0
А ты не этот случайно Рамиль?
А то скромничают тут понимаете ли! :D 
avatar

AM2

  • 23 апреля 2018, 08:05
0
это уже 3-й заказ в месяц. черпак норма! :D 
avatar

AM2

  • 22 апреля 2018, 08:43
0
это анимация, быстро такое не сделаешь. с этим не ко мне.

avatar

AM2

  • 21 апреля 2018, 17:33
0
1) как задать координаты на выводе для Прямоугольной метки?
2) можно ли как то вывести сразу 2 прямоугольные метки(наложенных 1 на 1)? тобишь если мне нужно вывести 10 прямоугольника мне нужно 10 раз писать на выводе это?:
RectD1(«L11»);
RectD2(«L12»);





//+------------------------------------------------------------------+
//|                                                         Rect.mq4 |
//|                                              Copyright 2018, AM2 |
//|                                      http://www.forexsyatems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, AM2"
#property link      "http://www.forexsyatems.biz"
#property version   "1.00"
#property strict
#property indicator_chart_window
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   ObjectsDeleteAll(0,0,OBJ_RECTANGLE_LABEL);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Rect(string name,int x,int y)
  {
   ObjectDelete(0,name);
//--- создадим прямоугольную метку 
   ObjectCreate(0,name,OBJ_RECTANGLE_LABEL,0,0,0);
//--- установим координаты метки 
   ObjectSetInteger(0,name,OBJPROP_XDISTANCE,x);
   ObjectSetInteger(0,name,OBJPROP_YDISTANCE,y);
//--- установим толщину плоской границы
   ObjectSetInteger(0,name,OBJPROP_WIDTH,0);
//--- установим размеры метки 
   ObjectSetInteger(0,name,OBJPROP_XSIZE,50);
   ObjectSetInteger(0,name,OBJPROP_YSIZE,20);
//--- установим цвет фона 
   ObjectSetInteger(0,name,OBJPROP_BGCOLOR,Red);
//--- установим угол графика, относительно которого будут определяться координаты точки 
   ObjectSetInteger(0,name,OBJPROP_CORNER,0);
//--- отобразим на переднем (false) или заднем (true) плане 
   ObjectSetInteger(0,name,OBJPROP_BACK,false);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   for(int i=1;i<10;i++) Rect("L"+(string)i,11,22*i);
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+

avatar

AM2

  • 21 апреля 2018, 16:47
0
сначала буду делать только с одним алексом, т.к. только там нужен вызов 16 буферов индикаторов. после выходных.
avatar

AM2

  • 20 апреля 2018, 20:37
0
avatar

AM2

  • 20 апреля 2018, 08:12
0


avatar

AM2

  • 20 апреля 2018, 06:57
0
прогнал на H4. есть оба направления:



значит где то перегнули с настройками. это уже для самостоятельного поиска.
вот мои:

avatar

AM2

  • 19 апреля 2018, 19:54
0
скиньте ваши настройки, логи
avatar

AM2

  • 19 апреля 2018, 17:40
Начать торговлю с Альпари