Multi Lot Scalper
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «multi lot scalper.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Торговый советник для платформы MetaTrader 4, предназначенный для работы на дневных графиках (D1). Рассчитывает уровни пивота и направление текущего тренда на основе данных свечных графиков, определяя точки входа в сделки BUY и SELL.
Советник поддерживает торговлю на нескольких валютных парах с индивидуальными значениями пунктов для каждой пары. Расчёт размера лотов может учитывать баланс счёта и заданный процент риска.
Встроены фильтрация по торговым часам и максимальному спреду, ограничение количества одновременно открытых позиций, трейлинг-стоп, а также механизм защиты аккаунта с закрытием позиций при достижении заданного уровня прибыли.
Настройки программы
| Настройка | Описание |
|---|---|
| HoursStart | Час начала торговой сессии. Советник открывает позиции только в указанный временной интервал. |
| HoursEnd | Час окончания торговой сессии. Вне этого часа советник не открывает новые позиции. |
| Lots | Начальный размер лота для открытия позиций. |
| MaxLots | Максимально допустимый размер лота для одной позиции. |
| MaxSpread | Максимально допустимый спред в пунктах. При превышении советник не открывает позиции. |
| StopLoss | Расстояние стоп-лосса в пунктах от цены открытия позиции. |
| TakeProfit | Расстояние тейк-профита в пунктах от цены открытия позиции. |
| TrailingStop | Расстояние трейлинг-стопа в пунктах от цены открытия позиции. |
| MaxTrades | Максимальное количество одновременно открытых позиций на символе. |
| Pips | Расстояние в пунктах для размещения нового ордера относительно последней цены. |
| SecureProfit | Уровень прибыли, при достижении которого срабатывает защита аккаунта и закрываются позиции. |
| OrderstoProtect | Количество позиций, при достижении которого активируется механизм защиты аккаунта. |
| ReverseCondition | Параметр обратного условия, влияющий на логику открытия позиций. |
| EURUSDPipValue | Значение пункта для валютной пары EURUSD, используемое для расчёта прибыли и убытков. |
| EURGBPPipValue | Значение пункта для валютной пары EURGBP, используемое для расчёта прибыли и убытков. |
| GBPUSDPipValue | Значение пункта для валютной пары GBPUSD, используемое для расчёта прибыли и убытков. |
| USDCHFPipValue | Значение пункта для валютной пары USDCHF, используемое для расчёта прибыли и убытков. |
| USDJPYPipValue | Значение пункта для валютной пары USDJPY, используемое для расчёта прибыли и убытков. |
| mm | Параметр управления денежным риском. При ненулевом значении размер лота рассчитывается автоматически на основе баланса и параметра risk. |
| risk | Процент риска от баланса счёта, используемый для автоматического расчёта размера лота при активном mm. |
| TimeZoneofData | Настройка часового пояса данных для корректного определения торговых часов. |
Поиск по коду файла
#include <stdlib.mqh>
extern int HoursStart = 20;
extern int HoursEnd = 7;
extern double Lots = 0.1;
extern double MaxLots=100;
extern double MaxSpread = 3;
extern double StopLoss = 100;
extern double TakeProfit = 10.00;
extern double TrailingStop = 5.00;
extern double MaxTrades = 5;
extern double Pips = 5;
extern double SecureProfit = 10;
extern double AccountProtection = 1;
extern double OrderstoProtect = 3;
extern double ReverseCondition = 0;
extern double EURUSDPipValue = 10;
extern double EURGBPPipValue = 10;
extern double GBPUSDPipValue = 10;
extern double USDCHFPipValue = 7.94;
extern double USDJPYPipValue = 9.03;
extern double mm = 0;
extern double risk = 12;
extern double AccountisNormal = 0;
extern double TimeZoneofData = 0;
double OpenOrders = 0;
int cnt = 0;
double slippage = 5;
double sl = 0;
double tp = 0;
double BuyPrice = 0;
double SellPrice = 0;
double lotsi = 0;
double mylotsi = 0;
double mode = 0;
double MyOrderType=0;
bool ContinueOpening = True;
double LastPrice = 0;
double PreviousOpenOrders = 0;
double Profit = 0;
double LastTicket = 0;
double LastType = 0;
double LastClosePrice = 0;
double LastLots = 0;
double Pivot = 0;
double PipValue = 0;
bool Reversed = False;
string text = "";
string text2 = "";
double myl = 0;
double myh = 0;
double myC = 0;
double myO = 0;
double mypivot = 0;
double Today = 0;
double RefDate = 0;
double LastBarOfDay = 0;
double FirstBarOfDay = 0;
double Loop = 0;
double myyh = 0;
double myyl = 0;
double myyc = 0;
double p = 0;
double flp = 0;
double feh = 0;
double fel = 0;
double ph = 0;
double pl = 0;
double gap = 0;
double spread = 0;
bool permit=false;
string day, trend, start_hours, end_hours;
bool SetObjectText(string name, string text, string font, int size, color Acolor)
{
return(ObjectSetText(name, text, size, font, Acolor));
}
bool MoveObject(string name, int type, datetime Atime, double Aprice, datetime Atime2 = 0, double Aprice2 = 0, color Acolor = CLR_NONE, int Aweight = 0, int Astyle = 0)
{
if (ObjectFind(name) != -1) {
int OType = ObjectType(name);
if ((OType == OBJ_VLINE) ||
(OType == OBJ_HLINE) ||
(OType == OBJ_TRENDBYANGLE) ||
(OType == OBJ_TEXT) ||
(OType == OBJ_ARROW) ||
(OType == OBJ_LABEL)) {
return(ObjectMove(name, 0, Atime, Aprice));
}
if ((OType == OBJ_GANNLINE) ||
(OType == OBJ_GANNFAN) ||
(OType == OBJ_GANNGRID) ||
(OType == OBJ_FIBO) ||
(OType == OBJ_FIBOTIMES) ||
(OType == OBJ_FIBOFAN) ||
(OType == OBJ_FIBOARC) ||
(OType == OBJ_RECTANGLE) ||
(OType == OBJ_ELLIPSE) ||
(OType == OBJ_CYCLES) ||
(OType == OBJ_TREND) ||
(OType == OBJ_STDDEVCHANNEL) ||
(OType == OBJ_REGRESSION)) {
return(ObjectMove(name, 0, Atime, Aprice) && ObjectMove(name, 1, Atime2, Aprice2));
}
}
else {
return(ObjectCreate(name, type, 0, Atime, Aprice, Atime2, Aprice2, 0, 0) && ObjectSet(name, OBJPROP_COLOR, Acolor));
}
}
int init()
{
// код доступен только после оплаты
}
int start()
{
// код доступен только после оплаты
}
if( AccountisNormal == 1 ) {
if( mm != 0 ) lotsi = MathCeil(AccountBalance() * risk / 10000) ; else lotsi = Lots;
}
else {
if( mm != 0 ) lotsi = MathCeil(AccountBalance() * risk / 10000) / 10 ; else lotsi = Lots;
}
if( lotsi > 100 ) lotsi = 100;
OpenOrders = 0;
for( cnt = 0; cnt < OrdersTotal(); cnt++ ) {
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if( OrderSymbol() == Symbol() ) OpenOrders++;
}
myh = High[0];
myl = Low[0];
myC = Close[0];
myO = Open[0];
myyh = High[1];
myyl = Low[1];
myyc = Close[1];
p = (myyh + myyl + myyc + myO) / 4;
ph = (myyh + myh + myyc + myO) / 4;
pl = (myyl + myl + myyc + myO) / 4;
flp = (myh + myl + myC) / 3;
gap = MathAbs(p - flp) / Point;
MoveObject("P",OBJ_HLINE,Time[0],p,Time[0],p,Gold,1,STYLE_SOLID);
SetObjectText("P_txt","Pivot Zone","Arial",7,White);
MoveObject("P_txt",OBJ_TEXT,Time[0],p,Time[0],p,White);
if( Ask > p && Ask > flp ) {
MoveObject("FLP",OBJ_HLINE,Time[0],flp,Time[0],flp,LimeGreen,1,STYLE_SOLID);
SetObjectText("FLP_txt","Floating Trend Direction - LONG","Arial",7,White);
MoveObject("FLP_txt",OBJ_TEXT,Time[0],flp,Time[0],flp,White);
trend = "LONG";
}
if( Bid < p && Bid < flp ) {
MoveObject("FLP",OBJ_HLINE,Time[0],flp,Time[0],flp,Red,1,STYLE_SOLID);
SetObjectText("FLP_txt","Floating Trend Direction - SHORT","Arial",7,White);
MoveObject("FLP_txt",OBJ_TEXT,Time[0],flp,Time[0],flp,White);
trend = "SHORT";
}
if(DayOfWeek()==0) day="Sun";
if(DayOfWeek()==1) day="Mon";
if(DayOfWeek()==2) day="Tue";
if(DayOfWeek()==3) day="Wed";
if(DayOfWeek()==4) day="Thu";
if(DayOfWeek()==5) day="Fri";
if(DayOfWeek()==6) day="Sat";
start_hours=HoursStart;
if(StringLen(start_hours)==1) start_hours="0"+start_hours;
end_hours=HoursEnd;
if(StringLen(end_hours)==1) end_hours="0"+end_hours;
Comment("\n","Account: ",AccountNumber()," - ",AccountName(),"\n",
"Platform''s Day: ",day," Date & Time: ",TimeToStr(TimeCurrent()),"\n",
"Start Hours: ",start_hours," End Hours: ",end_hours,"\n",
"Lots: Initial = ",DoubleToStr(Lots,2)," Maximum =",DoubleToStr(MaxLots,2),"\n",
"Balance: ",DoubleToStr(AccountBalance(),2)," Equity: ",DoubleToStr(AccountEquity(),2),"\n",
"Max Spread = ",DoubleToStr(MaxSpread,0)," Stop Loss = ",DoubleToStr(StopLoss,0),"\n",
"Take Profit = ",DoubleToStr(TakeProfit,0)," Trailing Stop = ",DoubleToStr(TrailingStop,0),"\n",
"'#10' Last Price = ",LastPrice," Previous Open Orders = ",PreviousOpenOrders,"\n",
"'#10' Continue Opening = ",ContinueOpening," Order Type = ",MyOrderType," '#10' ",text2,"\n",
"'#10' Lots = ",lotsi," '#10' ",text," Trend Bias: ",trend );
PipValue = 5;
if (Symbol()== "EURUSDm") PipValue = EURUSDPipValue;
if (Symbol()== "EURGBPm") Показано первые 50% кода (символов: 8958)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.