Смотри, как бесплатно скачать роботов
Ищи нас в Twitter!
Ставь лайки и следи за новостями
Интересный скрипт?
Поставь на него ссылку - пусть другие тоже оценят
Понравился скрипт?
Оцени его работу в терминале MetaTrader 5
Библиотеки

b-PSI@NET v.27.08.2012 - библиотека для MetaTrader 4

Просмотров:
3671
Рейтинг:
(6)
Опубликован:
2012.08.12 07:52
Обновлен:
2014.04.21 14:55
\MQL4\Include\
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу

Начнём с определений. Что такое сетевая стратегия? Большое количество одновременно открытых на инструменте отложенных ордеров - это сеть (скорее всего). Сеть в явном виде. НО сеть может строиться и не в явном виде. Что же тогда понимать под сетью? Сеть - это совокупность ордеров, связанных м\у собой единой логикой формирования размера лота следующего ордера в сети относительно предыдущего, а также логикой открытия последующего ордера относительно уровня открытия предыдущего (задаётся МИНимальная дистанция м\у ордерами). Совокупность этих условий позволяют говорить о серии ордеров, где мы жёстко (в настройках) задаём максимальное количество ордеров в серии (Max_trades). Отдельно определяем условия начала формирования серии и её окончания: серия заканчивается после открытия Max_trades-ордера в не зависимости от результатов (профита) ВСЕХ ордеров серии. Серия может заканчиваться при достижении МАКСимального заданного убытка (Lossa\просадки) - ограничиваем слив. Также серию можно заканчивать, если следить за общим профитом серии и его, например, тралить - в этом случае начало следующей серии ордеров будет сопровождаться фактом увеличения размера депозита по сравнению с размером депо на момент начала предыдущей серии. Т.е. серия закроется в Плюсе.
Важно понимать: в конечном итоге результат определяется СОВОКУПНОСТЬЮ профитов ВСЕХ ордеров серии. И наша задача - "Вывести КАЖДУЮ серию в ПЛЮС!" (теоретически) - это ОСНОВНАЯ МОТИВАЦИЯ построения сети. ;)

Задача данной библиотеки "плести" свою сеть, что она может делать несколькими способами (Strategy):

  • 0 - Доливаемся в любую сторону от последнего ордера;
  • 1 - Доливаемся только при убытке (Мартингейл);
  • 2 - Доливаемся только при прибыли (Пирамидинг)
  • * 3 - Доливаемся "противоположным" ордером только при убытке (Переворот).

Примечание: * - возможные усовершенствования функционала библиотеки.

Настройки библиотеки:

extern string SETUP_RulesNET        = "================= RULES`s NET =================";
extern int    Max_trades               = 5;                // Макс. кол-во однвременно открытых ордеров советника
extern int    Strategy                 = 0;                // Варианты создания серий ордеров
extern int    DeleteBallastOrders      = 1;                // 1 - Удаляем безнадёжные ордера
extern int    SendOnlyOrders           = -1;               // 0 - открываем только BUY; 1 - только SELL; -1 - все
extern bool   UseSignalForNextOrder    = FALSE;            // Исп. какие-либо сигналы для отк. послед. ордеров
extern double Delta                    = 10;               // Мин. расстояние м/у текущим и предыдущим ордерами
extern double K_Delta                  = 1;                // Коэфф. увеличения расстояния последующих ордеров, 
//где curDelta = Delta * MathPow (K_Delta, N - 1) (N - количество открытых ордеров в серии)

1-ый ордер в серии открывается по показанию индикатор(а)ов или "по звёздам", последующий ордер открывается на расстоянии не менее Delta и по сигналу (UseSignalForNextOrder = true) или без сигнала (UseSignalForNextOrder = false) тех же сил, которые открыли первый ордер. Расстояние м\у ордерами в серии можно увеличивать\сокращать посредством коэффициента K_Delta.
Если Вы хотите работать по тренду и знаете, как его определить, то при SendOnlyOrders = 0 библиотека будет открывать ТОЛЬКО BUY-ордера, а при SendOnlyOrders = 1 ТОЛЬКО SELL-ордера.

Библиотеку в init() нужно инициализировать:

    //---- Инициализируем библиотеку построения сети
    fInit_NET();

Передаваемые в основную функцию библиотеки параметры выглядят так:

bool fControl_NET (int fi_MG,                    // Magic
                   int fi_HistoryOrders,         // Количестов закрытых ордеров
                   double fd_Pribul,             // Результаты работы
                   double fd_Profit,             // Текущая прибыль
                   double fd_BeginLots,          // начальный лот
                   double& fd_Lots,              // возвращаемое значение Lots
                   string fs_Comment,            // OrderComment
                   int fi_Trend,                 // 0 - Open BUY; 1 - Open SELL
                   bool& fb_IsOpenOrders,        // флаг наличия своих открытых ордеров
                   int fi_SendOnlyOrders = -1,   // Направленность открытия сети
                   int fi_Slippage = 3)          // проскальзывание

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

    //---- Следим за рынком на начале открытия бара iTF_Indicators
    if (bdt_NewBar != bdt_BeginNewBar)
    {      
        //---- Заносим в массив текущие цены
        RefreshRates();
        for (int li_IND = 0; li_IND < 2; li_IND++)
        {bda_Price[li_IND] = fGet_TradePrice (li_IND, bb_RealTrade, bs_Symbol);}
        //---- Получаем сигналы от индикаторов
        int li_Send = fSend_Control (bi_TREND);
        bdt_NewBar = bdt_BeginNewBar;
        //---- Фиксируем флаг присутствия открытых ордеров
        bb_IsOpenOrders = bi_MyOrders > 0;
        //---- Строим сеть ордеров
        fControl_NET (MagicNumber, gia_HistoryOrders[2], bd_BaseBalance, bd_ProfitCUR, Order_Lots, bd_LotsMM, EXP_Comment,
        li_Send, bb_IsOpenOrders, SendOnlyOrders, Slippage);
    }

Вот советник, построенный на этой библиотеке.

Библиотека может быть усовершенствована следующим функционалом:

  • Удаляем (перед тем, как открыть следующий ордер) предыдущий лоссовый ордер (DeleteBallastOrders = 2);
  • Тралим и модифицируем Динамические СТОПы (если задано): или ТОЛЬКО у 1-го ордера в серии, или ТОЛЬКО у последнего, или у всех ордеров (ModifyOnlyOrder);
  • Используем, как прямой, так и обратный мартингейл (уменьшение размера лота) в серии;
  • Серию открываем по тренду;
  • Строим одновременно две автономных сети, каждую в своём направлении (UP и DW) и следим одновременно за:
  • *** общим профитом серии UP;
  • *** общим профитом серии DW;
  • *** общим профитом обоих серий;
  • Ну, и наконец, MultiNET - одновременно работают несколько автономных сетей (в том числе и на разных инструментах).

Можете предлагать дополнительный функционал к библиотеке.

P.S. Эта библиотека работает ТОЛЬКО в составе с базовой библиотекой и библиотекой торговых операций.

Изменения от 27.08.2012:

  • добавил переменную DeleteBallastOrders;
  • исправил несколько ошибок.
TradingBoxing TradingBoxing

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

RSI. Просто RSI. RSI. Просто RSI.

Классическая реализация индикатора на основе формулы из книги Ч.Лебо и Д.Лукаса "Компьютерный анализ фьючерсных рынков".

maximus_vX lite maximus_vX lite

Торговля на основе ценовых консолидаций

AnalysisOnBars AnalysisOnBars

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