[open source] [Советник] Prey Scalper Mod

От apmsoft, 16 ноября, 2012 в Лаборатория ProfitFX

Страница 1 из 5
Автор#1
Парадоксальная ситуация сложилась... В ветке оригинала не обсудить как торгуются другие валютные пары, а подходящей не нашел, поэтому создам свою.

Prey Скальпер Мод 0.1
- Торгует любыми валютными парами (насколько успешно обсуждаем в ветке)
- Подправлен чарт (название валюты, и прочее)
- Добавлена проверка на достаточность загруженных баров на H1 и W1
- Выпилена часть неиспользуемого кода для меньшей нагрузки на терминал
- Торговая логика не изменялась - результаты торгов 100% идентичны оригиналу



Моды достойные внимания:
M2 (ApMSoft) - /laboratoriya-profitfx/24/open-source-sovetnik-prey-scalper-mod/3099/?do=findComment&comment=48709
C2 (smart_rookie) - /laboratoriya-profitfx/24/open-source-sovetnik-prey-scalper-mod/3099/?do=findComment&comment=50731
C_V02 (phifo) - /laboratoriya-profitfx/24/open-source-sovetnik-prey-scalper-mod/3099/?do=findComment&comment=52766
AUDUSD_M6 (ApMSoft) - раздача закончена

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

RSM_01.mq4368 скач.

Изменено 9 июля, 2017 пользователем Pavel888

#2

Можно оптимизировать умножения: например, (2.0 * iatr_1616) не вызывать три раза а вычислить один раз и результат подставлять.

gd_1908 = gd_1908 * ld_12 * Point;
или тут ld_12 * Point можно вынести.
#3

Можно узнать настройки какие используются на других парах?

#4
ApMSoft как всегда +++!
Немного пугает фраза "Выпилена часть неиспользуемого кода для меньшей нагрузки на терминал"! Можно поподробнее, чтобы развеять сомнения?
Автор#5


Можно узнать настройки какие используются на других парах?


Пока стандартные.


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


Сова почти наполовину состоит из дублирующегося и/или неиспользуемого кода и переменных. Глубоко не копал, подчистил в основном главную функцию исполняемую каждый тик. Результаты теста (99%) полностью совпадают с оригиналом, вплоть до последнего цента.
#6



Можно узнать настройки какие используются на других парах?


Пока стандартные.


вроде ты писал, что на других парах (не евро) таргеты типа 0.8, 0.7 и подобные?
#7

был бы крайне интересны оптимизации под несколько пар с целями около 90% выигрышных сделок:)

#8
Ray Scalper Mod 0.2 (на основе mod 0.1)
- Реализованы предложения от nixxer,
- Добавлен ММ - WSR (присутствует Recovery Mode) с сохранением возможности вернуться к исходному ММ советника.

RSM_02.mq4217 скач.

#9
ApMSoft cкажи возможно его ставить на ПАММ счет или пока рано?
Автор#10


ApMSoft cкажи возможно его ставить на ПАММ счет или пока рано?


Если на EURUSD - можно, на другие пары не советую.
Тестирую сейчас британца - очень печально, совсем не рекомендую.
#11


Ray Scalper Mod 0.2 (на основе mod 0.1)
- Реализованы предложения от nixxer,
- Добавлен ММ - WSR (присутствует Recovery Mode) с сохранением возможности вернуться к исходному ММ советника.



буду признателен если опишите настройки
#12


буду признателен если опишите настройки



WSR --- Включает ММ WSR / отключает (т.е. возвращает к стандартному ММ советника);
RecoveryMode --- Включение режима восстановления депозита (увеличение лота, если случился стоп-лосс);
FixedLot --- Фиксированный объём лота;
AutoMM --- Процент риска. При RecoveryMode = FALSE, менять нужно только это значение;
Initial_Balance – Исходный баланс;
AutoMM_Max --- Максимальный риск;
MaxAnalizCount --- Число закрытых ранее ордеров для анализа (Используется при RecoveryMode = True);
Risk --- Риск от депозита (Используется при RecoveryMode = True);
MultiLotPercent --- Коэффициент умножение лота (Используется при RecoveryMode = True).
#13


Ray Scalper Mod 0.2 (на основе mod 0.1)
- Реализованы предложения от nixxer,
- Добавлен ММ - WSR (присутствует Recovery Mode) с сохранением возможности вернуться к исходному ММ советника.


спасибо!
а ктонибудь тестировал это с 99%? :-?
Автор#14

Тесты.

Спойлер


Изменено 17 ноября, 2012 пользователем ApMSoft

#15

А если добавить небольшой фильтр волатильности, например, чтобы после слишком больших свечей не работало?

Для версий wallstreet'а я как-то составил небольшую памятку, как добавлять фильтр, ибо периодически забывал в дебрях модификаций, что натворил)) Рэй в коде сейчас посложнее волстрита, может, кто-то внимательно добавит))

Спойлер


Добавление фильтра Волатильности:

1. Там где extern (объявление переменных, которые можно изменить в тестере), добавляем:

extern string _Vola = "Фильтр волатильности";
// Фильтр волатильности
extern int VolaFilter = 25; //--- (15 1 30)

2. После

void Scalper()
{
...
}
добавляем:
//+--------------------------------------------------------------------------------------------------------------+
//| фильтр волатильности
//+--------------------------------------------------------------------------------------------------------------+
bool CheckVolatility() {
double HeightFilter_a = NormalizeDouble(VolaFilter * pp, pd);
bool restrict = false;
if (NormalizeDouble(iHigh(NULL, PERIOD_M15, 1) - iLow(NULL, PERIOD_M15, 1), pd) > HeightFilter_a) restrict = true;
if (NormalizeDouble(iHigh(NULL, PERIOD_M15, 2) - iLow(NULL, PERIOD_M15, 2), pd) > HeightFilter_a) restrict = true;
return (restrict);
}

3. Перед
OpenPosition(OP_BUY);
добавляем:
if (!CheckVolatility())

чтобы получилось так:

if (!CheckVolatility())
{
OpenPosition(OP_BUY);
}


4. Перед
OpenPosition(OP_SELL);
добавляем:
if (!CheckVolatility())

чтобы получилось так:

if (!CheckVolatility())
{
OpenPosition(OP_SELL);
}

По поводу п. 3 и п.4: если условие OpenPosition выглядит так:

if (OpenLongSignal() && OpenTradeCount() && Long) OpenPosition(OP_BUY);
if (OpenShortSignal() && OpenTradeCount() && Short) OpenPosition(OP_SELL);

то сначала добавляем открывающие и закрывающие фигурные скобки:

if (OpenLongSignal() && OpenTradeCount() && Long)
{
OpenPosition(OP_BUY);
}
if (OpenShortSignal() && OpenTradeCount() && Short)

{
OpenPosition(OP_SELL);
}

А уже потом добавляем условие на срабатывание фильтра, чтобы было как ниже:

if (OpenLongSignal() && OpenTradeCount() && Long)
{
if (!CheckVolatility())
{
OpenPosition(OP_BUY);
}
}
if (OpenShortSignal() && OpenTradeCount() && Short)

{
if (!CheckVolatility())
{
OpenPosition(OP_SELL);
}
}


5. Ищем функцию (по ctrl+F):
int OpenPosition(int OpType) {

и затем ищем функцию OrderSend, пропускаем первые 2 OrderSend (т.к. функцию по вызову оззи по первым двум
OrderSend мы описали выше), для остальных OrderSend ВЕЗДЕ перед ними добавляем функцию if (!CheckVolatility()), без фигурных скобок, например:

блок кода
if (LimitOrder>0&&B==1&&bl==0)OrderSend(EASymbol, OP_BUYLIMIT, OpenLotSize, NormalizeDouble(Bid-LimitOrder*Point*K, Digits), SP, 0, 0, OpenOrderComment, MagicNumber, 0, OpenColor);
if (LimitOrder>0&&S==1&&sl==0)OrderSend(EASymbol, OP_SELLLIMIT, OpenLotSize, NormalizeDouble(Ask+LimitOrder*Point*K, Digits), SP, 0, 0, OpenOrderComment, MagicNumber, 0, OpenColor);
if (ReversOrder>0&&B==1&&ss==0)OrderSend(EASymbol, OP_SELLSTOP, KRevers*OpenLotSize, NormalizeDouble(Bid-ReversOrder*Point*K, Digits), SP, 0, 0,"R" , MagicNumber, TimeCurrent()+60*TimeRewers, OpenColor);
if (ReversOrder>0&&S==1&&bs==0)OrderSend(EASymbol, OP_BUYSTOP, KRevers*OpenLotSize, NormalizeDouble(Ask+ReversOrder*Point*K, Digits), SP, 0, 0, "R", MagicNumber, TimeCurrent()+60*TimeRewers, OpenColor);

заменяем на блок кода

if (LimitOrder>0&&B==1&&bl==0)
if (!CheckVolatility())
OrderSend(EASymbol, OP_BUYLIMIT, OpenLotSize, NormalizeDouble(Bid-LimitOrder*Point*K, Digits), SP, 0, 0, OpenOrderComment, MagicNumber, 0, OpenColor);
if (LimitOrder>0&&S==1&&sl==0)
if (!CheckVolatility())
OrderSend(EASymbol, OP_SELLLIMIT, OpenLotSize, NormalizeDouble(Ask+LimitOrder*Point*K, Digits), SP, 0, 0, OpenOrderComment, MagicNumber, 0, OpenColor);
if (ReversOrder>0&&B==1&&ss==0)
if (!CheckVolatility())
OrderSend(EASymbol, OP_SELLSTOP, KRevers*OpenLotSize, NormalizeDouble(Bid-ReversOrder*Point*K, Digits), SP, 0, 0,"R" , MagicNumber, TimeCurrent()+60*TimeRewers, OpenColor);
if (ReversOrder>0&&S==1&&bs==0)
if (!CheckVolatility())
OrderSend(EASymbol, OP_BUYSTOP, KRevers*OpenLotSize, NormalizeDouble(Ask+ReversOrder*Point*K, Digits), SP, 0, 0, "R", MagicNumber, TimeCurrent()+60*TimeRewers, OpenColor);

и так по каждому OrderSend, кроме первых двух

Автор#16


А если добавить небольшой фильтр волатильности, например, чтобы после слишком больших свечей не работало?



Добавь содержимое пункта 2 в самое начало функции TradeCall1, заменив только return (restrict); на if (restrict) return(0);
И всё. Остальное не нужно.
#17

Для доработок: не вижу смысла выводить значение ATR и мэджик на экран, эта информация лишняя.

#18



А если добавить небольшой фильтр волатильности, например, чтобы после слишком больших свечей не работало?



Добавь содержимое пункта 2 в самое начало функции TradeCall1, заменив только return (restrict); на if (restrict) return(0);
И всё. Остальное не нужно.


Вставил, вроде работает, но стало лучше или хуже, непонятно: сейчас под рукой кривые котировки)

Изменено 18 ноября, 2012 пользователем Мерлин

Автор#19


Вставил, вроде работает, но стало лучше или хуже, непонятно: сейчас под рукой кривые котировки)


Садись, двойка :d
Твой вариант нерабочий. Замени return (restrict); как написано выше
Да и pp с pd лишние. Сова подобные значения стопятсот раз вычисляет, можно и имеющиеся переменные задействовать.


Для доработок: не вижу смысла выводить значение ATR и мэджик на экран, эта информация лишняя.


Да вроде как не мешает. Ну и наглядно, если стоит на нескольких парах и мэджик не поменян сразу в глаза бросается. Хотя, он и с одним мэджиком на все пары должен работать по идее.

Предварительные результаты по AUDUSD /c 2011 до того дико льёт/
От GBP и CAD пока не удалось добиться приемлемых результатов.
Спойлер

Изменено 18 ноября, 2012 пользователем ApMSoft

#20

Цитата

Садись, двойка :d
Твой вариант нерабочий. Замени return (restrict); как написано выше



гм, поправил

Цитата

Да и pp с pd лишние. Сова подобные значения стопятсот раз вычисляет, можно и имеющиеся переменные задействовать.



да, но пока что оставил как есть)

снова добавил вложение в пост, на тестере версия с фильтром ведёт себя... эээ... забавно.

RSM_02+VolaFilter.mq4126 скач.

Автор#21
Новый мод M2 с элементами грааля 8->

- Исправлено отображение лотов в чарте
- Снято ограничение совы на FinalTarget_x_H1_ATR (было минимум 1.0, теперь минимум 0.1)
- Расширен фунционал

Новые опции:
ShowTradeGain = TRUE; Показавать надпись Trade Gain в чарте (разблокировано, изначально есть в сове)
AlertWhenOpen = TRUE; Издавать звук при открытии ордера (разблокировано, изначально есть в сове)
ProfitBooster = TRUE; Режим "грааля" )) Шучу, новый режим о котором ниже.
ProfitBooster_x_H1_ATR = 3.0;
ProfitBoosterLotDelimiter = 4.0;

Идея: (Автор идеи junik7)
При открытии ордера на расстоянии ProfitBooster_x_H1_ATR с лотом (Лот/ProfitBoosterLotDelimiter) выставляем однонаправленную отложку с теми-же стопами и тейком. Учитывая, что Рей в некотором роде пересиживатель, и цена часто сначала заходит вниз, при лосе мы несем лишь небольшие дополнительные убытки, а при тейке получаем хорошую дополнительную прибыль.
При отключенном ProfitBooster, работает аналогично оригиналу.

Backtest


Параметры:
Max_Allocation_Per_Trade = 20
ProfitBooster = TRUE
ProfitBooster_x_H1_ATR = 3.0
ProfitBoosterLotDelimiter = 4.0

RSM_ApM_M2.ex4325 скач.
RSM_ApM_M2_PUB.rar191 скач.

Изменено 17 марта, 2013 пользователем ApMSoft

#22


Исходный код выкладывать не буду.


Что случилось? Откуда такая жадность до исходников?
Автор#23


Что случилось? Откуда такая жадность до исходников?


Исходники по запросу может получить любой пользователь с высокой репутацией, а так-же любой другой пользователь, участие которого было полезным.
#24

Файл скомпилирован терминалом 432 билда. ApMSoft у меня на Alpari 445-ый билд. Это не помешает работе мода?

#25
Идея: (Автор идеи junik7)
При открытии ордера на расстоянии ProfitBooster_x_H1_ATR с лотом (Лот/ProfitBoosterLotDelimiter) выставляем однонаправленную отложку с теми-же стопами и тейком.
В настройках тейки и профиты отложки, менять можно?
Страница 1 из 5

Для публикации сообщений создайте учётную запись или авторизуйтесь

Перейти к списку тем
Форум · 2.0.20260627.0025