Aleh7999

 
Уровень 16

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


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

Рейтинг 2146



РЕКОМЕНДУЮ



Помощь в исправлении кода советника для MT4 ищу поручителя

За исходник берем написанный советник SSSR первая версия рабочая, SSSR v.1 с попыткой реализовать 1 пункт ТЗSSSR.mq4 (9 Kb) SSSR v.1.mq4 (10 Kb)
Необходима доработка в направлении:

1. В начальных настройках включить возможность выставления 2-х отложенных ордеров с выбором направления т.е. ручной старт. После срабатывания одного из ордеров второй удаляется. Изначально в коде было прописано условие «Советник открывает позицию в зависимости от закрытия прошлой позиции. Если позиции не было то в зависимости от направления прошлой свечи»


2. Т.к. для данного советника ахиллесовой пятой является флет, то у меня появилось теоретических 2 решения:
а)Включить возможность после 3-х одновременных отрицательных сделок запуск виртуальной торговли с продолжением алгоритма, реальная торговля при этом не проводиться. Точка прекращения виртуальной торговли и начало реальной я показал на рисунках.


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

Какое из этих двух решений более легкое в плане реализации в коде не знаю, т.к. до таких высот в программировании не дошёл.
  • 0
  • Просмотров: 4741
  • 17 декабря 2019, 20:50
  • Aleh7999
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
Помощь в исправлении кода советника
Следующая запись в группе  
ищу поручителя!!!
17 декабря 2019
19 декабря 2019

Брокер для ваших роботов, 15 лет на рынке

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

+
0
не ко мне
avatar

  35  AM2 Сообщений: 16247 - Андрей

  • 17 декабря 2019, 21:33
+
0
Хотя бы 1-й пункт помогите реализовать.
avatar

  16  Aleh7999 Автор Сообщений: 89

  • 17 декабря 2019, 21:40
+
+1
Могу объяснить почему отказывается. По негласным правилам тут пишут советник по двум логика а) если индикатор показал это. б) реакция такая.

Поэтому рекомендую чётче составить правило на условии этом «поставить два ордера», а на том " забыть про второй ордер". Плюс бонус от уровня один анекдот при выполнении задания.
avatar

  13  axe44 Сообщений: 1149 - Алек

  • 17 декабря 2019, 23:02
+
0
Согласно алгоритма советник открывает позицию в зависимости от закрытия прошлой позиции.
Если позиции не было то в зависимости от направления прошлой свечи
.

Данный алгоритм нужно заменить на:

Покупка:

Выставляем 2-а отложенных ордера BuyStop по цене указанной в настройках и SellStop по цене указанной в настройках.
Как только цена достигает одного из стоп ордеров, он переходит в рыночную позицию с выставлением ТР и SL. Ордер который не сработал удаляется.

Весь остальной алгоритм остается без изменения т.е.: «При достижение Т/P следующий ордер открывается в эту же сторону»
«При достижение S/L следующий открывается в противоположную сторону»
avatar

  16  Aleh7999 Автор Сообщений: 89

  • 18 декабря 2019, 21:11
+
0
первоначально советник ставит 2 отложки, затем в зависимости от результата сделки, открывает позы:



www.opentraders.ru/downloads/2518/
avatar

  35  AM2 Сообщений: 16247 - Андрей

  • 22 декабря 2019, 07:14
+
0
Андрей спасибо. Можно изменить или добавить в настройки 2-е функции:
//--------------
extern double Price = 1.10700; цена привязки стоповых ордеров (указанна в качестве примера)
extern int Distance = 0; дистанция до указанной цены
//--------------
Прошу так как я хочу иметь привязку к конкретной цене (функция Price)

avatar

  16  Aleh7999 Автор Сообщений: 89

  • 22 декабря 2019, 11:32
+
0
Включить возможность после 3-х одновременных отрицательных сделок запуск виртуальной торговли с продолжением алгоритма, реальная торговля при этом не проводиться. Точка прекращения виртуальной торговли и начало реальной я показал на рисунках.


этот момент можно так примерно сделать:

1. торговля начинается с лота 0.1
2. далее если минус 0.2, 0.4, 0.8
3. и после 3-х лосей минимальным 0.01
4. если плюс после лосей, снова 0.1

так можно сделать в следующем топике с поручителем.
avatar

  35  AM2 Сообщений: 16247 - Андрей

  • 22 декабря 2019, 07:26
+
+1
я ручаюсь за нег
avatar

  10  Alkmena Сообщений: 139

  • 22 декабря 2019, 14:35
+
0
завтра внесу изменения
avatar

  35  AM2 Сообщений: 16247 - Андрей

  • 22 декабря 2019, 15:28
+
+1
сделал вирт как писал выше и лимитки от цены:



www.opentraders.ru/downloads/2518/
avatar

  35  AM2 Сообщений: 16247 - Андрей

  • 23 декабря 2019, 22:27
+
0
Андрей ещё раз огромное спасибо за проделанную работу!!!
По первому исправлению 100% попадание, что я и хотел.
По вирту неожиданно. Честно не ожидал такого скорого исполнения.
Исполнено почти идеально, но не совсем…
Попробую ещё раз описать:

после 3-х одновременных отрицательных сделок ((сделки стартуют от 0,1)
первый лось -0,1, второй -0,2, третий -0,4)) открывается сделки размером 0,01
(возможна они будет не единственными пока не будет угадано направление движения)
Рис. 6

Когда направление угадано (на рис. после ЛОСЬ ВИРТ №1 через определенный промежуток
цена пошла в сторону заложенном в главной алгоритме: «При достижение Т/P следующий ордер открывается в эту же сторону»
«При достижение S/L следующий открывается в противоположную сторону»)
при прохождении половины расстояния до цены по ТР ЯЗЬ открывается ещё один рыночный ордер, при этом сумма лота должна покрыть все предыдущие проигрыши при прохождении оставшейся половины пути (грубо это лот наверное 1,2 без учета лотов «вирт»)

Рис.7
avatar

  16  Aleh7999 Автор Сообщений: 89

  • 24 декабря 2019, 15:54
+
0
Возможно я снова не корректно описал суть доработки. Либо такой вариант вообще не осуществим.
Есть вариант еще как альтернатива: откопал код советника который просто переворачивает позиции при закрытии, т.е. закрылась Sell открывает Buy и наоборот. Если после 3-х одновременных лосей сова будет работать по другому алгоритму закрылась Sell открывает Buy и наоборот. Две стратегии в одной сове: один работает с трендом, второй с флетом.
вот код:
//--------------------------------------------------------------------
int init()
{
OrderSend(Symbol(),OP_SELL,Lot,Bid,3,NormalizeDoub le(Ask + stoploss*Point,Digits),
NormalizeDouble(Bid - takeprofit*Point,Digits)," ",777,Blue);
return(0);
}
//--------------------------------------------------------------------
int start()
{
for (int i=0; i if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true){
if (OrderSymbol()==Symbol()){
tip = OrderType();
Lot = OrderLots();return(0);}}}
if (Lot==0) return(0);
if (tip==0) OrderSend(Symbol(),OP_SELL,Lot,Bid,3,NormalizeDoub le(Ask + stoploss*Point,Digits),
NormalizeDouble(Bid - takeprofit*Point,Digits)," ",777,Blue);
if (tip==1) OrderSend(Symbol(),OP_BUY ,Lot,Ask,3,NormalizeDouble(Bid - stoploss*Point,Digits),
NormalizeDouble(Ask + takeprofit*Point,Digits)," ",777,Blue);
return(0);
}
//-----------------------------------------------------------------
avatar

  16  Aleh7999 Автор Сообщений: 89

  • 3 января 2020, 20:32

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