Universal MA Cross EA - страница 64

 

Здравствуйте, не мог бы кто-нибудь добавить код безубытка к этому Ea.

Цена движется на x пунктов, перемещаем стоп в безубыток Плюс x пунктов. Я пробовал, но постоянно получаю многочисленные ошибки. https://www.mql5.com/en/forum.

Заранее спасибо за любую помощь.

Файлы:
 

это то, что вы ищете?

Mjack59_59@yahoo.com:
Здравствуйте, не мог бы кто-нибудь добавить код безубытка к этому Ea.

Цена движется на x пунктов, переместите стоп в безубыток Плюс x пунктов. Я пытался, но продолжаю получать многочисленные ошибки.https://www.mql5.com/en/forum

Заранее спасибо за любую помощь.

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

sn

Файлы:
 

это не сработало для 5-значного босса брокера?

firedave:
Я пытаюсь сделать советник для любой стратегии Moving Average Cross, пытаюсь сделать его универсальным. Поэтому, пожалуйста, дайте мне знать, если у вас есть какие-либо предложения по дополнению этого советника.

Общая настройка :

-----------------

StopLoss (по умолчанию 100)

Установите ваш Стоп Лосс. Используйте 0 (ноль), если вам не нравится использовать Stop Loss (не рекомендуется).

TakeProfit (по умолчанию 200)

Установите тейк-профит. Используйте 0 (ноль), если вам нравится использовать открытую цель.

Установка трейлинг-стопа :

----------------------

ver.6 TrailingStopType (по умолчанию 1)

Установите тип трейлинг-стопа. 1:начнет трейлинг, если прибыль в пунктах будет больше / то же самое с TrailingStop. 2:начнет трейлинг, как только сделка будет в прибыли. (будем добавлять другие типы трейлинг стопов, если будут предложены, последнее предложение - SafeZone трейлинг стоп пост #99 https://www.mql5.com/en/forum/general )

TrailingStop (по умолчанию 40)

Установите трейлинг-стоп. Используйте 0 (ноль), если вы не используете функцию трейлинг-стопа.

Настройка скользящей средней :

------------------------

FastMAPeriod (по умолчанию 10)

Период быстрой скользящей средней.

FastMAType (по умолчанию EMA / 1)

Тип быстрой скользящей средней 0:SMA 1:EMA 2:SMMA 3:LWMA

FastMAPrice (по умолчанию Close / 0)

Применяемая цена быстрой скользящей средней 0:Close 1:Open 2:High 3:Low 4:Median 5:Typical 6:Weighted

ver.7.2 FastMAshift (по умолчанию 0)

Сдвиг быстрой скользящей средней

SlowMAPeriod (по умолчанию 80)

Период медленной скользящей средней.

SlowMAType (по умолчанию EMA / 1)

Тип медленной скользящей средней 0:SMA 1:EMA 2:SMMA 3:LWMA

SlowMAPrice (по умолчанию Close / 0)

Применяемая цена медленной скользящей средней 0:Close 1:Open 2:High 3:Low 4:Median 5:Typical 6:Weighted

ver.7.2 FastMAshift (по умолчанию 0)

Сдвиг медленной скользящей средней

Минимальное расстояние пересечения :

------------------------

ver.2 MinCrossDistance (по умолчанию 0)

Устанавливает минимальное расстояние между FastMA и SlowMA для того, чтобы считать их пересечением. Используйте 0 (ноль), чтобы отключить этот фильтр.

ver.7 MaxLookUp (по умолчанию 1)

Устанавливает количество баров после пересечения для проверки условия входа относительно минимального расстояния между FastMA и SlowMA. Для включения этой функции необходимо MinCrosDistance > 0. Используйте 0 (ноль), чтобы отключить эту функцию.

Выход из настройки :

-------------

StopAndReverse (по умолчанию true)

Если установлено значение TRUE, то при изменении сигнала произойдет выход из любой сделки и разворот позиции.

PureSAR (по умолчанию false)

Если установлено значение TRUE, не будет использоваться стоп-лосс, тейк-профит и трейлинг-стоп. Эта настройка всегда в игре.

ver.7.2 ExitOnCross (по умолчанию false)

Если установлено значение TRUE, будет выходить из любой сделки, если есть противоположный кросс, не учитывая никаких дополнительных фильтров. Таким образом, выход происходит только на основе пересечения скользящей средней.

Настройка третьей MA :

------------------

ver.5 UseThirdMA (по умолчанию false)

Если установлено значение TRUE (и UseCounterTrend = FALSE), торговля будет вестись только в соответствии с направлением третьей MA, выше для BUY и ниже для SELL.

ver.5 UseCounterTrend (по умолчанию false)

Если установлено значение TRUE, то торговля будет продолжаться, даже если направление против Третьего МА, но с другими StopLoss и TakeProfit. Для включения этой функции необходимо UseThirdMA = TRUE.

ver.7 OnlyCounterTrend (по умолчанию false)

Если установлено значение TRUE, советник будет торговать только против тренда, т.е. покупать при пересечении ниже ThirdMA и продавать при пересечении выше ThirdMA. Для включения этой функции необходимо UseCounterTrend = TRUE.

ver.5 ThirdMAPeriod (defaul 100)

Период третьей скользящей средней.

ver.5 ThirdMAType (по умолчанию EMA / 1)

Тип третьей скользящей средней 0:SMA 1:EMA 2:SMMA 3:LWMA

ver.5 ThirdMAPrice (по умолчанию Close / 0)

Применяемая цена третьей скользящей средней 0:Close 1:Open 2:High 3:Low 4:Median 5:Typical 6:Weighted

ver.7.2 ThridMAshift (по умолчанию 0)

Сдвиг третьей скользящей средней

ver.5 CTStopLoss (по умолчанию 0)

Установите стоп-лосс для торговли по контртренду. Используйте 0 (ноль), если вам не нравится использовать стоп-лосс (не рекомендуется).

ver.5 CTTakeProfit (по умолчанию 0)

Установка тейк-профита для торговли против тренда. Используйте 0 (ноль), если вам нравится использовать открытую цель.

Настройка разворотного фильтра :

-------------------

ver.8.0 Use.Pivot.Filter (по умолчанию false)

Установите значение true, если вы хотите фильтровать торговлю, только ПОКУПАТЬ, если пересечение медленной и быстрой MA происходит между S1 и S2, и только ПРОДАВАТЬ, если пересечение медленной и быстрой MA происходит между R1 и R2.

Настройка ордера :

--------------

ReverseCondition (по умолчанию false)

Установите TRUE, чтобы отменить условие входа.

ver.3 ConfirmedOnEntry (по умолчанию true)

Если установлено значение TRUE, вход/выход из сделки будет осуществляться на следующем баре после подтверждения кросса. Если установлено значение FALSE, вход/выход из сделки будет осуществляться сразу после появления креста.

ver.4 OneEntryPerBar (по умолчанию true)

Если установлено значение TRUE, торговля будет осуществляться только один раз на одном баре. Если установлено значение FALSE, торговля будет осуществляться более одного раза на одном баре, если условие входа все еще действительно, но все же по одной сделке за раз.

NumberOfTries (по умолчанию 5)

Количество попыток, если ордер отклонен системой.

Slippage (по умолчанию 5)

Настройка проскальзывания.

MagicNumber (по умолчанию 1234)

Используется для генерации магического номера. Изменяйте это число ТОЛЬКО в том случае, если вы хотите запустить советника на той же паре и том же таймфрейме, но с другими настройками.

Настройка множественных открытых сделок :

-----------------------------

ver.5 MaxOpenTrade (по умолчанию 2)

Количество максимально открытых сделок за один раз. Эта настройка используется, когда StopAndReverse / PureSAR = FALSE, поэтому советник не будет закрывать открытый ордер при появлении противоположного сигнала, а откроет новую сделку. Установите количество разрешенных открытых сделок. Если StopAndReverse / PureSAR = TRUE, этот параметр всегда будет = 1, что означает одну сделку за раз.

ver.6 MinPriceDistance (по умолчанию 5)

Если разрешена множественная открытая торговля (путем установки MaxOpenOrder>1 и OneEntryPerBar=FALSE), это число будет определять минимальное расстояние между каждой сделкой в одном направлении.

Настройка временного фильтра :

-------------------

UseHourTrade (по умолчанию false)

Если установлено значение TRUE, советник будет активен только в определенное время.

StartHour (по умолчанию 10)

Время начала активности советника (используется при UseHourTrade = TRUE).

EndHour (по умолчанию 11)

Время, когда советник прекращает свою работу (используется при UseHourTrade = TRUE).

Настройка управления лотом и деньгами :

------------------------------------

Lots (по умолчанию 1)

Количество лотов на одну сделку.

MM (по умолчанию false)

Если установлено значение TRUE, будет использоваться встроенное управление капиталом.

AccountIsMicro (по умолчанию false)

Если используется микро-счет, установите значение TRUE.

Риск (по умолчанию 10)

Используется при MM = TRUE для установки риска на сделку.

Настройка перекрестных предупреждений :

--------------------

ver.5 EnableAlert (по умолчанию true)

Будет подавать сигнал тревоги при пересечении скользящей средней, пересечении ВВЕРХ или пересечении ВНИЗ.

ver.5 SoundFilename (по умолчанию "alert.wav")

Имя файла для звукового сигнала.

BackTest Setting :

------------------

PrintControl (по умолчанию true)

Вывести комментарий к бэктестингу.

Show_Settings (по умолчанию true)

Показывать настройки на графике.

Дайте мне знать, если у вас все еще есть проблемы с настройками. Спасибо codersguru и pengie за частичный код. Надеюсь, это поможет

Журнал :

-----------

версия.6:

- исправлена ошибка ConfirmedOnEntry.

- добавлен немедленный трейлинг-стоп.

- добавлено MinPriceDistance для нескольких открытых сделок.

версия.7:

- добавлена функция MaxLookUp для продолжения проверки входа после определенного бара от кросса относительно MinCrossDistance.

- добавлена функция OnlyCounterTrend при использовании фильтра ThirdMA.

версия.7.1:

- исправлена ошибка MinCrossDistance.

версия.7.2:

- исправлена ошибка MinCrossDistance для ConfirmedOnEntry = FALSE.

- добавлен параметр сдвига МА.

- добавлена функция ExitOnCross.

версия.7.3:

- исправлен КОММЕНТ отображения на экране.

версия.8.0:

- добавлен фильтр Pivot Filter.

версия.8.1:

- пересмотрел часть кода из-за ошибок в Build 206.
 

недействительный стоплосс / тейкпрофит

Здравствуйте, Serpentsnoir,

Я протестировал эту версию на 5 знаках, с

StopLoss=30

TakeProfit=40

и ошибка генерируется как показано здесь;

2011.04.27 22:47:44 universalMACrossEA[5 Dig]-V4 EURGBP,M5: sn Debug on sell: Bid,Slippage,aStopLoss,aTakeProfit 0.88554/30.00000/0.88466/0.89066

2011.04.27 22:47:44 universalMACrossEA[5 Dig]-V4 EURGBP,M5: sn Debug on sell: ticket,err,count -1/130/5

Не могли бы вы научить меня, как решить 130 является недействительным стопов (TP, SL)?

Спасибо

Takingpip

 

недействительный стоп-лосс, ошибка 130

Уровни StopLoss и TakeProfit не могут находиться слишком близко к рынку. Минимальное расстояние уровней стопов в пунктах можно получить с помощью функции MarketInfo() с параметром MODE_STOPLEVEL. В случае ошибочных или ненормированных уровней стопов будет сгенерирована ошибка 130 (ERR_INVALID_STOPS).

Приведенная выше информация взята из документации Metaquotes.

Ошибка 130 возникает, когда вы устанавливаете стоп-лосс слишком близко к цене Bid/Ask. Обычно это означает, что вам следует увеличить стоп-лосс, чтобы исправить проблему, или, возможно, вам не следует модифицировать ордер, чтобы установить стоп-лосс, а вместо этого следует закрыть его, поскольку он очень близок к текущему стоп-лоссу по ордеру.

Обратите внимание, что MarketInfo с Mode_Stoplevel может вернуть ноль, по крайней мере, так происходит у моего брокера FXCM, так что вам, возможно, придется устанавливать вручную.

 

недействительный стоп-лосс, ошибка 130

Спасибо за объяснение, Цуман.

Например, даже я установил

SL = 200

TP = 150

он все равно выдает ошибку 130, а мой брокер требует минимум 10 пунктов для стоплосса или тейкпрофита.

Я новичок в программировании MT, все еще учусь. Не могли бы вы объяснить, где в код вставить параметр мониторинга MODE_STOPLEVEL?

Спасибо

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

Здравствуйте, я скачал вашу версию с функцией BE, но при компиляции я получил эту ошибку: "'UseBreakEven' - ожидается выражение сравнения".

Пожалуйста, не могли бы вы проверить это?

Спасибо

 
FxCba:
Здравствуйте, я скачал вашу версию с функцией BE, но при компиляции я получил эту ошибку: "'UseBreakEven' - ожидается выражение сравнения".

Пожалуйста, не могли бы вы проверить это?

Спасибо

Я предпочитаю использовать целые числа для флагов, а не булевы. Это не влияет на работу советника. Просто измените тип на boolean, если хотите, чтобы ошибка исчезла.

sn

 
serpentsnoir:
Я предпочитаю использовать целые числа для флагов, а не булевы. Это не влияет на работу советника. Просто измените тип на boolean, если хотите, чтобы ошибка исчезла. sn

Вы имеете в виду, что нужно добавить строку вроде этой? " bool UseBreakEven = false;"

(извините за вопрос, но я не понимаю код Metatrader).

Я сделал именно так и не получил никакой ошибки.

 

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

Привет всем,

Я хотел бы узнать, может ли кто-нибудь добавить функцию, описанную ниже, в прилагаемый советник UMA cross.

extern string DayProfitHelp = "--Enter either DayProfitLimit in USD or DayProfitLimitPct in percent of last day balance. Установите оба значения 0 для отключения.";

extern double DayProfitLimit = 0.0;

extern double DayProfitLimitPct = 0.0;

extern int DayProfitResetHour = 0;

extern bool DayProfitGlobal = FALSE;

Я нашел эту функцию очень удобной в другом советнике, и в основном она останавливает открытие ордеров советником, если "x%" был достигнут до времени Stop.

Также функция трейлинга не работает должным образом в UMAcrossEA. Если кто-то может помочь, я буду благодарен.

Большое спасибо

===============================

extern int SL_pips = 290;

extern int MA_distance_pips = 20;

extern int MA_period = 16;

extern int TP_pips = 20;

extern int TradeVolume = 1;

extern string HourTradeHelp = "-Установите, будет ли советник работать только в определенный период дня. ForceClose закроет все открытые ордера.";

extern bool UseHourTrade = FALSE;

extern int StartHourTrade = 21;

extern int EndHourTrade = 3;

extern bool ForceClose = FALSE;

extern string MinToKeepTradeHelp = "--Закрывает ордер, если время его жизни больше, чем MinutesToKeepTrade. Установите 0 для отключения.";

extern int MinutesToKeepTrade = 0;

extern string DayProfitHelp = "--Enter either DayProfitLimit in USD or DayProfitLimitPct in percent of last day balance. Установите оба значения 0 для отключения.";

extern double DayProfitLimit = 0.0;

extern double DayProfitLimitPct = 0.0;

extern int DayProfitResetHour = 0;

extern bool DayProfitGlobal = FALSE;

extern int ModifyIntervalMin = 1;

extern int MagicNumber = 2265;

extern bool Hedge = false;

int g_ord_total_172;

int g_ticket_176;

int g_ticket_180;

int g_minute_184;

bool g_bool_188;

bool gi_192;

bool gi_196;

bool gi_200;

bool gi_204;

double g_price_208;

double gd_216;

double g_price_224;

double gd_232;

double gd_240;

double gd_248;

double gd_256;

double gd_264;

double gd_272;

double gd_280;

double g_ima_288;

double gd_296;

double gd_304;

double gd_312;

double g_lots_320;

void init() {

gd_240 = MarketInfo(Symbol(), MODE_STOPLEVEL);

gd_256 = gd_240 * Point;

gd_248 = (gd_240 + 1.0) * Point;

gd_216 = SL_pips * Point;

gd_232 = MA_distance_pips * Point;

gd_280 = TP_пипсов * Point;

g_minute_184 = Minute();

}

int start() {

double ld_8;

double ld_16;

if (AccountBalance() - gd_304 != 0.0) ld_8 = 100.0 * (gd_304 / (AccountBalance() - gd_304));

else ld_8 = 0;

если (AccountBalance() - gd_304 != 0.0) ld_16 = 100.0 * ((AccountBalance() - gd_304 + gd_312) / (AccountBalance() - gd_304)) - 100.0;

else ld_16 = 0;

gd_296 = Ask - Bid;

gd_304 = GetDailyProfit();

g_lots_320 = Lots();

if (DayProfitLimitPct > 0.0) gd_312 = (AccountBalance() - gd_304) * (DayProfitLimitPct / 100.0);

else gd_312 = DayProfitLimit;

g_bool_188 = !(UseHourTrade && !IsTradeTime(StartHourTrade, EndHourTrade));

if (g_bool_188 && GlobalVariableGet("gISEAStop") == 1.0) g_bool_188 = FALSE;

string ls_0 = "Символ: " + Symbol()

+ "\nSpread: " + DoubleToStr(MarketInfo(Symbol(), MODE_SPREAD) / 10.0, 1) + " пунктов"

+ "\nDaily P/L: $" + DoubleToStr(gd_304, 2) + " (" + DoubleToStr(ld_8, 2) + "%)"

+ "\nLimit P/L: $" + DoubleToStr(gd_312, 2) + " (" + DoubleToStr(ld_16, 2) + "%)"

+ "\nCurrent P/L: $" + DoubleToStr(AccountProfit(), 2)

+ "\nУровень стопа: " + DoubleToStr(gd_240 / 10.0, 1) + "пипсов"

+ "\nVolume: " + DoubleToStr(g_lots_320, 1) + " ($" + DoubleToStr(g_lots_320 * MarketInfo(Symbol(), MODE_LOTSIZE), 2) + ")";

if (gd_312 > 0.0 && gd_304 + AccountProfit() >= gd_312) {

Comment(ls_0

+ "\n\nДостигнута дневная прибыль... До завтра... Спокойной ночи :-)");

RemoveAllOrders(1);

return (0);

}

g_ord_total_172 = OrdersTotal();

gi_192 = FALSE;

gi_196 = FALSE;

gi_200 = FALSE;

gi_204 = FALSE;

for (int l_ord_total_24 = g_ord_total_172; l_ord_total_24 >= 0; l_ord_total_24--) {

if (OrderSelect(l_ord_total_24, SELECT_BY_POS) == TRUE && OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {

if (OrderType() == OP_BUY) {

gi_200 = TRUE;

Close_B(OrderTicket(), OrderLots());

}

if (OrderType() == OP_SELL) {

gi_204 = TRUE;

Close_S(OrderTicket(), OrderLots());

}

if (OrderType() == OP_BUYLIMIT) {

gd_264 = NormalizeDouble(OrderOpenPrice(), Digits);

g_ticket_176 = OrderTicket();

gi_192 = TRUE;

}

if (OrderType() == OP_SELLLIMIT) {

gd_272 = NormalizeDouble(OrderOpenPrice(), Digits);

g_ticket_180 = OrderTicket();

gi_196 = TRUE;

}

}

}

if (g_bool_188) {

g_ima_288 = iMA(NULL, 0, MA_period, 0, MODE_LWMA, PRICE_TYPICAL, 0);

Modify_order();

Open_order();

} else {

Файлы:
Причина обращения: