как написать программу робота для торговли в терминале метатрейдер на языке програмирования MQL-5

 
для начала вопрос как задать функцию открытия сделки ? или написать ей . если есть сигнал .сигнал какой пока не обговаривается и от чего .
 
Лауреат:
для начала вопрос как задать функцию открытия сделки ? или написать ей . если есть сигнал .сигнал какой пока не обговаривается и от чего .

Программы пишутся в редакторе кодов MetaEditor.

Как самому создать советника или индикатор - Алгоритмический трейдинг, торговые роботы

Самый простой код:

//+------------------------------------------------------------------+
//|                                 Simple adviser Open position.mq5 |
//|                              Copyright © 2019, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2019, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.000"
//---
#include <Trade\Trade.mqh>
CTrade         m_trade;                      // trading object
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   m_trade.Buy(1.0);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---

  }
//+------------------------------------------------------------------+


Блок

//---
#include <Trade\Trade.mqh>
CTrade         m_trade;                      // trading object

подключает библиотеку (пока не думайте об этом слове, просто так надо)  и создаёт объект библиотеки.


А вот это

int OnInit()
  {
//---
   m_trade.Buy(1.0);
//---
   return(INIT_SUCCEEDED);
  }

и есть команда "Открыть позицию BUY по текущему символу объёмом 1.0 лот".

Как самому создать советника или индикатор - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
Как самому создать советника или индикатор - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
  • www.metatrader5.com
Для разработки торговых систем в платформу встроен собственный язык программирования MetaQuotes Language 5 (MQL5), среда разработки MetaEditor и инструменты тестирования стратегий. Любую информацию о разработке торговых стратегий на языке MQL5 можно найти на официальном сайте MQL5.community. На этом же сайте в разделе Code Base могут быть...
 
Лауреат:
для начала вопрос как задать функцию открытия сделки ? или написать ей . если есть сигнал .сигнал какой пока не обговаривается и от чего .
Возможно, Вас заинтересует такое решение: 

https://www.mql5.com/ru/forum/325743


 
допустим у меня такой алгоритм . если имеется свеча равная заданному значению double q / тогда функция открытия .как это прописать в коде ?
 
Почитайте раздел статей, пожалуйста.
 

Дорогу осилит идущий.

Чтобы научиться писать программы - надо их писать. 

Начинай с КодоБазы - бери самый простой эксперт, гляди, как там написано, сверяйся со справкой, и делай так же, что непонятно - спрашивай в форуме.  

А так вот, на пустом месте спрашивать "как" - довольно глупо.  В программировании, как и в геометрии нет "царского" пути...

 
Лауреат:
допустим у меня такой алгоритм . если имеется свеча равная заданному значению double q / тогда функция открытия .как это прописать в коде ?
Я могу выложить код на PascalABC для алгоритмического ядра .ехе для моего универсального советника, дело-то примитивное. И, главное, в нем не будет нужды ничего писать в духе "как открыть сделку", там будет всего-то прочтение файла с котировками и одно условие, если клозе на последнем неизменном отсчёте минус клозе на предыдущем отсчёте больше некоторого значения - записать в файл указание бай, если меньше минус того же значения - записать в файл указание селл. Код примитивен и абсолютно понятен будет. Ибо в нем будет только алгоритм. Сама идея. А не техника "как отправить запрос на сервер". И при дальнейшем развитии алгоритма останется все также только сам алгоритм, а не технические нюансы как же это открыть или закрыть. Разделение алгоритма и всего остального ненужного для алгоритмиста - великое дело, позволяющее начать алготрейдинг сразу же, по щелчку пальцев, людям, которые в жизни ни разу не видели никакого mql5. 
 
Лауреат:
допустим у меня такой алгоритм . если имеется свеча равная заданному значению double q / тогда функция открытия .как это прописать в коде ?

Лучше размер свечи задавать в целых величинах (пунктах, пипсах и тому подобное):

//+------------------------------------------------------------------+
//|                                 Simple adviser Open position.mq5 |
//|                              Copyright © 2019, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2019, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.001"
//---
#include <Trade\Trade.mqh>
CTrade         m_trade;                         // trading object
//--- input parameters
input ushort   InpMinimumCandleHeight  = 15;    // Minimum Candle Height, in pips (1.00045-1.00055=1 pips)
//---
double   m_minimum_candle_height       = 0.0;   // Minimum Candle Height   -> double

и сразу объявить переменную m_minimum_candle_height - в ней будет хранится минимально заданная величина свечи пересчитанная в double 


В OnInit() вычисляем эту переменную:

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   m_minimum_candle_height    = InpMinimumCandleHeight * Point();
//---
   return(INIT_SUCCEEDED);
  }


Остаётся в OnTick() проверить два условия: если нет позиций и размер свечи больше заданного - открываем позицию BUY. Чтобы получить размер свечи применяем  CopyRates, вариант

Обращение по начальной позиции и количеству требуемых элементов

int  CopyRates(
   string           symbol_name,       // имя символа
   ENUM_TIMEFRAMES  timeframe,         // период
   int              start_pos,         // откуда начнем 
   int              count,             // сколько копируем
   MqlRates         rates_array[]      // массив, куда будут скопированы данные
   );


//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   if(PositionsTotal()>0)
      return;

   MqlRates rates[];
   ArraySetAsSeries(rates,true);
   int start_pos=0,count=3;
   if(CopyRates(Symbol(),Period(),start_pos,count,rates)!=count)
      return;

   if(MathAbs(rates[0].open-rates[0].close)>m_minimum_candle_height)
      m_trade.Buy(1.0);
  }

В массив rates поступают исторические данные свечи. Сразу массиву применяем ArraySetAsSeries(rates,true) -> чтобы элемент с индексом 0 в массиве соответствовал самому правому бару на графике (текущему бару).

Документация по MQL5: Доступ к таймсериям и индикаторам / CopyRates
Документация по MQL5: Доступ к таймсериям и индикаторам / CopyRates
  • www.mql5.com
Получает в массив rates_array исторические данные структуры MqlRates указанного символа-периода в указанном количестве. Отсчет элементов от стартовой позиции ведется от настоящего к прошлому, то есть стартовая позиция, равная 0, означает текущий бар. При копировании заранее неизвестного количества данных рекомендуется в качестве приемного...
Файлы:
1.mq5  5 kb
 
Может Вам робот и не нужен. Здесь такие умы разбились. Покупайте как Баффет, по дешевке и продавайте дорого.
 
мне знания нужны хочу понять как устроено .
 
Лауреат:
мне знания нужны хочу понять как устроено .
Доки наше все. Открываешь, вдумчиво куришь, пробуешь что-то изобразить, не получается, куришь снова и далее по кругу. На выходе - или кодер, или ну его на фиг. Далее уже как затащит, может и кураж поймаешь, в разработчики выйдешь.
Причина обращения: