+1
покажите то что надо на скринах
avatar

AM2

  • 29 августа 2018, 20:23
0
покажите все по пунктам на скринах
avatar

AM2

  • 29 августа 2018, 20:21
0
здравствуйте. сам советник не должен выставлять ордера.

это нужно для теста. если не надо ставьте 0. а иначе как его тестировать?

extern int BuySell = 1; // 1-бай 2-селл 0-нет
avatar

AM2

  • 29 августа 2018, 20:06
0
сделал набросок. распишите все подробно на скринах, весь цикл.




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

//--- Inputs
extern double Lot1       = 0.1;      // лот 1
extern double Lot2       = 0.2;      // лот 2
extern int StopLoss      = 444;      // лось
extern int TakeProfit    = 555;      // язь
extern int Slip          = 30;       // реквот
extern int BuySell       = 1;        // 1-бай 2-селл 0-нет
extern int Delta         = 200;      // расстояние от позы
extern int StopLimit     = 1;        // 1-стоп 2-лимит
extern int Magic1        = 111;      // магик 1
extern int Magic2        = 222;      // магик 2

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,double lot,int magic)
  {
   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()==Magic1 || OrderMagicNumber()==Magic2))
           {
            if(OrderType()<2) count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int TypeOrder()
  {
   int type=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic1)
           {
            if(OrderType()<2) type=OrderType();
           }
        }
     }
   return(type);
  }
//+------------------------------------------------------------------+
//| Подсчет ордеров по типу                                          |
//+------------------------------------------------------------------+
int CountOrders(int type=-1)
  {
   int count=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic2)
           {
            if(OrderType()==type || type==-1) 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()==Magic2)
           {
            if(OrderType()>1) del=OrderDelete(OrderTicket());
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(CountTrades()<1)
     {
      DelOrder();
      if(BuySell==1) PutOrder(0,Ask,Lot1,Magic1);
      if(BuySell==2) PutOrder(1,Bid,Lot1,Magic1);
     }

   if(CountTrades()>0)
     {
      if(StopLimit==1)
        {
         if(CountOrders(4)<1 && TypeOrder()==1) PutOrder(4,Bid+Delta*_Point,Lot2,Magic2);
         if(CountOrders(5)<1 && TypeOrder()==0) PutOrder(5,Bid-Delta*_Point,Lot2,Magic2);
        }

      if(StopLimit==2)
        {
         if(CountOrders(2)<1 && TypeOrder()==0) PutOrder(2,Bid-Delta*_Point,Lot2,Magic2);
         if(CountOrders(3)<1 && TypeOrder()==1) PutOrder(3,Bid+Delta*_Point,Lot2,Magic2);
        }
     }
  }
//+------------------------------------------------------------------+

avatar

AM2

  • 28 августа 2018, 21:11
0
посмотрю сегодня
avatar

AM2

  • 28 августа 2018, 17:43
0
посмотрю сегодня
avatar

AM2

  • 27 августа 2018, 17:26
0
Как с этой заразой работать?


строит уровни сразу: www.opentraders.ru/downloads/2011/

avatar

AM2

  • 23 августа 2018, 20:41
0
сделал 3 строчки:




//+------------------------------------------------------------------+
//|                                                       Profit.mq4 |
//|                                              Copyright 2018, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property strict
#property indicator_chart_window
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutLabel(string name,string text,int x,int y)
  {
//--- создадим текстовую метку
   ObjectCreate(0,name,OBJ_LABEL,0,0,0);
//--- установим координаты метки
   ObjectSetInteger(0,name,OBJPROP_XDISTANCE,x);
   ObjectSetInteger(0,name,OBJPROP_YDISTANCE,y);
//--- установим угол графика, относительно которого будут определяться координаты точки
   ObjectSetInteger(0,name,OBJPROP_CORNER,2);
//--- установим текст
   ObjectSetString(0,name,OBJPROP_TEXT,text);
//--- установим шрифт текста
   ObjectSetString(0,name,OBJPROP_FONT,"Arial");
//--- установим размер шрифта
   ObjectSetInteger(0,name,OBJPROP_FONTSIZE,12);
//--- установим цвет
   ObjectSetInteger(0,name,OBJPROP_COLOR,Red);
  }
//+------------------------------------------------------------------+
//| 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[])
  {
//---
   int co=0;
   double pp=0,lp=0;

   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderType()<2) co++;
         pp+=MathAbs((OrderOpenPrice()-OrderTakeProfit())/MarketInfo(SymbolName(i,0),MODE_POINT));
         lp+=MathAbs((OrderOpenPrice()-OrderStopLoss())/MarketInfo(SymbolName(i,0),MODE_POINT));
        }
     }

   PutLabel("pp","Профит в пунктах: "+(string)NormalizeDouble(pp,2),22,44);
   PutLabel("lp","Убыток в пунктах: "+(string)NormalizeDouble(lp,2),22,22);
   PutLabel("co","Число позиций: "+(string)co,22,66);

//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+



остальное буду смотреть после уточнения информации.
avatar

AM2

  • 23 августа 2018, 20:19
0
покажите на скрине какие ордера будут в рынке в момент подсчета
avatar

AM2

  • 23 августа 2018, 17:44
0
деление на ноль было. замените эту строчку(103):

if(count>0) all=NormalizeDouble(all/count,Digits);
avatar

AM2

  • 23 августа 2018, 17:38
0
готово: www.opentraders.ru/downloads/2031/



сигнал редкий. играйте настройками индикатора и переменной для поиска сигнала:

extern int Count = 5;// на сколько баров ищем подтверждение
avatar

AM2

  • 20 августа 2018, 17:30
0
так получился цельный советник, а ваше первоначальное тз не проработано до конца. просто сделать 2 ордера и убыток в течение часа тоже можно.
avatar

AM2

  • 19 августа 2018, 22:14
0
получился советник десятилетка на 13% в год:



и с такой же просадкой:



www.opentraders.ru/downloads/2032/

avatar

AM2

  • 19 августа 2018, 19:18
0
через час после открытия первого лота открывается ставка в противоположенном направлении и закрывает обе ставки при достижении положительного профита например в 10$


а если снова пошли в другую сторону? т.о. может и по 10 сделок намотать и лот подпрыгнет нереально.
avatar

AM2

  • 19 августа 2018, 12:10