# Уроки по программированию на языке MQL4 от eevviill

Раздел: Язык программирования MQL4
Автор темы: eevviill
Создана: 2012-03-23 23:58
Ответов: 573 | Просмотров: 170271
Страница 28 из 29
Источник: https://forexsystemru.com/threads/67073/page-28

---

## baikot — 2016-06-12 22:20

спасибо

## Rennela — 2016-06-17 21:22

Решил научиться программировать на MQL4. Начал со скрипта и захожу в тупик. Ребята,если не трудно,подскажите в чем ошибка?При компиляции ошибок нет,но при запуске выдает ошибку 130. Удалял поочередно стоплосс и тейкпрофит. Со стопом запускается, а с тейком выдает ошибку.Нормализовал цену:double TP=NormalizeDouble(Bid+StopLoss*Point,Digits);обновлял данные-все тоже.Что не так?
//----------------------------------------------------------------------   
int start()
  {
  int StopLoss=500;
  int TakeProfit=1000;
  int Delta_start=600;
  string Symb=Symbol();
//------------------------------------------------------------------------------------
  while(True)
    {
    int Min_Dist=MarketInfo(Symb,MODE_STOPLEVEL);
    if(StopLoss<Min_Dist)
      {
      StopLoss=Min_Dist;
      Alert("Увеличена дистанция StopLoss");
      }
    double SL=Bid-StopLoss*Point;
    if(TakeProfit<Min_Dist)
      {
      TakeProfit=Min_Dist;
      Alert("Увеличена дистанция TakeProfit");
      }  
    double TP=Bid+TakeProfit*Point;     
    int Ticket_Buy=OrderSend(Symb, OP_BUYSTOP, 0.01,Ask+Delta_start*Point,0,SL,TP);
    Alert(GetLastError());
    break;
    }
  return(0);
  }
//------------------------------------------------------------------------------------

## alexshell — 2016-06-18 10:02

> Цитата (Rennela):
> Решил научиться программировать на MQL4. Начал со скрипта и захожу в тупик. Ребята,если не трудно,подскажите в чем ошибка?При компиляции ошибок нет,но при запуске выдает ошибку 130. Удалял поочередно стоплосс и тейкпрофит. Со стопом запускается, а с тейком выдает ошибку.Нормализовал цену:double TP=NormalizeDouble(Bid+StopLoss*Point,Digits);обновлял данные-все тоже.Что не так?
> //----------------------------------------------------------------------
> int start()
>   {
>   int StopLoss=500;
>   int TakeProfit=1000;
>   int Delta_start=600;
>   string Symb=Symbol();
> //------------------------------------------------------------------------------------
>   while(True)
>     {
>     int Min_Dist=MarketInfo(Symb,MODE_STOPLEVEL);
>     if(StopLoss<Min_Dist)
>       {
>       StopLoss=Min_Dist;
>       Alert("Увеличена дистанция StopLoss");
>       }
>     double SL=Bid-StopLoss*Point;
>     if(TakeProfit<Min_Dist)
>       {
>       TakeProfit=Min_Dist;
>       Alert("Увеличена дистанция TakeProfit");
>       }
>     double TP=Bid+TakeProfit*Point;
>     int Ticket_Buy=OrderSend(Symb, OP_BUYSTOP, 0.01,Ask+Delta_start*Point,0,SL,TP);
>     Alert(GetLastError());
>     break;
>     }
>   return(0);
>   }
> //------------------------------------------------------------------------------------

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

## Rennela — 2016-06-18 22:48

> Цитата (alexshell):
> Ну все правильно ошибку выдает. байстоп ставите по цене выше текущей на Delta_start , а стоплосс и такепрофит почему то считаете от текущей цены. Вот такепрофит и оказывается скорее всего ниже цены установки ордера или слишком близко к цене установки.

Спасибо. Переделал.Работает.:D

## eevviill2 — 2016-08-13 19:59

!

## cudahar — 2016-11-11 15:33

Что такое " расширение " что такое " скрипты " " кампиляция "

## Ugar — 2016-11-12 00:38

> Цитата (cudahar):
> Что такое " расширение " что такое " скрипты " " кампиляция "

Я бы посоветовал в терминале нажать кнопку F1. Но тут вопрос о расширении, похоже надо начинать с книжки "компьютер для чайников".

## cudahar — 2016-11-12 12:41

Ладно , попробую почитать про кампиляцию  , а вот интересно , при написании программы как комьютер  воспринимает ПРОБЕЛ  ? точнее  длину пробела ?  Если пробел будет длиною в один клик , в два , в три клика - это одно и то же или по разному будет восприниматься компьюбтером ?

## Ugar — 2016-11-12 21:57

> Цитата (cudahar):
> Ладно , попробую почитать про кампиляцию  , а вот интересно , при написании программы как комьютер  воспринимает ПРОБЕЛ  ? точнее  длину пробела ?  Если пробел будет длиною в один клик , в два , в три клика - это одно и то же или по разному будет восприниматься компьюбтером ?

Пробел имеет большое значение, а его длина не имеет значения.

## cudahar — 2016-11-12 22:10

Да , именно длина пробела  меня и интересовала . То есть   к примеру                        "      абвгд      "                     ЛИБО                     "      а              б                в                г          д      "         будет воспринято компьютером одинаково ?      Разумеется ковычки  не в счёт                       "  ЛИБО " тоже не в счёт

## Ugar — 2016-11-13 13:09

> Цитата (cudahar):
> Да , именно длина пробела  меня и интересовала . То есть   к примеру                        "      абвгд      "                     ЛИБО                     "      а              б                в                г          д      "         будет воспринято компьютером одинаково ?      Разумеется ковычки  не в счёт                       "  ЛИБО " тоже не в счёт

Нет. 
```
абвгд
```
 и 
```
а б в г д
```
  совершенно разное. Наличие пробела важно.
А вот                     
```
а б в г д
```
 и                     
```
а  б  в    г   д
```
 и даже
                                        
```
а б 
в г     д
```
 то же самое

## cudahar — 2016-11-13 15:24

Мисстика ..................шаг влево  . шаг вправо - попытка к бегству

## cudahar — 2016-11-14 14:50

Что интересно , при написании  текста или  как там КОДА .............а      б                   в г д е        ё        ж           з  ..........я ставлю длинные пробелы . а компьютер  . после отправки  ,  их сам укорачивает до одного пробела . ну да ладно . раз это не имеет значение . Мне интересно а на  демоверсии будет  работать советник ? Или он только на реале  работает ?

## Buldakov — 2017-07-28 20:36

Не могу найти функцию, которая показывает уровень маржи по открытым позициям в процентах.
Например есть 3 советника, которые торгуют одновременно. Если уровень маржи стал меньше заданного значения (например 2000%) - то советник не откроет новую сделку.

## alexshell — 2017-07-29 05:00

> Цитата (Buldakov):
> Не могу найти функцию, которая показывает уровень маржи по открытым позициям в процентах.
> Например есть 3 советника, которые торгуют одновременно. Если уровень маржи стал меньше заданного значения (например 2000%) - то советник не откроет новую сделку.

Уровень = AccountEquity( )  / AccountMargin( )  * 100;
Да и учтите, что эта формула при отсутствии открытых позиций дает деление на ноль. Как с этим бороться, думаю для вас не  проблема.

## Buldakov — 2017-07-31 20:50

Да. все попробовал. и получилось.
Формула уровня маржи выглядит примерно так:
double Level=(100*AccountEquity())/(MathAbs(AccountEquity()-AccountFreeMargin())+0.1);

## progenitor — 2017-10-24 02:29

**боллинджер**

Приветствую!

А можно ли где найти код стандартного боллинджера т.е. все расчеты в одном индикаторе. стандартный iBands не видно как считает. Популярный Bands.mq4 тоже не полностью описан в одном файле т.к. ссылается на внешний #include <MovingAverages.mqh>

## _SERG_ — 2017-10-24 17:22

> Цитата (progenitor):
> Приветствую!
>
> А можно ли где найти код стандартного боллинджера т.е. все расчеты в одном индикаторе. стандартный iBands не видно как считает. Популярный Bands.mq4 тоже не полностью описан в одном файле т.к. ссылается на внешний #include <MovingAverages.mqh>

Он не ссылается, а включает текст файла MovingAverages.mqh в том месте где написана директива #include. Разницу уловил?

## Ugar — 2017-10-31 23:58

> Цитата (progenitor):
> Приветствую!
>
> А можно ли где найти код стандартного боллинджера т.е. все расчеты в одном индикаторе. стандартный iBands не видно как считает. Популярный Bands.mq4 тоже не полностью описан в одном файле т.к. ссылается на внешний #include <MovingAverages.mqh>

Конверт Боллинжера состоит из SMA и Standard Deviation с одинаковыми периодами по Close. Средняя линия SMA. Верхняя линия SMA+Standard Deviation* Deviation. Нижняя SMA-Standard Deviation* Deviation.
Deviation - входной параметр.

## kaiske — 2017-12-15 11:38

СКОЛЬКО ВРЕМЕНИ НУЖНО С НУЛЯ ДО МАСТЕРА ДЕЛАТЬ ИНДИКАТОРЫ И СОВЕТНИКИ?

---

Следующая страница: https://forexsystemru.com/threads/67073/page-29
