DoubleMA_Crossover_EA
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «doublema_crossover_ea.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Данный продукт представляет собой торговый советник для платформы MetaTrader 4, реализованный на языке MQL4. Советник построен на основе анализа двух скользящих средних и предоставляет автоматизированный контроль открытия и закрытия торговых позиций на основе их взаимного расположения.
Программа поддерживает несколько типов скользящих средних, настраиваемые параметры входа и выхода, а также систему управления денежными средствами. Встроенные механизмы включают стоп-лосс, тейк-профит и трейлинг-стоп с несколькими уровнями защиты.
Советник проверяет корректность пользовательских настроек перед началом работы, контролирует количество открытых позиций по символу и ограничивает торговлю при недостаточном уровне собственного капитала. Все торговые операции выполняются через стандартные API MetaTrader 4.
Настройки программы
| Настройка | Описание |
|---|---|
| MagicNumber | Магическое число — Уникальный идентификатор советника для различения ордеров. |
| Change to false to shutdown money management controls. (MoneyManagement) | Управление денежными средствами — Включение или отключение автоматического управления размером позиции в зависимости от собственного капитала. |
| Change to whatever percent of equity you wish to risk. (TradeSizePercent) | Процент риска от капитала — Процент собственного капитала, рискуемый на одну позицию при автоматическом управлении. |
| standard lot size. (Lots) | Размер лота — Стандартный размер лота для ручного режима управления. |
| MaxLots | Максимальный лот — Максимально допустимый размер лота. |
| 0=sma, 1=ema, 2=smma, 3=lwma, 4=LSMA (FastMA_Mode) | Тип быстрой СС — Тип быстрой скользящей средней (0 — SMA, 1 — EMA, 2 — SMMA, 3 — LWMA, 4 — LSMA). |
| FastMA_Period | Период быстрой СС — Период быстрой скользящей средней. |
| FastMA_Shift | Сдвиг быстрой СС — Сдвиг быстрой скользящей средней в барах. |
| 0=close, 1=open, 2=high, 3=low, 4=median((h+l/2)), 5=typical((h+l+c)/3), 6=weighted((h+l+c+c)/4) (FastMA_AppliedPrice) | Применяемая цена быстрой СС — Тип цены, используемой для расчёта быстрой скользящей средней (0 — закрытие, 1 — открытие, 2 — высокая, 3 — низкая, 4 — медиана, 5 — типичная, 6 — взвешенная). |
| 0=sma, 1=ema, 2=smma, 3=lwma, 4=LSMA (SlowMA_Mode) | Тип медленной СС — Тип медленной скользящей средней (0 — SMA, 1 — EMA, 2 — SMMA, 3 — LWMA, 4 — LSMA). |
| SlowMA_Period | Период медленной СС — Период медленной скользящей средней. |
| SlowMA_Shift | Сдвиг медленной СС — Сдвиг медленной скользящей средней в барах. |
| 0=close, 1=open, 2=high, 3=low, 4=median((h+l/2)), 5=typical((h+l+c)/3), 6=weighted((h+l+c+c)/4) (SlowMA_AppliedPrice) | Применяемая цена медленной СС — Тип цены, используемой для расчёта медленной скользящей средней (0 — закрытие, 1 — открытие, 2 — высокая, 3 — низкая, 4 — медиана, 5 — типичная, 6 — взвешенная). |
| How many pips separation between MAs for signal (Fast_SlowSpreadEntry) | Спред входа быстрой и медленной СС — Разница в пунктах между быстрой и медленной скользящими для сигнала на вход в сделку. |
| How many pips separation between MAs for signal (Fast_SlowSpreadExit) | Спред выхода быстрой и медленной СС — Разница в пунктах между быстрой и медленной скользящими для сигнала на выход из сделки. |
| SignalCandle | Свеча сигнала — Сдвиг свечи, используемой для формирования торгового сигнала. |
| Maximum pips willing to lose per position. (StopLoss) | Стоп-лосс — Максимальное количество пунктов, готовое к потере по одной позиции. |
| UseTrailingStop | Использовать трейлинг-стоп — Включение или отключение функции трейлинг-стопа. |
| Type 1 moves stop immediately, Type 2 waits til value of TS is reached (TrailingStopType) | Тип трейлинг-стопа — Тип трейлинг-стопа (1 — мгновенное перемещение, 2 — ожидание достижения значения, 3 — многоуровневый). |
| Change to whatever number of pips you wish to trail your position with. (TrailingStop) | Расстояние трейлинга — Расстояние в пунктах для фиксации и сопровождения стоп-лосса при трейлинг-стопе. |
| Type 3 first level pip gain (FirstMove) | Первый уровень трейлинга — Первый уровень прироста в пунктах для трейлинг-стопа третьего типа. |
| Move Stop to Breakeven (FirstStopLoss) | Стоп-лосс первого уровня — Установка стоп-лосса на первом уровне трейлинга для фиксации безубыточности. |
| Type 3 second level pip gain (SecondMove) | Второй уровень трейлинга — Второй уровень прироста в пунктах для трейлинг-стопа третьего типа. |
| Move stop to lock is profit (SecondStopLoss) | Стоп-лосс второго уровня — Установка стоп-лосса на втором уровне трейлинга для фиксации прибыли. |
| type 3 third level pip gain (ThirdMove) | Третий уровень трейлинга — Третий уровень прироста в пунктах для трейлинг-стопа третьего типа. |
| Move stop and trail from there (TrailingStop3) | Третий уровень расстояния трейлинга — Расстояние в пунктах для сопровождения стоп-лосса после третьего уровня трейлинга. |
| Maximum profit level achieved. (TakeProfit) | Тейк-профит — Максимальный уровень прибыли в пунктах по одной позиции. |
| Expert will stop trading if equity level decreases to that level. (Margincutoff) | Порог собственного капитала — Минимальный уровень собственного капитала, ниже которого советник прекращает торговлю. |
| Possible fix for not getting closed (Slippage) | Проскальзывание — Допустимое отклонение цены исполнения ордера в пунктах. |
Поиск по коду файла
#include <stdlib.mqh>
extern int MagicNumber = 2222;
extern bool AccountIsMini = false; // Change to true if trading mini account
extern bool MoneyManagement = false; // Change to false to shutdown money management controls.
extern double TradeSizePercent = 5; // Change to whatever percent of equity you wish to risk.
extern double Lots = 3; // standard lot size.
extern double MaxLots = 100;
extern int FastMA_Mode = 0; //0=sma, 1=ema, 2=smma, 3=lwma, 4=LSMA
extern int FastMA_Period = 2;
extern int FastMA_Shift = 0;
extern int FastMA_AppliedPrice = 0; // 0=close, 1=open, 2=high, 3=low, 4=median((h+l/2)), 5=typical((h+l+c)/3), 6=weighted((h+l+c+c)/4)
extern int SlowMA_Mode = 0; //0=sma, 1=ema, 2=smma, 3=lwma, 4=LSMA
extern int SlowMA_Period = 5;
extern int SlowMA_Shift = 0;
extern int SlowMA_AppliedPrice = 0; // 0=close, 1=open, 2=high, 3=low, 4=median((h+l/2)), 5=typical((h+l+c)/3), 6=weighted((h+l+c+c)/4)
extern int Fast_SlowSpreadEntry = 11; // How many pips separation between MAs for signal
extern int Fast_SlowSpreadExit=0; // How many pips separation between MAs for signal
extern int SignalCandle=1;
extern double StopLoss = 250; // Maximum pips willing to lose per position.
extern bool UseTrailingStop = true;
extern int TrailingStopType = 3; // Type 1 moves stop immediately, Type 2 waits til value of TS is reached
extern double TrailingStop = 40; // Change to whatever number of pips you wish to trail your position with.
extern double FirstMove = 20; // Type 3 first level pip gain
extern double FirstStopLoss = 15; // Move Stop to Breakeven
extern double SecondMove = 30; // Type 3 second level pip gain
extern double SecondStopLoss = 20; // Move stop to lock is profit
extern double ThirdMove = 40; // type 3 third level pip gain
extern double TrailingStop3 = 20; // Move stop and trail from there
extern int TakeProfit = 0; // Maximum profit level achieved.
extern double Margincutoff = 800; // Expert will stop trading if equity level decreases to that level.
extern int Slippage = 10; // Possible fix for not getting closed
string setup;
double lotMM;
int TradesInThisSymbol;
int init()
{
// код доступен только после оплаты
}
int deinit()
{
}
double LSMA(int Rperiod,int prMode, int TimeFrame, int mshift)
{
int i;
double sum, price;
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;
switch (prMode)
{
case 0: price = iClose(NULL,TimeFrame,length-i+mshift);break;
case 1: price = iOpen(NULL,TimeFrame,length-i+mshift);break;
case 2: price = iHigh(NULL,TimeFrame,length-i+mshift);break;
case 3: price = iLow(NULL,TimeFrame,length-i+mshift);break;
case 4: price = (iHigh(NULL,TimeFrame,length-i+mshift) + iLow(NULL,TimeFrame,length-i+mshift))/2;break;
case 5: price = (iHigh(NULL,TimeFrame,length-i+mshift) + iLow(NULL,TimeFrame,length-i+mshift) + iClose(NULL,TimeFrame,length-i+mshift))/3;break;
case 6: price = (iHigh(NULL,TimeFrame,length-i+mshift) + iLow(NULL,TimeFrame,length-i+mshift) + iClose(NULL,TimeFrame,length-i+mshift) + iClose(NULL,TimeFrame,length-i+mshift))/4;break;
}
tmp = ( i - lengthvar)*price;
sum+=tmp;
}
wt = sum*6/(length*(length+1));
return(wt);
}
bool CheckExitCondition(string TradeType)
{
bool YesClose;
double fMA, sMA;
YesClose = false;
if (FastMA_Mode == 4)
{
fMA = LSMA(FastMA_Period,FastMA_AppliedPrice,0,SignalCandle);
}
else
{
fMA = iMA(NULL, 0, FastMA_Period, FastMA_Shift, FastMA_Mode, FastMA_AppliedPrice, SignalCandle);
}
if (SlowMA_Mode == 4)
{
sMA = LSMA(SlowMA_Period,SlowMA_AppliedPrice,0,SignalCandle);
}
else
{
sMA = iMA(NULL, 0, SlowMA_Period, SlowMA_Shift, SlowMA_Mode, SlowMA_AppliedPrice, SignalCandle);
}
if (TradeType == "BUY" && fMA - sMA < Fast_SlowSpreadExit*Point) YesClose = true;
if (TradeType == "SELL" && fMA - sMA > Fast_SlowSpreadExit*Point) YesClose = true;
return (YesClose);
}
bool CheckEntryCondition(string TradeType)
{
bool YesTrade;
double fMA, sMA;
YesTrade = false;
if (FastMA_Mode == 4)
{
fMA = LSMA(FastMA_Period,FastMA_AppliedPrice,0,SignalCandle);
}
else
{
fMA = iMA(NULL, 0, FastMA_Period, FastMA_Shift, FastMA_Mode, FastMA_AppliedPrice, SignalCandle);
}
if (SlowMA_Mode == 4)
{
sMA = LSMA(SlowMA_Period,SlowMA_AppliedPrice,0,SignalCandle);
}
else
{
sMA = iMA(NULL, 0, SlowMA_Period, SlowMA_Shift, SlowMA_Mode, SlowMA_AppliedPrice, SignalCandle);
}
if (TradeType == "BUY" && fMA - sMA > Fast_SlowSpreadExit*Point) YesTrade = true;
if (TradeType == "SELL" && fMA - sMA < Fast_SlowSpreadExit*Point ) YesTrade = true;
return (YesTrade);
}
int start()
{
// код доступен только после оплаты
}
void OpenBuyOrder()
{
int err,ticket;
double myStopLoss = 0, myTakeProfit = 0;
myStopLoss = 0;
if ( StopLoss > 0 ) myStopLoss = Ask - StopLoss * Point ;
myTakeProfit = 0;
if (TakeProfit>0) myTakeProfit = Ask + TakeProfit * Point;
ticket=OrderSend(Symbol(),OP_BUY,lotMM,Ask,Slippage,myStopLoss,myTakeProfit,setup,MagicNumber,0,Green);
if(ticket<=0)
{
err = GetLastError();
Print("Error opening BUY order [" + setup + "]: (" + err + ") " + ErrorDescription(err));
}
}
void OpenSellOrder()
{
int err, ticket;
double myStopLoss = 0, myTakeProfit = 0;
myStopLoss = 0;
if ( StopLoss > 0 ) myStopLoss = Bid + StopLoss * Point;
myTakeProfit = 0;
if (TakeProfit > 0) myTakeProfit = Bid - TakeProfit * Point;
ticket=OrderSend(Symbol(),OP_SELL,lotMM,Bid,Slippage,myStopLoss,myTakeProfit,setup,MagicNumber,0,Red);
if(ticket<=0)
{
err = GetLastError();
Print("Error opening Sell order [" + setup + "]: (" + err + ") " + ErrorDescription(err));
}
}
int CheckOpenPositions()
{
int cnt, NumPositions;
int NumBuyTrades, NumSellTrades; // Number of buy and sell trades in this symbol
NumBuyTrades = 0;
NumSellTrades = 0;
for(cnt=OrdersTotal()-1;cnt>=0;cnt--)
{
OrderSeleПоказано первые 50% кода (символов: 9268)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.