LSMA_Daily_wLog
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «lsma_anytimeframe_ea_v1.1.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Программа представляет собой торговый советник для платформы MetaTrader 4, написанный на языке MQL4. Она формирует торговые сигналы на основе пересечения двух скользящих регрессий с настраиваемыми периодами и позволяет открывать и закрывать позиции через стандартные торговые API MetaTrader.
Советник поддерживает фильтрацию по месяцам, ограничивая торговлю заданным временным диапазоном в течение года. Доступны настройки фиксированного объёма лота и автоматического управления денежными средствами с расчётом размера позиции на основе баланса или свободного маржинального баланса счёта.
Система позволяет задавать стоп-лосс и тейк-профит, управлять ордерами с учётом проскальзывания и поддерживает режим однократного выполнения торгового сигнала за завершённый бар. Встроена проверка наличия открытых позиций для предотвращения дублирования.
Настройки программы
| Настройка | Описание |
|---|---|
| Expert_Name | Имя советника — Текстовый параметр, задающий имя экспертного советника. |
| MagicNumberBase | Базовый магический номер — Целочисленный параметр базового магического номера для идентификации ордеров. |
| UserComment | Комментарий пользователя — Текстовый параметр, задающий комментарий к открытым ордерам. |
| in | Настройки индикатора — Текстовый разделитель для группы настроек индикатора. |
| LSMAShortPeriod | Короткий период LSMA — Целочисленный параметр, задающий период быстрой скользящей регрессии. |
| LSMALongPeriod | Длинный период LSMA — Целочисленный параметр, задающий период медленной скользящей регрессии. |
| MonthStart | Начальный месяц — Целочисленный параметр, задающий начальный месяц торгового периода. |
| MonthEnd | Конечный месяц — Целочисленный параметр, задающий конечный месяц торгового периода. |
| UseFreshCross | Свежее пересечение — Логический переключатель, требующий подтверждения нового пересечения для открытия позиции. |
| mm | Управление денежными средствами — Текстовый разделитель для группы настроек управления денежными средствами. |
| Lots | Объём лота — Числовой параметр начального объёма лота для торговли. |
| MaxLots | Максимальный лот — Числовой параметр максимального допустимого объёма лота. |
| Change to false to shutdown money management controls. (UseMoneyManagement) | Управление денежными средствами — Логический переключатель, включающий или отключающий автоматическое управление денежными средствами. |
| BrokerIsIBFX | Брокер IBFX — Логический переключатель для настройки работы с брокером IBFX. |
| m1 | Настройки мини/микро счёта — Текстовый параметр с подсказкой о настройках мини и микро счётов. |
| fm | Режим маржи — Текстовый параметр с подсказкой о режиме расчёта маржи. |
| UseFreeMargin | Использовать свободный маржинальный баланс — Логический переключатель для расчёта лота на основе свободного маржинального баланса вместо остатка на счёте. |
| Change to whatever percent of equity you wish to risk. (TradeSizePercent) | Процент размера торговли — Числовой параметр процента капитала, используемого для расчёта размера позиции. |
| BrokerPermitsFractionalLots | Дробные лоты разрешены — Логический переключатель, указывающий, разрешает ли брокер дробные лоты. |
| st6 | Контроль прибыли — Текстовый разделитель для группы настроек контроля прибыли. |
| StopLoss | Стоп-лосс — Числовой параметр уровня стоп-лосса в пунктах. |
| TakeProfit | Тейк-профит — Числовой параметр уровня тейк-профита в пунктах. |
| Slippage | Проскальзывание — Целочисленный параметр, задающий допустимое проскальзывание в пунктах. |
| db0 | Флаг однократного запуска — Текстовый параметр с подсказкой о флаге однократного запуска. |
| db1 | Подсказка стоп-лосса — Текстовый параметр с подсказкой, связанной со стоп-лоссом. |
| db2 | Подсказка тейк-профита — Текстовый параметр с подсказкой, связанной с тейк-профитом. |
| UseOncePerBar | Однократно за бар — Логический переключатель, ограничивающий обработку сигналов одним разом за завершённый бар. |
Поиск по коду файла
#include <stdlib.mqh>
extern string Expert_Name = "LSMA_AnyTF";
extern int MagicNumberBase = 200000;
extern string UserComment = "LSMA_EA";
extern string in="---Indicator settings---";
extern int LSMAShortPeriod=7;
extern int LSMALongPeriod=16;
extern int MonthStart = 1;
extern int MonthEnd = 12;
extern bool UseFreshCross = true;
extern string mm = "---Money Management---";
extern double Lots=1.0;
extern double MaxLots = 100;
extern bool UseMoneyManagement = true; // Change to false to shutdown money management controls.
extern bool BrokerIsIBFX = false;
extern string m1="Set mini and micro to false for standard account";
extern bool AccountIsMini = false;
extern bool AccountIsMicro = false;
extern string fm="UseFreeMargin = false to use Account Balance";
extern bool UseFreeMargin = false;
extern double TradeSizePercent = 10; // Change to whatever percent of equity you wish to risk.
extern bool BrokerPermitsFractionalLots = true;
extern string st6 = "--Profit Controls--";
extern double StopLoss=0;
extern double TakeProfit=0;
extern int Slippage=3;
extern string db0="---Flag to run start once per bar---";
extern string db1=" Set to false when using stoploss";
extern string db2=" takeprofit or trailing stop";
extern bool UseOncePerBar = true;
int MagicNumber=0;
string setup;
int TradesInThisSymbol = 0;
double mLots=0;
datetime timeprev = 0;
int init()
{
// код доступен только после оплаты
}
int deinit()
{
return(0);
}
double LSMADaily(int Rperiod, int shift)
{
int i;
double sum;
int length;
double lengthvar;
double tmp;
double wt;
length = Rperiod;
sum = 0;
for(i = length; i >= 1 ; i--)
{
lengthvar = length + 1;
lengthvar /= 3;
tmp = 0;
tmp = ( i - lengthvar)*iClose(NULL,0,length-i+shift);
sum+=tmp;
}
wt = sum*6/(length*(length+1));
return(wt);
}
bool CheckExitCondition(int TradeType)
{
bool YesClose;
double L_Fast,L_Slow;
YesClose = false;
L_Fast=LSMADaily(LSMAShortPeriod,1);
L_Slow=LSMADaily(LSMALongPeriod,1);
if (TradeType == OP_BUY)
{
if (L_Fast < L_Slow) YesClose = true;
}
if (TradeType == OP_SELL)
{
if (L_Fast > L_Slow) YesClose = true;
}
return (YesClose);
}
bool CheckEntryCondition(int TradeType)
{
bool YesTrade;
double L_Fast,L_Slow;
double L_FastPrev,L_SlowPrev;
L_Fast=LSMADaily(LSMAShortPeriod,1);
L_Slow=LSMADaily(LSMALongPeriod,1);
YesTrade = false;
if (TradeType == OP_BUY)
{
if ( L_Fast > L_Slow)
{
if (UseFreshCross == true)
{
L_FastPrev=LSMADaily(LSMAShortPeriod,2);
L_SlowPrev=LSMADaily(LSMALongPeriod,2);
if (L_FastPrev < L_SlowPrev) YesTrade = true; else YesTrade = false;
}
else
YesTrade = true;
}
}
if (TradeType == OP_SELL)
{
if ( L_Fast < L_Slow)
{
if (UseFreshCross == true)
{
L_FastPrev=LSMADaily(LSMAShortPeriod,2);
L_SlowPrev=LSMADaily(LSMALongPeriod,2);
if (L_FastPrev > L_SlowPrev) YesTrade = true; else YesTrade = false;
}
else
YesTrade = true;
}
}
return (YesTrade);
}
int start()
{
// код доступен только после оплаты
}
double GetLots()
{
double lot;
if(UseMoneyManagement == true)
{
lot = LotsOptimized();
}
else
{
lot = Lots;
}
if (AccountIsMicro == true)
{
if (lot < 0.01) lot = 0.01;
if (lot > MaxLots) lot = MaxLots * 100;
if (BrokerIsIBFX == true) lot = lot * 10;
return(lot);
}
if(AccountIsMini == true)
{
if (lot < 0.1) lot = 0.1;
if (lot > MaxLots) lot = MaxLots;
if (BrokerIsIBFX == true) lot = lot * 10;
return(lot);
}
if( BrokerPermitsFractionalLots == false)
{
if (lot >= 1.0) lot = MathFloor(lot); else lot = 1.0;
}
if (lot > MaxLots) lot = MaxLots;
return(lot);
}
double LotsOptimized()
{
double lot=Lots;
if (UseFreeMargin == true)
lot=NormalizeDouble(MathFloor(AccountFreeMargin()*TradeSizePercent/10000)/10,1);
else
lot=NormalizeDouble(MathFloor(AccountBalance()*TradeSizePercent/10000)/10,1);
if(AccountIsMini == true)
{
lot = MathFloor(lot*10)/10;
}
return(lot);
}
int OpenBuyOrder(double mLots, double mStopLoss, double mTakeProfit, int mSlippage, string mComment, int mMagic, color mColor)
{
int err,ticket;
double myPrice, myStopLoss = 0, myTakeProfit = 0;
RefreshRates();
myStopLoss = StopLong(Bid,mStopLoss);
myTakeProfit = TakeLong(Bid,mTakeProfit);
if (Digits > 0)
{
myPrice = NormalizeDouble( Ask, Digits);
myStopLoss = NormalizeDouble( myStopLoss, Digits);
myTakeProfit = NormalizeDouble( myTakeProfit, Digits);
}
ticket=OrderSend(Symbol(),OP_BUY,mLots,myPrice,mSlippage,myStopLoss,myTakeProfit,mComment,mMagic,0,mColor);
if (ticket > 0)
{
Показано первые 50% кода (символов: 8572)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.