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

 
arbuz >>:

Примеру ради вот например можете попробовать:


Мировой кризис заказывали? А поздно, распишитесь и получите....


////////////////////////////////////////////////////////////////////////////////
// Demo ZigZag Trandline                                                      //
// Copyright (c) 2009 Interesting, Arbuz                                      //
// Mail: MD-Interesting@Mail.ru ICQ: 346-546-017                              //
////////////////////////////////////////////////////////////////////////////////
// Unit: DemoZigZagTrandLine                                                  //
////////////////////////////////////////////////////////////////////////////////
// Version:      1.0                                                          //
// Version File: 1.0.0.0                                                      //
// File name: DemoZigZagTrandLine.mq5                                         //
////////////////////////////////////////////////////////////////////////////////
//                                  Property                                  //
////////////////////////////////////////////////////////////////////////////////
#property description "Demo ZigZag Trandline"
#property description "Пример рассчета и прорисовки трендовой линии по ZigZag"
#property copyright "Interesting, Arbuz"
#property link      "Mail: MD-Interesting@Mail.ru"
#property version   "1.00"
////////////////////////////////////////////////////////////////////////////////
//                              Input parameters                              //
////////////////////////////////////////////////////////////////////////////////
//Параметры для ZigZag
input int ZigZagExtDepth     = 12; //ExtDepth
input int ZigZagExtDeviation = 5;  //ExtDeviation
input int ZigZagExtBackstep  = 3;  //ExtBackstep
//Тип графика (свечи, бары или линия)
input ENUM_CHART_MODE ChartMode = CHART_CANDLES; //Тип графика
//Режим отоброжения строки OHLC и сетки на графике
input bool ChartShowOHLC = true; //Выводить строку OHLC (да/нет)
//Цветовая схема основных элементов
input color ChartFonColor     = White;     //Цвет фона графика
input color ColorForeground   = Black;     //Цвет осей, шкалы и строки OHLC
input color ColorTrandLine    = DarkBlue;  //Цвет для Trand-Line
input color ColorTextABC      = Black;     //Цвет надписей ABC
input color ColorCandleBull   = LawnGreen; //Цвет тела бычьей свечи
input color ColorCandleBear   = Red;       //Цвет тела медвежьей свечи
////////////////////////////////////////////////////////////////////////////////
//                  Массивы используемые для хранения данных                  //
////////////////////////////////////////////////////////////////////////////////
datetime ArrayTime[];
double   ArrayExt[];
////////////////////////////////////////////////////////////////////////////////
//                  Переменные используемые в работе эксперта                 //
////////////////////////////////////////////////////////////////////////////////
datetime TimeA,TimeB,TimeC;
double ExtA,ExtB,ExtC;
int Handle;
int Copied;
////////////////////////////////////////////////////////////////////////////////
//                       Expert initialization function                       //
////////////////////////////////////////////////////////////////////////////////
int OnInit()
{
//----------------------------------------------------------------------------//
//Меняем основные элементы текущего шаблона
ChartSetInteger(0,CHART_MODE,ChartMode);
ChartSetInteger(0,CHART_SHOW_OHLC,ChartShowOHLC);
ChartSetInteger(0,CHART_COLOR_BACKGROUND,ChartFonColor);
ChartSetInteger(0,CHART_COLOR_FOREGROUND,ColorForeground);
ChartSetInteger(0,CHART_COLOR_CANDLE_BULL,ColorCandleBull); //Быки, классически белая
ChartSetInteger(0,CHART_COLOR_CANDLE_BEAR,ColorCandleBear); //Мишки, классически черная
//Устанавливаем оконтовку свечек
  if(ChartFonColor==Black)
  {
  ChartSetInteger(0,CHART_COLOR_CHART_UP,White);    //Быки
  ChartSetInteger(0,CHART_COLOR_CHART_DOWN,White);  //Мишки
  }
  else
  {
  ChartSetInteger(0,CHART_COLOR_CHART_UP,Black);    //Быки
  ChartSetInteger(0,CHART_COLOR_CHART_DOWN,Black);  //Мишки
  }

ArraySetAsSeries(ArrayExt,true);
ArraySetAsSeries(ArrayTime,true);

Handle =iCustom(Symbol(),PERIOD_CURRENT,"Examples\\ZigZag",ZigZagExtDepth,
ZigZagExtDeviation,ZigZagExtBackstep);

ResetLastError();
//----------------------------------------------------------------------------//
return(0);
//----------------------------------------------------------------------------//
}
////////////////////////////////////////////////////////////////////////////////
//                      Expert deinitialization function                      //
////////////////////////////////////////////////////////////////////////////////
void OnDeinit(const int reason)
{
//----------------------------------------------------------------------------//
//Сносим все объекты с графика
ObjectsDeleteAll(0,0,OBJ_TREND); //Для удаления трендовых линий
ObjectsDeleteAll(0,0,OBJ_TEXT);  //Для удаления текста
//----------------------------------------------------------------------------//
}
////////////////////////////////////////////////////////////////////////////////
//                           Expert Ticks function                            //
////////////////////////////////////////////////////////////////////////////////
void OnTick()
{
//----------------------------------------------------------------------------//
//Служебные переменные
int i,q;
//----------------------------------------------------------------------------//

CopyTime(Symbol(),PERIOD_CURRENT,0,1000,ArrayTime);

Copied=CopyBuffer(Handle,0,0,1000,ArrayExt);

  if(Copied<0)
  //CopyBuffer вернул ошибку, информируем трейдера и ждем'с...
  {
  Sleep(50);
  }
  else
  //Типа все ОК, можем работать
  {
  .................................................................
...................................................................
  //Отрисовка трендовой линии
  ObjectCreate(0,"TrandLine",OBJ_TREND,0,TimeC,ExtC,TimeA,ExtA);
  ObjectSetInteger(0,"TrandLine",OBJPROP_RAY_RIGHT,1);
  ObjectSetInteger(0,"TrandLine",OBJPROP_COLOR,ColorTrandLine);
  }
//----------------------------------------------------------------------------//
}  
////////////////////////////////////////////////////////////////////////////////


Файлы:
 
Interesting >>:

Мировой кризис заказывали? А поздно, распишитесь и получите....



Основной код примера:

////////////////////////////////////////////////////////////////////////////////
//                           Expert Ticks function                            //
////////////////////////////////////////////////////////////////////////////////
void OnTick()
{
//----------------------------------------------------------------------------//
//Служебные переменные
int i,q;
//----------------------------------------------------------------------------//

CopyTime(Symbol(),PERIOD_CURRENT,0,1000,ArrayTime);

Copied=CopyBuffer(Handle,0,0,1000,ArrayExt);

  if(Copied<0)
  //CopyBuffer вернул ошибку, информируем трейдера и ждем'с...
  {
  Sleep(50);
  }
  else
  //Типа все ОК, можем работать
  {
  //Производим расчет A,B,C
  q=0;

    for(i=0;i<500;i++)
    {

      if(ArrayExt[i]!=0 )
      {
      q++;

        if(q==2)
        {
        ExtA=ArrayExt[i];
        TimeA=ArrayTime[i];
        ObjectCreate(0,"A",OBJ_TEXT,0,TimeA,ExtA);
        ObjectSetString(0,"A",OBJPROP_TEXT,"A");
        ObjectSetInteger(0,"A",OBJPROP_COLOR,ColorTextABC);        
        }

        if(q==3)
        {
        ExtB=ArrayExt[i];
        TimeB=ArrayTime[i];
        ObjectCreate(0,"B",OBJ_TEXT,0,TimeB,ExtB);
        ObjectSetString(0,"B",OBJPROP_TEXT,"B");
        ObjectSetInteger(0,"B",OBJPROP_COLOR,ColorTextABC);        
        }

        if(q==4)
        {
        ExtC=ArrayExt[i];
        TimeC=ArrayTime[i];
        ObjectCreate(0,"C",OBJ_TEXT,0,TimeC,ExtC);
        ObjectSetString(0,"C",OBJPROP_TEXT,"C");
        ObjectSetInteger(0,"C",OBJPROP_COLOR,ColorTextABC);
        }

      }

    }  
  //Отрисовка трендовой линии
  ObjectCreate(0,"TrandLine",OBJ_TREND,0,TimeC,ExtC,TimeA,ExtA);
  ObjectSetInteger(0,"TrandLine",OBJPROP_RAY_RIGHT,1);
  ObjectSetInteger(0,"TrandLine",OBJPROP_COLOR,ColorTrandLine);
  }
//----------------------------------------------------------------------------//
}  
////////////////////////////////////////////////////////////////////////////////
 
Увидел ошибку, int q; стояло внутри цикла следовательно все время обнулялась вчера сам нашел, а этот KolExt действительно лишнее. Interesting за модерн ваш спасибо, вижу новое для себя, я ведь только учусь )
 
arbuz >>:
Увидел ошибку, int q; стояло внутри цикла следовательно все время обнулялась вчера сам нашел, а этот KolExt действительно лишнее. Interesting за модерн ваш спасибо, вижу новое для себя, я ведь только учусь )

Да собственно не за чато, все мы где-то и когда-то учились...

 

Уважаемые разработчики, есть пожелание касающиеся стандартных системных событий.

Хочется пополнить линейку уже имеющихся событий двумя новыми, что на мой взгляд повысит функциональность терминала и значительно облегчит жизнь трейдерам и разработчикам торговых систем.


Предложение заключается в следующем: Добавить в линейку событий экспертов два новых OnConnect() и OnDisconnect().

OnConnect() - будет вызываться когда терминал подключился к серверу после потери связи с сервером

OnDisconnect() - должен вызываться при потери связи с сервером.

 
joo писал(а) >>

Прошу прощения за офтоп, но, по крайней мере здесь модераторы и разработчики часто бывают.

Подсветку вкладок по расширению хотелось бы. Очень удобно.

Еще давно, на этапе сбора пожеланий к Пятерке озвучивали просьбу сделать цветными ярлычки с графиками. Видимо не судьба...

 
stringo писал(а) >>

Пока никак.

Создавайте индикатор через эксперт, и тестируйте. Кое-что получается отыскивать.

 
Interesting писал(а) >>

Похоже на то...

я об этом ещё страниц десять назад спрашивал. Ждите ответа...ждите ответа...

 

функции:

TimeCurrent(), SymbolInfoInteger(0,SYMBOL_TIME)

по выходным отдыхают, не работают.

 
zigan >>:

функции:

по выходным отдыхают, не работают.

Точно, не пашут. А я и не заметил (GMT работает да и ладно)...

Причина обращения: