topbottomea v1.31 @lifeindreamsworld.mq4
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «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? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.