АвторСообщение



Сообщение: 12
Зарегистрирован: 19.05.14
Откуда: Ryazan
Репутация: 0
ссылка на сообщение  Отправлено: 27.05.14 15:12. Заголовок: Комплексный советник.


Добрый день. Игорь а возможно ли прикрутить мартингейл к комплексному советнику?

Судьба - это цепь событий, которую мы непереставая куем самостоятельно своими мыслями и поступками. Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 30 , стр: 1 2 All [только новые]







Сообщение: 480
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 2
ссылка на сообщение  Отправлено: 27.05.14 19:48. Заголовок: Добрый день. Да, ко..


Добрый день.

Да, конечно, возможно. Но для этого, опять же, не существует универсального рецепта. Код для этого действа тоже немаленький.

Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 1
Зарегистрирован: 04.02.15
Репутация: 0
ссылка на сообщение  Отправлено: 04.02.15 21:32. Заголовок: Вопросик по советнику


Добрый день Игорь.

Я Вам посылал вопрос на почту: Почему при присоединении советника к графику он сразу открывает ордер. Хотя условия прошли, а новые еще не появились?

Индикаторы:

CrossMA, Parabolic, OsMA

Вы ответили:

"Добрый день.

Вы устанавливаете набор трендовых индикаторов, которые дают сигнал
постоянно, у них нет таких моментов, когда сигнала вообще нет.

Так:
1. МА дает сигнал покупки всегда, пока быстрая средняя выше медленной,
сигнал продажи - быстрая ниже медленной.
2. Parabolic дает сигнал покупки, пока цена закрытия выше точки, и
сигнал продажи, пока цена ниже точки.
3. OsMA дает сигнал покупки, пока линия выше нуля, и сигнал продажи,
пока линия ниже нуля.

Очевидно, что совпадение сигналов будет достаточно часто. В итоге
практически всегда, когда включается советник, а на счете нет рыночного
ордера, открытого им, он будет открывать сделку. После открытия сделки
советник просто ждет ее закрытия (по ТР, SL или вручную). Как только это
произойдет и сформируется новый сигнал (скорее всего, на той же или на
следующей свече) вновь будет открыта сделка.

Чтобы сигналы не совпадали так часто, используйте в наборе хотя бы один
нетрендовый индикатор (к примеру RSI)."


Дело в том, что я ставлю не просто MA индикатор, а crossMA - там сигнал на пересечение.


Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 3
Зарегистрирован: 04.02.15
Репутация: 0
ссылка на сообщение  Отправлено: 05.02.15 21:48. Заголовок: mitanq777 пишет: ..


mitanq777 пишет:
[quote]`

Вообщем поставил торговлю по времени и перестал сразу открывать ордер.



Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 1177
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 3
ссылка на сообщение  Отправлено: 05.02.15 22:41. Заголовок: mitanq777 пишет: Де..


mitanq777 пишет:

 цитата:
Дело в том, что я ставлю не просто MA индикатор, а crossMA - там сигнал на пересечение.


Посмотрел еще раз код CE_CrossMA. Все то же - индикатор держит сигнал Buy, пока быстрая выше медленной, и сигнал Sell, пока быстрая ниже медленной.
Поэтому советник будет открывать ордер практически всегда (когда совпадает направление по другим трендовым индикаторам), если "своего" ордера нет.

Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 2
Зарегистрирован: 04.02.15
Репутация: 0
ссылка на сообщение  Отправлено: 04.02.15 21:55. Заголовок: Может подскажите что..


Может подскажите что не так?

Сделал чтобы советник можно было тестировать в тестере на закрытие ордеров по времени для бинарных опционов.

Пытаюсь теперь прикрутить в комплексный советник антимартингейл (Открывает увеличенный лот после положительной сделки. Колен всего 2)

Добавляю в советник код в функцию старт эксперта перед обработкой сигналов BY и SELL

OrderSelect(ticket,SELECT_BY_TICKET);

if(OrderProfit()>0) {l=OrderLots()*km; n++;}
if(OrderProfit()<0 || n>N || ticket==0){ l=Lots; n=0;}

Где N - количество колен мартина.
rm - коэффициент умножения.


Так же в открытии ордера изменил:

ticket=OrderSend(Symbol(), Type, l, Price, 100, SL, TP, com, MagicNumber, 0);

По идее должен открывать с удвоенным лотом. не хочет. Все перепробовал.

И перед OrderSend ставил те строки. Не получается.

ПОдскажите?

Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 1178
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 3
ссылка на сообщение  Отправлено: 05.02.15 22:53. Заголовок: Любая из стратегий М..


Любая из стратегий Мартингейла - это не такая уж и простая программа, парой-тройкой строк не отделаешься. Если приведенные Вами изменения в коде комплексного советника - это все изменения, то, конечно же, работать не будет. Так, при открытии ордера Вы сохраняете тикет в переменную ticket, которая не является глобальной переменной - она локальная. Но даже если бы она и была глобальная, то где гарантия, что между открытием одного ордера и открытием следующего эксперт не был хотя бы переинициализирован, что приведет к очистке данных в переменной ticket?

Чтобы открыть ордер, опираясь на данные о закрытии предыдущего ордера, необходимо:
1. Придумать логическую связку между ордерами одной серии (когда последующий ордер должен продолжать увеличение или уменьшение лота на основании предыдущего). К примеру, делается это через MagicNumber, в который записывается номер колена Мартингейла. Так, если ордер продолжает серию, то в его MagicNumber записывается номер колена на 1 больший, чем номер колена у предыдущего ордера. Иначе номер колена сбрасывается в 0 (или 1, смотря какая логика принята).
2. Перед очередным открытием ордера просматривается история счета на предмет поиска последнего закрытого ордера эксперта.
3. Когда такой ордер найден (определен его тикет), то можно воспользоваться и тем кодом, который Вы привели. Только N в этом коде будет не подсчитываться, а браться непосредственно из MagicNumber последнего закрытого ордера.

Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 4
Зарегистрирован: 04.02.15
Репутация: 0
ссылка на сообщение  Отправлено: 06.02.15 07:19. Заголовок: Scriptong пишет: ..


Scriptong пишет:
[quote]`
Спасибо. буду что то думать.

А комплексный советник все равно. Время приходит, когда разрешено торговать и он сразу открывает ордер хотя условия прошли . Может как то открыт первый сигнал?
Комплексный v2.

Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 1180
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 3
ссылка на сообщение  Отправлено: 06.02.15 19:16. Заголовок: mitanq777 пишет: Мо..


mitanq777 пишет:

 цитата:
Может как то открыт первый сигнал?


Варианта три:
1. На момент запуска советника должен существовать его рыночный ордер, соответствующий сигналу.
2. Необходимо использовать один из индикаторов, которые дают "точечный" сигнал. Например, RSI.
3. Переделать код CE_CrossMA так, чтобы индикатор выдавал сигнал только в момент пересечения средних, а не все время.

Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 5
Зарегистрирован: 04.02.15
Репутация: 0
ссылка на сообщение  Отправлено: 07.02.15 07:01. Заголовок: Scriptong пишет: Ва..


Scriptong пишет:

 цитата:
Варианта три:
1. На момент запуска советника должен существовать его рыночный ордер, соответствующий сигналу.
2. Необходимо использовать один из индикаторов, которые дают "точечный" сигнал. Например, RSI.
3. Переделать код CE_CrossMA так, чтобы индикатор выдавал сигнал только в момент пересечения средних, а не все время.



В коде видно :

// - 3 - ======================= Выдача сигналов ========================================
if (LastBar != Time[0]) // Один раз за один бар

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

Как думаете?


1. Вариант не подходит, он и так открывает его сразу.
2. Использовать индикатор, тогда стратегия не будет работать. Нет такого индикатора, чтобы показывал тот же вход. Он будет или позже или раньше.
3. Да. Можно или добавить в условие FastMA > = LowMA. Либо добавить третью MA? например SrMA (средняя). Поможет фильтрануть. Хм.



Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 1182
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 3
ссылка на сообщение  Отправлено: 09.02.15 22:20. Заголовок: mitanq777 пишет: Пр..


mitanq777 пишет:

 цитата:
При загрузке советника сигнал устарел, почему он хранится в глобальной переменной?


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

Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 6
Зарегистрирован: 04.02.15
Репутация: 0
ссылка на сообщение  Отправлено: 07.02.15 13:33. Заголовок: Scriptong пишет: Ва..


Кажется я понял. Надо так же сделать как в RSI. 4 переменных. И думаю будет открывать только на пересечении.

Вот сделал. Но что то не открывает. Что то не хватает )

// - 2 - ======================= Отображение индикатора на истории ======================
for(i = limit; i >= 0; i--)
{
FastMA[здесь и латинская] = iMA(NULL, 0, FastMAPeriod, FastMAShift, FastMAMethod, FastMAPrice, i); - в форуме не пишет скобки квадратные почемуто
FastMA1[здесь и латинская] = iMA(NULL, 0, FastMAPeriod, FastMAShift, FastMAMethod, FastMAPrice, i+1);
SlowMA[здесь и латинская] = iMA(NULL, 0, SlowMAPeriod, SlowMAShift, SlowMAMethod, SlowMAPrice, i);
SlowMA1[здесь и латинская] = iMA(NULL, 0, SlowMAPeriod, SlowMAShift, SlowMAMethod, SlowMAPrice, i+1);
}
// - 2 - ============================ Окончание блока ===================================

// - 3 - ======================= Выдача сигналов ========================================
if (LastBar != Time[0]) // Один раз за один бар
{

if (FastMA[1] > SlowMA[1]&&FastMA1[1] < SlowMA1[1])
GlobalVariableSet(Signal, 1);
else
if (FastMA[1] < SlowMA[1]&&FastMA1[1] > SlowMA1[1])
GlobalVariableSet(Signal, -1); // Sell
else
GlobalVariableSet(Signal, 0); // Нет сигнала
GlobalVariableSet(STime, Time[0]); // Время последнего обновления
LastBar = Time[0];
}

Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 1183
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 3
ссылка на сообщение  Отправлено: 09.02.15 22:25. Заголовок: mitanq777 пишет: Во..


mitanq777 пишет:

 цитата:
Вот сделал. Но что то не открывает. Что то не хватает )


Вы сравниваете значения одних и тех же элементов массивов, а нужно - разных. Т. е.:

 цитата:

if (FastMA[1] > SlowMA[1] && FastMA[2] < SlowMA[2])
GlobalVariableSet(Signal, 1);
else
if (FastMA[1] < SlowMA[1] && FastMA[2] > SlowMA[2])
GlobalVariableSet(Signal, -1); // Sell
else
GlobalVariableSet(Signal, 0); // Нет сигнала



Сначала сверяете значения на первом баре, а потом - на втором. В посте ниже Вы именно так и делаете, но зачем-то массивы убрали. Ну и четыре массива, конечно же, это перебор

P. S. Литера i в квадратных скобках воспринимается движком форума как BB-код курсив. Чтобы обойти это ограничение, ставьте пробелы вокруг литеры i. Вот так: [ i ].

Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 8
Зарегистрирован: 04.02.15
Репутация: 0
ссылка на сообщение  Отправлено: 10.02.15 08:10. Заголовок: Scriptong пишет: Сн..


Scriptong пишет:

 цитата:
Сначала сверяете значения на первом баре, а потом - на втором. В посте ниже Вы именно так и делаете, но зачем-то массивы убрали. Ну и четыре массива, конечно же, это перебор

P. S. Литера i в квадратных скобках воспринимается движком форума как BB-код курсив. Чтобы обойти это ограничение, ставьте пробелы вокруг литеры i. Вот так: [ i ].


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

Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 1189
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 3
ссылка на сообщение  Отправлено: 10.02.15 23:39. Заголовок: mitanq777 пишет: сп..


mitanq777 пишет:

 цитата:
спасибо. заработал. но появилась другая проблема. открывает через 3-4 пересечения. открывает 3 раза на пересечении потом пропускает 3-4 пересечения и только потом открывает. подскажите пожалуйста.


С телепатией у меня пока туго.
Приведите коды измененного индикатора и советника (если изменяли его). Файлы лучше закачать на какой-нибудь файловый сервер (например, dropmefiles.com), чтобы не выбрасывать на форум простыню исходного кода.

Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 9
Зарегистрирован: 04.02.15
Репутация: 0
ссылка на сообщение  Отправлено: 11.02.15 07:17. Заголовок: Scriptong пишет: С ..


Scriptong пишет:

 цитата:
С телепатией у меня пока туго.
Приведите коды измененного индикатора и советника (если изменяли его). Файлы лучше закачать на какой-нибудь файловый сервер (например, dropmefiles.com), чтобы не выбрасывать на форум простыню исходного кода.



Добрый день Игорь.
Спасибо за советы. Разобрался. Я поставил торговлю с 7 до 21. А в тестере забыл про это. Поэтому он не все пересечения открывал. )))

Кстати, тех двух строчек хватило, чтобы работал мартин. Сам в шоке. Открывает на ура удвоенную позицию.

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 30 , стр: 1 2 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  2 час. Хитов сегодня: 0
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет