Бета-тестирование MetaTrader 5 началось! - страница 92

 

Проблемка не сурезная но только, обратил внимание

При выводе в индикаторе буферов DRAW_FILLING больше одного, значение #indicator_labelN выводится тоько на первом, а на оставшихся пусто

Оно конечно не очень важно, но вроде как непорядок.

Через функцию PlotIndexSetString( N,PLOT_LABEL,"тратата..."); результат тотже.

 
Rosh 03.11.2009 15:02
Erm955 писал(а) >>

input datetime Dat_Ot = D'2009.10.01'; // Дата ОТ
input datetime Dat_Do = D'2009.12.01'; // Дата ДО

ResetLastError();
if(HistorySelect(Dat_Ot, Dat_Do)); else Print("Ошибка получения истории сделок = ", _LastError);

int Dl = HistoryDealsTotal();
i=0;
double Prof=0, Prof1=0;
Prof_Min = Prof_Max - Prof_Instr;

ResetLastError();
while(i < Dl)
{
ulong Tik_D = HistoryDealGetTicket(i);
if(HistoryDealSelect(Tik_D, 1000) == false)
{Print("Не удалось выбрать сделку с тикетом = ", Tik_D, "в OnInit() = ", _LastError); return;}

2009.11.03 14:47:39 R002 (USDCHF,M1) Не удалось выбрать сделку с тикетом = 80869 в OnTrade() = 4757

Всё есть и было.

Попробуйте обратиться в техподдержку, код указывает на превышение таймаута. Кроме того, в случае неудачного результата функции HistoryDealSelect() можно вывести в лог все сделки для ручной проверки

Нет смысла искать ошибку у меня. Сохранился 213 билд на другом компе. Запустил эту же программу--работает как часы.

Отправил письмо в Support@metaquotes.ru c программой.

 

Erm955 писал(а) >>

Нет смысла искать ошибку у меня. Сохранился 213 билд на другом компе. Запустил эту же программу--работает как часы.

Отправил письмо в Support@metaquotes.ru c программой.

Да, что то изменилось, разберемся. Спасибо.

 
vdv2001 >>:

Проблемка не сурезная но только, обратил внимание

При выводе в индикаторе буферов DRAW_FILLING больше одного, значение #indicator_labelN выводится тоько на первом, а на оставшихся пусто

Оно конечно не очень важно, но вроде как непорядок.

Через функцию PlotIndexSetString( N,PLOT_LABEL,"тратата..."); результат тотже.


Дайте пример и скриншот, пожалуйста.

 
Rosh писал(а) >>

Этой константы больше нет, так в MQL5 кнопка "Запретить/разрешить эксперта" относится именно к совершению торговых операций (а не к запрету работы эксперта), сам эксперт в любом случае получает все тики и продолжает работу.

Наверное, это не совсем правильно концептуально.

Ведь работающий эксперт не только торгует, но и управляет графикой (которую могут анализировать другие прикл. программы) и меняет значения GV_переменных..

 
люди ответь кто-нибудь на мой вопрос...кто знает..на 91странице)
 
//+------------------------------------------------------------------+
//|                                                     sdasdasd.mq5 |
//|                                                Copyright VDVSoft |
//|                                                 vdv_2001@mail.ru |
//+------------------------------------------------------------------+
#property copyright "VDVSoft"
#property link      "vdv_2001@mail.ru"
#property version   "1.00"
#property indicator_chart_window
#property indicator_buffers 6
#property indicator_plots   3
//---- plot Label1
#property indicator_label1  "Label1"
#property indicator_type1   DRAW_FILLING
#property indicator_color1  Red,Red
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//---- plot Label2
#property indicator_label2  "Label2"
#property indicator_type2   DRAW_FILLING
#property indicator_color2  Blue,Blue
#property indicator_style2  STYLE_SOLID
#property indicator_width2  1
//---- plot Label3
#property indicator_label3  "Label3"
#property indicator_type3   DRAW_FILLING
#property indicator_color3  DarkOrange,DarkOrange
#property indicator_style3  STYLE_SOLID
#property indicator_width3  1
//--- indicator buffers
double         Label1Buffer1[];
double         Label1Buffer2[];
double         Label2Buffer1[];
double         Label2Buffer2[];
double         Label3Buffer1[];
double         Label3Buffer2[];

int         hLabel1Buffer1;
int         hLabel1Buffer2;
int         hLabel2Buffer1;
int         hLabel2Buffer2;
int         hLabel3Buffer1;
int         hLabel3Buffer2;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,Label1Buffer1,INDICATOR_DATA);
   SetIndexBuffer(1,Label1Buffer2,INDICATOR_DATA);
   SetIndexBuffer(2,Label2Buffer1,INDICATOR_DATA);
   SetIndexBuffer(3,Label2Buffer2,INDICATOR_DATA);
   SetIndexBuffer(4,Label3Buffer1,INDICATOR_DATA);
   SetIndexBuffer(5,Label3Buffer2,INDICATOR_DATA);
   ArraySetAsSeries(Label1Buffer1, true);
//---
   hLabel1Buffer1=iMA(Symbol(),0,10,0,MODE_EMA,PRICE_CLOSE);
   hLabel1Buffer2=iMA(Symbol(),0,15,0,MODE_EMA,PRICE_CLOSE);
   hLabel2Buffer1=iMA(Symbol(),0,20,0,MODE_EMA,PRICE_CLOSE);
   hLabel2Buffer2=iMA(Symbol(),0,25,0,MODE_EMA,PRICE_CLOSE);
   hLabel3Buffer1=iMA(Symbol(),0,30,0,MODE_EMA,PRICE_CLOSE);
   hLabel3Buffer2=iMA(Symbol(),0,35,0,MODE_EMA,PRICE_CLOSE);
   return(0);
  }
//+------------------------------------------------------------------+
//| 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[])
{
//---
   if(CopyBuffer(hLabel1Buffer1,0,0,rates_total, Label1Buffer1)<=0)
   {
      Print("Getting MaHandle is failed! Error",GetLastError());
      return(0);
   }
   
   CopyBuffer(hLabel1Buffer2,0,0,rates_total, Label1Buffer2);
   CopyBuffer(hLabel2Buffer1,0,0,rates_total, Label2Buffer1);
   CopyBuffer(hLabel2Buffer2,0,0,rates_total, Label2Buffer2);
   CopyBuffer(hLabel3Buffer1,0,0,rates_total, Label3Buffer1);
   CopyBuffer(hLabel3Buffer2,0,0,rates_total, Label3Buffer2);
//--- return value of prev_calculated for next call
   return(rates_total);
}
//+------------------------------------------------------------------+
Rosh
писал(а)
>>

Дайте пример и скриншот, пожалуйста.

в тексте индюка:

#property indicator_label1 "Label1"
#property indicator_label2 "Label2"
#property indicator_label3 "Label3"

 
SK. >>:

Ведь работающий эксперт не только торгует, но и управляет графикой (которую могут анализировать другие прикл. программы) и меняет значения GV_переменных..

Вот как раз в этом случае кнопка действия не оказывает - эксперт по-прежнему будет получать тики и рисовать,двигать и так далее.ТОлько вот торговать не сможет.

 
vdv2001 >>:

в тексте индюка:

#property indicator_label1 "Label1"
#property indicator_label2 "Label2"
#property indicator_label3 "Label3"

Попробуйте так

#property indicator_label1  "Label1.High;Label1.Low"
#property indicator_type1   DRAW_FILLING
#property indicator_color1  Red,Red
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
 и так далее

Смотрите внимательно справку в разделе "Справочник MQL5 / Основы языка / Препроцессор / Свойства программ "


indicator_labelN

string

задает метку для N-ой графических серии, отображаемую в окне DataWindow. Для графических серий, требующих несколько индикаторных буферов (DRAW_CANDLES, DRAW_FILLING и другие), имена меток задаются через разделитель ';'.

 
arbuz >>:

Скажите как получить все цены(там где стрелочки на графике) индикатора Fractals через советник?

я делаю вот так:


Комент показывает цены с множеством цифр после запятой....1,79769313486231e+308



Тобишь тут нет значений у индикатора фрактал

А как мне получать все значения где есть стрелочки?


Смотрите пример из раздела "Справочник MQL5 / Стандартные константы, перечисления и структуры / Константы объектов / Способы привязки объектов "

void OnStart()
  {
//--- служебные массивы
   double Ups[],Downs[];
   datetime Time[];
//--- установим для массивов признак таймсерии
   ArraySetAsSeries(Ups,true);
   ArraySetAsSeries(Downs,true);
   ArraySetAsSeries(Time,true);
//--- создадим хендл на индикатор Fractals
   int FractalsHandle=iFractals(NULL,0);
   Print("FractalsHandle =",FractalsHandle);
//--- сбросим код ошибки
   ResetLastError();
//--- попытаемся скопировать значения индикатора
   int copied=CopyBuffer(FractalsHandle,0,0,1000,Ups);
   if(copied<=0)
     {
      Print("Не удалось скопировать верхние фракталы. Error =",GetLastError());
      return;
     }
 
   ResetLastError();
//--- попытаемся скопировать значения индикатора
   copied=CopyBuffer(FractalsHandle,1,0,1000,Downs);
   if(copied<=0)
     {
      Print("Не удалось скопировать нижние фракталы. Error =",GetLastError());
      return;
     }
 
   ResetLastError();
//--- скопируем таймсерию,содержащую время открытия последних 1000 баров
   copied=CopyTime(NULL,0,0,1000,Time);
   if(copied<=0)
     {
      Print("Не удалось скопировать времена открытия за последние 1000 баров");
      return;
     }
 
   int upcounter=0,downcounter=0; // будем в них подсчитывать количество стрелок
   bool created;// будем получать результат попытки создания объекта
   for(int i=2;i<copied;i++)// пробежимся по значениям индикатора iFractals
     {
      if(Ups[i]!=EMPTY_VALUE)// нашли верхний фрактал
        {
         if(upcounter<10)// создаем не более 10 объектов "вверх"
           {
            //--- попробуем создать объект "вверх"
            created=ObjectCreate(0,string(Time[i]),OBJ_ARROW_THUMB_UP,0,Time[i],Ups[i]);
            if(created)// если создался - сделаем ему тюнинг
              {
               //--- точка привязки снизу, чтобы не наезжать на бар
               ObjectSetInteger(0,string(Time[i]),OBJPROP_ANCHOR,ANCHOR_BOTTOM);
               //--- последний штрих - покрасим
               ObjectSetInteger(0,string(Time[i]),OBJPROP_COLOR,Blue);
               upcounter++;
              }
           }
        }
      if(Downs[i]!=EMPTY_VALUE)// нашли нижний фрактал 
        {
         if(downcounter<10)// создаем не более 10 объектов "вниз"
           {
            //--- попробуем создать объект "вниз"
            created=ObjectCreate(0,string(Time[i]),OBJ_ARROW_THUMB_DOWN,0,Time[i],Downs[i]);
            if(created)// если создался - сделаем ему тюнинг
              {
               //--- точка привязки сверху, чтобы не наезжать на бар
               ObjectSetInteger(0,string(Time[i]),OBJPROP_ANCHOR,ANCHOR_TOP);
               //--- последний штрих - покрасим
               ObjectSetInteger(0,string(Time[i]),OBJPROP_COLOR,Red);
               downcounter++;
              }
           }
        }
     }
  }
Причина обращения: