Стратегии и роботы > Нужно написать робота по Мартингейлу

Обсуждение, описание стратегий и роботов, идеи для стратегий
Аватара пользователя
andrewvoso
Сообщения: 3
Зарегистрирован: 13 сен 2016, 21:42

Нужно написать робота по Мартингейлу

Непрочитанное сообщение andrewvoso » 14 сен 2016, 16:44

Нужен исполнитель, который напишет робота по системе Мартингейла.
Идея:
1. Рынок Фортс, индекс на фьючерс сбербанка. м5.
2. Вход в рынок одним контрактом в направлении лонг с одновременным выставлением tp 20 пунктов и sl 20 пунктов.
3. В случае получения прибыли по сделке, открывается новая сделка на 1 контракт по цене закрытия предыдущей сделки.
4. В случае получения убытка, открывается новая сделка количеством контрактов - (предыдущее количество*2) по цене закрытия предыдущей убыточной сделки.
5. Робот должен работать постоянно.

Если кто-то может реализовать, прошу написать в этой ветке или в личку.

Аватара пользователя
evge
Администратор
Сообщения: 1807
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 83 раза
Поблагодарили: 361 раз
Контактная информация:

Re: Нужно написать робота по Мартингейлу

Непрочитанное сообщение evge » 14 сен 2016, 22:24

andrewvoso писал(а):2. Вход в рынок одним контрактом в направлении лонг с одновременным выставлением tp 20 пунктов и sl 20 пунктов.


Что является сигналом на вход?

andrewvoso писал(а):3. В случае получения прибыли по сделке, открывается новая сделка на 1 контракт по цене закрытия предыдущей сделки.


Непонятное и неоптимизированное действие. Зачем тогда закрывать позицию если снова придётся её открывать по той же цене? По моему тут просто нужно сдвигать стоп в безубыток и ставить новый тейк.

Если вся хитрость в том, что до этого могла быть открыта позиция больше чем 1 контракт, то всё равно не ясно зачем закрывать позицию полностью? Может закрывать тогда не полностью, а до 1 контракта и ставить новый тейк и стоп?
никогда такого не было и вот опять

Аватара пользователя
evge
Администратор
Сообщения: 1807
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 83 раза
Поблагодарили: 361 раз
Контактная информация:

Re: Нужно написать робота по Мартингейлу

Непрочитанное сообщение evge » 14 сен 2016, 22:33

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

Аватара пользователя
andrewvoso
Сообщения: 3
Зарегистрирован: 13 сен 2016, 21:42

Re: Нужно написать робота по Мартингейлу

Непрочитанное сообщение andrewvoso » 06 окт 2016, 22:59

Хорошо, вы всё правильно описали.
Сколько будет стоить программа с указанными вами параметрами?

vdm
Сообщения: 24
Зарегистрирован: 25 ноя 2016, 14:01
Благодарил (а): 10 раз
Поблагодарили: 2 раза

Re: Нужно написать робота по Мартингейлу

Непрочитанное сообщение vdm » 16 янв 2017, 19:48

andrewvoso писал(а):Нужен исполнитель, который напишет робота по системе Мартингейла.
Идея:
1. Рынок Фортс, индекс на фьючерс сбербанка. м5.
2. Вход в рынок одним контрактом в направлении лонг с одновременным выставлением tp 20 пунктов и sl 20 пунктов.
3. В случае получения прибыли по сделке, открывается новая сделка на 1 контракт по цене закрытия предыдущей сделки.
4. В случае получения убытка, открывается новая сделка количеством контрактов - (предыдущее количество*2) по цене закрытия предыдущей убыточной сделки.
5. Робот должен работать постоянно.

Если кто-то может реализовать, прошу написать в этой ветке или в личку.

Система Мартингейла не применима при игре на бирже. На срочном рынке вам никто не даст манипулировать плечом. У фьючерсов фиксированые (в зависимости от интрумента плечи). Необходимость поддерживать ГО под "шаги" мартингейла "съест" всю прибыль. Поэтому данный метод используют лишь на форексе

Аватара пользователя
evge
Администратор
Сообщения: 1807
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 83 раза
Поблагодарили: 361 раз
Контактная информация:

Re: Нужно написать робота по Мартингейлу

Непрочитанное сообщение evge » 01 мар 2017, 22:20

Пример стратегии Мартингейла.

E_MARTIN-01.png
E_MARTIN-01.png (44.66 КБ) 22293 просмотра


E_MARTIN-02.png
E_MARTIN-02.png (37.43 КБ) 22293 просмотра


Код: Выделить всё

/**E_MARTIN
Developed by evge;
Algorithm = Усреднение;**/

function Initialize()
{
   StrategyName = "E_MARTIN";
   AddParameter("StartPos", 100, "", 1);
   AddParameter("TP", 0.1, "", 1);
   AddParameter("SL", -10, "", 1);
   AddParameter("PeriodSMA", 13, "", 1);
   AddParameter("PeriodEMA", 8, "", 1);
   AddInput("Input1", Inputs.Candle, 5, true, "SBER=МБ ЦК");
   LongLimit = 1000;
   ShortLimit = -1000;

   AddGlobalVariable("Dir", Types.Int, 0);  // Текущее направление
}

function OnUpdate()
{

// пример стратегии с усреднением
// evge 01.03.2017 http://alfadirect4.ru

   var S = SMA(Input1.Close, PeriodSMA);
   var E = EMA(Input1.Close, PeriodEMA);
   
   var Pos = CurrentPosition();
   var Lot = (Pos == 0) ? (int)StartPos : Math.Abs(Pos);

   // Условие входа в лонг
   var isLong = E[1] < S[1] && E[0] > S[0] && Dir >= 0;

   // Условие входа в шорт
   var isShort =  E[1] > S[1] && E[0] < S[0] && Dir <= 0;

   if (isLong) Dir = 1;
   if (isShort) Dir = -1;

   // Вход
   if (Pos == 0)
   {
      if ( isLong )
      {
         EnterLong(Lot);
      }
      else
      if ( isShort )
      {
         EnterShort(Lot);
      }
   }
 
   // Усреднение
   if ( Pos != 0 && CurrentPLper() < 0 )
   {
      if ( isLong && Pos > 0 )
      {
         EnterLong(Lot);
      }
      else
      if ( isShort && Pos < 0 )
      {
         EnterShort(Lot);
      }
   }

   // Выход по Take
   if ( (CurrentPLper() > TP) )
   {
      ClosePosition();
      Dir = 0;
   }

   // Стоп :(
   if ( (CurrentPLper() < SL) )
   {
      ClosePosition();
      Dir = 0;
   }
}


Скачать код

E_MARTIN.ads
(1.57 КБ) 2124 скачивания


Данный пример каждый следующий лот входа при убытке ставит равным по размеру текущей открытой позиции, т.е. это мартингейл (1, 2, 4, 8, 16, 32, 64....)

Если нужно просто усреднение, то нужно

Код: Выделить всё

   var Lot = (Pos == 0) ? (int)StartPos : Math.Abs(Pos);

заменить на

Код: Выделить всё

   var Lot = (int)StartPos;
никогда такого не было и вот опять

Orange2000
Сообщения: 47
Зарегистрирован: 13 мар 2019, 00:45
Благодарил (а): 37 раз
Поблагодарили: 1 раз

Re: Нужно написать робота по Мартингейлу

Непрочитанное сообщение Orange2000 » 17 апр 2019, 11:26

Евгений, приветствую.
а в чем тут TP и SL задается?

Аватара пользователя
evge
Администратор
Сообщения: 1807
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 83 раза
Поблагодарили: 361 раз
Контактная информация:

Re: Нужно написать робота по Мартингейлу

Непрочитанное сообщение evge » 17 апр 2019, 11:29

В процентах
никогда такого не было и вот опять


Вернуться в «Стратегии и роботы»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 12 гостей