Multik_SMA_Exp
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «multik.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Программный продукт представляет собой торговый советник для платформы MetaTrader 5. Он реализует автоматическую торговлю на основе анализа простых скользящих средних (SMA) для до 12 финансовых инструментов одновременно, обрабатывая рыночные события в функции OnTick().
Для каждого инструмента задаются отдельные параметры: торговый символ, период скользящей средней, тип применяемой цены, метод усреднения, объём позиции, допустимое проскальзывание, стоп-лосс и тейк-профит. Включение и выключение торговли по каждому символу осуществляется независимо.
Советник формирует сигналы на открытие и закрытие позиций на основе изменения направления скользящей средней между последовательными барами. Выполнение торговых операций производится через стандартные торговые функции MetaTrader 5 с использованием структур MqlTradeRequest и MqlTradeResult.
Настройки программы
| Настройка | Описание |
|---|---|
| Symb0 | Символ (символ 0) — Торговый символ (например, EURUSD) для первого инструмента. |
| Trade0 | Торговля включена (символ 0) — Включение или отключение автоматической торговли для первого символа. |
| Per0 | Период SMA (символ 0) — Период скользящей средней для первого символа (количество баров). |
| ApPrice0 | Тип цены (символ 0) — Тип цены, используемой для расчёта скользящей средней (например, закрытие, открытие, высокая, низкая). |
| MaMethod0 | Метод скользящей средней (символ 0) — Метод расчёта скользящей средней (простая, экспоненциальная, взвешенная и т.д.). |
| StLoss0 | Стоп-лосс (символ 0) — Уровень стоп-лосса для первого символа (в пунктах). |
| TkProfit0 | Тейк-профит (символ 0) — Уровень тейк-профита для первого символа (в пунктах). |
| Lots0 | Объём лотов (символ 0) — Объём торговой позиции для первого символа. |
| Slippage0 | Проскальзывание (символ 0) — Допустимое проскальзывание цены при выполнении торговых операций для первого символа (в пунктах). |
| Symb1 | Символ (символ 1) — Торговый символ (например, USDCHF) для второго инструмента. |
| Trade1 | Торговля включена (символ 1) — Включение или отключение автоматической торговли для второго символа. |
| Per1 | Период SMA (символ 1) — Период скользящей средней для второго символа (количество баров). |
| ApPrice1 | Тип цены (символ 1) — Тип цены, используемой для расчёта скользящей средней (например, закрытие, открытие, высокая, низкая). |
| MaMethod1 | Метод скользящей средней (символ 1) — Метод расчёта скользящей средней (простая, экспоненциальная, взвешенная и т.д.). |
| StLoss1 | Стоп-лосс (символ 1) — Уровень стоп-лосса для второго символа (в пунктах). |
| TkProfit1 | Тейк-профит (символ 1) — Уровень тейк-профита для второго символа (в пунктах). |
| Lots1 | Объём лотов (символ 1) — Объём торговой позиции для второго символа. |
| Slippage1 | Проскальзывание (символ 1) — Допустимое проскальзывание цены при выполнении торговых операций для второго символа (в пунктах). |
| Symb2 | Символ (символ 2) — Торговый символ (например, USDJPY) для третьего инструмента. |
| Trade2 | Торговля включена (символ 2) — Включение или отключение автоматической торговли для третьего символа. |
| Per2 | Период SMA (символ 2) — Период скользящей средней для третьего символа (количество баров). |
| ApPrice2 | Тип цены (символ 2) — Тип цены, используемой для расчёта скользящей средней (например, закрытие, открытие, высокая, низкая). |
| MaMethod2 | Метод скользящей средней (символ 2) — Метод расчёта скользящей средней (простая, экспоненциальная, взвешенная и т.д.). |
| StLoss2 | Стоп-лосс (символ 2) — Уровень стоп-лосса для третьего символа (в пунктах). |
| TkProfit2 | Тейк-профит (символ 2) — Уровень тейк-профита для третьего символа (в пунктах). |
| Lots2 | Объём лотов (символ 2) — Объём торговой позиции для третьего символа. |
| Slippage2 | Проскальзывание (символ 2) — Допустимое проскальзывание цены при выполнении торговых операций для третьего символа (в пунктах). |
| Symb3 | Символ (символ 3) — Торговый символ (например, USDCAD) для четвёртого инструмента. |
| Trade3 | Торговля включена (символ 3) — Включение или отключение автоматической торговли для четвёртого символа. |
| Per3 | Период SMA (символ 3) — Период скользящей средней для четвёртого символа (количество баров). |
| ApPrice3 | Тип цены (символ 3) — Тип цены, используемой для расчёта скользящей средней (например, закрытие, открытие, высокая, низкая). |
| MaMethod3 | Метод скользящей средней (символ 3) — Метод расчёта скользящей средней (простая, экспоненциальная, взвешенная и т.д.). |
| StLoss3 | Стоп-лосс (символ 3) — Уровень стоп-лосса для четвёртого символа (в пунктах). |
| TkProfit3 | Тейк-профит (символ 3) — Уровень тейк-профита для четвёртого символа (в пунктах). |
| Lots3 | Объём лотов (символ 3) — Объём торговой позиции для четвёртого символа. |
| Slippage3 | Проскальзывание (символ 3) — Допустимое проскальзывание цены при выполнении торговых операций для четвёртого символа (в пунктах). |
| Symb4 | Символ (символ 4) — Торговый символ (например, AUDUSD) для пятого инструмента. |
| Trade4 | Торговля включена (символ 4) — Включение или отключение автоматической торговли для пятого символа. |
| Per4 | Период SMA (символ 4) — Период скользящей средней для пятого символа (количество баров). |
| ApPrice4 | Тип цены (символ 4) — Тип цены, используемой для расчёта скользящей средней (например, закрытие, открытие, высокая, низкая). |
| MaMethod4 | Метод скользящей средней (символ 4) — Метод расчёта скользящей средней (простая, экспоненциальная, взвешенная и т.д.). |
| StLoss4 | Стоп-лосс (символ 4) — Уровень стоп-лосса для пятого символа (в пунктах). |
| TkProfit4 | Тейк-профит (символ 4) — Уровень тейк-профита для пятого символа (в пунктах). |
| Lots4 | Объём лотов (символ 4) — Объём торговой позиции для пятого символа. |
| Slippage4 | Проскальзывание (символ 4) — Допустимое проскальзывание цены при выполнении торговых операций для пятого символа (в пунктах). |
| Symb5 | Символ (символ 5) — Торговый символ (например, EURGBP) для шестого инструмента. |
| Trade5 | Торговля включена (символ 5) — Включение или отключение автоматической торговли для шестого символа. |
| Per5 | Период SMA (символ 5) — Период скользящей средней для шестого символа (количество баров). |
| ApPrice5 | Тип цены (символ 5) — Тип цены, используемой для расчёта скользящей средней (например, закрытие, открытие, высокая, низкая). |
| MaMethod5 | Метод скользящей средней (символ 5) — Метод расчёта скользящей средней (простая, экспоненциальная, взвешенная и т.д.). |
| StLoss5 | Стоп-лосс (символ 5) — Уровень стоп-лосса для шестого символа (в пунктах). |
| TkProfit5 | Тейк-профит (символ 5) — Уровень тейк-профита для шестого символа (в пунктах). |
| Lots5 | Объём лотов (символ 5) — Объём торговой позиции для шестого символа. |
| Slippage5 | Проскальзывание (символ 5) — Допустимое проскальзывание цены при выполнении торговых операций для шестого символа (в пунктах). |
| Symb6 | Символ (символ 6) — Торговый символ (например, EURAUD) для седьмого инструмента. |
| Trade6 | Торговля включена (символ 6) — Включение или отключение автоматической торговли для седьмого символа. |
| Per6 | Период SMA (символ 6) — Период скользящей средней для седьмого символа (количество баров). |
| ApPrice6 | Тип цены (символ 6) — Тип цены, используемой для расчёта скользящей средней (например, закрытие, открытие, высокая, низкая). |
| MaMethod6 | Метод скользящей средней (символ 6) — Метод расчёта скользящей средней (простая, экспоненциальная, взвешенная и т.д.). |
| StLoss6 | Стоп-лосс (символ 6) — Уровень стоп-лосса для седьмого символа (в пунктах). |
| TkProfit6 | Тейк-профит (символ 6) — Уровень тейк-профита для седьмого символа (в пунктах). |
| Lots6 | Объём лотов (символ 6) — Объём торговой позиции для седьмого символа. |
| Slippage6 | Проскальзывание (символ 6) — Допустимое проскальзывание цены при выполнении торговых операций для седьмого символа (в пунктах). |
| Symb7 | Символ (символ 7) — Торговый символ (например, EURCHF) для восьмого инструмента. |
| Trade7 | Торговля включена (символ 7) — Включение или отключение автоматической торговли для восьмого символа. |
| Per7 | Период SMA (символ 7) — Период скользящей средней для восьмого символа (количество баров). |
| ApPrice7 | Тип цены (символ 7) — Тип цены, используемой для расчёта скользящей средней (например, закрытие, открытие, высокая, низкая). |
| MaMethod7 | Метод скользящей средней (символ 7) — Метод расчёта скользящей средней (простая, экспоненциальная, взвешенная и т.д.). |
| StLoss7 | Стоп-лосс (символ 7) — Уровень стоп-лосса для восьмого символа (в пунктах). |
| TkProfit7 | Тейк-профит (символ 7) — Уровень тейк-профита для восьмого символа (в пунктах). |
| Lots7 | Объём лотов (символ 7) — Объём торговой позиции для восьмого символа. |
| Slippage7 | Проскальзывание (символ 7) — Допустимое проскальзывание цены при выполнении торговых операций для восьмого символа (в пунктах). |
| Symb8 | Символ (символ 8) — Торговый символ (например, GBPCHF) для девятого инструмента. |
| Trade8 | Торговля включена (символ 8) — Включение или отключение автоматической торговли для девятого символа. |
| Per8 | Период SMA (символ 8) — Период скользящей средней для девятого символа (количество баров). |
| ApPrice8 | Тип цены (символ 8) — Тип цены, используемой для расчёта скользящей средней (например, закрытие, открытие, высокая, низкая). |
| MaMethod8 | Метод скользящей средней (символ 8) — Метод расчёта скользящей средней (простая, экспоненциальная, взвешенная и т.д.). |
| StLoss8 | Стоп-лосс (символ 8) — Уровень стоп-лосса для девятого символа (в пунктах). |
| TkProfit8 | Тейк-профит (символ 8) — Уровень тейк-профита для девятого символа (в пунктах). |
| Lots8 | Объём лотов (символ 8) — Объём торговой позиции для девятого символа. |
| Slippage8 | Проскальзывание (символ 8) — Допустимое проскальзывание цены при выполнении торговых операций для девятого символа (в пунктах). |
| Symb9 | Символ (символ 9) — Торговый символ (например, GBPUSD) для десятого инструмента. |
| Trade9 | Торговля включена (символ 9) — Включение или отключение автоматической торговли для десятого символа. |
| Per9 | Период SMA (символ 9) — Период скользящей средней для десятого символа (количество баров). |
| ApPrice9 | Тип цены (символ 9) — Тип цены, используемой для расчёта скользящей средней (например, закрытие, открытие, высокая, низкая). |
| MaMethod9 | Метод скользящей средней (символ 9) — Метод расчёта скользящей средней (простая, экспоненциальная, взвешенная и т.д.). |
| StLoss9 | Стоп-лосс (символ 9) — Уровень стоп-лосса для десятого символа (в пунктах). |
| TkProfit9 | Тейк-профит (символ 9) — Уровень тейк-профита для десятого символа (в пунктах). |
| Lots9 | Объём лотов (символ 9) — Объём торговой позиции для десятого символа. |
| Slippage9 | Проскальзывание (символ 9) — Допустимое проскальзывание цены при выполнении торговых операций для десятого символа (в пунктах). |
| Symb10 | Символ (символ 10) — Торговый символ (например, GBPJPY) для одиннадцатого инструмента. |
| Trade10 | Торговля включена (символ 10) — Включение или отключение автоматической торговли для одиннадцатого символа. |
| Per10 | Период SMA (символ 10) — Период скользящей средней для одиннадцатого символа (количество баров). |
| ApPrice10 | Тип цены (символ 10) — Тип цены, используемой для расчёта скользящей средней (например, закрытие, открытие, высокая, низкая). |
| MaMethod10 | Метод скользящей средней (символ 10) — Метод расчёта скользящей средней (простая, экспоненциальная, взвешенная и т.д.). |
| StLoss10 | Стоп-лосс (символ 10) — Уровень стоп-лосса для одиннадцатого символа (в пунктах). |
| TkProfit10 | Тейк-профит (символ 10) — Уровень тейк-профита для одиннадцатого символа (в пунктах). |
| Lots10 | Объём лотов (символ 10) — Объём торговой позиции для одиннадцатого символа. |
| Slippage10 | Проскальзывание (символ 10) — Допустимое проскальзывание цены при выполнении торговых операций для одиннадцатого символа (в пунктах). |
| Symb11 | Символ (символ 11) — Торговый символ (например, EURJPY) для двенадцатого инструмента. |
Поиск по коду файла
#property version "1.04"
input string Symb0 = "EURUSD";
input bool Trade0 = true;
input int Per0 = 50;
input ENUM_APPLIED_PRICE ApPrice0 = PRICE_CLOSE;
input ENUM_MA_METHOD MaMethod0 = MODE_SMA;
input int StLoss0 = 0;
input int TkProfit0 = 0;
input double Lots0 = 1;
input int Slippage0 = 30;
input string Symb1 = "USDCHF";
input bool Trade1 = false;
input int Per1 = 100;
input ENUM_APPLIED_PRICE ApPrice1 = PRICE_CLOSE;
input ENUM_MA_METHOD MaMethod1 = MODE_SMA;
input int StLoss1 = 0;
input int TkProfit1 = 0;
input double Lots1 = 0.1;
input int Slippage1 = 30;
input string Symb2 = "USDJPY";
input bool Trade2 = false;
input int Per2 = 100;
input ENUM_APPLIED_PRICE ApPrice2 = PRICE_CLOSE;
input ENUM_MA_METHOD MaMethod2 = MODE_SMA;
input int StLoss2 = 0;
input int TkProfit2 = 0;
input double Lots2 = 0.1;
input int Slippage2 = 30;
input string Symb3 = "USDCAD";
input bool Trade3 = false;
input int Per3 = 100;
input ENUM_APPLIED_PRICE ApPrice3 = PRICE_CLOSE;
input ENUM_MA_METHOD MaMethod3 = MODE_SMA;
input int StLoss3 = 0;
input int TkProfit3 = 0;
input double Lots3 = 0.1;
input int Slippage3 = 30;
input string Symb4 = "AUDUSD";
input bool Trade4 = false;
input int Per4 = 100;
input ENUM_APPLIED_PRICE ApPrice4 = PRICE_CLOSE;
input ENUM_MA_METHOD MaMethod4 = MODE_SMA;
input int StLoss4 = 0;
input int TkProfit4 = 0;
input double Lots4 = 0.1;
input int Slippage4 = 30;
input string Symb5 = "EURGBP";
input bool Trade5 = false;
input int Per5 = 100;
input ENUM_APPLIED_PRICE ApPrice5 = PRICE_CLOSE;
input ENUM_MA_METHOD MaMethod5 = MODE_SMA;
input int StLoss5 = 0;
input int TkProfit5 = 0;
input double Lots5 = 0.1;
input int Slippage5 = 30;
input string Symb6 = "EURAUD";
input bool Trade6 = false;
input int Per6 = 100;
input ENUM_APPLIED_PRICE ApPrice6 = PRICE_CLOSE;
input ENUM_MA_METHOD MaMethod6 = MODE_SMA;
input int StLoss6 = 0;
input int TkProfit6 = 0;
input double Lots6 = 0.1;
input int Slippage6 = 30;
input string Symb7 = "EURCHF";
input bool Trade7 = false;
input int Per7 = 100;
input ENUM_APPLIED_PRICE ApPrice7 = PRICE_CLOSE;
input ENUM_MA_METHOD MaMethod7 = MODE_SMA;
input int StLoss7 = 0;
input int TkProfit7 = 0;
input double Lots7 = 0.1;
input int Slippage7 = 30;
input string Symb8 = "GBPCHF";
input bool Trade8 = false;
input int Per8 = 100;
input ENUM_APPLIED_PRICE ApPrice8 = PRICE_CLOSE;
input ENUM_MA_METHOD MaMethod8 = MODE_SMA;
input int StLoss8 = 0;
input int TkProfit8 = 0;
input double Lots8 = 0.1;
input int Slippage8 = 30;
input string Symb9 = "GBPUSD";
input bool Trade9 = true;
input int Per9 = 50;
input ENUM_APPLIED_PRICE ApPrice9 = PRICE_CLOSE;
input ENUM_MA_METHOD MaMethod9 = MODE_SMA;
input int StLoss9 = 0;
input int TkProfit9 = 0;
input double Lots9 = 1;
input int Slippage9 = 30;
input string Symb10 = "GBPJPY";
input bool Trade10 = false;
input int Per10 = 100;
input ENUM_APPLIED_PRICE ApPrice10 = PRICE_CLOSE;
input ENUM_MA_METHOD MaMethod10 = MODE_SMA;
input int StLoss10 = 0;
input int TkProfit10 = 0;
input double Lots10 = 0.1;
input int Slippage10 = 30;
input string Symb11 = "EURJPY";
input bool Trade11 = false;
input int Per11 = 100;
input ENUM_APPLIED_PRICE ApPrice11 = PRICE_CLOSE;
input ENUM_MA_METHOD MaMethod11 = MODE_SMA;
input int StLoss11 = 0;
input int TkProfit11 = 0;
input double Lots11 = 0.1;
input int Slippage11 = 30;
bool TradeSignalCounter(int Number,
string Symbol_,
bool Trade,
int period,
ENUM_APPLIED_PRICE ApPrice,
ENUM_MA_METHOD MaMethod,
bool &UpSignal[],
bool &DnSignal[],
bool &UpStop[],
bool &DnStop[])
{
if(!Trade)return(true);
static int Size_=0;
static int Handle[];
static int Recount[],MinBars[];
double SMA[4],dsma1,dsma2;
if(Number+1>Size_) // ???? ? ???? ????????????? ?????? ?? ?????? ??????
{
Size_=Number+1; // ??? ????? ?????? ???? ? ???? ??????
ArrayResize(Handle,Size_);
ArrayResize(Recount,Size_);
ArrayResize(MinBars,Size_);
ArrayInitialize(Handle,0);
ArrayInitialize(Recount,0);
ArrayInitialize(MinBars,0);
MinBars[Number]=3*period;
DnSignal[Number] = false;
UpSignal[Number] = false;
DnStop [Number] = false;
UpStop [Number] = false;
ArraySetAsSeries(SMA,true);
Handle[Number]=iMA(Symbol_,0,period,0,MODE_SMA,ApPrice);
}
if(Bars(Symbol_,0)<MinBars[Number])return(true);
if(IsNewBar(Number,Symbol_,0) || Recount[Number]) // ???? ? ???? ?? ????? ???? ??? ??? ????????? ??????????? ??????
{
DnSignal[Number] = false;
UpSignal[Number] = false;
DnStop [Number] = false;
UpStop [Number] = false;
if(CopyBuffer(Handle[Number],0,0,4,SMA)<0)
{
Recount[Number]=true; // ??? ??? ?????? ?? ????????, ?? ??????? ?????????
return(false); // ??????? ?? ??????? TradeSignalCounter() ??? ????????? ???????? ????????
}
Recount[Number]=false; // ????? ?? ???????????? ? ???? ???? ?? ????????? ????? ????
dsma2 = NormalizeDouble(SMA[2] - SMA[3], _Digits); // MA ?? ??????? 2-3
dsma1 = NormalizeDouble(SMA[1] - SMA[2], _Digits); // MA ?? ??????? 1-2
if(dsma2 > 0 && dsma1 > 0) DnSignal[Number] = true; // ??????? ???? MA ?? ??????? 1-2 ? 2-3 ???????
if(dsma2 < 0 && dsma1 < 0) UpSignal[Number] = true; // ???????? ???? MA ?? ??????? 1-2 ? 2-3 ??????
if(dsma1 < 0) DnStop[Number] = true; // ????? ???? ???? MA ?? ??????? 1-2 ??????
if(dsma1 > 0) UpStop[Number] = true; // ????? ???? ???? MA ?? ??????? 1-2 ???????
}
return(true);
}
bool TradePerformer(int Number,
string Symbol_,
bool Trade,
int StLoss,
int TkProfit,
double Lots,
int Slippage,
bool &UpSignal[],
bool &DnSignal[],
bool &UpStop[],
bool &DnStop[])
{
if(!Trade)return(true);
if(UpStop[Number])BuyPositionClose(Symbol_,Slippage);
if(DnStop[Number])SellPositionClose(Symbol_,Slippage);
if(UpSignal[Number])
if(BuyPositionOpen(Symbol_,Slippage,Lots,StLoss,TkProfit))
UpSignal[Number]=false; //?? ???? ???? ?????? ????? ????????? ??????? ?? ?????!
if(DnSignal[Number])
if(SellPositionOpen(Symbol_,Slippage,Lots,StLoss,TkProfit))
DnSignal[Number]=false; //?? ???? ???? ?????? ????? ????????? ??????? ?? ?????!
return(true);
}
bool BuyPositionOpen(const string symbol,
ulong deviation,
double volume,
int StopLoss,
int Takeprofit)
{
MqlTradeRequest request;
MqlTradeResult result;
ZeroMemory(request);
ZeroMemory(result);
if(!PositionSelect(symbol))
{
request.type = ORDER_TYPE_BUY;
request.price = SymbolInfoDouble(symbol, SYMBOL_ASK);
request.action = TRADE_ACTION_DEAL;
request.symbol = symbol;
request.volume = Money_M();
request.sl = 0;
request.tp = 0;
request.deviation=(deviation==ULONG_MAX) ? deviation : deviation;
request.type_filling=ORDER_FILLING_FOK;
string word="";
StringConcatenate(word,
"<<< ============ BuyPositionOpen(): ????????? Buy ??????? ?? ",
symbol," ============ >>>");
Print(word);
if(!OrderSend(request,result) || result.deal==0)
{
Print(ResultRetcodeDescription(result.retcode));
return(false);
}
}
return(true);
}
bool SellPositionOpen(const string symbol,
ulong deviation,
double volume,
int StopLoss,
int Takeprofit)
{
MqlTradeRequest request;
MqlTradeResult result;
ZeroMemory(request);
ZeroMemory(result);
if(!PositionSelect(symbol))
{
request.type = ORDER_TYPE_SELL;
request.price = SymbolInfoDouble(symbol, SYMBOL_BID);
request.action = TRADE_ACTION_DEAL;
request.symbol = symbol;
request.volume = Money_M();
request.sl = 0;
request.tpПоказано первые 50% кода (символов: 13439)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.