multi_ea_1[1].5.1.mq4
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «multi_ea_1[1].5.1.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Данный продукт представляет собой торговый советник для платформы MetaTrader 4, написанный на языке MQL4. Советник предназначен для автоматического управления торговыми позициями на основе сигналов, формируемых с помощью пользовательских индикаторов, применяемых к нескольким валютным парам одновременно.
Советник реализует функцию расчёта оптимального объёма позиции с учётом параметров риска и истории счёта, а также поддерживает механизм скользящего стоп-лосса для открытых позиций. Доступна фильтрация торговых операций по времени, позволяющая ограничить торговлю определёнными часами.
При каждом обновлении котировок советник оценивает текущее состояние позиций, при необходимости закрывает их и открывает новые в зависимости от полученных торговых сигналов. Все торговые операции выполняются через стандартные средства MetaTrader 4.
Настройки программы
| Настройка | Описание |
|---|---|
| UsePct | Целочисленный параметр, определяющий режим использования процентного расчёта при формировании размера позиции. |
| MaxLots | Максимально допустимое количество лотов для ограничения размера позиции. |
| Slippage | Допустимое отклонение цены исполнения от запрашиваемой цены в пунктах. |
| Lots | Базовый размер лота, используемый при расчёте объёма позиции. |
| MaximumRisk | Параметр риска, определяющий долю свободных средств, используемых при расчёте размера позиции. |
| DecreaseFactor | Коэффициент уменьшения лота при наличии убыточных сделок в истории, влияющий на расчёт размера позиции. |
| MinLot | Минимально допустимый размер лота для открытой позиции. |
| TrailingStop | Расстояние в пунктах для установки скользящего стоп-лосса на открытых позициях. |
| UseHourTrade | Переключатель, включающий или отключающий фильтрацию торговых операций по времени. |
| FromHourTrade | Начальный час торгового окна, в рамках которого советник допускает открытие позиций при включённом часовом фильтре. |
| ToHourTrade | Конечный час торгового окна, в рамках которого советник допускает открытие позиций при включённом часовом фильтре. |
Поиск по коду файла
#define MAGICMA 162429
extern int UsePct=0;
extern int MaxLots=100;
extern int Slippage=2;
extern double Lots=1;
extern double MaximumRisk=0.05;
extern double DecreaseFactor=6;
extern double MinLot=0.1;
extern double TrailingStop=30;
double StartBalance,StartEquity;
extern bool UseHourTrade = false;
extern int FromHourTrade = 6;
extern int ToHourTrade = 18;
int bsi=0;
int dir=0;
int vTrig=0;
int openorders=0;
int cnt;
string pair;
int init()
{
// код доступен только после оплаты
}
int deinit()
{
return(0);
}
int GetCurrentOrders()
{
openorders=0;
dir=0;
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderSymbol()==Symbol())
{
openorders+=1;
if(OrderType()==OP_BUY) dir=1;
if(OrderType()==OP_SELL) dir=-1;
}
}
}
double LotsOptimized()
{
double lot=Lots;
int orders=HistoryTotal(); // history orders total
int losses=0; // number of losses orders without a break
lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/500.0,1);
if(DecreaseFactor>0)
{
for(int i=orders-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Error in history!"); break; }
if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL) continue;
if(OrderProfit()>0) break;
if(OrderProfit()<0) losses++;
}
if(losses>1) lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1);
}
if(lot<0.1) lot=0.1;
return(lot);
}
int CloseTrade()
{
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderSymbol()==Symbol())
{
if(OrderType()==OP_BUY) OrderClose(OrderTicket(),OrderLots(),Bid,3,Yellow);
if(OrderType()==OP_SELL) OrderClose(OrderTicket(),OrderLots(),Ask,3,Yellow);
}
}
}
int OpenTrade()
{
int vLots=LotsOptimized();
if (bsi>0) OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,Slippage,0,0,NULL,MAGICMA,0,Green);
if (bsi<0) OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,Slippage,0,0,NULL,MAGICMA,0,Red);
}
int CalcBSI()
{
Показано первые 50% кода (символов: 3184)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.