Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 809

 
pycha:

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

#property icon        "\\Images\\xxx.ico";
 
evillive:
#property icon        "\\Images\\xxx.ico";

Причем, после компиляции, файл иконки будет встроен в *.ex4 файл и не нужно будет вслед за скомпилированным файлом переносить файл иконки.
 
спасибо)))
 
roymax:
и это никак не пофиксили?

Как видите. 

Впрочем, самый логичный и простой способ профиксить - запретить смену инструмента окна МТ. Поэтому  предлагаю считать фичей :)

 
и еще один вопросик. мой эксперт занимается анализом графика за нное количество месяцев, только есть  графики , которые возвращают всю историю в минутном графике, а есть такие что больше чем полтора месяца никак не хотят, да и то это если промотаешь график вручную назад, дальше определенной даты даже вручную не мотает . хотя при этом на часовом - дневном- годовом графике все есть. можно как-то метатрейдер уговорить давать мне нужное значение или нет?
 
pycha:
и еще один вопросик. мой эксперт занимается анализом графика за нное количество месяцев, только есть  графики , которые возвращают всю историю в минутном графике, а есть такие что больше чем полтора месяца никак не хотят, да и то это если промотаешь график вручную назад, дальше определенной даты даже вручную не мотает . хотя при этом на часовом - дневном- годовом графике все есть. можно как-то метатрейдер уговорить давать мне нужное значение или нет?
Сколько именно истории выдавать, решает брокер. Если в настройках терминала выставлено максимальное количество баров, а на графике их меньше, значит брокер больше не даст.
 
я понял, благодарю
 

Здравствуйте уважаемые форумчане. Вот хочу обратиться с просьбой. Смог ли бы кто выложить кусок кода с рабочей функцией iEnvelopesOnArray()? Мои все попытки приручить ее пока были безуспешны. Подозреваю что в этом вина разработчиков. Вот индикатор для проверки ее работы.

//+------------------------------------------------------------------+
//|                                            Tester_EnvOnArray.mq4 |
//|     Copyright 2005 г. до нашей эры, MetaQuotes Software Company. |
//|                                              https://www.mql4.com |
//+------------------------------------------------------------------+
#property copyright   "2005 г. до нашей эры, MetaQuotes Software Company."
#property link        "https://www.mql4.com"
#property description "Пример индикатора для проверки работы функции iEnvelopesOnArray()"
#property strict

//--- indicator settings
#property  indicator_chart_window
#property  indicator_buffers 2
#property  indicator_color1  Green
#property  indicator_color2  Red

//--- indicator buffers
double     ExtEnvBuffer[];
double     ExtPriceBuffer[];

//--- bars minimum for calculation
#define DATA_LIMIT  100

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void OnInit(void)
  {
  IndicatorShortName("EnvOnArr");
  
  //--- 1 additional buffer are used for counting.
  IndicatorBuffers(2);
  IndicatorDigits(Digits + 2);
  
  //--- drawing settings
  SetIndexStyle(0, DRAW_LINE);
  SetIndexDrawBegin(0, DATA_LIMIT);
  
  SetIndexStyle(1, DRAW_NONE);
  SetIndexDrawBegin(1, DATA_LIMIT);
  
  //--- all indicator buffers mapping
  SetIndexBuffer(0, ExtEnvBuffer);
  SetIndexBuffer(1, ExtPriceBuffer);
  
  //--- name for DataWindow and indicator subwindow label
  SetIndexLabel(0, NULL);
  SetIndexLabel(1, NULL);
  }
  
//+------------------------------------------------------------------+
//| EnvelopesOnArray                                                 |
//+------------------------------------------------------------------+
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    i, limit;
  double prev = 0.0, Deviation = 1;
  
  //--- check for rates total
  if(rates_total <= DATA_LIMIT)
    return(0);
    
  //--- last counted bar will be recounted
  limit = rates_total - prev_calculated;
  
  if(prev_calculated > 0)
    {
    limit++;
    }
    
  //--- price counted in the 2-nd additional buffer
  for(i=0; i<limit-1; i++)
    ExtPriceBuffer[i] = close[i];
                       
  //--- price counted in the 1-st additional buffer
  for(i=0; i<limit-1; i++)
    ExtEnvBuffer[i] = iEnvelopesOnArray(ExtPriceBuffer, 0, 5, MODE_SMA, 0, 1, MODE_UPPER, i);
  
  //--- done
  return(rates_total);
  }
  
//+------------------------------------------------------------------+
Файлы:
 

Всем привет. При тесте выскакивают ошибки:

2014.12.25 18:04:31.125 2014.11.03 00:00  Test3 EURUSD,H4: invalid ticket for OrderModify function

 2014.12.25 18:04:31.125 2014.11.03 00:00  Test3 EURUSD,H4: OrderModify error 4051

много раз перепроверял, ошибок нет(как мне кажется).

Сбой происходит в этой части программы:

  ModifyBuy, ModifySell, SelectBuy, SelectSell, - имеют тип bool

  SendBuy, SendSell-int ,  int TP = 30


 

while(true)

 {

  

  SPREAD=MarketInfo(Symb,MODE_SPREAD);

  SelectBuy=OrderSelect(OrderTicketBuy,SELECT_BY_TICKET);//buy

  RefreshRates();

  if(NormalizeDouble(OrderOpenPrice()+TP*Point,Digits)<NormalizeDouble(Ask,Digits))

  {

  ModifyBuy=OrderModify(OrderTicket(),OrderOpenPrice(),Bid-(10-SPREAD)*Point,Bid+(30- SPREAD)*Point,0,0); 

  R=1;

  break;

  }//if2

    

  Timen=OrderCloseTime();

  if(Timen>0)

  {

  //--------------------------  

    Stop=StopLevel(Symb);

   StopLong();//значение Long2

   StopLoss_Func();//значение SL

//--------------------------  

   SendBuy=OrderSend(Symb,OP_BUYSTOP,Lote,Ask+Long2*Point,1,Bid-SL*Point,NULL);

   for(i=1;i>OrdersTotal();i++)

  {

   if(OrderSelect(i-1,SELECT_BY_POS,MODE_TRADES)==true)//Проверяем есть ли ордер

    {

     if(OrderSymbol()!=Symb) continue;     

     if(OrderType()==4)

      {

      OrderTicketBuy=OrderTicket();

      break;

      }

      else

      {

      continue;

      } 

     }

    }   

    continue;  

  }//if2

  

  SelectSell=OrderSelect(OrderTicketSell,SELECT_BY_TICKET,MODE_TRADES);//sell

  RefreshRates();

  if(NormalizeDouble(OrderOpenPrice()-TP*Point,Digits)>NormalizeDouble(Bid,Digits))

  {

   

   ModifySell=OrderModify(OrderTicket(),OrderOpenPrice(),Ask+(10-SPREAD)*Point,Ask-(30- SPREAD)*Point,0,0);

   R=2;

   break; //спред

  }//if2

  

   Timen=OrderCloseTime();

  if(Timen>0)

  {

 //--------------------------  

    Stop=StopLevel(Symb);

   StopLong();

   StopLoss_Func();

//--------------------------  

   SendSell=OrderSend(Symb,OP_SELLSTOP,Lote,Bid-Long2*Point,1,Ask+SL*Point,NULL);

    for(i=1;i>OrdersTotal();i++)

  {

   if(OrderSelect(i-1,SELECT_BY_POS,MODE_TRADES)==true)//Проверяем есть ли ордер

    {

     if(OrderSymbol()!=Symb) continue;     

     if(OrderType()==6)

      {

      OrderTicketSell=OrderTicket();

      break;

      }

      else

      {

      continue;

      } 

     }

    }   

    continue; 

  }//if2

}//while1



 Если нужен весь код, то вот


Файлы:
test3_1.mq4  15 kb
 
Господа хорошие! Подскажите код который остановит тестирование советника при не достаточной маржи для открытия позиции.
Спасибо!
Причина обращения: