OverHedge
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «overhedge.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
OverHedge — торговый советник для MetaTrader 4, реализующий стратегию хеджирования с построением сетки ордеров. Советник анализирует направление цены с помощью двух скользящих средних (LSMA или EMA) и открывает сделки при наличии выраженного тренда. При отсутствии направления новые позиции не открываются.
Советник поддерживает динамическое управление размером лотов на основе параметра HedgeBase, позволяя увеличивать объём сделок по мере роста количества открытых позиций. Доступна функция автоматического закрытия всех позиций при достижении целевой прибыли, а также режим аварийного закрытия всех ордеров.
Реализована пауза перед закрытием прибыльных позиций и фильтрация ордеров по magic number. Советник работает на текущем торговом символе и использует стандартные торговые API MetaTrader 4 для открытия и закрытия позиций.
Настройки программы
| Настройка | Описание |
|---|---|
| MagicNumber | Магический номер — Идентификатор ордеров, используемый для фильтрации позиций советника. |
| Lots | Размер лота — Начальный размер лота для первой сделки. |
| HedgeBase | База хеджирования — Множитель для расчёта размера лота следующей сделки в зависимости от количества уже открытых позиций. |
| Slippage | Проскальзывание — Допустимое отклонение цены при исполнении ордеров. |
| shutdownGrid | Закрыть сетку — Переключатель для аварийного закрытия всех открытых позиций советника и выхода. |
| TunnelWidth | Ширина туннеля — Ширина туннеля, определяющая зоны входа в позиции. |
| if > 0, will close out all positions once the pip target has been met (profitTarget) | Целевая прибыль — Целевая прибыль в пунктах. При достижении этого значения все открытые позиции закрываются. |
| UseLSMA | Использовать LSMA — Переключатель для выбора метода расчёта скользящей средней: LSMA или стандартная EMA. |
| original was 7, change based on new optimization Mar06 (MAShortPeriod) | Период быстрой скользящей средней — Период быстрой скользящей средней, используемой для определения направления тренда. |
| original was 16, change based on new optimization Mar06 (MALongPeriod) | Период медленной скользящей средней — Период медленной скользящей средней, используемой для определения направления тренда. |
| Number of seconds to "sleep" before closing the next winning trade (PauseSeconds) | Пауза в секундах — Время паузы в секундах перед закрытием следующей прибыльной позиции. |
| DO NOT CHANGE - Standard multiplier to convert seconds to milliseconds (MillisPerSec) | Миллисекунд в секунду — Множитель для перевода паузы из секунд в миллисекунды. Не изменять. |
Поиск по коду файла
#include <stdlib.mqh>
extern int MagicNumber = 11111;
extern double Lots = 0.1;
extern double HedgeBase = 2.0;
extern int Slippage = 5;
extern bool shutdownGrid = false;
extern int TunnelWidth=20;
extern double profitTarget = 100; // if > 0, will close out all positions once the pip target has been met
extern bool UseLSMA = true;
extern int MAShortPeriod=8; // original was 7, change based on new optimization Mar06
extern int MALongPeriod=21; // original was 16, change based on new optimization Mar06
extern int PauseSeconds = 6; // Number of seconds to "sleep" before closing the next winning trade
extern int MillisPerSec = 1000; // DO NOT CHANGE - Standard multiplier to convert seconds to milliseconds
double TunnelSize;
string setup;
double startBuyRate, startSellRate;
int currentOpen;
int NumBuyTrades, NumSellTrades; // Number of buy and sell trades in this symbol
bool myWantLongs;
double lotMM;
double Profit;
bool OK2Buy,OK2Sell, FirstDirSell;
double LSMA(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)*Close[length-i+shift];
sum+=tmp;
}
wt = sum*6/(length*(length+1));
return(wt);
}
int CheckDirection()
{
double SlowMA, FastMA;
double Dif;
if (UseLSMA)
{
FastMA = LSMA(MAShortPeriod,1);
SlowMA = LSMA(MALongPeriod,1);
}
else
{
FastMA = iMA(NULL,0,MAShortPeriod,0,MODE_EMA,PRICE_CLOSE,1);
SlowMA = iMA(NULL,0,MALongPeriod,0,MODE_EMA,PRICE_CLOSE,1);
}
Dif = FastMA-SlowMA;
if(Dif > 0 ) return(1);
if(Dif < 0 ) return(-1);
return(0);
}
int init()
{
// код доступен только после оплаты
}
int deinit()
{
return(0);
}
void CloseOpenPositions()
{
int cnt, err;
for(cnt=OrdersTotal()-1;cnt>=0;cnt--)
{
OrderSelect (cnt, SELECT_BY_POS,MODE_TRADES);
if ( OrderSymbol() != Symbol()) continue;
if ( OrderMagicNumber() != MagicNumber) continue;
if(OrderType() == OP_BUY && OrderProfit() < 0)
{
if (OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Violet))
{
Print("Buy Order closed for " + Symbol() + " at " + Bid + ".");
}
else
{
err=GetLastError();
Print("Error closing order : (", err , ") " + ErrorDescription(err));
}
}
if(OrderType() == OP_SELL && OrderProfit() < 0)
{
if (OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Violet))
{
Print("Sell Order closed for " + Symbol() + " at " + Ask + ".");
}
else
{
err=GetLastError();
Print("Error closing order : (", err , ") " + ErrorDescription(err));
}
}
}
for(cnt=OrdersTotal()-1;cnt>=0;cnt--)
{
OrderSelect (cnt, SELECT_BY_POS,MODE_TRADES);
if ( OrderSymbol() != Symbol()) continue;
if ( OrderMagicNumber() != MagicNumber) continue;
if(OrderType() == OP_BUY && OrderProfit() > 0)
{
Sleep(PauseSeconds*MillisPerSec);
if (OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Gold))
{
Print("Buy Order closed for " + Symbol() + " at " + Bid + ".");
}
else
{
err=GetLastError();
Print("Error closing order : (", err , ") " + ErrorDescription(err));
}
}
if(OrderType() =Показано первые 50% кода (символов: 5151)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.