0
1. распознаем цвет фона. допустим это лайм #00FF00
2. чтобы сделать из лайма зеленый #00CC00 заменяем в коде цвета FF на CC.
или прописываем другой алгоритм по таблице веб цветов.
avatar

AM2

  • 14 декабря 2018, 18:20
0
нашел еще одну ошибку в функциях:




//+------------------------------------------------------------------+
//|                                                    DealsInfo.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

input int days=11;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutLabel(string name,string text,int x,int y)
  {
   ObjectDelete(0,name);
//--- создадим текстовую метку
   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,0);
//--- установим текст
   ObjectSetString(0,name,OBJPROP_TEXT,text);
//--- установим шрифт текста
   ObjectSetString(0,name,OBJPROP_FONT,"Verdana");
//--- установим размер шрифта
   ObjectSetInteger(0,name,OBJPROP_FONTSIZE,10);
//--- установим цвет
   ObjectSetInteger(0,name,OBJPROP_COLOR,Lime);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double DaysProfit()
  {
   double pr=0,point=0;

   for(int i=OrdersHistoryTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
        {
         if(OrderCloseTime()>(TimeCurrent()-60*60*24*days))
           {
            if(OrderProfit()>0)
              {
              point=MarketInfo(OrderSymbol(),MODE_POINT);
               if(OrderType()==0)
                 {
                  pr+=(OrderClosePrice()-OrderOpenPrice())/point;
                 }
               if(OrderType()==1)
                 {
                  pr+=(OrderOpenPrice()-OrderClosePrice())/point;
                 }
              }
           }
        }
     }
   return(pr);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double DaysLosses()
  {
   double pr=0,point=0;

   for(int i=OrdersHistoryTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
        {
         if(OrderCloseTime()>(TimeCurrent()-60*60*24*days))
           {
            if(OrderProfit()<0)
              {
               point=MarketInfo(OrderSymbol(),MODE_POINT);
               if(OrderType()==0)
                 {
                  pr+=(OrderOpenPrice()-OrderClosePrice())/point;
                 }
               if(OrderType()==1)
                 {
                  pr+=(OrderClosePrice()-OrderOpenPrice())/point;
                 }
              }
           }
        }
     }
   return(pr);
  }
//+------------------------------------------------------------------+
//| 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[])
  {
//---
   PutLabel("profit","Прибыль: "+(string)NormalizeDouble(DaysProfit(),2)+" пунктов",12,22);
   PutLabel("loss","Убыток: "+(string)NormalizeDouble(DaysLosses(),2)+" пунктов",12,40);
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+

avatar

AM2

  • 14 декабря 2018, 18:10
0
поправил:




//+------------------------------------------------------------------+
//|                                                     ZZLevels.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

input int count=5;

input int depth=12;
input int dev=5;
input int back=3;

input int width=1;
input int style=2;
input color clr=Red;

input ENUM_TIMEFRAMES tf=PERIOD_D1;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutTrendLine(string name,datetime time1,double price1,datetime time2,double price2)
  {
   ObjectDelete(0,name);
   ObjectCreate(0,name,OBJ_TREND,0,time1,price1,time2,price2);
//--- установим цвет линии 
   ObjectSetInteger(0,name,OBJPROP_COLOR,clr);
//--- установим стиль отображения линии 
   ObjectSetInteger(0,name,OBJPROP_STYLE,style);
//--- установим толщину линии 
   ObjectSetInteger(0,name,OBJPROP_WIDTH,width);
//--- включим (true) или отключим (false) режим продолжения отображения линии вправо 
   ObjectSetInteger(0,name,OBJPROP_RAY_RIGHT,false);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutRightLabel(string name,datetime time,double price)
  {
   ObjectDelete(0,name);
//--- создадим текстовую метку
   ObjectCreate(0,name,OBJ_ARROW_RIGHT_PRICE,0,time,price);
//--- установим размер метки
   ObjectSetInteger(0,name,OBJPROP_WIDTH,width);
//--- установим цвет
   ObjectSetInteger(0,name,OBJPROP_COLOR,clr);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double ZZPrice(int n=0)
  {
   double zz=0;
   int k=0;

   for(int i=0;i<Bars; i++)
     {
      zz=iCustom(NULL,tf,"ZigZag",depth,dev,back,0,i);
      if(zz!=0)
        {
         k++;
         if(k>n) return(zz);
        }
     }
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int ZZBar(int n=0)
  {
   double zz=0;
   int k=0;

   for(int i=0;i<Bars;i++)
     {
      zz=iCustom(NULL,tf,"ZigZag",depth,dev,back,0,i);
      if(zz!=0)
        {
         k++;
         if(k>n) return(i);
        }
     }
   Print("GetExtremumZZBar(): Экстремум ЗигЗага номер ",n," не найден");
   return(-1);
  }
//+------------------------------------------------------------------+
//| 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 k=PERIOD_D1/Period();

   for(int i=0;i<count;i++)
     {
      PutTrendLine("Line"+(string)i,time[0],ZZPrice(i),time[ZZBar(i)*k],ZZPrice(i));
      PutRightLabel("Label"+(string)i,time[0],ZZPrice(i));
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+

avatar

AM2

  • 14 декабря 2018, 17:49
0
показывает результат по закрытым сделкам
avatar

AM2

  • 13 декабря 2018, 21:06
0
создать кнопку(button) которая будет чутка темнее фона терминала

чернее черного? :) 
avatar

AM2

  • 13 декабря 2018, 20:32
0
плюс минус от цены открытия понятно.
+7, -5, +9 это как я понял паттерн свеча 1 бычья, 2-медведь, 3-бык.
на основе каких цен строим МА?
avatar

AM2

  • 13 декабря 2018, 18:18
0
5 на выбор делаю, остальное в доработке.
avatar

AM2

  • 13 декабря 2018, 18:06
0
уникальная функция, сразу три в одной. попробовал, очень быстро понял что это не ко мне :) 
avatar

AM2

  • 12 декабря 2018, 21:13
0
на 20-е
avatar

AM2

  • 11 декабря 2018, 23:02
0
за одновалютную версию я еще могу взяться
avatar

AM2

  • 11 декабря 2018, 22:59
0
давайте возьмем участок евра с 2.01 по 3.01, ваши настройки и проверим что да как
avatar

AM2

  • 11 декабря 2018, 18:46
0
Этот советник как в старом варианте, а надо открывать и закрывать ордера только на сигнале


вам ничего не мешает поставить большие стопы или убрать их совсем, тогда все будет по сигналу.
avatar

AM2

  • 11 декабря 2018, 18:11
+1
или можете делать отсчет от времени компиляции эксперта:


datetime compilation_date=__DATE__;             // дата компиляции
datetime compilation_date_time=__DATETIME__;    // дата и время компиляции 
datetime compilation_time=__DATETIME__-__DATE__;// время компиляции
avatar

AM2

  • 9 декабря 2018, 15:01
Начать торговлю с Альпари