Пожелания для учебника

 

Автор будущего учебника вовсе не обязан здесь что либо отвечать или обсуждать!

Тема создана для определения круга интересующих моментов и для прочтения их авторами книг.

 

Ну вот, хвала администраторам этого форума за огромнейшую помощь с постингом в ФФ !!!

Терь можно и мысли записать пока не забыл...

;)))


По своему опыту изучения мкл могу сказать что "тем самым пинком" послужило понимание что и куда писать.

И тогда стало гораздо легче и понятнее, до такой степени что наверное с год ещё корил себя: вот дурень был...


Поэтому, глядя справку мт5 вижу помимо прочего ещё массу понимания того самого "что и куда".

Великую помощь в этом окажут многочисленные примеры... пусть простые, в три строки, НО с живым кодом.


Например...


Счётчики.

Нюансы где и почему применять прямой счёт и обратный.


Синтаксис.

Многие определения "правописания" непонятны и с десятого захода, как это:

бла::бло


В общем, в учебнике самым жестким способом как-бы "отойти" от факта существования С++.

Мне например лично перечитывать массу попутной ненужной массы информации совсем не светит...

И не потому что ленив и\или туп, а потому что хочу изучить мкл5 методом полного погружения именно в его среду.

(по аналогии с изучением иняза)

А сам учебник написать на более приземленом к жизни стиле не стесьняясь пространных описаний простым языком.


Опять же, на своём опыте...

Представил себе пустой файл как чистый лист бумаги, приняв его как некий первый слой.









на котором записал первые необходимые строки

// заголовок в виде закоментированных строк с описанием что это за код и для чего
// может отсутствовать вообще, либо просто написать имя файла...
//---
// идентификаторы
#property version   "1.00"
#property indicator_chart_window
//---
// глобальные переменные, массивы и прочее на глобальном уровне кода
extern bool Комментарий=1;
//---
string expname="";
string expover="";
//---

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

Например индикатор.

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
//---
   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[])
  {
//---
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+

"сложив" два слоя мы и получим нужное, и поймём что и на каком уровне работает и принадлежит.

//+------------------------------------------------------------------+
//|                                                       первый.mq5 |
//|                        Copyright 2009, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
//---
// идентификаторы
#property copyright "2009, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
#property indicator_chart_window
//---
// глобальные переменные, массивы и прочее на глобальном уровне кода
extern bool Комментарий=1;
//---
string expname="";
string expover="";
//---

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
//---
   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[])
  {
//---
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+

Часть кода "слоев" можно написать в "третьем" общем и для глобальных и для функций "слое"

подключаемом в код индикатора командой #include файле *.mqh, так:

// идентификаторы
#property copyright "2009, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
#property indicator_chart_window
#include "File.mqh"

или вместо кавычек скобки #include <бла>

Впрочем справку никто не отменял читать на досуге...


Как-то так...

Прошу не пинать если буду иногда повторяться.