← К каталогу
Исходный код · ID 4326

topbottomea v1.31 @lifeindreamsworld.mq4

Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Краткий обзор

О программе

TopBottomEA — торговый советник для MetaTrader 4, использующий индикаторы Bollinger Bands (20 периодов, отклонение 2.0) и Williams %R для принятия торговых решений. Советник анализирует расширение и сжатие полос Боллинджера в сочетании с показаниями индикатора Уильямса и открывает позиции в соответствующем направлении. Каждая позиция имеет стоп-лосс и тейк-профит.

Советник поддерживает настройку объёма сделок, процентного риска от депозита, а также функцию сложного процента для автоматического пересчёта лота на основе equity. Доступна фильтрация по спреду — сделки не открываются при превышении заданного порога. Реализована функция отображения торговой информации на графике.

В советнике реализована адаптация параметров для определённых валютных пар при активации соответствующего переключателя. Магический номер используется для идентификации управляемых ордеров. Советник работает в рамках одного направления одновременно и контролирует количество открытых позиций.

Настройки программы

НастройкаОписание
Lots Фиксированный объём сделки в лотах, используемый при выключенном сложном проценте.
Compoundinterestswitch Переключатель функции сложного процента. При активации объём сделки рассчитывается автоматически на основе текущего equity и заданного процента риска. При выключении используется фиксированный объём Lots.
Risk Процент риска от текущего equity, используемый для расчёта объёма сделки при активированном сложном проценте.
ParameterSwitching Переключатель адаптивных параметров. При активации для определённых валютных пар (CHFSGD, GBPSGD) используются специализированные значения волатильности и расстояния между полосами Боллинджера.
Volatility Период индикатора Williams %R, используемый для определения перекупленности и перепроданности.
StopLoss Уровень стоп-лосса в пунктах для ограничения убытков по каждой позиции.
Profit Уровень тейк-профита в пунктах для закрытия позиций по целевой прибыли.
Pointdifferencelimit Максимально допустимый спред в пунктах. Если текущий спред превышает это значение, советник не открывает новые позиции.
Displayswitch Переключатель отображения информационных объектов на графике. При активации на графике отображаются данные о текущих и исторических сделках, лотах и прибыли.
Magic Магический номер, присваиваемый ордерам для идентификации позиций, открытых данным советником.
CommentName Текстовый комментарий, добавляемый к каждой открытой позиции в истории сделок.
Получить полный код

Поиск по коду файла

#property version "1.31"

#property description "         The advantages of TopBottomEA: the first EA to support"
#property description " the work of small capital, real trading for more than 4 years;"
#property description "this EA is based on volatility adaptive mechanism, only one sing"
#property description "le at a time, each single with a stop loss, an average of about"
#property description "4 single per day, holding a single length of about 12 hours, usi"
#property description "ng Dukascopy real historical data, with $20 limit capital challe"
#property description "nge back test run through more than 10 years"

extern double Lots = 0.1;                   // 6B594B0
extern bool Compoundinterestswitch = false; // byte_6B594B8
extern int Risk = 40;                       // 6B594C0
extern bool ParameterSwitching = false;     // byte_6B594C8
extern int Volatility = 110;                // 6B594D0
extern int StopLoss = 800;                  // 6B594D8
extern int Profit = 300;                    // 6B594E0
extern double Pointdifferencelimit = 50.0;  // 6B594E8
extern bool Displayswitch = false;          // 6B594F0
extern int Magic = 888999;                  // 6B594F8
extern string CommentName = "TopBottomEA";  // 6B59500

double qword_6B59510 = 1000000; // 6B59510
double  qword_6B58FB0=Point();
int dword_6B59520 = 1000;
int dword_6B59524 = 150;
int dword_6B59528 = 5;
int dword_6B5952C = 5;
int dword_6B59530 = 20;
int dword_6B59534 = 24;
int dword_6B59538 = 0;
int dword_6B5953C = 3;
int dword_6B59540 = 30;
bool byte_6B59544 = 1;
int qword_6B59548 = 0;
int qword_6B59550 = 0;
int qword_6B59558 = 0;
int qword_6B59560 = 0;
int dword_6B59568 = 0;
int dword_6B5956C = 0;
int dword_6B59570 = 0;
double  qword_6B59578 = 0;
int qword_6B59580 = 0;
int dword_6B59588 = 0;
int qword_6B59590 = 0;
int dword_6B59598 = 0;
int dword_6B5959C = 0;
int dword_6B595A0 = 0;
int dword_6B595A4 = 0;
int dword_6B595A8 = 0;
int dword_6B595AC = 0;
int qword_6B595B0 = 0;
int qword_6B595B8 = 0;
int qword_6B595C0 = 0;
int qword_6B595C8 = 0;
double dbl_6B595D0 = 0.0;
double dbl_6B595D8 = 0.0;
double dword_6B595E0 = 0;
double dword_6B595E4 = 0;
double dword_6B595E8 = 0;
double dword_6B595EC = 0;
double dword_6B595F0 = 0;
double dword_6B595F4 = 0;
double qword_6B595F8 = 0;
double qword_6B59600 = 0;
double qword_6B59608 = 0;
double qword_6B59610 = 0;
double qword_6B59618 = 0;
int qword_6B59620 = 0;
int dword_6B59628 = 0;
int dword_6B5962C = 0;
int dword_6B59630 = 0;
int dword_6B59634 = 0;
int dword_6B59638 = 0;
int dword_6B5963C = 0;
int dword_6B59640 = 0;
int dword_6B59644 = 0;
int dword_6B59648 = 0;
int dword_6B5964C = 0;
int dword_6B59650 = 0;
int dword_6B59658 = 0;
int dword_6B5965C = 0;
int qword_6B59660 = 0;
int dword_6B59668 = 0;
int dword_6B5966C = 0;
int qword_6B59670 = 0;
int dword_6B59678 = 0;
int dword_6B5967C = 0;
int dword_6B59680 = 0;
int dword_6B59684 = 0;
int dword_6B59688 = 0;
int dword_6B5968C = 0;
int qword_6B59690 = 0;
int qword_6B59698 = 0;
int dword_6B596A0 = 0;
int dword_6B596A4 = 0;
int dword_6B596A8 = 0;
int dword_6B596AC = 0;
int dword_6B596B0 = 0;
int dword_6B596B4 = 0;
int dword_6B596B8 = 0;
int dword_6B596BC = 0;
int dword_6B596C0 = 0;
int dword_6B596C4 = 0;
int dword_6B596C8 = 0;
int dword_6B596CC = 0;
int dword_6B596D0 = 0;
int dword_6B596D4 = 0;
bool byte_6B596D8 = 1;
bool byte_6B596D9 = 1;
bool byte_6B596DA = 1;
int dword_6B596DC = 0;
bool byte_6B596E0 = 0;
bool byte_6B596E1 = 0;
int dword_6B596E4 = 0;
int dword_6B596E8 = 0;
int dword_6B596EC = 0;
int dword_6B596F0 = 0;
int dword_6B596F4 = 0;
int dword_6B596F8 = 0;
int dword_6B596FC = 0;
int dword_6B59700 = 0;
int dword_6B59704 = 0;
int dword_6B59708 = 0;
int dword_6B5970C = 0;

int dword_6B58FA8;

int dword_6B59710 = Volatility;
int dword_6B59714 = StopLoss;

int dword_6B59718 = Profit;

int dword_6B5971C = 1000;
int dword_6B59720 = 150;
double dbl_6B59728 = 0.0;

int OnInit()
{
      // код доступен только после оплаты
   }

void OnDeinit(const int reason)
{

    char v1[12]; // [esp+4h] [ebp-20h] BYREF
    char v2[12]; // [esp+10h] [ebp-14h] BYREF
    int i;       // [esp+1Ch] [ebp-8h]
    int v4;      // [esp+20h] [ebp-4h]
                 /*
                memset(v2, 0, sizeof(v2));
                memset(v1, 0, sizeof(v1));
                for ( i = sub_1730B50(-1) - 1; i >= 0; --i )
                {
                  sub_17306C0(i);
                  sub_173C190(1, dword_6B58FD4, v2);
                  if ( StringFind(v2, 84521250, 0) >= 0 )
                  {
                    sub_17306C0(i);
                    sub_173C190(1, dword_6B58FD4, v1);
                    ObjectDelete(0, 0, v1);
                  }
                }

                */
    v4 = 0;
}

void OnTick()
{
      // код доступен только после оплаты
   }

    double v67, v68, v66;

    if (MarketInfo(0, 13) <= Pointdifferencelimit)
    {

        byte_6B59544 = 1;
    }
    else
    {
        byte_6B59544 = 0;
    }

    if (ParameterSwitching)
    {

        if (StringFind(Symbol(), "CHFSGD", 0) < 0 && StringFind(Symbol(), "GBPSGD", 0) < 0)

        {
            dword_6B59710 = Volatility;
            dword_6B59714 = StopLoss;
            dword_6B59718 = Profit;
            dword_6B5971C = dword_6B59520;
            dword_6B59720 = dword_6B59524;
        }
        else
        {
            dword_6B59710 = 35;
            dword_6B59714 = StopLoss;
            dword_6B59718 = Profit;
            dword_6B5971C = dword_6B59520;
            dword_6B59720 = 0;
        }
    }
    else
    {
        if (StringFind(Symbol(), "GBPCAD", 0) >= 0)
        {
            dword_6B59710 = 110;
            dword_6B59714 = 800;
            dword_6B59718 = 300;
            dword_6B5971C = dword_6B59520;
            dword_6B59720 = dword_6B59524;
        }
        if (StringFind(Symbol(), "EURSGD", 0) >= 0)
        {
            dword_6B59710 = 140;
            dword_6B59714 = 700;
            dword_6B59718 = 160;
            dword_6B5971C = dword_6B59520;
            dword_6B59720 = dword_6B59524;
        }
        if (StringFind(Symbol(), "GBPCHF", 0) >= 0)
        {
            dword_6B59710 = 110;
            dword_6B59714 = 600;
            dword_6B59718 = 200;
            dword_6B5971C = dword_6B59520;
            dword_6B59720 = dword_6B59524;
        }
        if (StringFind(Symbol(), "CHFSGD", 0) >= 0)
        {
            dword_6B59710 = 60;
            dword_6B59714 = 700;
            dword_6B59718 = 160;
            dword_6B5971C = dword_6B59520;
            dword_6B59720 = 0;
        }
        if (StringFind(Symbol(), "GBPSGD", 0) >= 0)
        {
            dword_6B59710 = 35;
            dword_6B59714 = 700;
            dword_6B59718 = 160;
            dword_6B5971C = dword_6B59520;
            dword_6B59720 = 0;
        }
    }

    TesterHideIndicators(1);

    v68 = iBands(0, 1, 20, 2.0, 0, 0, 1, 0);

    v67 = iBands(0, 1, 20, 2.0, 0, 0, 2, 0);

    v66 = iWPR(0, 1, dword_6B59710, 0);

    TesterHideIndicators(0);
    qword_6B59550 = iTime(0, 1, 1);
    qword_6B59560 = iTime(0, 1, 1);
    sub_5546348();
    if (Compoundinterestswitch == 1)
    {

        dbl_6B59728 = StringToDouble(DoubleToString(AccountEquity() * Risk / qword_6B59510, 2));
    }
    else
    {
        dbl_6B59728 = Lots;
    }

    if (IsTesting() == 1)
    {
        if (Hour() >= dword_6B59530 && Hour() <= dword_6B59534 || Hour() >= dword_6B59538 && Hour() <= dword_6B5953C)
        {

            if (v68-v67< dword_6B5971C*qword_6B58FB0)
            {

                if (v68-v67 > dword_6B59720 * qword_6B58FB0)
                {

                    if (dword_6B595A0 + dword_6B59598 < 1 && byte_6B59544 == 1)
                    {

                        if (v66 < dword_6B59528 - 100 && qword_6B59548 != qword_6B59550)
                        {

                            dword_6B59570 = -1;
                            qword_6B59578 = 0;
                            dword_6B59588 = 0;
                            qword_6B59548 = qword_6B59550;

                          qword_6B59578 = NormalizeDouble(Ask-dword_6B59714 *qword_6B58FB0 , 5);

                            qword_6B59580 = 0;

                /*            // LOBYTE(v59) = dbl_6B59728 >;
                            if (dbl_6B59728 < SymbolInfoDouble(0, 35))
                                dbl_6B59728 = SymbolInfoDouble(0, 35);//Minimum trade volume

                            if (dbl_6B59728 > SymbolInfoDouble(0, 34))
                                dbl_6B59

Показано первые 50% кода (символов: 19737)

Открыть по тарифу

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

Разовая покупка файла

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

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
1 973,70₽ ≈ $24.12