Стратегии и роботы > Нужно написать робота по Мартингейлу
- andrewvoso
- Сообщения: 3
- Зарегистрирован: 13 сен 2016, 21:42
Нужно написать робота по Мартингейлу
Нужен исполнитель, который напишет робота по системе Мартингейла.
Идея:
1. Рынок Фортс, индекс на фьючерс сбербанка. м5.
2. Вход в рынок одним контрактом в направлении лонг с одновременным выставлением tp 20 пунктов и sl 20 пунктов.
3. В случае получения прибыли по сделке, открывается новая сделка на 1 контракт по цене закрытия предыдущей сделки.
4. В случае получения убытка, открывается новая сделка количеством контрактов - (предыдущее количество*2) по цене закрытия предыдущей убыточной сделки.
5. Робот должен работать постоянно.
Если кто-то может реализовать, прошу написать в этой ветке или в личку.
Идея:
1. Рынок Фортс, индекс на фьючерс сбербанка. м5.
2. Вход в рынок одним контрактом в направлении лонг с одновременным выставлением tp 20 пунктов и sl 20 пунктов.
3. В случае получения прибыли по сделке, открывается новая сделка на 1 контракт по цене закрытия предыдущей сделки.
4. В случае получения убытка, открывается новая сделка количеством контрактов - (предыдущее количество*2) по цене закрытия предыдущей убыточной сделки.
5. Робот должен работать постоянно.
Если кто-то может реализовать, прошу написать в этой ветке или в личку.
- evge
- Администратор
- Сообщения: 1811
- Зарегистрирован: 04 фев 2016, 09:46
- Откуда: Млечный путь, планета Земля
- Благодарил (а): 83 раза
- Поблагодарили: 367 раз
- Контактная информация:
Re: Нужно написать робота по Мартингейлу
andrewvoso писал(а):2. Вход в рынок одним контрактом в направлении лонг с одновременным выставлением tp 20 пунктов и sl 20 пунктов.
Что является сигналом на вход?
andrewvoso писал(а):3. В случае получения прибыли по сделке, открывается новая сделка на 1 контракт по цене закрытия предыдущей сделки.
Непонятное и неоптимизированное действие. Зачем тогда закрывать позицию если снова придётся её открывать по той же цене? По моему тут просто нужно сдвигать стоп в безубыток и ставить новый тейк.
Если вся хитрость в том, что до этого могла быть открыта позиция больше чем 1 контракт, то всё равно не ясно зачем закрывать позицию полностью? Может закрывать тогда не полностью, а до 1 контракта и ставить новый тейк и стоп?
никогда такого не было и вот опять
- evge
- Администратор
- Сообщения: 1811
- Зарегистрирован: 04 фев 2016, 09:46
- Откуда: Млечный путь, планета Земля
- Благодарил (а): 83 раза
- Поблагодарили: 367 раз
- Контактная информация:
Re: Нужно написать робота по Мартингейлу
Ещё нужно учитывать такой момент.
Если правило жесткое открытия позиции по цене закрытия предыдущей сделки, то тут будут ситуации когда сделки последующие просто не исполнятся из-за проскальзывания на больших движениях, т.к. цена уже не вернётся (в тот же момент или на следующем баре) или вернется через N баров к цене закрытия предыдущей сделки.
Если правило жесткое открытия позиции по цене закрытия предыдущей сделки, то тут будут ситуации когда сделки последующие просто не исполнятся из-за проскальзывания на больших движениях, т.к. цена уже не вернётся (в тот же момент или на следующем баре) или вернется через N баров к цене закрытия предыдущей сделки.
никогда такого не было и вот опять
- andrewvoso
- Сообщения: 3
- Зарегистрирован: 13 сен 2016, 21:42
Re: Нужно написать робота по Мартингейлу
Хорошо, вы всё правильно описали.
Сколько будет стоить программа с указанными вами параметрами?
Сколько будет стоить программа с указанными вами параметрами?
Re: Нужно написать робота по Мартингейлу
andrewvoso писал(а):Нужен исполнитель, который напишет робота по системе Мартингейла.
Идея:
1. Рынок Фортс, индекс на фьючерс сбербанка. м5.
2. Вход в рынок одним контрактом в направлении лонг с одновременным выставлением tp 20 пунктов и sl 20 пунктов.
3. В случае получения прибыли по сделке, открывается новая сделка на 1 контракт по цене закрытия предыдущей сделки.
4. В случае получения убытка, открывается новая сделка количеством контрактов - (предыдущее количество*2) по цене закрытия предыдущей убыточной сделки.
5. Робот должен работать постоянно.
Если кто-то может реализовать, прошу написать в этой ветке или в личку.
Система Мартингейла не применима при игре на бирже. На срочном рынке вам никто не даст манипулировать плечом. У фьючерсов фиксированые (в зависимости от интрумента плечи). Необходимость поддерживать ГО под "шаги" мартингейла "съест" всю прибыль. Поэтому данный метод используют лишь на форексе
- evge
- Администратор
- Сообщения: 1811
- Зарегистрирован: 04 фев 2016, 09:46
- Откуда: Млечный путь, планета Земля
- Благодарил (а): 83 раза
- Поблагодарили: 367 раз
- Контактная информация:
Re: Нужно написать робота по Мартингейлу
Пример стратегии Мартингейла.
Скачать код
Данный пример каждый следующий лот входа при убытке ставит равным по размеру текущей открытой позиции, т.е. это мартингейл (1, 2, 4, 8, 16, 32, 64....)
Если нужно просто усреднение, то нужно
заменить на
Код: Выделить всё
/**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;
}
}
Скачать код
Данный пример каждый следующий лот входа при убытке ставит равным по размеру текущей открытой позиции, т.е. это мартингейл (1, 2, 4, 8, 16, 32, 64....)
Если нужно просто усреднение, то нужно
Код: Выделить всё
var Lot = (Pos == 0) ? (int)StartPos : Math.Abs(Pos);
заменить на
Код: Выделить всё
var Lot = (int)StartPos;
никогда такого не было и вот опять
-
- Сообщения: 47
- Зарегистрирован: 13 мар 2019, 00:45
- Благодарил (а): 37 раз
- Поблагодарили: 1 раз
Вернуться в «Стратегии и роботы»
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 13 гостей