pipebomb_ea.mq4
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «pipebomb_ea.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
PipeBomb — торговый советник для MetaTrader 4, использующий пересечение линий индикатора N_StepMA_1_Email для генерации торговых сигналов. При пересечении быстрой и медленной линий индикатора вверх формируется сигнал на покупку, при пересечении вниз — на продажу. Советник автоматически закрывает позиции противоположного направления при появлении нового сигнала.
Советник поддерживает два режима управления размером позиции: фиксированный лот или автоматический расчёт на основе процента риска от equity. Также реализованы трейлинг-стопы, которые перемещают стоп-лосс в прибыльном направлении для открытых ордеров.
Внутренняя логика включает подсчёт текущих открытых ордеров, модификацию стоп-лоссов по трейлингу и отправку рыночных ордеров через стандартные торговые функции MetaTrader 4. При неудачной отправке ордера выводится сообщение об ошибке.
Настройки программы
| Настройка | Описание |
|---|---|
| LotSize | Фиксированный размер лота, используемый при отключённом автоматическом управлении рисками. |
| Slippage | Допустимое проскальзывание цены исполнения ордера в пунктах. |
| StopLoss | Уровень стоп-лосса в пунктах, задаваемый относительно цены открытия ордера. |
| TakeProfit | Уровень тейк-профита в пунктах, задаваемый относительно цены открытия ордера. |
| RiskPercent | Процент риска от чистой стоимости счёта, используемый для автоматического расчёта размера лота при включённом управлении рисками. |
| UseMoneyMgmt | Переключатель автоматического управления рисками. При включении размер лота рассчитывается на основе процента риска от equity, при выключении используется фиксированный размер лота. |
Поиск по коду файла
extern double LotSize=5;
extern int Slippage=3;
extern double StopLoss=20;
extern double TakeProfit=600;
extern double RiskPercent=2.0;
extern bool UseMoneyMgmt=true;
int MagicNumber=0;
int ticket;
int BuyOrders=0;
int SellOrders=0;
int i;
bool Buy_A_Bomb=false, Sell_A_Bomb=false;
double StepMA_Up_1=0;
double StepMA_Up_2=0;
double StepMA_Dn_1=0;
double StepMA_Dn_2=0;
double MM_MinLotSize=0;
double MM_MaxLotSize=0;
double MM_LotStep=0;
double MM_Decimals=0;
double MM_OrderLotSize=0;
int MM_AcctLeverage=0;
int MM_CurrencyLotSize=0;
int init()
{
// код доступен только после оплаты
}
int deinit()
{
return(0);
}
int start()
{
// код доступен только после оплаты
}
MM_AcctLeverage = AccountLeverage();
MM_MinLotSize = MarketInfo(Symbol(),MODE_MINLOT);
MM_MaxLotSize = MarketInfo(Symbol(),MODE_MAXLOT);
MM_LotStep = MarketInfo(Symbol(),MODE_LOTSTEP);
MM_CurrencyLotSize = MarketInfo(Symbol(),MODE_LOTSIZE);
if(MM_LotStep == 0.01) {MM_Decimals = 2;}
if(MM_LotStep == 0.1) {MM_Decimals = 1;}
if (UseMoneyMgmt == true)
{
MM_OrderLotSize = AccountEquity() * (RiskPercent * 0.01) / (MM_CurrencyLotSize / MM_AcctLeverage);
MM_OrderLotSize = StrToDouble(DoubleToStr(MM_OrderLotSize,MM_Decimals));
}
else
{
MM_OrderLotSize = LotSize;
}
if (MM_OrderLotSize < MM_MinLotSize) {MM_OrderLotSize = MM_MinLotSize;}
if (MM_OrderLotSize > MM_MaxLotSize) {MM_OrderLotSize = MM_MaxLotSize;}
double StepMA_Up_1 = iCustom(NULL,Period(),"N_StepMA_1_Email",7,1,0,500,false,0,1);
double StepMA_Up_2 = iCustom(NULL,Period(),"N_StepMA_1_Email",7,1,0,500,false,0,2);
double StepMA_Dn_1 = iCustom(NULL,Period(),"N_StepMA_1_Email",7,1,0,500,false,1,1);
double StepMA_Dn_2 = iCustom(NULL,Period(),"N_StepMA_1_Email",7,1,0,500,false,1,2);
if(StepMA_Up_1 < StepMA_Dn_1 && StepMA_Up_2 > StepMA_Dn_2) {Sell_A_Bomb=true;Buy_A_Bomb=false;}
if(StepMA_Up_1 > StepMA_Dn_1 && StepMA_Up_2 < StepMA_Dn_2) {Sell_A_Bomb=false;Buy_A_Bomb=true;}
BuyOrders=0;
SellOrders=0;
for(i=OrdersTotal();i >= 0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
{
if (OrderType() == OP_BUY && StopLoss > 0)
{
BuyOrders++;
if (StopLoss > 0 && Bid - (StopLoss * Point) > OrderStopLoss())
{
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid - (StopLoss * Point),Digits),OrderTakeProfit(),0);
}
}
if (OrderType() == OP_SELL)
{
SellOrders++;
if (StopLoss > 0 && Ask + (StopLoss * Point) < OrderStopLoss())
{
OrderModify(OrderTicket(),OПоказано первые 50% кода (символов: 6155)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.