Нужен советник для MT4, работающий на экстремумах MA

MQL4 EA

작업 종료됨

실행 시간 15 일

명시

Приветствую всех и желаю всего наилучшего. 

 

Советник должен работать на экстремумах MA (moving average). На максимумах МA он должен выставлять отложенный ордер на открытие шорта по цене, равной цене лоя свечи разворота мувинга минус определённый процент от этой цены (например, лой свечи разворота * 0,99 – это значит минус 1% к лою свечи сигнала) В отложенном ордере также должны быть прописаны стоп-лосс и тейк-профит в процентах от этого самого лоя свечи разворота мувинга (т. е. от лоя свечи сигнала). В выставленных ордерах на открытие шортов должен быть стоп-лосс и тейк-профит в %-х от лоя свечи разворота. Также при наличии максимума MA советник должен выставить стоп-лоссы во всех открытых лонгах по данной паре на той же отметке, на которой должен открыться шорт. Таким образом, при достижении расчётной цены (см. выше) должны быть закрыты имеющиеся лонги (по выставленным ранее советником стоп-лоссам) и открыт шорт.

При минимуме MA всё наоборот: Имеется свеча, где мувинг развернулся вверх. В начале следующей свечи советник должен выставить стоп-лоссы на все имеющиеся по данной паре шорты и выставить отложенные ордера на открытие лонгов на отметке: хай свечи разворота MA (т. е. хай свечи сигнала) + определённый процент (например, хай свечи разворота * 1,01 - это значит +1% к хаю свечи разворота). В выставленных ордерах на открытие лонгов должен быть стоп-лосс и тейк-профит в %-х от хая свечи разворота. 



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

Так вот, при максимуме мувинга советник должен выставлять на определённой (см. выше) отметке стоп-лосс на имеющихся лонгах по данной паре и выставлять отложенный ордер на открытие шорта по этой же отметке (со стоп-лоссом и тейк-профитом).

При минимуме мувинга всё наоборот - советник выставляет стоп-лосс в открытых шортах по данной паре на определённой отметке (см. выше) и выставляет отложенный ордер на открытие лонга по этой же отметке (со стоп-лоссом и тейк-профитом).

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

 

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

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

Кол-во лот на открытие поз советник должен рассчитывать исходя из заданных в него параметров и открывать надо не один лонг или шорт, а два – равными долями. Ранее для простоты я говорил лишь об одном лонге или шорте.

 

 

Если открыты лонги по данной паре, то новые сигналы на лонг по данной паре должны не учитываться советником.

Аналогично для шортов: если уже есть открытые шорты, то новые сигналы на шорты должны не учитываться советником.

Другое дело, если открытых лонгов ещё нет, но уже есть отложенные ордера на лонги, выставленные по сигналу на лонги, произошедшему раньше. Тогда возможны два варианта:

1) Новый сигнал на лонг даёт цену открытия лонга выше (то есть хуже), либо равную, чем старый сигнал, по которому уже стоят ордера. Тогда этот новый сигнал советником не учитывается.

2) Новый сигнал на лонг даёт цену открытия лонга ниже (то есть лучше), чем старый сигнал. Тогда старые ордера на лонг отменяются и выставляются новые ордера по этому новому сигналу на лонг.

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

 

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

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

 

 

Все цены открытия (оупены) по отложникам и стоп-лоссы должны быть округлены до целых, делящихся на 5 (т. е. 100,77 до 100 или до 105, 307 до 305 или до 310) в худшую сторону. Т. е. оупены лонгов и стопы на шорты должны округляться вверх до целых, кратных 5 (100,77 до 105, 307 до 310). А оупены шортов и стопы на лонги должны округляться вниз до целых, кратных 5. (100,77 до 100, 307 до 305)

Тейки на лонги должны быть округлены вниз до ближайшего числа с четвёркой (целой) на конце и плюс 0,27. Т. е. 402 округляется до 394,27. 394,15 до 384,27

Тейки на шорты округляются вверх до ближайшего числа с двойкой (целой) и плюс 0,66. Т. е. 444 округляется до 452,66. 442,32 до 442,66.

 



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

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

 

 

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

- Вид MA (exponential, simple, linear weighted, smoothed)

- Вид цены (close, open, high, low)

- Параметр мувинга (1, 2, 3, ...)

- Процент для отложенного ордера на открытие лонга/стоп-лосса на закрытие шорта – в %-х от хая свечи, на которой произошёл разворот мувинга вверх

- Процент для отложенного ордера на открытие шорта/стоп-лосса на закрытие лонга – в %-х от лоя свечи, на которой произошёл разворот мувинга вниз

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

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

- стоп-лосс и тейк профит для шортов (первоначальные, выставляемые в отложенных ордерах при появлении учитываемого сигнала на шорт, выставляются в %-х от лоя свечи сигнала на шорт)

- стоп-лосс и тейк профит для лонгов (первоначальные, выставляемые в отложенных ордерах при появлении учитываемого сигнала на лонг, выставляются в %-х от хая свечи сигнала на лонг)

 

Разумеется, при появлении учитываемого сигнала на шорт, в открытых по паре лонгах (если они до этого не закрылись по тейку) должен поменяться стоп-лосс по правилам, описанным выше (то есть на ту цену, по которой откроется шорт по сигналу). Аналогично для открытых шортов при появлении сигнала на лонг.

 

Для примера как должен работать советник рассмотрим прикреплённый рисунок:

Мувинг, по которому идёт торговля – синяя линия.

Примем начальные условия, что на начало рисунка имеются открытые шорты и нет выставленных ордеров на лонги. И что оба советника (лонговый и шортовый) настроены на работу с этим графиком.

Итак, имеется первый сигнал на лонг (обозначен на рисунке «Л1»). По нему лонговый советник должен поменять стоп-лоссы в имеющихся шортах и выставить отложники на лонги (buy stop ордера) со стопами и тейками.

            Далее имеется сигнал Л2. Будем считать, что в промежуток времени от Л1 до Л2 превышение над хаем свечи сигнала Л1 не достигло отметки срабатывания ордеров, выставленных по Л1. Тогда сигнал Л2 учитываться советником не должен, т. к. его хай выше и, следовательно, цена ордеров по нему будет выше (хуже), чем по сигналу Л1. Т. е. советник не вмешивается и остаются стопы на шорт и ордера на лонг по Л1.

 

Далее идёт сильное движение вверх, цена достигает отметки срабатывания ордеров по Л1. Закрываются шорты и открываются лонги.

Затем ничего не происходит до сигнала Ш1

Тут шортовый советник включается в работу и выставляет на следующей свече после свечи разворота мувинга вниз стоп-лоссы на имеющиеся лонги (если они до этого не закрылись по тейку) и выставляет отложники (sell stop) на открытие шортов. Видно, что лой свечи сигнала до следующего сигнала на шорт (Ш2) не был пробит вниз, поэтому шорты по-любому не откроются.

            Итак, следующий сигнал Ш2. Видно, что у него лой свечи сигнала выше, чем у сигнала Ш1, по которому ранее были выставлены отложники. Следовательно, этот сигнал даёт цену выше (лучше) на открытие шортов. Поэтому этот сигнал учитывается советником: советник меняет стоп-лоссы у лонгов, убирает старые отложники на шорты и выставляет новые, уже с новой ценой.

            Видно, что и по Ш2 шорты не откроются, так как лой свечи этого сигнала также не будет пробит вниз.

            Следующий сигнал Ш3. Тут ситуация аналогична предыдущей: этот сигнал имеет лой свечи сигнала выше, чем у Ш2. Поэтому советник его учитывает, меняет стоп-лоссы на лонги и выставляет новые отложники с новой ценой на шорты.

 

 

Вроде бы все нюансы я описал в этом задании. Многобукав – это да, но зато, я надеюсь, что ничего не упустил и ничего не придётся существенного добавлять впоследствии к заданию.

Надеюсь на сотрудничество и жду предложений.

응답함

1
개발자 1
등급
(34)
프로젝트
55
31%
중재
8
0% / 63%
기한 초과
13
24%
무료
게재됨: 22 기고글, 1 코드
2
개발자 2
등급
(106)
프로젝트
189
46%
중재
34
24% / 41%
기한 초과
58
31%
무료
게재됨: 12 코드
3
개발자 3
등급
(618)
프로젝트
1428
59%
중재
31
81% / 0%
기한 초과
10
1%
무료
4
개발자 4
등급
(281)
프로젝트
650
28%
중재
112
19% / 62%
기한 초과
319
49%
무료
5
개발자 5
등급
(23)
프로젝트
31
71%
중재
0
기한 초과
1
3%
무료
게재됨: 188 코드
6
개발자 6
등급
(34)
프로젝트
68
46%
중재
1
0% / 0%
기한 초과
0
무료
7
개발자 7
등급
프로젝트
0
0%
중재
0
기한 초과
0
무료
8
개발자 8
등급
프로젝트
0
0%
중재
0
기한 초과
0
무료
9
개발자 9
등급
(40)
프로젝트
106
52%
중재
17
12% / 65%
기한 초과
25
24%
무료
10
개발자 10
등급
(73)
프로젝트
257
53%
중재
16
50% / 38%
기한 초과
83
32%
무료
11
개발자 11
등급
(45)
프로젝트
105
30%
중재
8
25% / 50%
기한 초과
40
38%
무료
12
개발자 12
등급
(574)
프로젝트
945
47%
중재
309
58% / 27%
기한 초과
125
13%
무료
13
개발자 13
등급
(187)
프로젝트
367
56%
중재
45
22% / 56%
기한 초과
188
51%
무료
게재됨: 1 기고글, 6 코드
14
개발자 14
등급
(54)
프로젝트
164
43%
중재
43
47% / 16%
기한 초과
58
35%
무료
게재됨: 1 코드
15
개발자 15
등급
(14)
프로젝트
22
59%
중재
2
0% / 50%
기한 초과
2
9%
무료
게재됨: 1 코드
16
개발자 16
등급
(31)
프로젝트
41
66%
중재
1
100% / 0%
기한 초과
11
27%
무료

프로젝트 정보

예산
70 USD
기한
에서 1  7 일