FAQ по MQL для начинающих

 
Уважаемые господа программисты поделитесь опытом с начинающими! :-)
Думаю у многих найдется чем поделится, каждый по небольшой подсказке и получится внушительный FAQ.

Renat писал (а): 'Отвратительная документация по MQL4'
Кто готов внести посильный вклад в расширение документации?

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

Начну как говорится с себя :-)

1) как запустить редактор (MetaEditor) для программирования?




2) Как перевести справочник на русский язык?

для этого в MetaEditor откроем: Wiev -> Languages -> Russian после этого MetaEditor нужно перезапустить




3) Как быстро вызвать справку по функции или команде встроенного языка?

Для этого нужно установить курсор на нужную функцию и нажать F1





4) Как изменить размер шрифта в справочнике?

Для этого нужно нажать кнопку "Ctrl" на клавиатуре и удерживая её в нажатом положении покрутить колесико мыши.

так



или так



__________________________________________________________________

 
Как подключить(запустить) советник (эксперт)?

Подключается так: Вид -> Навигатор -> Советники -> Probe (имя нашей программки)

Появится окно настройки советника, в нем нужно убедится что в разделе

"Автоматическая торговля" установлена галочка "Разрешить советнику торговать"


После успешного запуска в правом верхнем углу графика должна появится улыбающаяся рожица




 
Не знаю, может пригодиться. Иногда спрашивают что такое инициализация.
Инициализация-присвоение начального значения переменной.
К примеру:
double d=1;//объявление переменной d типа double инициализация её 1
......//какой-то код
d=3;//присвоение

Ещё инициализацией называют выполнение каких-либо подготовительных
действий перед началом работы программы. Например, задание начальных значений параметров
или создание файлов, необходимых для работы.
Деинициализация-выполнение каких-либо действий программой перед
завершением её работы.

Если я не прав, то поправьте меня.
 
Совершенно правильно. А еще учтите, что инициализация и деинициализация советников производится в любом случае независимо от установленных ключей.

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

Я лично понимал так что ни одна строка кода советника не будет выполняться. Но на самом деле получил такой протокол:

....Открываем график, вешаем на него советника
2007.03.24 09:49:16 Simple USDCAD,H1: loaded successfully
2007.03.24 09:49:21 Simple USDCAD,H1: Initialization, IsTradeAllowed=0 - Это советник печатает 0 если в свойствах советника торговля запрещена, 1 - если разрешена
2007.03.24 09:49:21 Simple USDCAD,H1: initialized
....Закрываем график
2007.03.24 09:49:33 Simple USDCAD,H1: DeInitialization, IsTradeAllowed=0
2007.03.24 09:49:33 Simple USDCAD,H1: deinitialized
2007.03.24 09:49:33 Simple USDCAD,H1: removed
 
еще один способ изменить размер шрифта в хелпе (ТОЛЬКО ДЛЯ МЕТА ЕДИТОРа)

1 в папке с терминалом находим папку languages, заходим в нее
2 находим файл metaeditor.xml (английский) или metaeditor_<language>.xml (например, metaeditor_russian.xml)
3 открываем его в блокноте
4 на первой странице находим строки
<styles>
* { font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif; font-size:1em; }
5 в font-size:1em вместо 1em пишем, например, 22px
6 сохраняем, перезапускаем МетаЕдитор (если не поможет, значит нужно и Терминал перезапустить)
 
1. Как генерировать уникальные имена для графических объектов?
Я использую GetTickCount(), какие еще есть варианты?
 

Можно так:

   string Prefix   = "Expert_123_";          // Для текущего эксперта
   string Obj_Name = Prefix + TimeCurrent(); // Имя объекта
 
if(...)
{
    int a = 0;
}
else
{
    int a = 0;
}
Компилятор ругается на вторую "а", говорит "уже определена". Это нормальное поведение? В документации область видимости слабенько описана.
 
cout:
if(...)
{
    int a = 0;
}
else
{
    int a = 0;
}
Компилятор ругается на вторую "а", говорит "уже определена". Это нормальное поведение? В документации область видимости слабенько описана.
Для MQL4 матюки в адрес второй "a", являются нормой. Единожды определенная переменная в MQL независима от того в каком месте функции она определена и является действительной в любом другом месте той же самой функции.
 
ТрейлингСтоп есть стандартный?
 
cout:
ТрейлингСтоп есть стандартный?
Такой что ли?
 
   int orders_count=OrdersTotal(),order_type,i;
   string symbol=Symbol();
   
   for(i=0;i<orders_count;i++)
   {
        if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)&&OrderSymbol()==symbol)
        {
            order_type=OrderType();
            if(order_type==OP_BUY)
            {
                    if(Bid-OrderOpenPrice()>(TrailingStop*Point))
                    {
                        if(OrderStopLoss()<(Bid-TrailingStop*Point)||(OrderStopLoss()==0))
                        {
                            OrderModify(OrderTicket(),OrderOpenPrice(),Bid-TrailingStop*Point,OrderTakeProfit(),0,Yellow);
                        }
                    }
            }
            if(order_type==OP_SELL)
            {
                    if(OrderOpenPrice()-Ask>(TrailingStop*Point))
                    {
                        if(OrderStopLoss()>(Ask+TrailingStop*Point)||(OrderStopLoss()==0))
                        {
                            OrderModify(OrderTicket(),OrderOpenPrice(),Ask+TrailingStop*Point,OrderTakeProfit(),0,Red);
                        }
                    }
            }
        }
        
   }
Причина обращения: