Как опубликовать свой продукт в сервисе Маркет

17 апреля 2012, 14:35
MetaQuotes
367
70 821

Маркет предлагает уникальные возможности для разработчиков информационно-аналитических систем и торговых роботов:

  • Доступ к огромной аудитории
    Разместив свою программу в Маркете, вы получите доступ к огромному рынку потенциальных клиентов. Ваша разработка будет представлена во всех клиентских терминалах MetaTrader, а также на витрине MQL5.community с высокой ежедневной посещаемостью.

  • Защита разработок
    Купить готовую программу можно только через клиентский терминал MetaTrader и на сайте MQL5.com. При покупке для каждого пользователя создается специальная версия продукта с дополнительной защитой. Программа жестко привязывается к компьютеру, с которого осуществляется покупка — запустить ее можно только на нем. Даже получив купленный файл, злоумышленник не сможет его использовать или перепродать.

    Процесс привязки к компьютеру называется активацией. Для каждого продукта их доступно как минимум пять — на случай смены компьютера, переустановки системы и т.д. По своему усмотрению продавец может увеличить количество активаций.

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

  • Бесплатные пробные версии
    Маркет предлагает готовый механизм для демонстрации возможностей вашей разработки. Для каждого опубликованного продукта доступна бесплатная версия, которую можно запускать только в тестере стратегий. Это позволяет еще до покупки проверить заявленные характеристики и убедиться в работоспособности приложения. Демо-версии нельзя запустить на графике в терминале, а соответственно — нельзя использовать для торговли. Таким образом, интересы разработчиков остаются защищенными, а покупатель избавлен от покупки кота в мешке.

  • Готовая система оплаты
    Используя Маркет, вы получаете готовый механизм для приема платежей за продаваемые разработки. Пользователи могут оплачивать продукты кредитными картами и кошельками в популярных платежных системах. Средства за вычетом комиссии сервиса поступают на внутренний счет продавца, откуда он может вывести их в любой момент удобным способом.

Для получения всех преимуществ нужно выполнить всего два шага: зарегистрироваться продавцом и оформить свою разработку в виде продукта в Маркете.


Регистрация в качестве продавца

Для получения статуса продавца пройдите простую процедуру регистрации. Она полностью автоматическая и занимает не более пяти минут.

Перейдите в раздел "Продавец" своего профиля, прочитайте и примите правила:

Для регистрации откройте раздел "Продавец" в профиле


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

На следующем шаге сфотографируйтесь вместе с этим же документом в руке, как показано на иллюстрации.

Для подтверждения личности загрузите фото документа и ваше селфи с документом в руке


Проверка ваших документов займет несколько минут. Как только она будет завершена, вы получите уведомление: в личных сообщениях на сайте, по почте и по SMS. Также после подтверждения регистрации рядом с вашим именем в профиле появится соответствующий значок.

После подтверждения регистрации рядом с вашим именем появится значок


Подготовка продукта: Общая информация

Перейдите в Маркет и нажмите "Добавить продукт". Заполните общие сведения о продукте — название, тип программы, категорию и цену.

Добавьте продукт и заполните общую информацию

На что стоит обратить внимание:

  • Давайте продукту понятное название, кратко описывающее его суть. Не используйте сокращения и не злоупотребляйте заглавными буквами. В названии продукта запрещается упоминание прибыли или какие-либо намеки на обогащение. Оно не должно быть кричащим.
  • Обязательно заполняйте поле "Тип эксперта/индикатора/утилиты" в зависимости от функциональности вашей программы. Потенциальные покупатели смогут использовать эти типы в качестве фильтров при поиске продуктов.
  • Возможность краткосрочной аренды продукта за небольшую стоимость может положительно сказаться на ваших продажах. Пользователи смогут проверить программу в реальных условиях, убедиться в ее пользе и согласиться на покупку безлимитной версии.

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


Подготовка продукта: Логотип

Загрузите логотип. Это лицо вашего продукта, по нему у пользователей будет складываться первое впечатление. Логотип должен быть привлекательным и отражать главную идею продукта.

Добавьте для продукта привлекательный логотип

Вам понадобится 3 изображения разного размера: 200x200, 140x140 и 60x60. Это необходимо, чтобы логотип красиво вписывался в каждое место, где ваш продукт будет показываться.

Если у вас есть только одно изображение 200x200, остальные варианты можно создать автоматически на его основе. Для этого нажмите "Из большего". Однако для наилучшего результата рекомендуется сделать все варианты самостоятельно.

Продукты на витринах Маркета отображаются на белом фоне, поэтому фон логотипа рекомендуется делать контрастным.

Витрина продуктов в MetaTrader 5

На логотипе запрещено использовать изображение денег и каких-либо других ценностей.

Дополнительные рекомендации по логотипам читайте в статье "Как правильно подать Продукт для продажи в Маркете?"


Подготовка продукта: Описание

В разделе "Описание" расскажите о вашем продукте. Например, для советника это может быть описание торговой стратегии, особенностей риск-менеджмента, параметров системы и т.д. Хорошим плюсом будет ссылка на мониторинг счета, чтобы потенциальный покупатель мог увидеть робота в реальной работе.

В разделе "Описание" расскажите о своем продукте

Мы настоятельно рекомендуем добавлять описание продукта на всех языках, доступных на MQL5.com. Это благоприятно сказывается на продажах. Аудитория сообщества мультиязычна: чем больше языков вы охватите, тем шире будет круг потенциальных покупателей. Информация гораздо лучше воспринимается, если она на родном языке пользователя. Перевод описания можно заказать через сервис "Фриланс".

При оформлении описания обязательно учитывайте правила сервиса:

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

Описание должно быть максимально чистым и понятным. Главная цель — удобство покупателей.

Подробная информация об оформлении доступна в статьях:

Подготовка продукта: Скриншоты

Для иллюстрации работы продукта загрузите скриншоты. Для советника это могут быть результаты торговли на истории и статистические характеристики — их можно взять из отчета тестера стратегий и мониторинга. В случае индикаторов/панелей можно приложить скриншоты графика из терминала.

Продемонстрируйте работу продукта с помощью скриншотов и видео


Если скриншотов несколько, вы можете вручную поменять их порядок после загрузки — просто перетаскивайте их на нужно место.

Для скриншотов нет разделения по языкам, поэтому они должны быть на английском — так вы охватите наибольшую часть аудитории.

Требования к скриншотам: размер 640x480, формат GIF, PNG, JPG или JPEG.

В этом же разделе вы можете добавить ссылки на видео-ролики на YouTube — это отличный способ продемонстрировать работу вашего продукта в живую. Для каждого языка сайта можно добавить отдельную ссылку на ролик.


Подготовка продукта: Версии

В разделе "Версии" загрузите скомпилированный файл продукта — EX4 или EX5. Этот же раздел в последующем будет использоваться для загрузки обновленных версий программы.

Загрузите файл программы в разделе "Версии"


Перед загрузкой проверьте свойства программы в коде, они задаются при помощи директивы #property. В них должна быть указана версия файла в формате [мажорная версия].[минорная версия]. Каждый раз при загрузке новых файлов продукта эту версию необходимо поднимать. Обратите внимание, что для минорной версии нет разделения по разрядам. 1.01 и 1.1 фактически обозначают это одно и то же — первую минорную версию.

Помимо этого рекомендуем добавить в свойства краткое описание программы, ссылку на полное описание и логотип (в формате ICO). Это придаст продукту законченный вид и позволит вашим клиентам всегда иметь под рукой необходимую информацию.

#property copyright "Visit product page"
#property link      "https://www.mql5.com/en/market/product/41"
#property version   "1.00"
#property description "The trade strategy is based on three moving averages. To determine the trend, it uses three exponentially smoothed moving averages: FastEMA, MediumEMA and SlowEMA. "
Информация будет отображаться при запуске программы в терминалах:


Укажите свойства программы, чтобы они показывались при ее запуске в терминалах

Продукт может быть представлен только одним файлом EX4 или EX5. Все дополнительные файлы, которые необходимы для его работы, — индикаторы, изображения, звуки, — должны быть включены в ресурсы.

Описание, все сообщения и наименования входных параметров MQL5-программы должны быть на английском языке. Для проверки правописания английских слов можно воспользоваться сервисами проверки, например http://www.spellcheck.net/.

Чтобы заменить ранее загруженный файл, нажмите Замена файласправа от него.


Автоматическая валидация программы

Сразу после загрузки файл программы будет отправлен на автоматическую проверку. Она осуществляет базовый контроль качества продуктов:

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

Проверка выполняется путем многократного запуска программы в тестере стратегий с разными торговыми условиями: на разных символах и таймфреймах.

Обычно она занимает не больше 10 минут. Ее статус показывается в окне прогресса публикации:

Каждый файл проходит автоматическую проверку

Результаты проверки выводятся в отчете.

Если при тестировании будут выявлены ошибки, вы получите уведомление об этом в личных сообщениях.

Если продукт не пройдет проверку, вы получите уведомление

Откройте отчет тестирования, проверьте и исправьте ошибки:

Устраните ошибки, выявленные при проверке


Подробная информация об ошибках и способах их устранения доступна в статье "Какие проверки должен пройти торговый робот перед публикацией в Маркете".

Тестирование программ происходит с использованием котировок и торгового окружения демонстрационного сервера MetaQuotes-Demo. Если на вашем счете не воспроизводится проблема, которую показали автоматически тесты, откройте демо-счет на нашем сервере и проведите проверку на нем.


Публикация продукта

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

Перед публикацией продукта убедитесь, что он соответствует правилам сервиса

После публикации ваш продукт станет доступен для пользователей — на витрине сайта MQL5.com и в торговых терминалах MetaTrader.


Обновление версии продукта

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

Маркет предоставляет удобный механизм для распространения новых версий. Как только вы опубликуете обновление, все ваши клиенты получат уведомления через личные сообщения, и смогут установить его через терминал MetaTrader.

Для загрузки новой версии файла перейдите в раздел "Версии".

Загружайте обновления продука через раздел "Версии"

При публикации добавляйте описание обновлений, желательно — на максимальном количестве языков. Так вы централизовано расскажите клиентам о новых функциях и получите больше отзывов, а потенциальные покупатели будут видеть, что ваш проект не стоит на месте.


Статистика покупок и скачиваний

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

Вам доступны данные по продажам и скачиваниям продукта

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


Пользуйтесь преимуществами Маркета

Сервис Маркет является удобной площадкой для покупки и продажи программ для платформы MetaTrader.

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

Для разработчиков это готовая экосистема для заработка — доступ к аудитории, механизм лицензирования, платежный сервис и многое другое.

Хотите предложить свою разработку трейдерам со всего мира? Опубликуйте ее в Маркете и начинайте зарабатывать, а технические детали сервис возьмет на себя.

Последние комментарии | Перейти к обсуждению на форуме трейдеров (367)
Kirill Voytseshchuk

Прочитал, вставил в код

Неправильные объемы в торговых операциях

Перед отправкой торговых приказов необходимо также проверять корректность объемов, указываемых в ордере. Количество лотов, которое собирается указать в ордере советник, нужно проверять перед тем как вызвать функцию OrderSend(). Для финансовых инструментов в Спецификации указываются минимальный и максимальный разрешенные объемы для торговли, а также градация объема. Получить эти значения в MQL5 можно из перечисления ENUM_SYMBOL_INFO_DOUBLE с помощью функции SymbolInfoDouble()

//+------------------------------------------------------------------+
//|  Проверяет объем ордера на корректность                          |
//+------------------------------------------------------------------+
bool CheckVolumeValue(double volume,string &description)
  {
//--- минимально допустимый объем для торговых операций
   double min_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MIN);
   if(volume<min_volume)
     {
      description=StringFormat("Объем меньше минимально допустимого SYMBOL_VOLUME_MIN=%.2f",min_volume);
      return(false);
     }

//--- максимально допустимый объем для торговых операций
   double max_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MAX);
   if(volume>max_volume)
     {
      description=StringFormat("Объем больше максимально допустимого SYMBOL_VOLUME_MAX=%.2f",max_volume);
      return(false);
     }

//--- получим минимальную градацию объема
   double volume_step=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_STEP);

   int ratio=(int)MathRound(volume/volume_step);
   if(MathAbs(ratio*volume_step-volume)>0.0000001)
     {
      description=StringFormat("Объем не является кратным минимальной градации SYMBOL_VOLUME_STEP=%.2f, ближайший корректный объем %.2f",
                               volume_step,ratio*volume_step);
      return(false);
     }
   description="Корректное значение объема";
   return(true);
  }

Не помогло, может какой другой код поправить?

Подскажите, как доработать скрипт.

Vladimir Karputov
Kirill Voytseshchuk #:

Прочитал, вставил в код

Неправильные объемы в торговых операциях

Перед отправкой торговых приказов необходимо также проверять корректность объемов, указываемых в ордере. Количество лотов, которое собирается указать в ордере советник, нужно проверять перед тем как вызвать функцию OrderSend(). Для финансовых инструментов в Спецификации указываются минимальный и максимальный разрешенные объемы для торговли, а также градация объема. Получить эти значения в MQL5 можно из перечисления ENUM_SYMBOL_INFO_DOUBLE с помощью функции SymbolInfoDouble()

Не помогло, может какой другой код поправить?

Подскажите, как доработать скрипт.

Читайте статью полностью, 'CheckVolumeValue' - это проверка корректности входных параметров.

А есть ещё проверка правильного округления лота ...

Kirill Voytseshchuk

С учетом объема открытой позиции и объема в отложенных ордерах, окончательная проверка будет выглядеть так:

//+------------------------------------------------------------------+
//|  Возвращает максимально допустимый объем для ордера по символу   |
//+------------------------------------------------------------------+
double NewOrderAllowedVolume(string symbol)
  {
   double allowed_volume=0;
//--- получим ограничение на максимальный объем в ордере
   double symbol_max_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MAX);
//--- получим ограничение по символу на объем
   double max_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_LIMIT);

//--- получим объем открытой позиции по символу
   double opened_volume=PositionVolume(symbol);
   if(opened_volume>=0)
     {
      //--- если мы уже исчерпали объем
      if(max_volume-opened_volume<=0)
         return(0);

      //--- объем открытой позиции не превышает max_volume
      double orders_volume_on_symbol=PendingsVolume(symbol);
      allowed_volume=max_volume-opened_volume-orders_volume_on_symbol;
      if(allowed_volume>symbol_max_volume) allowed_volume=symbol_max_volume;
     }
   return(allowed_volume);
  }

добавить?

checkvolumevalue.mq5 как тут написано


//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   double step=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_STEP)/2.0;
   double volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MIN)-step;
   double finish=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MAX)+step;

//--- выясним сколько знаков после запятой содержится в градации объема
   int digits=(int)MathLog10(SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_STEP));
   if(digits<0) digits=-digits;
   else digits=0;

//--- проверим  в цикле множество различных значений объема
   while(volume<finish+4*step)
     {
      string descr;
      if(!CheckVolumeValue(volume,descr))
        {
         Print("Результат проверки ",volume,": ",descr);
        }
        else PrintFormat("Объем %G является корректным",volume);
      volume+=3*step;
      volume=NormalizeDouble(volume,digits+1);
     }
//---
  }
//+------------------------------------------------------------------+
//|  Проверяет объем ордера на корректность                           |
//+------------------------------------------------------------------+
bool CheckVolumeValue(double volume,string &description)
  {
//--- минимально допустимый объем для торговых операций
   double min_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MIN);
   if(volume<min_volume)
     {
      description=StringFormat("Объем меньше минимально допустимого SYMBOL_VOLUME_MIN=%.2f",min_volume);
      return(false);
     }

//--- максимально допустимый объем для торговых операций
   double max_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MAX);
   if(volume>max_volume)
     {
      description=StringFormat("Объем больше максимально допустимого SYMBOL_VOLUME_MAX=%.2f",max_volume);
      return(false);
     }

//--- получим минимальную градацию объема
   double volume_step=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_STEP);

   int ratio=(int)MathRound(volume/volume_step);
   if(MathAbs(ratio*volume_step-volume)>0.0000001)
     {
      description=StringFormat("Объем не является кратным минимальной градации SYMBOL_VOLUME_STEP=%.2f, ближайший корректный объем %.2f",
                               volume_step,ratio*volume_step);
      return(false);
     }
   description="Корректное значение объема";
   return(true);
  }
//+------------------------------------------------------------------+
Vladimir Karputov
Kirill Voytseshchuk #:

С учетом объема открытой позиции и объема в отложенных ордерах, окончательная проверка будет выглядеть так:

добавить?

checkvolumevalue.mq5 как тут написано


Все нужные проверки есть в статье Почти конструктор для создания советника 

Kirill Voytseshchuk

Про ранее код спросил подходит?

Могли бы написать нужные строчки из статьи.

Кто есть кто в MQL5.community? Кто есть кто в MQL5.community?
Сайт MQL5.com хорошо помнит каждого из вас! Сколько ваших тредов стали эпичными, насколько популярными оказались ваши статьи и как часто скачивались ваши программы из Code Base – это лишь небольшая часть того, что помнит о вас MQL5.com. Достижения каждого из вас доступны в профиле, но как выглядит картина в целом? В этой статье мы построим общую картину достижений всех участников MQL5.community.
AutoElliottWaveMaker - инструмент полуавтоматической разметки волн Эллиотта в MetaTrader 5 AutoElliottWaveMaker - инструмент полуавтоматической разметки волн Эллиотта в MetaTrader 5
В данной статье описывается программа AutoElliottWaveMaker - первая разработка по анализу волн Эллиотта в MetaTrader 5, которая сочетает в себе функции ручной и автоматической разметки волн. Инструмент анализа волн полностью написан на языке MQL5 и не включает сторонние библиотеки dll. Это еще раз подтверждает тот факт, что на MQL5 можно (и нужно) создавать сложные и интересные программы.
Несколько советов для  начинающих заказчиков Несколько советов для начинающих заказчиков
Народная мудрость, авторство которой часто приписывают различным известным людям, говорит: "Тот не ошибается, кто ничего не делает". Если не считать само ничегонеделание тоже ошибкой, то с этим утверждением трудно спорить. Зато вполне возможно проанализировать ранее совершенные ошибки (свои и чужие) и свести к минимуму количество совершаемых ошибок в будущем. Сделаем попытку разобрать возможные ситуации, возникающие в процессе выполнения работ на одноименном сервисе.
Последний крестовый поход Последний крестовый поход
Взгляните в ваш торговый терминал. Какие способы представления цены вы видите? Бары, свечи, линейный. Мы гонимся за временем и ценами, а прибыль нам дает одна цена. Так может стоит посмотреть на рынок лишь только с ценами? В данной статье предложен алгоритм построения пункто-цифровых графиков ("крестики-нолики") и скрипт, позволяющий производить построение данных графиков. Рассмотрены типичные ценовые паттерны и даны рекомендации по их практическому использованию.