mgh ea_v2.2.mq4
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «mgh ea_v2.2.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Советник для платформы MetaTrader 4, реализующий сеточную торговую стратегию с элементами мартингейла и хеджирования. Советник управляет открытыми позициями в обеих направлениях, размещая дополнительные ордера по мере движения цены от начальной точки. Используется внешняя библиотека OrderSendReliable для надёжной отправки ордеров.
Советник отслеживает количество открытых позиций в каждом направлении и применяет увеличение лотов при достижении определённых условий. При достижении заданного уровня совокупной прибыли все открытые пары позиций закрываются. Включён режим внутренних ордеров для управления позициями за пределами базового сеточного уровня.
Встроена система отчётности, которая периодически формирует сводку по прибыли и объёмам сделок за текущий день, неделю, месяц и за всё время. Отчётность основана на истории закрытых сделок и отображается в комментариях графика.
Настройки программы
| Настройка | Описание |
|---|---|
| LotsMultiplier | Множитель лота — Коэффициент увеличения размера лота при размещении ордеров в режиме хеджирования. |
| MaxLevel | Максимальный уровень — Максимальное количество ордеров в одном направлении до переключения в режим внутренних ордеров. |
| BaseLot | Базовый лот — Начальный размер лота для первого ордера в каждом направлении. |
| maxLot | Максимальный лот — Ограничение максимального размера лота для любого размещаемого ордера. |
| MagicNo | Магический номер — Идентификатор ордеров советника для их отслеживания и управления. |
| BasicOrder_Grid | Базовый размер сетки — Расстояние в пунктах между базовыми ордерами в сетке. |
| Basket_TakeProfit | Прибыль корзины — Порог совокупной прибыли открытых позиций для их закрытия. |
Поиск по коду файла
#property description "MGH System (Martingale Grid & Hedging) by Kfx"
#property description ""
#property description "EA autor: GoldenEA; some changes: SwingMan"
#property description "minor modifications proposed by Paracelsus #post 707"
#include <WinUser32.mqh>
#include <OrderSendReliable_v2.1.mqh>
input double LotsMultiplier =2.5;
extern int MaxLevel =2;
extern double BaseLot = 0.10;
extern double maxLot =2;
extern int MagicNo = 2900;
extern int BasicOrder_Grid=10;
input double Basket_TakeProfit=6;
int InsideOrder_Grid=5;
bool Enable_InsideOrders=false;
double ClsPercnt = 0.1;
double OrderGap;
string TextDisplay;
static double pt;
string TradeComment="mghA";
int numBuy,numSell,prevnumBuy,prevnumSell,numPenBuy,numPenSell;
double maxBuyLots,maxSellLots,totalProfit,AllProfit,prevEquity=0,currEquity=0;
static double lowestBuyPrice,highestSellPrice,lowestSellPrice,highestBuyPrice,lowestSellPrice2,highestBuyPrice2;
datetime lastBuyTime,lastSellTime;
double totalSellProfit,totalBuyProfit;
int lastestOrderCloseType;
double AveragePrice,TotalVolume;
bool EAsuspended=false;
datetime SuspenEATime=0;
void init()
{
// код доступен только после оплаты
}
void start()
{
// код доступен только после оплаты
}
void PlaceSingleOrder(string sym,int type,double lotsize,double price)
{
int ticket;
color cColor;
if(type==OP_BUY) cColor=clrBlue; else
if(type==OP_SELL) cColor=clrRed;
lotsize=NormalizeDouble(lotsize,2);
ticket=OrderSendReliable(sym,type,lotsize,price,0,0,0,TradeComment,MagicNo,0,cColor);
Print(" ### Lot size: ",DoubleToStr(lotsize,2));
Print(" ### Grid size: ",DoubleToStr(OrderGap,0)," numBuy= ",numBuy," numSell=",numSell);
if(ticket>0 && type==OP_SELL)
{
while(prevnumSell==numSell)
{
CountOrders();
}
prevnumSell=numSell;
}
if(ticket>0 && type==OP_BUY)
{
while(prevnumBuy==numBuy)
{
CountOrders();
}
prevnumBuy=numBuy;
}
if(ticket<0)
{
int e=GetLastError();
Print("Error: "+DoubleToStr(e,0));
}
}
void CountOrders()
{
numBuy=0; numSell=0; maxBuyLots=0; maxSellLots=0; totalSellProfit=0; totalBuyProfit=0;
double buyProfit1=0; double buyProfit2=0; double sellProfit1=0; double sellProfit2=0;
lowestBuyPrice=9999; highestSellPrice=0; lowestSellPrice=9999; highestBuyPrice=0;lowestSellPrice2=9999; highestBuyPrice2=0;
bool bRes;
for(int cnt=OrdersTotal()-1; cnt>=0; cnt--)
{
bRes=OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol())
{
if(OrderType()==OP_BUY)
{
numBuy++;
buyProfit1+=OrderProfit()+OrderSwap()+OrderCommission();
if(OrderOpenPrice()<lowestBuyPrice)
{
lowestBuyPrice=OrderOpenPrice();
lastBuyTime=OrderOpenTime();
}
if(OrderOpenPrice()>highestBuyPrice)
{ highestBuyPrice=OrderOpenPrice();}
if(OrderLots()>maxBuyLots) maxBuyLots=OrderLots();
}
else if(OrderType()==OP_SELL)
{
numSell++;
sellProfit1+=OrderProfit()+OrderSwap()+OrderCommission();
if(OrderOpenPrice()>highestSellPrice)
{
highestSellPrice=OrderOpenPrice();
lastSellTime=OrderOpenTime();
}
if(OrderOpenPrice()<lowestSellPrice)
{ lowestSellPrice=OrderOpenPrice();}
if(OrderLots()>maxSellLots) maxSellLots=OrderLots();
}
totalBuyProfit=buyProfit1;
totalSellProfit=sellProfit1;
}
}
}
void SetTakeProfit(int type,double tp)
{
for(int i=0; i<OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderSymbol()==Symbol() && OrderType()==type)
ModifySelectedOrder(type,tp);
}
}
void CloseOpenPairPositions()
{
bool bRes;
for(int i=10; i>=0; i--)
{
for(int cnt=OrdersTotal()-1; cnt>=0; cnt--)
{
bRes=OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if(OrderMagicNumber()==MagicNo)
{
if(OrderType()==OP_BUY && OrderSymbol()==Symbol())
OrderCloseReliable(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),5);
else
if(OrderType()==OP_SELL && OrderSymbol()==Symbol())
OrderCloseReliable(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),5);
}
}
}
}
void ModifySelectedOrder(int type,double tp)
{
bool ok=OrderModifyRПоказано первые 50% кода (символов: 9753)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.