EA Pyramid
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «ea pyramid 7.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
EA Pyramid — торговый советник для MetaTrader 4, реализующий стратегию пирамидирования и усреднения позиций на основе полос Боллинджера. Советник открывает и управляет ордерами BUY/SELL с настраиваемыми уровнями фиксации прибыли и стоп-лосса, а также скользящим стопом. Поддерживаются два режима управления лотами: арифметическое усреднение и умножение.
Настройки программы
| Настройка | Описание |
|---|---|
| _ | Разделитель — Разделитель группы настроек основной конфигурации. |
| Nombre (Name) | Имя советника — Имя советника, используемое в комментариях ордеров. |
| MagicNumber | Магический номер — Уникальный идентификатор ордеров для фильтрации. |
| StartingLots | Начальный лот — Начальный объём позиции в лотах. |
| EnableMoneyManagment | Включить управление капиталом — Включает/отключает управление денежными средствами с расчётом лотов на баланс. |
| USD_PerMicroLot | USD за микролот — Стоимость одного микролота в долларах для расчёта лотов при управлении капиталом. |
| ________ | Разделитель — Разделитель группы настроек пирамиды. |
| EnablePyramid | Включить пирамидирование — Включает/отключает режим пирамидирования позиций. |
| P_Grid_Pips | Сетка пирамиды (пипсы) — Шаг сетки пирамидирования в пипсах. |
| TakeProfitMode | Режим тейк-профита — Режим установки тейк-профита: фиксированные пипсы, ATR или полосы Боллинджера. |
| TakeProfitPips | Тейк-профит (пипсы) — Расстояние тейк-профита в пипсах в фиксированном режиме. |
| TakeProfitATR | Тейк-профит (ATR) — Множитель ATR для расчёта тейк-профита в ATR-режиме. |
| StopLossMode | Режим стоп-лосса — Режим установки стоп-лосса: фиксированные пипсы, ATR или полосы Боллинджера. |
| StopLossPips | Стоп-лосс (пипсы) — Расстояние стоп-лосса в пипсах в фиксированном режиме. |
| StopLossATR | Стоп-лосс (ATR) — Множитель ATR для расчёта стоп-лосса в ATR-режиме. |
| TrailingStopMode | Режим скользящего стопа — Режим скользящего стопа: фиксированные пипсы или ATR. |
| TrailingStopPips | Скользящий стоп (пипсы) — Расстояние скользящего стопа в пипсах в фиксированном режиме. |
| TrailingStopATR | Скользящий стоп (ATR) — Множитель ATR для расчёта скользящего стопа в ATR-режиме. |
| _________ | Разделитель — Разделитель группы настроек усреднения. |
| EnableAverage | Включить усреднение — Включает/отключает режим усреднения позиций. |
| A_Lot_Mode | Режим лота (усреднение) — Режим расчёта лота при усреднении: арифметическое сложение или умножение. |
| A_Multiplier | Множитель лота — Множитель лота при усреднении в режиме умножения. |
| A_Grid_Mode | Режим сетки (усреднение) — Режим измерения сетки усреднения: пипсы или ATR. |
| A_Grid_Pips | Сетка пипсов (усреднение) — Шаг сетки усреднения в пипсах. |
| A_Grid_ATR | Сетка ATR (усреднение) — Шаг сетки усреднения в единицах ATR. |
| A_Takeprofit | Тейк-профит (усреднение) — Количество пипсов для фиксации прибыли при усреднении. |
| __ | Разделитель — Разделитель группы настроек полос Боллинджера. |
| BB_Period | Период Боллинджера — Период расчёта индикатора полос Боллинджера. |
| BB_Deviation | Отклонение Боллинджера — Отклонение стандартного отклонения для индикатора полос Боллинджера. |
| BB_Shift | Сдвиг Боллинджера — Сдвиг индикатора полос Боллинджера в барах. |
| BB_Price | Цена Боллинджера — Применяемая цена для расчёта полос Боллинджера. |
| _____ | Разделитель — Разделитель группы настроек ATR. |
| ATR_Period | Период ATR — Период расчёта индикатора Average True Range для определения волатильности. |
| ______ | Разделитель — Разделитель группы настроек фильтров. |
| Slipage | Проскальзывание — Допустимое проскальзывание в пунктах при открытии ордеров. |
| Spread | Максимальный спред — Максимально допустимый спред в пунктах для открытия позиций. |
| MinEquity | Минимальный капитал — Минимальный допустимый уровень собственного капитала для продолжения торговли. |
| StartingHour1 | Начало сессии 1 — Время начала первой торговой сессии (по серверу). |
| EndingHour1 | Конец сессии 1 — Время окончания первой торговой сессии (по серверу). |
| StartingHour2 | Начало сессии 2 — Время начала второй торговой сессии (по серверу). |
| EndingHour2 | Конец сессии 2 — Время окончания второй торговой сессии (по серверу). |
| EnableMonday | Торговля в понедельник — Разрешает торговлю в понедельник. |
| EnableTuesday | Торговля во вторник — Разрешает торговлю во вторник. |
| EnableWednesday | Торговля в среду — Разрешает торговлю в среду. |
| EnableThursday | Торговля в четверг — Разрешает торговлю в четверг. |
| EnableFriday | Торговля в пятницу — Разрешает торговлю в пятницу. |
| _______ | Разделитель — Разделитель группы настроек фильтра тренда. |
| EnableTrendFilter | Включить фильтр тренда — Включает/отключает фильтр тренда на основе скользящих средних. |
| T_Period1 | Период MA 1 — Период первой скользящей средней фильтра тренда. |
| T_Period2 | Период MA 2 — Период второй скользящей средней фильтра тренда. |
| T_Period3 | Период MA 3 — Период третьей скользящей средней фильтра тренда. |
| T_Shift | Сдвиг фильтра тренда — Сдвиг скользящих средних фильтра тренда в барах. |
| T_Method | Метод скользящей средней — Метод расчёта скользящей средней для фильтра тренда. |
| T_AppliedPrice | Цена фильтра тренда — Применяемая цена для расчёта скользящих средних фильтра тренда. |
Поиск по коду файла
#property version "1.00"
#property strict
enum ENUM_STRATEGY
{
BB_PyramidBreak =1,
};
enum ENUM_CLOSE_1_2
{
FixedStops1 =1,
ATRStops1 =2,
MidBand =3,
OpositeBand =4,
};
enum ENUM_GRID_MODE
{
Pips =1,
ATR =2,
};
enum ENUM_LOTS_MODE
{
Aritmetic =1,
Multiplier =2,
};
enum ENUM_TP_MODE
{
TP_Pips =1,
TP_ATR =2,
TP_BolligerMidBand =3,
TP_BollingerOppositeBand =4,
};
enum ENUM_SL_MODE
{
SL_Pips =1,
SL_ATR =2,
SL_BolligerMidBand =3,
SL_BollingerOppositeBand =4,
};
enum ENUM_TS_MODE
{
TS_Pips =1,
TS_ATR =2,
};
input string _ ="===Main Configuration===";
input string Name ="EA Pyramid";//Nombre
input int MagicNumber =234;
ENUM_STRATEGY Strategy =1;
input double StartingLots =0.01;
input bool EnableMoneyManagment =0;
input double USD_PerMicroLot =1000;
input string ________ ="===Pyramid Configuration===";
input bool EnablePyramid =0;
input int P_Grid_Pips =100;
input ENUM_TP_MODE TakeProfitMode =1;
input int TakeProfitPips =100;
input double TakeProfitATR =1.1;
input ENUM_SL_MODE StopLossMode =1;
input int StopLossPips =100;
input double StopLossATR =1.3;
input ENUM_TS_MODE TrailingStopMode =1;
input int TrailingStopPips =100;
input double TrailingStopATR =1.2;
input string _________ ="===Average Configuration===";
input bool EnableAverage =0;
input ENUM_LOTS_MODE A_Lot_Mode =1;
input double A_Multiplier =2;
input ENUM_GRID_MODE A_Grid_Mode =1;
input int A_Grid_Pips =100;
input double A_Grid_ATR =1;
input int A_Takeprofit =10;
input string __ ="===Bollinger Bands Configuration===";
input int BB_Period =20;
input double BB_Deviation =2;
input int BB_Shift =0;
input ENUM_APPLIED_PRICE BB_Price =0;
input string _____ ="===ATR Configuration===";
input int ATR_Period =14;
input string ______ ="===Filters===";
input int Slipage =3;
input int Spread =50;
input double MinEquity =200;
input int StartingHour1 =0;
input int EndingHour1 =24;
input int StartingHour2 =0;
input int EndingHour2 =24;
input bool EnableMonday =1;
input bool EnableTuesday =1;
input bool EnableWednesday =1;
input bool EnableThursday =1;
input bool EnableFriday =1;
input string _______ ="===Trend Filter===";
input bool EnableTrendFilter =0;
input int T_Period1 =62;
input int T_Period2 =200;
input int T_Period3 =800;
input int T_Shift =0;
input ENUM_MA_METHOD T_Method =0;
input ENUM_APPLIED_PRICE T_AppliedPrice =0;
int myaccount=1234567890;
int myday=0;
int mymonth=0;
int myyear=9999;
double bbtop1,bbmid1,bbbot1,bbtop0,bbmid0,bbbot0,psar0,psar1,trend1,trend2,trend3,lowerprice,upperprice,lowerbuy,lowersell,upperbuy,uppersell,ATR,SOP,BOP,BBE,SBE,lots,totalbpips,totalspips,totalblots,totalslots,mytrailingb,mytrailings;
int ticket,totalb,totals,tradingmode=2,totalba,totalbp,totalsa,totalsp,totalbpending,totalspending;
bool startedb,starteds,closeallb=0,closealls=0,crossedb=0,crosseds=0,trading=1,enabletrailingb=0,enabletrailings=0,buyaverage=0,sellaverage=0,buypyramid=0,sellpyramid=0;
double aLots(const int index,const int index2)
{
int a;
double Lots[200][2];
if(EnableMoneyManagment==0)
{
Lots[0][0]=StartingLots;
Lots[1][0]=StartingLots;
Lots[0][1]=StartingLots;
Lots[1][1]=StartingLots;
for(a=2;a<200;a++)
{
Lots[a][0]=NormalizeDouble(Lots[a-1][0]+StartingLots,2);
Lots[a][1]=NormalizeDouble(Lots[a-1][1]*A_Multiplier,2);
}
}
if(EnableMoneyManagment==1)
{
Lots[0][0]=NormalizeDouble((AccountBalance()/USD_PerMicroLot)*0.01,2);
Lots[1][0]=NormalizeDouble((AccountBalance()/USD_PerMicroLot)*0.01,2);
Lots[0][1]=NormalizeDouble((AccountBalance()/USD_PerMicroLot)*0.01,2);
Lots[1][1]=NormalizeDouble((AccountBalance()/USD_PerMicroLot)*0.01,2);
for(a=2;a<200;a++)
{
Lots[a][0]=NormalizeDouble(Lots[a-1][0]+(AccountBalance()/USD_PerMicroLot)*0.01,2);
Lots[a][1]=NormalizeDouble(Lots[a-1][1]*A_Multiplier,2);
}
}
return(Lots[index][index2]);
}
double buylots,buyprofit,selllots,sellprofit;
int OnInit()
{
// код доступен только после оплаты
}
void OnTick()
{
// код доступен только после оплаты
}
if(myaccount==1234567890 || myaccount==AccountNumber())
{
if(myyear>Year()
|| (myyear==Year() && mymonth>Month())
|| (myyear==Year() && mymonth==Month() && myday>=Day())
)
{
ATR=iATR(NULL,0,ATR_Period,0);
if(EnableTrendFilter==1)
{
trend1=iMA(NULL,0,T_Period1,T_Shift,T_Method,T_AppliedPrice,0);
trend2=iMA(NULL,0,T_Period2,T_Shift,T_Method,T_AppliedPrice,0);
trend3=iMA(NULL,0,T_Period3,T_Shift,T_Method,T_AppliedPrice,0);
}
if(Strategy==1)
{
bbtop0=iBands(NULL,0,BB_Period,BB_Deviation,BB_Shift,BB_Price,1,0);
bbmid0=iBands(NULL,0,BB_Period,BB_Deviation,BB_Shift,BB_Price,0,0);
bbbot0=iBands(NULL,0,BB_Period,BB_Deviation,BB_Shift,BB_Price,2,0);
bbtop1=iBands(NULL,0,BB_Period,BB_Deviation,BB_Shift,BB_Price,1,1);
bbmid1=iBands(NULL,0,BB_Period,BB_Deviation,BB_Shift,BB_Price,0,1);
bbbot1=iBands(NULL,0,BB_Period,BB_Deviation,BB_Shift,BB_Price,2,1);
}
lowerbuy=9999999;
lowersell=9999999;
upperbuy=0;
uppersell=0;
totalb=0;
totals=0;
totalba=0;
totalsa=0;
totalbp=0;
totalsp=0;
totalbpending=0;
totalspending=0;
BBE=0;
SBE=0;
totalbpips=0;
totalspips=0;
totalblots=0;
totalslots=0;
buylots=0;
selllots=0;
buyprofit=0;
sellprofit=0;
for(int cnt=0;cnt<OrdersTotal();cnt++)
{
if(!OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES))
continue;
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)
{
if(OrderType()==OP_BUY)
{
buylots+=OrderLots();
buyprofit+=OrderProfit()+OrderCommission()+OrderSwap();
totalb++;
if(OrderOpenPrice()>upperbuy)
upperbuy=OrderOpenPrice();
if(OrderOpenPrice()<lowerbuy)
lowerbuy=OrderOpenPrice();
if(OrderOpenPrice()<BOP)
totalba++;
if(OrderOpenPrice()>BOP)
totalbp++;
totalbpips+=(Close[0]-OrderOpenPrice())*100*OrderLots();
totalblots+=OrderLots();
}
else if(OrderType()==OP_SELL)
{
selllots+=OrderLots();
sellprofit+=OrderProfit()+OrderCommission()+OrderSwap();
totals++;
if(OrderOpenPrice()>uppersell)
uppersell=OrderOpenPrice();
if(OrderOpenPrice()<lowersell)
lowersell=OrderOpenPrice();
if(OrderOpenPrice()>SOP)
totalsa++;
if(OrderOpenPrice()<SOP)
totalsp++;
totalspips+=(OrderOpenPrice()-Close[0])*100*OrderLots();
totalslots+=OrderLots();
}
}
}
ObjectSetString(0,"l1",OBJPROP_TEXT,"Buy Lots: "+DoubleToStr(buylots,2));
ObjectSetString(0,"l2",OBJPROP_TEXT,"Buy Profit: "+DoubleToStr(buyprofit,2));
ObjectSetString(0,"l3",OBJPROP_TEXT,"Sell Lots: "+DoubleToStr(selllots,2));
ObjectSetString(0,"l4",OBJPROP_TEXT,"Sell Profit: "+DoubleToStr(sellprofit,2));
if(totalb>0 && buyaverage==1)
{
BBE=Close[0]-totalbpips/(totalblots*100);
ObjectDelete("BBE");
ObjectCreate( "BBE",OBJ_HLINE, 0,Time[0],BBE);
ObjectSet("BBE", OBJPROP_COLOR,clrGreen);
ObjectSet("BBE",OBJPROP_WIDTH,3);
ObjectDelete("BTP");
ObjectCreate( "BTP",OBJ_HLINE, 0,Time[0],BBE+A_Takeprofit*Point());
ObjectSet("BTP", OBJPROP_COLOR,clrDarkGreen);
ObjectSet("BTP",OBJPROP_WIDTH,3);
}
else if(totalb>0 && buypyramid==1)
{
BBE=Close[0]-totalbpips/(totalblots*100);
ObjectDelete("BBE");
ObjectDelete("BTP");
ObjectCreate( "BTP",OBJ_HLINE, 0,Time[0],lowerbuy+TakeProfitPips*Point());
ObjectSet("BTP", OBJPROP_COLOR,clrDarkGreen);
ObjectSet("BTP",OBJPROP_WIDTH,3);
}
else
{
ObjectDelete("BBE");
ObjectDelete("BTP");
}
if(totals>0 && sellaverage==1)
{
SBE=Close[0]+totalspips/(totalslots*100);
ObjectDelete("SBE");
ObjectCreate( "SBE",OBJ_HLINE, 0,Time[0],SBE);
ObjectSet("SBE", OBJPROP_COLOR,clrRed);
ObjectSet("SBE",OBJPROP_WIDTH,3);
ObjectDelete("STP");
ObjectCreate( "STP",OBJ_HLINE, 0,Time[0],SBE-A_Takeprofit*Point());
ObjectSet("STP", OBJPROP_COLOR,clrDarkRed);
ObjectSet("STP",OBJPROP_WIDTH,3);
}
else if(totals>0 && sellpyramid==1)
{
SBE=Close[0]+totalspips/(totalslots*100);
ObjectDelete("SBE");
ObjectDelete("STP");
ObjectCreate( "STP",OBJ_HLINE, 0,Time[0],uppersell-TakeProfitPips*Point());
ObjectSet("STP", OBJPROP_COLOR,clrDarkRed);
ObjectSet("STP",OBJPROP_WIDTH,3);
}
else
{
ObjectDelete("SBE");
ObjectDelete("STP");
}
if((Strategy==1))
{
if((totalb==1 || totalbp>0) && (((EnableAverage==0 || (EnableAverage==0 && EnablePyramid==1) || (EnableAverage==1 && EnablePyramid==1 && buypyramid==1)) && TakeProfitMode==1 && Bid>lowerbuy+TakeProfitPips*Point())
|| ((EnableAverage==0 || (EnableAverage==0 && EnablePyramid==1) || (EnableAverage==1 && EnablePyramid==1 && buypyramid==1)) && TakeProfitMode==2 && Bid>lowerbuy+ATR*TakeProfitATR)
|| ((EnableAverage==0 || (EnableAverage==0 && EnablePyramid==1) || (EnableAverage==1 && EnablePyramid==1 && buypyramid==1)) && TakeProfitMode==3 && Bid<bbmid0)
|| ((EnableAverage==0 || (EnableAverage==0 && EnablePyramid==1) || (EnableAverage==1 && EnablePyramid==1 && buypyramid==1)) && TakeProfitMode==4 && Bid<bbbot0)
|| (EnableAverage==0 && StopLossMode==1 && Ask<BOP-StopLossPips*Point())
|| (EnableAverage==0 && StopLossMode==2 && Ask<BOP-ATR*StopLossATR)
|| (EnableAverage==0 && StopLossMode==3 && Ask<bbmid0)
|| (EnableAverage==0 && StopLossMode==4 && Ask<bbbot0)
))
closeallb=1;
if((totals==1 || totalsp>0) && (((EnableAverage==0 || (EnableAverage==0 && EnablePyramid==1) || (EnableAverage==1 && EnablePyramid==1 && sellpyramid==1)) && TakeProfitMode==1 && Ask<uppersell-TakeProfitPips*Point())
|| ((EnableAverage==0 || (EnableAverage==0 && EnablePyramid==1) || (EnableAverage==1 && EnablePyramid==1 && sellpyramid==1)) && TakeProfitMode==2 && Ask<uppersell-ATR*TakeProfitATR)
|| ((EnableAverage==0 || (EnableAverage==0 && EnablePyramid==1) || (EnableAverage==1 && EnablePyramid==1 && sellpyramid==1)) && TakeProfitMode==3 && Ask>bbmid0)
|| ((EnableAverage==0 || (EnableAverage==0 && EnablePyramid==1) || (EnableAverage==1 && EnablePyramid==1 && sellpyramid==1)) && TakeProfitMode==4 && Ask>bbtop0)
|| (EnableAverage==0 && StopLossMode==1 && Bid>SOP+StopLossPips*Point())
|| (EnableAverage==0 && StopLossMode==2 && Bid>SOP+ATR*StopLossATR)
|| (EnableAverage==0 && StopLossMode==3 && Bid>bbmid0)
|| (EnableAverage==0 && StopLossMode==4 && Bid>bbtop0)
))
closealls=1;
}
if(AccountEquity()<=MinEquity)
{
closeallb=1;
closealls=1;
trading=0;
}
if(totalb==1 && EnableAverage==1 && Ask<lowerbuy)
{
buyaverage=1;
buypyramid=0;
}
if(totalb==1 && EnablePyramid==1 && Bid>upperbuy)
{
buyaverage=0;
buypyramid=1;
}
if(EnableAverage==1 && Bid>BBE+A_Takeprofit*Point() && buyaverage==1)
closeallb=1;
if(EnableAverage==1 && Ask<SBE-A_Takeprofit*Point() && sellaverage==1)
closealls=1;
if(totals==1 && EnableAverage==1 && Bid>uppersell)
{
sellaverage=1;
sellpyramid=0;
}
if(totals==1 && EnablePyramid==1 && Ask<lowersell)
{
sellaverage=0;
sellpyramid=1;
}
Comment(
"\n| buyaverage: ",buyaverage,
"\n| buypyramid: ",buypyramid,
"\n| sellaverage: ",sellaverage,
"\n| sellpyramid: ",sellpyramid
);
if(TrailingStopMode==1)
{
if(enabletrailingb==0)
mytrailingb=0;
if(enabletrailings==0)
mytrailings=9999999;
if(TrailingStopPips!=0 && enabletrailingb==0 && Ask>=BOP+TrailingStopPips*Point())
Показано первые 50% кода (символов: 19826)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.