triplema_crossover_expert1.mq4
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «triplema_crossover_expert1.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Советник для платформы MetaTrader 4, написанный на языке MQL4, использует три скользящие средние для генерации торговых сигналов на покупку и продажу. Анализирует пересечения быстрой, средней и медленной MA на текущем или предшествующем баре. Поддерживает управление размером позиции через процент риска от депозита или фиксированный лот. Реализует стоп-лосс, тейк-профит и три режима трейлинг-стопа с настраиваемыми уровнями. Советник проверяет допустимость входных параметров и контролирует свободный маржинал перед открытием новых позиций.
Настройки программы
| Настройка | Описание |
|---|---|
| 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 (FastMA_Method) | Метод быстрой MA — Тип расчёта быстрой скользящей средней: 0 — SMA, 1 — EMA, 2 — SMMA, 3 — LWMA. |
| FastMAPeriod | Период быстрой MA — Период расчёта быстрой скользящей средней. |
| FastMA_Shift | Сдвиг быстрой MA — Горизонтальный сдвиг быстрой скользящей средней по графику. |
| 0=sma, 1=ema, 2=smma, 3=lwma (MiddleMA_Method) | Метод средней MA — Тип расчёта средней скользящей средней: 0 — SMA, 1 — EMA, 2 — SMMA, 3 — LWMA. |
| MiddleMAPeriod | Период средней MA — Период расчёта средней скользящей средней. |
| MiddleMA_Shift | Сдвиг средней MA — Горизонтальный сдвиг средней скользящей средней по графику. |
| 0=sma, 1=ema, 2=smma, 3=lwma (SlowMA_Method) | Метод медленной MA — Тип расчёта медленной скользящей средней: 0 — SMA, 1 — EMA, 2 — SMMA, 3 — LWMA. |
| SlowMAPeriod | Период медленной MA — Период расчёта медленной скользящей средней. |
| SlowMA_Shift | Сдвиг медленной MA — Горизонтальный сдвиг медленной скользящей средней по графику. |
| Fast_MiddleSpread | Разрыв быстрая-средняя — Допустимый зазор в пунктах между быстрой и средней скользящей при формировании сигнала. |
| Middle_SlowSpread | Разрыв средняя-медленная — Допустимый зазор в пунктах между средней и медленной скользящей при формировании сигнала. |
| Which candle to use for signal - 0 for current, 1 for prior (SignalCandle) | Свеча сигнала — Номер свечи для расчёта сигнала: 0 — текущая, 1 — предыдущая. |
| 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 (TRStopLevel_1) | Уровень 1 трейлинга — Первый порог прибыли в пунктах для активации первого уровня трейлинг-стопа. |
| Move Stop to Breakeven (TrailingStop1) | Сдвиг стопа уровень 1 — Величина сдвига стоп-лосса на первом уровне трейлинга в пунктах. |
| Type 3 second level pip gain (TRStopLevel_2) | Уровень 2 трейлинга — Второй порог прибыли в пунктах для активации второго уровня трейлинг-стопа. |
| Move stop to lock is profit (TrailingStop2) | Сдвиг стопа уровень 2 — Величина сдвига стоп-лосса на втором уровне трейлинга в пунктах. |
| type 3 third level pip gain (TRStopLevel_3) | Уровень 3 трейлинга — Третий порог прибыли в пунктах для активации третьего уровня трейлинг-стопа. |
| Move stop and trail from there (TrailingStop3) | Сдвиг стопа уровень 3 — Величина сдвига стоп-лосса на третьем уровне трейлинга в пунктах. |
| 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 = 3333;
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 = 10; // standard lot size.
extern double MaxLots = 100;
extern int FastMA_Method = 0; //0=sma, 1=ema, 2=smma, 3=lwma
extern int FastMAPeriod = 9;
extern int FastMA_Shift = 0;
extern int MiddleMA_Method = 0; //0=sma, 1=ema, 2=smma, 3=lwma
extern int MiddleMAPeriod = 14;
extern int MiddleMA_Shift = 0;
extern int SlowMA_Method = 0; //0=sma, 1=ema, 2=smma, 3=lwma
extern int SlowMAPeriod = 29;
extern int SlowMA_Shift = 0;
extern int Fast_MiddleSpread=0;
extern int Middle_SlowSpread=0;
extern int SignalCandle=1; // Which candle to use for signal - 0 for current, 1 for prior
extern double StopLoss = 0; // Maximum pips willing to lose per position.
extern bool UseTrailingStop = false;
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 TRStopLevel_1 = 20; // Type 3 first level pip gain
extern double TrailingStop1 = 20; // Move Stop to Breakeven
extern double TRStopLevel_2 = 30; // Type 3 second level pip gain
extern double TrailingStop2 = 20; // Move stop to lock is profit
extern double TRStopLevel_3 = 50; // 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()
{
}
bool CheckExitCondition(string TradeType)
{
bool YesClose;
double fMA, mMA;
YesClose = false;
fMA = iMA(NULL, 0, FastMAPeriod, FastMA_Shift, FastMA_Method, PRICE_CLOSE, SignalCandle);
mMA = iMA(NULL, 0, MiddleMAPeriod, MiddleMA_Shift, MiddleMA_Method, PRICE_CLOSE, SignalCandle);
if (TradeType == "BUY" && fMA < mMA) YesClose = true;
if (TradeType == "SELL" && fMA > mMA) YesClose =true;
return (YesClose);
}
bool CheckEntryCondition(string TradeType)
{
bool YesTrade;
double fMA, mMA, sMA;
YesTrade = false;
fMA = iMA(NULL, 0, FastMAPeriod, FastMA_Shift, FastMA_Method, PRICE_CLOSE, SignalCandle);
mMA = iMA(NULL, 0, MiddleMAPeriod, MiddleMA_Shift, MiddleMA_Method, PRICE_CLOSE, SignalCandle);
sMA = iMA(NULL, 0, SlowMAPeriod, SlowMA_Shift, SlowMA_Method, PRICE_CLOSE, SignalCandle);
if (TradeType == "BUY" && fMA > (mMA + Fast_MiddleSpread*Point) && mMA > (sMA + Middle_SlowSpread * Point)) YesTrade = true;
if (TradeType == "SELL" && fMA < (mMA - Fast_MiddleSpread*Point) && mMA < (sMA - Middle_SlowSpread * 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--)
{
OrderSelect (cnt, SELECT_BY_POS, MODE_TRADES);
if ( OrderSymbol() != Symbol()) continue;
if ( OrderMagicNumber() != MagicNumber) continue;
if(OrderType() == OP_BUY ) NumBuyTrades++;
if(OrderType() == OP_SELL ) NumSellTrades++;
}
NumPositions = NumBuyTrades + NumSellTrades;
return (NumPositions);
}
int HandleOpenPositions()
{
int cnt;
bool YesClose;
double pt;
for(cnt=OrdersTotal()-1;cnt>=0;cnt--)
{
OrderSelect (cnt, SELECT_BY_POS, MODE_TRADES);
if ( OrderSymbol() != Symbol()) continue;
if ( OrderMagicNumber() != MagicNumber) continue;
if(OrderType() == OP_BUY)
{
if (CheckExitCondition("BUY"))
{
CloseOrder(OrderTicket(),OrderLots(),Bid);
}
else
Показано первые 50% кода (символов: 7811)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.