Впечатления новичка от mql5

 

я конечно сторонник  mql 4,но так как МТ4 находится

в стадии переделки и новые  разработки сменяют друг друга

чуть ли не ежедневно,то решил посмотреть-что же это за зверь!

я нашол брокера   QTrade   .Первое впечатление -как однако все

быстро работает,график так и шевелится!Торговать можно однако

только однои позицией!Можешь ее увеличивать или уменьшать,

при смене направления-большие потери!Влияние Банкиров!

Бросается в глаза большои поток дат-причем выходит больше чем

заходит,к чему бы ето?Пишут для   mql5     мало.Некии Коситсин(Коси-Тцын)

однако написал столько ,что один перечень занимает 64 страниц!

видимо накосил етого тцына достаточно,заявляет в иннете нет нянек!

на запросы не отвечает.Вообщем пользователеи его кодом не уважает.

Сам код формализован до предела.

один инклюдник сидит на другом!

десятки инклюдников в однои программе!

Таким дилетантам как я в коде не разобраться!

если в  mql4             можно было ещо понятъ и чтото

даже переделать-то     mql5      ето абсолютно исключено.

ты весь в руках программистов.

а жаль.

панса

 
Косицин просто котобазу четвёрошную перенёс на пятёрку
 
А где впечатления? :)
Если непонятно, что-то в mql5 то Вы всегда можете спросить. Есть целый форум посвящённый mql5: https://www.mql5.com/ru/forum
 
barabashkakvn:
А где впечатления? :)
Если непонятно, что-то в mql5 то Вы всегда можете спросить. Есть целый форум посвящённый mql5: https://www.mql5.com/ru/forum

Привет,barabashkakvn!

по мqл5 впечатления накапливаю.

Уж коли Вы обратили внимание

посмотрите почему код не хочет работать

сам индикатор адаптировал Коситсин

мqh написал интегер

осталось зделать рабочим.

панса

//+---------------------------------------------------------------------+ 
//|                                              SlopeDirectionLine.mq5 | 
//|                                        Copyright © 2006, WizardSerg | 
//|                                                  wizardserg@mail.ru | 
//+---------------------------------------------------------------------+ 
#property copyright "Copyright © 2006, WizardSerg"
#property link "wizardserg@mail.ru"
//---- номер версии индикатора
#property version   "1.00"
//---- отрисовка индикатора в главном окне
#property indicator_chart_window 
//---- количество индикаторных буферов
#property indicator_buffers 2 
//---- использовано всего одно графическое построение
#property indicator_plots   1
//+-----------------------------------+
//|  Параметры отрисовки индикатора   |
//+-----------------------------------+
//---- отрисовка индикатора в виде многоцветной линии
#property indicator_type1   DRAW_COLOR_LINE
//---- в качестве цветов трёхцветной линии использованы
#property indicator_color1  clrDeepPink,clrGray,clrDarkViolet
//---- линия индикатора - непрерывная кривая
#property indicator_style1  STYLE_SOLID
//---- толщина линии индикатора равна 2
#property indicator_width1  2
//---- отображение лэйбы индикатора
#property indicator_label1  "SlopeDirectionLine"

//+-----------------------------------+
//|  Описание класса CXMA             |
//+-----------------------------------+
#include <SmoothAlgorithms.mqh> 
//+-----------------------------------+

//---- объявление переменных класса CXMA из файла SmoothAlgorithms.mqh
CXMA XMA1,XMA2,XMA3;
//+-----------------------------------+
//|  объявление перечислений          |
//+-----------------------------------+
enum Applied_price_ //Тип константы
  {
   PRICE_CLOSE_ = 1,     //Close
   PRICE_OPEN_,          //Open
   PRICE_HIGH_,          //High
   PRICE_LOW_,           //Low
   PRICE_MEDIAN_,        //Median Price (HL/2)
   PRICE_TYPICAL_,       //Typical Price (HLC/3)
   PRICE_WEIGHTED_,      //Weighted Close (HLCC/4)
   PRICE_SIMPL_,         //Simpl Price (OC/2)
   PRICE_QUARTER_,       //Quarted Price (HLOC/4) 
   PRICE_TRENDFOLLOW0_,  //TrendFollow_1 Price 
   PRICE_TRENDFOLLOW1_   //TrendFollow_2 Price 
  };
/*enum Smooth_Method - перечисление объявлено в файле SmoothAlgorithms.mqh
  {
   MODE_SMA_,  //SMA
   MODE_EMA_,  //EMA
   MODE_SMMA_, //SMMA
   MODE_LWMA_, //LWMA
   MODE_JJMA,  //JJMA
   MODE_JurX,  //JurX
   MODE_ParMA, //ParMA
   MODE_T3,    //T3
   MODE_VIDYA, //VIDYA
   MODE_AMA,   //AMA
  }; */
//+-----------------------------------+
//|  ВХОДНЫЕ ПАРАМЕТРЫ ИНДИКАТОРА     |
//+-----------------------------------+
input Smooth_Method MA_Method1=MODE_LWMA//метод первого усреднения
input uint Length1=12//глубина первого усреднения                
input int Phase1=15;  //параметр первого усреднения,
                      //для JJMA изменяющийся в пределах -100 ... +100, влияет на качество переходного процесса;
// Для VIDIA это период CMO, для AMA это период медленной скользящей

input Smooth_Method MA_Method2=MODE_SMA//метод усреднения второго сглаживания 
input int Phase2=15;  //параметр второго сглаживания,
                      //для JJMA изменяющийся в пределах -100 ... +100, влияет на качество переходного процесса;
// Для VIDIA это период CMO, для AMA это период медленной скользящей
input Applied_price_ IPC=PRICE_CLOSE;//ценовая константа
/* , по которой производится расчёт индикатора ( 1-CLOSE, 2-OPEN, 3-HIGH, 4-LOW, 
  5-MEDIAN, 6-TYPICAL, 7-WEIGHTED, 8-SIMPL, 9-QUARTER, 10-TRENDFOLLOW, 11-0.5 * TRENDFOLLOW.) */
input int Shift=0// сдвиг индикатора по горизонтали в барах
input int PriceShift=0// cдвиг индикатора по вертикали в пунктах

input bool On_Push = false;                           //разрешение на передачу push-сообщений
input bool On_Email = false;                          //разрешение на отправку почты
input bool On_Alert = true;                           //разрешение на подачу алерта
input bool On_Play_Sound = false;                     //разрешение на подачу звукового сигнала
input string NameFileSound = "expert.wav";            //имя для файла звукового сигнала
input string  CommentSirName="SlopeDirectionLine: ";  //первая часть алерт-коммента
input uint SignalBar=1;                               //номер бара для сигнала
//+-----------------------------------+

//---- объявление динамических массивов, которые будут в 
// дальнейшем использованы в качестве индикаторных буферов
double IndBuffer[];
double ColorIndBuffer[];

//---- Объявление переменных значений периодов усреднений
int LengthX,LengthR;
//---- Объявление переменной значения вертикального сдвига мувинга
double dPriceShift;
//---- Объявление целых переменных начала отсчёта данных
int min_rates_total,min_rates_;
//+------------------------------------------------------------------+
//|  Получение таймфрейма в виде строки                              |
//+------------------------------------------------------------------+
string GetStringTimeframe(ENUM_TIMEFRAMES timeframe)
  {
//----
   return(StringSubstr(EnumToString(timeframe),7,-1));
//----
  }
//+------------------------------------------------------------------+   
//| SlopeDirectionLine indicator initialization function             | 
//+------------------------------------------------------------------+ 
void OnInit()
  {
//---- Инициализация переменных начала отсчёта данных
   LengthX=int(Length1/2);
   LengthR=int(MathMax(MathSqrt(Length1),1));
   min_rates_=+XMA1.GetStartBars(MA_Method1,Length1,Phase1);
   min_rates_total=min_rates_+XMA1.GetStartBars(MA_Method2,LengthR,Phase2);

//---- Инициализация сдвига по вертикали
   dPriceShift=_Point*PriceShift;

//---- превращение динамического массива в индикаторный буфер
   SetIndexBuffer(0,IndBuffer,INDICATOR_DATA);
//---- превращение динамического массива в цветовой, индексный буфер   
   SetIndexBuffer(1,ColorIndBuffer,INDICATOR_COLOR_INDEX);

//---- осуществление сдвига индикатора 1 по горизонтали
   PlotIndexSetInteger(0,PLOT_SHIFT,Shift);
//---- осуществление сдвига начала отсчёта отрисовки индикатора
   PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,min_rates_total);
//---- создание метки для отображения в DataWindow
   PlotIndexSetString(0,PLOT_LABEL,"IndBuffer");
//---- установка значений индикатора, которые не будут видимы на графике
   PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0.0);

//---- инициализации переменной для короткого имени индикатора
   string shortname;
   string Smooth2=XMA1.GetString_MA_Method(MA_Method2);
   StringConcatenate(shortname,"SlopeDirectionLine(",Length1,", ",LengthR,", ",Smooth2,")");
//---- создание имени для отображения в отдельном подокне и во всплывающей подсказке
   IndicatorSetString(INDICATOR_SHORTNAME,shortname);

//---- определение точности отображения значений индикатора
   IndicatorSetInteger(INDICATOR_DIGITS,_Digits+1);
//---- завершение инициализации
  }
//+------------------------------------------------------------------+ 
//| SlopeDirectionLine 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(rates_total<min_rates_total) return(0);

//---- Объявление переменных с плавающей точкой  
   double price,line,xline;
//---- Объявление целых переменных и получение уже посчитанных баров
   int first,bar,clr;

//---- расчёт стартового номера first для цикла пересчёта баров
   if(prev_calculated>rates_total || prev_calculated<=0// проверка на первый старт расчёта индикатора
      first=0// стартовый номер для расчёта всех баров
   else first=prev_calculated-1// стартовый номер для расчёта новых баров

//---- Основной цикл расчёта индикатора
   for(bar=first; bar<rates_total && !IsStopped(); bar++)
     {
      price=PriceSeries(IPC,bar,open,low,high,close);

      line=XMA1.XMASeries(0,prev_calculated,rates_total,MA_Method1,Phase1,Length1,price,bar,false);
      line=2*XMA2.XMASeries(0,prev_calculated,rates_total,MA_Method1,Phase1,LengthX,price,bar,false)-line;
      xline=XMA3.XMASeries(min_rates_,prev_calculated,rates_total,MA_Method2,Phase2,LengthR,line,bar,false);
      //----       
      IndBuffer[bar]=xline+dPriceShift;
     }

//---- корректировка значения переменной first
   if(prev_calculated>rates_total || prev_calculated<=0// проверка на первый старт расчёта индикатора
      first=min_rates_total-1// стартовый номер для расчёта всех баров

//---- Основной цикл раскраски сигнальной линии
   for(bar=first; bar<rates_total; bar++)
     {
      clr=1;
      ColorIndBuffer[bar]=1;
      if(IndBuffer[bar-1]<IndBuffer[bar]) clr=2;
      if(IndBuffer[bar-1]>IndBuffer[bar]) clr=0;
      ColorIndBuffer[bar]=clr;

      if(bar==rates_total-1-SignalBar)
        {
         if(ColorIndBuffer[bar-1]!=2 && clr==2)
           {
            datetime SignalTime=TimeCurrent();
            if(On_Play_Sound) PlaySound(NameFileSound);
            string period=GetStringTimeframe(Period());
            string comment,sTime=" CurrTime="+TimeToString(SignalTime,TIME_MINUTES);
            StringConcatenate(comment,CommentSirName,Symbol(),period," ",sTime," Сигнал на покупку!");
            if(On_Alert) Alert(comment);
            if(On_Push) SendNotification(comment);
            if(On_Email) SendMail(CommentSirName+Symbol()+period,comment);
           }
           
         if(ColorIndBuffer[bar-1]!=0 && clr==0)
           {
            datetime SignalTime=TimeCurrent();
            if(On_Play_Sound) PlaySound(NameFileSound);
            string period=GetStringTimeframe(Period());
            string comment,sTime=" CurrTime="+TimeToString(SignalTime,TIME_MINUTES);
            StringConcatenate(comment,CommentSirName,Symbol(),period," ",sTime," Сигнал на продажу!");
            if(On_Alert) Alert(comment);
            if(On_Push) SendNotification(comment);
            if(On_Email) SendMail(CommentSirName+Symbol()+period,comment);
           }
        }
     }
//----     
   return(rates_total);
  }
//+------------------------------------------------------------------+
   

Ссылка на индикатор https://www.mql5.com/ru/code/1489

/* Так лучше будет  - Vinin  */

 
pansa:

Привет,barabashkakvn!

по мqл5 впечатления накапливаю.

Уж коли Вы обратили внимание

посмотрите почему код не хочет работать

сам индикатор адаптировал Коситсин

мqh написал интегер

осталось зделать рабочим.

панса


Индикатор работает

 

 
Vinin:

Индикатор работает

 

 
pansa:

Где эта библиотека находится?
 
Vinin:
Где эта библиотека находится?

Привет,Винин!

ета мqh(  инклуудник)

 
pansa:

Привет,Винин!

ета мqh(  инклуудник) находится

#include<winmediaplayer.mqh>


Где Вы этот файл взяли?

Там описание должно было быть еще 

 
Vinin:

Где Вы этот файл взяли?

Там описание должно было быть еще 

Винину.

ету мqh написал integer ( forum) интегер

надо какуюто строчку указать

ето все, что я знаю.

панса




 
Привет,Форумчане!
Наверно впечатлении больше не будет.
Была без радости любовь-разлука будет без печали!
панса