YUREMAN
.Юрий

 
Уровень 9

  Торгую в компаниях:


Группа "Стол заказов MQL"

Рейтинг 2088



РЕКОМЕНДУЮ



Советник

Создать советник для бинарных опционов на MT4
  • 0
  • Просмотров: 5938
  • 25 сентября 2015, 05:52
  • YUREMAN
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
Советник для бинарных опционов
Следующая запись в группе  
OTL.mq4 мартин
24 сентября 2015
25 сентября 2015

Комментарии (33)

+
0
Нужно подробное ТЗ.
avatar

  34  AM2 Сообщений: 15882 - Андрей

  • 25 сентября 2015, 09:26
+
0
Вот переделанный здесь советник и он у меня не работает на МТ4 по Бинарным опционам
//+------------------------------------------------------------------+
//| Option.mq4 |
//| Copyright 2015, AM2 |
//| www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright «Copyright © 2015, AM2»
#property link «www.forexsystems.biz»
#property description «Simple expert advisor»

//--- Inputs
extern double Stavka = 5; // ставка в валюте
extern string Expiration = «5»; // время истечения в минутах
extern int Magic = 111; // магик
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
Comment("");
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
Comment("");
}
//+------------------------------------------------------------------+
//| Check for open order conditions |
//+------------------------------------------------------------------+
void OpenPos()
{
int res;
double bid=MarketInfo(OrderSymbol(),MODE_BID);
double ask=MarketInfo(OrderSymbol(),MODE_ASK);
//--- sell
if(High[1]<High[2] && High[3]<High[2])
{
res=OrderSend(Symbol(),OP_SELL,Stavka,bid,0,0,0,Expiration,Magic,0,Red);
return;
}
//--- buy

if(Low[1]>Low[2] && Low[3]>Low[2])
{
res=OrderSend(Symbol(),OP_BUY,Stavka,ask,0,0,0,Expiration,Magic,0,Blue);
return;
}
//---
}
//+------------------------------------------------------------------+
int CountTrades()
{
int count=0;
for(int i=OrdersTotal()-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{
if(OrderType()==OP_BUY || OrderType()==OP_SELL)
count++;
}
}
}
return(count);
}
//+------------------------------------------------------------------+
//| OnTick function |
//+------------------------------------------------------------------+
void OnTick()
{
if(CountTrades()<1) OpenPos();
}
//+------------------------------------------------------------------+

avatar

  9  YUREMAN Автор Сообщений: 20 - .Юрий

  • 29 сентября 2015, 03:54
+
0
Какой брокер?
avatar

  34  AM2 Сообщений: 15882 - Андрей

  • 29 сентября 2015, 12:42
+
0
Доброе время суток. Брокер World Forex. Может не работает из-за того, что при открытии сделки открывается другая панель, не та какая в МТ4 при открытии ордера.
avatar

  9  YUREMAN Автор Сообщений: 20 - .Юрий

  • 11 октября 2015, 13:34
+
0
Дайте ссылку на терминал который качаете? И на описание торговых условий и подробностей выставления ордеров в МТ4 этого брокера?
avatar

  34  AM2 Сообщений: 15882 - Андрей

  • 11 октября 2015, 13:51
+
0
Торговые условия- Счет Option — позволяет трейдеру работать с таким финансовым инструментом, как бинарный опцион. Покупая этот вид финансового контракта, наши клиенты должны лишь определить, окажется ли цена на базовый актив выше или ниже текущей к моменту экспирации. Основными преимуществами торгового инструмента являются простота, фиксированность рисков, а также скорость. При работе с бинарными опционами трейдер выстраивает свою стратегию так, что она не будет зависеть от резких изменений на рынке.

Простота
Процесс заключения сделки очень простой: необходимо указать объем инвестиций, выбрать базовый актив, время экспирации опциона, а также направление (вверх/вниз). Другие действия от трейдера не требуются.
Скорость
Результат сделки может быть виден уже через 1 минуту (это минимальная длительность сделки).
Фиксированные риски
Трейдер рискует только той суммой, которую он инвестировал в сделку. Как потенциальная прибыль, так и убытки ограничены и известны заранее и они не зависят от количества пунктов, на которое изменится курс выбранного базового актива.----- Там скачивается специальная программа. В неё записан логин и пароль. При её запуске- запускается сам терминал МТ4 и далее работа идёт на МТ4. Яне знаю как мене Вам сюда внести скин с МТ4?
avatar

  9  YUREMAN Автор Сообщений: 20 - .Юрий

  • 11 октября 2015, 14:22
+
0
Пример совершения сделки на MetaTrader 4 терминале

ВАЖНО:
Для торговли Бинарными опционами на платформе МТ4 необходимо загрузить и установить дополнительное программное обеспечение WForex FX LITE for MT4. Руководство по установке приложения здесь>>

Руководство и приложение также доступны для загрузки в разделе «Торговый терминал»

1. Вход
Двойное нажатие на ярлык Wforex FX LITE for MT4 выведет на экран окно входа. При первом запуске, в случае если на Вашем ПК установлено несколько терминалов MetaTrader4, приложение произведет поиск всех версий торговых платформ MetaTrader4 установленных на Вашем ПК. Выберите из списка торговый терминал нашей компании World Forex Trade Station и зафиксируйте Ваш выбор, установив галочку в параметрах «Remember choice and do not show this window again», чтобы в последующем сразу открывался торговый терминал нашей компании.

Введите логин и пароль Вашего торгового счета открытого для торговли Бинарными опционами в нашей компании и нажмите Login.

ВАЖНО! После успешной авторизации откроется терминал MT4
и фоновое окно программы FX LITE. Это окно закрывать не нужно! В противном случае торговля на Бинарных опционах будет недоступна.

2. Поиск и выбор инструментов торговли
После ввода данных счета в Wforex FX LITE for MT4 откроется стандартный терминал World Forex Trade Station. Нажите правую кнопку мыши на Обзоре рынка и выберите ‘Show All’ (показать все). Напомним, что активы для торговли бинарными опционами содержат в своем окончании приставку «b» (EURUSDb, USDJPYb) “Европейский опцион» или приставку «ab» (EURUSDab, USDJPYab) «Американский опцион».

3. Как открыть сделку
Двойное нажатие левой кнопки мыши на символе Бинарных Опционов (например, USDJPYb) выведет на экран окно ордера.

В меню ордера, необходимо указать основные параметры сделки, в откидном поле Investment (Инвестиция) выбрать сумму инвестируемых в опцион средств;
установить время экспирации в откидном меню Expiry;
Система автоматически рассчитает полученную в результате успеха сделки прибыль, которая указана в значении Payout;
Далее выберите направление сделки, соответственно Up (если рассчитываете на повышение) или Down (если считаете, что цена в момент экспирации будет ниже).

Начинающим о бинарных опционах

Важно понимать несколько вещей:

Ордер “Up”(вверх) указывает на то, что если цена на USDJPY через 60 секунд с этого момента будет выше цены открытия 102.591, то Вы заработаете Payout в 65%, инвестиция вернется с прибылью и составит $165 (вычисляется от размера инвестиций $100, плюс 65% от $100, результат: $65+$100 =$165).

Аналогично, ордер “Down” (Вниз) означает, что если цена по USDJPY с этого момента будет ниже цены открытия 102.591, то Вы заработаете Payout в 65%, (расчет прибыли аналогичный вышеуказанным расчетам).

Если цена на USDJPY будет через 60 секунд (в момент экспирации) будет той же, что и при открытии, то фиксируется “Loss” (проигрыш) – т.к. не выполняется основное условие ставки, цена не изменилась.

На этом примере показана сделка, установленная с расчетом на понижение курса по активу USDJPY от цены открытия сделки 102.591. Сумма инвестиции $5, экспирация 60 секунд.

Ниже, показан пример выигрышной сделки «WIN». «Европейский опцион» на повышение «UP», инвестицией в $50, период экспирации 5 минут. На момент истечения экспирации цена USDJPY была выше на 1 пункт, от цены данного актива на момент приобретения опциона, результатом стала победа и инвестиция вернулась с прибылью $32,5.

Сделка на рисунке ниже была также на повышение «UP». «Европейский опцион» закрылся проигрышем «LOSS» (цена закрытия на момент истечения экспирации была ниже, чем цена приобретения данного актива). Инвестиция в $50 вернулась с компенсацией от суммы инвестирования $4. Убыток составил $46

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

4. Результаты сделок
Результаты сделок отображаются в Истории счета, а также персональном кабинете трейдера при нажатии на значок «H» отображенном в строке параметров торгового счета.

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

5. Досрочное закрытие.
«Американский опцион» может быть продан до момент полной экспирации (закрыт досрочно). Для этого необходимо учитывать параметр Freeze Time (промежуток времени, который определяется с момента покупки опциона и до времени его полной экспирации) и уровень комиссии, взимаемой за досрочное закрытие. В середине периода Freeze Time, кнопка досрочного закрытия неактивна. Уровень комиссии за досрочное закрытие сделки Close Fee для каждого торгового актива составляет 40% от суммы инвестиции.

Параметры Freeze Time для «Американских опционов», определены в специальном разделе сайта «Предварительные расчеты».

Расчет прибыли/убытка при досрочном закрытии сделки, происходит по формуле:

WIN: Profit = Investment *(Pay Out / 100.0) * Elapsed Time — Investment * (Close Fee / 100.0);

LOSS: Profit = Investment *( Loss / 100.0) * Elapsed Time + Investment * (Close Fee / 100.0)

Где:

Elapsed Time — отношение прошедшего времени к установленному периоду экспирации в %

Investment — Инвестиция (сумма ставки).

Pay Out – Вознаграждение в % от суммы инвестиции

Loss – Потери в % от суммы инвестиции при проигрыше (для Американских опционов всегда равна «100»).

Profit – Плавающая прибыль на момент расчета

Close Fee – комиссия за досрочное закрытие опциона в % от суммы инвестиции (ставки).

Рассмотрим пример:

Есть Американский опцион на повышение (UP), срок полной экспирации которого 5 минут, актив EURUSD, инвестиция 50 USD Рис. (2)

Для этого актива и времени экспирации определены значения Freeze Time – 90 секунд, Close Fee – 40%

По истечении 1 минуты и 52 секунд, цена купленного опциона находится выше, чем на момент приобретения и мы можем продать этот опцион. В данном случае можно закрыть опцион досрочно, зафиксировав при этом часть прибыли от полной суммы вознаграждения (Pay Out) если бы время экспирации купленного опциона закончилось в срок.

На рис.(2) можно увидеть, что на момент досрочного закрытия прибыль составляет 2,03 USD к сумме инвестиции. Имеем следующие расчеты:

WIN: Profit = Investment *Pay Out / 100.0 * Elapsed Time — Investment * Close Fee / 100.0;

Рассчитываем Elapsed Time:

5 мин =300 сек, осталось 1 мин 48 сек к полному истечению экспирации ( 108 сек.)

Elapsed Time = (300-108)/300 = 0.64 (64%)

Profit = 50 *(69 / 100) * 0.64 — 50 * (40/100) = 22.08 — 20 = 2.08

WIN: = 2.08 USD

*допускается небольшая погрешность, т.к. в момент создания снимка экрана могло пройти чуть больше времени, с учетом миллисекунд.

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

На (рис.3) приведен пример, когда опцион выигрышный, однако кнопка досрочного закрытия неактивна по причине того, что размер комиссии превышает размер прибыли в момент расчета.

Рассчитываем Elapsed Time:

5 мин =300 сек, осталось 3 мин 17 сек к полному истечению экспирации ( 197 сек.)

Elapsed Time = (300-197)/300 = 0.343 (34.3%)

Profit = 50 *(69 / 100) * 0.343 — 50 * (40/100) = 11,83 — 20 = — 8,17

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

Рассмотрим пример:

Рис. (4).

Американский опцион на повышение, срок полной экспирации 5 минут, актив EURUSD, инвестиция 50 USD. Для этого актива и времени экспирации определены значения Freeze Time – 90 сек., Close Fee – 40%

Рассчитываем Elapsed Time:

5 мин =300 сек, осталось 3 мин 28 сек к полному истечению экспирации ( 208 сек.)

Elapsed Time = (300-208)/300 = 0.3066 (30.66%)

Profit = 50 * 0.3066 + 50 * (40/100) = 15,33 + 20 = 35,33

LOSS = 35,33 USD

*допускается небольшая погрешность, т.к. в момент создания снимка экрана могло пройти чуть больше времени, с учетом миллисекунд.
avatar

  9  YUREMAN Автор Сообщений: 20 - .Юрий

  • 11 октября 2015, 14:27
+
0
Вот адрес по работе терминалаhttps://wforex.ru/binary-options/example-mt4
avatar

  9  YUREMAN Автор Сообщений: 20 - .Юрий

  • 11 октября 2015, 14:41
+
0
В этой связке предусмотрена автоторговля советником?
avatar

  34  AM2 Сообщений: 15882 - Андрей

  • 11 октября 2015, 16:55
+
0
avatar

  9  YUREMAN Автор Сообщений: 20 - .Юрий

  • 12 октября 2015, 14:53
+
0
Основные параметры написания экспертов, общие для MQL4. Ключевым, для торговли Бинарными опционами, является параметр BO exp:60

ticket=OrderSend("EURUSDab",OP_BUY,1.00,Bid,3,0,0,"BO exp:900");


Данная строка указывает на то, что заключается контракт на Американский UP опцион, сумма инвестиции 1 USD, экспирация 15 минут (900 секунд).


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

extern string Expiration = "BO exp:900"; 
avatar

  34  AM2 Сообщений: 15882 - Андрей

  • 12 октября 2015, 15:50
+
0
Доброе время суток. Я в этом не понимаю. Я вставил вашу строку, а советник не компилируется. Вы если сможете сделайте что нибудь.
avatar

  9  YUREMAN Автор Сообщений: 20 - .Юрий

  • 13 октября 2015, 08:09
+
0
Это мне терминал ваш со связкой нужно устанавливать, а у меня их и так наставлено )
Демку еще регистрировать.
avatar

  34  AM2 Сообщений: 15882 - Андрей

  • 13 октября 2015, 08:22
+
0
Я установил всю связку, но у меня отображается только символы со значком bt со значком b или ab как в описании нет. Также нет окна как на рисунке для бинариков. Я не в курсе как работать с вашей платформой.



avatar

  34  AM2 Сообщений: 15882 - Андрей

  • 13 октября 2015, 12:33
+
0
Там надо скачать дополнительную программу, я на первой ссылке вам посылал ( там много рисунков). На последней надо нажать на иконку- FX LITE скачается программа.Далее её запускаем в ней регалимся (МТ4 закрыто).Если всё нормально, то откроется МТ4. Ту программу не закрываем. Вот по этой ссылки- wforex.ru/company-news/torgovlya-sovetnikami-teper-dostupna-binarnykh-optsionakh
avatar

  9  YUREMAN Автор Сообщений: 20 - .Юрий

  • 13 октября 2015, 13:13
+
0
Я открыл не тот тип счета. Сейчас все нормально появилось. Смотрю советник.
avatar

  34  AM2 Сообщений: 15882 - Андрей

  • 13 октября 2015, 13:23
+
0
Ошибку сыпет: 2015.10.13 13:50:56.578 '863512': order buy 5.00 EURUSDb opening at market sl: 0.00000 tp: 0.00000 failed [Trade is disabled]

Разработчики MT4 рекомендуюn обращаться в техподдержку брокера при такой ошибке. В поддержке помочь не смогли но обещали прислать код рабочего советника на почту как образец.
avatar

  34  AM2 Сообщений: 15882 - Андрей

  • 13 октября 2015, 14:15
+
0
Добрый день!!! Добавьте пожалуйста к этому советнику Option.mq4 мартингейла. Мне кажется будет неплохо.
avatar

  11  a887 Сообщений: 51 - Svanik887

  • 12 сентября 2016, 15:01
+
0
Добрый день!!! Добавьте пожалуйста к этому советнику Option.mq4 мартингейла. Мне кажется будет неплохо.


Трейдерам от 3-го уровня добро пожаловать в «Стол заказов MQL»
avatar

  34  AM2 Сообщений: 15882 - Андрей

  • 13 сентября 2016, 06:35
+
0
Проверил на гранде. Работает. На скрине интересный момент: одновременно совпали 2 условия. Первым сработала продажа, так как в коде она на первом месте. И этот момент вам нужно учитывать :) 




//+------------------------------------------------------------------+
//| Option.mq4                                                       |
//| Copyright 2015, AM2                                              |
//| www.forexsystems.biz                                             |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2015, AM2"
#property link "www.forexsystems.biz"
#property description "Simple expert advisor"

//--- Inputs
extern double Stavka     = 5;   // ставка в валюте
extern string Expiration = "5"; // время истечения в минутах
extern int    Magic      = 111; // магик
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   Comment("");
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   Comment("");
  }
//+------------------------------------------------------------------+
//| Check for open order conditions                                  |
//+------------------------------------------------------------------+
void OpenPos()
  {
   int res;
   double bid=MarketInfo(OrderSymbol(),MODE_BID);
   double ask=MarketInfo(OrderSymbol(),MODE_ASK);
//--- sell 
   if(High[1]<High[2] && High[3]<High[2])
     {
      res=OrderSend(Symbol(),OP_SELL,Stavka,bid,0,0,0,Expiration,Magic,0,Red);
      return;
     }
//--- buy 

   if(Low[1]>Low[2] && Low[3]>Low[2])
     {
      res=OrderSend(Symbol(),OP_BUY,Stavka,ask,0,0,0,Expiration,Magic,0,Blue);
      return;
     }
//---
  }
//+------------------------------------------------------------------+
int CountTrades()
  {
   int count=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==OP_BUY || OrderType()==OP_SELL)
               count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//| OnTick function                                                  |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(CountTrades()<1) OpenPos();
  }
//+------------------------------------------------------------------+

avatar

  34  AM2 Сообщений: 15882 - Андрей

  • 29 сентября 2015, 13:30
+
0
Доброе время суток. Брокер World Forex.
avatar

  9  YUREMAN Автор Сообщений: 20 - .Юрий

  • 11 октября 2015, 12:55
+
0
Все работает: www.opentraders.ru/downloads/895/
Время экспирации вводится в секундах, в формате, в настройках советника:

extern string Expiration = "BO exp:60"; // время истечения в секундах


avatar

  34  AM2 Сообщений: 15882 - Андрей

  • 13 октября 2015, 14:50
+
0
Не знаю как Вас отблагодарить, огромное спасибо, открыл и зарылась сделка. Я в настройках время могу изменит?
avatar

  9  YUREMAN Автор Сообщений: 20 - .Юрий

  • 13 октября 2015, 15:06
+
0
В этих значениях цифру меняете:

extern string Expiration = "BO exp:60"; // время истечения в секундах


60 на скажем 300 будет 5 минут. Не обязательно в коде, лучше в настройках.
avatar

  34  AM2 Сообщений: 15882 - Андрей

  • 13 октября 2015, 15:27
+
0
А почему он иногда открывает 2 в разные стороны сделки или 2 в одну сторону — это так надо?
avatar

  9  YUREMAN Автор Сообщений: 20 - .Юрий

  • 13 октября 2015, 15:34
+
0
Какое условие прописали, так и ставит.
avatar

  34  AM2 Сообщений: 15882 - Андрей

  • 13 октября 2015, 21:01
+
0
Доброе время суток. Я не посмотрел всё ваше хранилище и не знаю есть ли у вас этот вспомогательный сова. Если нет и он вам понравился, то добавляйте в хранилище, пускай другие пользуются. Ссылка — www.fxnewskiller.com/office/ea А как напрямую сюда вставлять сюда совы и индюки? Вот его характеристика — Вкладка «Входные параметры» настроек советника
Переменная Значение
1_profit Уровень перового уровня тейк профита, именно при достижении этого уровня профита в пунктах, будет закрыта часть лота указанного в переменной close_lot
potom_zakryvat_kagdye Шаг до следующего закрытия части ордера по тейк профиту. Закрывается часть ордера из переменной close_lot. Указывается в пунктах.
close_lot Часть лота, которую будет зактрывать советник.
Kogda_stavit_bezubytok Профит в пунктах, когда необходимо установить stop loss на уровень безубытка (на уровень цены входа в рынок).
Kuda_stavit_bezubytok Профит в пунктах, на уровень которого необходимо установить безубыток (может быть и равен 0, то есть точке входа)
Loss Уровень stop loss
Font_color Каким цветом выводить информацию на вашем графике.

К примеру: Советник закроет 0,1 лота при первом профите в 10 пунктов, далее он станет закрывать по 0,1 лота каждые 5 пунктов профита, то есть ваша позиция будет закрываться при +10, потом при +15, потом +20, +25, +30 и так далее, пока ваш лот, которым Вы вошли в рынок, не закончится.

Также при профите +6, советник поставит stop loss на уровень входа в рынок, а то есть, на уровень вашего безубытка.

При — 30 пунктах убытка, советник закроет позицию.

Переменная Значение
1_profit 10
potom_zakryvat_kagdye 5
close_lot 0,1
Kogda_stavit_bezubytok 6
Loss 30
Font_color Black
Ещё советник по бинарам, упорно сливает депозит. Нельзя ли ему, что нибудь мозговое прикрутить?
avatar

  9  YUREMAN Автор Сообщений: 20 - .Юрий

  • 6 ноября 2015, 05:47
+
0
Доброе время суток Андрей. Можно ли в советнике www.opentraders.ru/downloads/1017/ вынести в настройки отключение/включение отложек бай/селл. У меня стратегия:- Система DIBS Method — Ваше торговое преимущество. По ней нужно включать одну из отложек. Спасибо.
avatar

  9  YUREMAN Автор Сообщений: 20 - .Юрий

  • 21 января 2016, 04:43
+
0
Система DIBS Method — Ваше торговое преимущество.


Там немного другие условия. Добавил.


//+------------------------------------------------------------------+
//|                                                        InBar.mq4 |
//|                                              Copyright 2016, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property strict

//--- Inputs
extern double Lots      = 0.1;      // торговый объем ордера
extern int StopLoss     = 500;      // лось, если ноль стоп на экстремумы предыдущей свечи
extern int TakeProfit   = 20;       // язь
extern int TrailingStop = 300;      // трал
extern int Expiration   = 30;       // истечение отложек в часах
extern int StartHour    = 0;        // час начала торговли
extern int StartMin     = 30;       // минута начала торговли
extern int EndHour      = 23;       // час окончания торговли
extern int EndMin       = 30;       // минута окончания торговли
extern int Slip         = 30;       // реквот
extern int BuyStop      = 1;        // 0-выкл. 1-вкл.
extern int SellStop     = 1;        // 0-выкл. 1-вкл.
extern int Magic        = 123;      // магик
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutOrder(int type,double price)
  {
   int r=0;
   color clr=clrNONE;
   double sl=0,tp=0;
   datetime expiration=0;

   if(type==1 || type==3 || type==5)
     {
      clr=Red;
      if(StopLoss>0) sl=NormalizeDouble(price+StopLoss*Point,Digits);
      if(StopLoss==0) sl=NormalizeDouble(High[2],Digits);
      if(TakeProfit>0) tp=NormalizeDouble(price-TakeProfit*Point,Digits);
     }

   if(type==0 || type==2 || type==4)
     {
      clr=Blue;
      if(StopLoss>0) sl=NormalizeDouble(price-StopLoss*Point,Digits);
      if(StopLoss==0) sl=NormalizeDouble(Low[2],Digits);
      if(TakeProfit>0) tp=NormalizeDouble(price+TakeProfit*Point,Digits);
     }

   if(type==4 || type==5) expiration=TimeCurrent()+3600*Expiration;
   r=OrderSend(NULL,type,Lots,NormalizeDouble(price,Digits),Slip,sl,tp,"",Magic,expiration,clr);
   return;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CountOrders(int type)
  {
   int count=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==type) count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CountTrades()
  {
   int count=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==OP_BUY || OrderType()==OP_SELL) count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void DelOrder()
  {
   bool del=true;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()>1) del=OrderDelete(OrderTicket());
           }
        }
     }
  }
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 30.04.2009                                                     |
//|  Описание : Возвращает флаг разрешения торговли по времени.                |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    hb - часы времени начала торговли                                       |
//|    mb - минуты времени начала торговли                                     |
//|    he - часы времени окончания торговли                                    |
//|    me - минуты времени окончания торговли                                  |
//+----------------------------------------------------------------------------+
bool isTradeTimeInt(int hb=0,int mb=0,int he=0,int me=0)
  {
   datetime db, de;           // Время начала и окончания работы
   int      hc;               // Часы текущего времени торгового сервера

   db=StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+(string)hb+":"+(string)mb);
   de=StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+(string)he+":"+(string)me);
   hc=TimeHour(TimeCurrent());

   if(db>=de)
     {
      if(hc>=he) de+=24*60*60; else db-=24*60*60;
     }

   if(TimeCurrent()>=db && TimeCurrent()<=de) return(True);
   else return(False);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Trailing()
  {
   bool mod;
   for(int i=0; i<OrdersTotal(); i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() || OrderMagicNumber()==Magic)
           {
            if(OrderType()==OP_BUY)
              {
               if(Bid-OrderOpenPrice()>TrailingStop*Point)
                 {
                  if(OrderStopLoss()<Bid-TrailingStop*Point)
                    {
                     mod=OrderModify(OrderTicket(),OrderOpenPrice(),Bid-TrailingStop*Point,OrderTakeProfit(),0,Yellow);
                     return;
                    }
                 }
              }

            if(OrderType()==OP_SELL)
              {
               if((OrderOpenPrice()-Ask)>TrailingStop*Point)
                 {
                  if((OrderStopLoss()>(Ask+TrailingStop*Point)) || (OrderStopLoss()==0))
                    {
                     mod=OrderModify(OrderTicket(),OrderOpenPrice(),Ask+TrailingStop*Point,OrderTakeProfit(),0,Yellow);
                     return;
                    }
                 }
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(CountTrades()<1 && isTradeTimeInt(StartHour,StartMin,EndHour,EndMin))
     {
      if(Open[2]>Close[2] && Open[1]<Close[1] && Open[2]>Close[1])
        {
         if(CountOrders(4)<1 && Bid<Open[2] && BuyStop==1)   PutOrder(4,Open[2]);
         if(CountOrders(5)<1 && Bid>Close[2] && SellStop==1) PutOrder(5,Close[2]);
        }
     }

   if(CountTrades()>0)
     {
      DelOrder();
     }

   if(TrailingStop>0) Trailing();
  }
//+------------------------------------------------------------------+



avatar

  34  AM2 Сообщений: 15882 - Андрей

  • 21 января 2016, 07:05
+
0
Доброе время суток! Форекс индикатор уровней iMaxMinTrends последовательно соединяет недельные, месячные и годовые максимумы/минимумы трендовыми линиями для определения направления движения рынка. При этом уровни самих максимумов/минимумов также отображаются на графике. Нужно дописать в код функции, которая бы эти линии подписывала ( как на скрине, а также алерта о достижении ценой одного из уровней.



Вот ссылка на индикатор files.fortrader.org/uploads/2018/01/iMaxMinTrends.zip
Редактирован: 10 февраля 2018, 12:19
avatar

  9  YUREMAN Автор Сообщений: 20 - .Юрий

  • 10 февраля 2018, 12:17
+
0
Уважаемый разработчик этой прекрасной совы!) не могли бы в этом роботе сделать мартин zakaz.opentraders.ru/27909.html С уважением Максим
avatar

  9  maksGruv Сообщений: 340

  • 12 апреля 2017, 09:00
+
0
<code>//--- Inputs
extern double Stavka     = 5;           // ставка в валюте
extern string Expiration = "BO exp:60"; // время истечения в секундах
extern int    Magic      = 111;         // магик
extern bool      martingale                            = false;//////////----------- Мартингейл.Увеличение лота при убытке
extern double    multiplier                            = 2.8;//////////////----------- множитель лота при убытке
double mlots=0,lastprofit,lastlot;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   Comment("");
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   Comment("");
  }
//+------------------------------------------------------------------+
//| Check for open order conditions                                  |
//+------------------------------------------------------------------+
void OpenPos()
  {
// Martingale ***************************************************************************************************************
   if(OrdersHistoryTotal()>0){
        for(int i=0;i<OrdersHistoryTotal();i++){         
         if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)){
            if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && (OrderType()==OP_BUY || OrderType()==OP_SELL)){
               lastprofit=OrderProfit();
               lastlot=OrderLots();
            }
         }
      }
   }
   mlots=0;
   if(martingale && lastprofit<0)mlots=lastlot*multiplier;else mlots=Stavka;   
   int res;
//--- sell 
   if(High[1]<High[2] && High[3]<High[2])
     {
      res=OrderSend(Symbol(),OP_SELL,mlots,Bid,3,0,0,Expiration,Magic,0,Red);
      return;
     }
//--- buy 

   if(Low[1]>Low[2] && Low[3]>Low[2])
     {
      res=OrderSend(Symbol(),OP_BUY,mlots,Bid,3,0,0,Expiration,Magic,0,Blue);
      return;
     }
//---
  }
//+------------------------------------------------------------------+
int CountTrades()
  {
   int count=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==OP_BUY || OrderType()==OP_SELL)
               count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//| OnTick function                                                  |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(CountTrades()<1) OpenPos();
  }
//+------------------------------------------------------------------+
</code>

правильно сделанно? Добавил мартина)
Редактирован: 23 апреля 2017, 15:56
avatar

  9  maksGruv Сообщений: 340

  • 23 апреля 2017, 15:55
+
0
#property copyright "Copyright © 2015, AM2"
#property link "www.forexsystems.biz"
#property description "Simple expert advisor"

//--- Inputs
extern int Stavka     = 5;           // ставка в валюте
extern string Expiration = "BO exp:60"; // время истечения в секундах
extern int    Magic      = 111;         // магик
extern double KLot       = 2.8;        // умножение лота
extern double MaxLot     = 5;        // максимальный лот
extern double Win        = 0.7;      // прибыль со ставки

double pr=0,st=Stavka;
int UP=0,DN=0;
datetime t=0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   Comment("");
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   Comment("");
  }
//+------------------------------------------------------------------+
//| Check for open order conditions                                  |
//+------------------------------------------------------------------+
void OpenPos()
  {
   int res;
//--- sell 
   if(High[1]<High[2] && High[3]<High[2])
     {
      res=OrderSend(Symbol(),OP_SELL,Stavka,Bid,3,0,0,Expiration,Magic,0,Red);
      return;
     }
//--- buy 

   if(Low[1]>Low[2] && Low[3]>Low[2])
     {
      res=OrderSend(Symbol(),OP_BUY,Stavka,Bid,3,0,0,Expiration,Magic,0,Blue);
      return;
     }
//---
  }
//+------------------------------------------------------------------+
int CountTrades()
  {
   int count=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==OP_BUY || OrderType()==OP_SELL)
               count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double Lot()
  {
   double lot=Stavka;

   if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY))
     {
      if(OrderProfit()<0)
        {
         lot=OrderLots()*KLot;
         pr-=st;
         st*=KLot;        
        }
      if(OrderProfit()>0)
        {
         pr+=st*Win;
         st=Stavka;        
        }        
     }
   if(lot>MaxLot)lot=Stavka;
   return(lot);
  }
//+------------------------------------------------------------------+
//| OnTick function                                                  |
//+------------------------------------------------------------------+
void OnTick()
  {

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

Или так правильно? я уже запутался))
avatar

  9  maksGruv Сообщений: 340

  • 23 апреля 2017, 16:53

Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий
Начать торговлю с Альпари