silvertrendtrader_v7.mq4
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «silvertrendtrader_v7.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Данный код представляет собой торгового советника (эксперта) для платформы MetaTrader 4 на языке MQL4. Советник использует пользовательские индикаторы SilverTrend_Signal, а также вспомогательные расчёты углов EMA и CCI для формирования сигналов на вход в длинную или короткую позицию. Советник управляет открытыми ордерами: закрывает позиции по сигналу разворота, устанавливает и модифицирует трейлинг-стоп, а также выставляет начальный стоп-лосс и тейк-прифит при открытии новой сделки. Торговля блокируется в пятничную ночь и при недостаточном свободном марже.
Настройки программы
| Настройка | Описание |
|---|---|
| MAPeriod | Период MA — Период используемого скользящего среднего для расчёта углов EMA и CCI. |
| 1 = SilverTrend / 2 = (PrimaryType) | Тип первичного сигнала — Выбор источника первичного сигнала: 1 — SilverTrend, 2 — альтернативный метод. |
| 0 = nothing / 1 = EMAAngle / 2 = CCIAngle (SecondaryType) | Тип вторичного фильтра — Выбор дополнительного подтверждения сигнала: 0 — без фильтра, 1 — угол EMA, 2 — угол CCI. |
| 1 - yes / 0 - no (SignalOfFullCandle) | Сигнал по полной свече — Если 1, сигнал формируется по закрытой свече со сдвигом на 1 бар; если 0 — по текущему бару. |
| AngleTreshold | Порог угла — Пороговое значение угла для подтверждения сигнала при использовании вторичного фильтра. |
| TrailingStop | Трейлинг-стоп — Расстояние трейлинг-стопа в пунктах от текущей цены; 0 означает отключение. |
| TakeProfit | Тейк-прифит — Расстояние тейк-прифита в пунктах от цены входа; 0 означает отсутствие. |
| InitialStopLoss | Начальный стоп-лосс — Расстояние начального стоп-лосса в пунктах от цены входа; 0 означает отсутствие. |
| Lots | Объём сделки — Размер лота для открытия позиции. |
| FridayNightHour | Час пятничной ночи — Час начала блокировки новых сделок в пятницу; 0 означает отключение блокировки. |
Поиск по коду файла
#include <stdlib.mqh>
#property stacksize 1024
extern int MAPeriod=120;
extern int PrimaryType=1; // 1 = SilverTrend / 2 =
extern int SecondaryType=2; // 0 = nothing / 1 = EMAAngle / 2 = CCIAngle
extern int SignalOfFullCandle=1; // 1 - yes / 0 - no
extern double AngleTreshold=0.3;
extern int TrailingStop =0;
extern int TakeProfit = 10;
extern int InitialStopLoss=25;
extern double Lots = 1;
extern double FridayNightHour=16;
datetime bartime;
double Slippage=3;
int Signal=0, OldSignal=0;
int start()
{
// код доступен только после оплаты
}
int cnt, ticket, err, result, total, shift;
int has_a_short_trade=0, has_a_long_trade=0;
int MagicNumber;
double ts, tp, Min_OrderPrice;
bool LongSignal, ShortSignal, ExitLong, ExitShort;
double dummy1[], dummy2[], dummy3[], dummy4[];
string setup;
MagicNumber = 3500 + func_Symbol2Val(Symbol())*100 + func_TimeFrame_Const2Val(Period());
setup="STv7_" + Symbol() + "_" + func_TimeFrame_Val2String(func_TimeFrame_Const2Val(Period()));
if (SignalOfFullCandle==1) {
shift=1;
} else {
shift=0;
}
if(PrimaryType==1) {
double Plus=iCustom(NULL, 0, "SilverTrend_Signal", 0, shift);
double Minus=iCustom(NULL, 0, "SilverTrend_Signal", 1, shift);
if (Plus>0) {
Signal=1;
} else if (Minus>0) {
Signal=-1;
} else {
Signal=0;
}
} else if(PrimaryType==2) {
}
if (SecondaryType==0) {
if (OldSignal!=Signal && Signal>0) {
Print("EnterLong");
LongSignal=true;
ShortSignal=false;
} else if (OldSignal!=Signal && Signal<0) {
Print("EnterShort");
LongSignal=false;
ShortSignal=true;
} else {
LongSignal=false;
ShortSignal=false;
}
OldSignal=Signal;
} else if (SecondaryType==1) { // EMAAngle
double EMA_Angle=EMAAngle(MAPeriod, 0, shift);
if (OldSignal!=Signal && Signal>0 && EMA_Angle>AngleTreshold) {
Print("EnterLong");
LongSignal=true;
ShortSignal=false;
} else if (OldSignal!=Signal && Signal<0 && EMA_Angle<-AngleTreshold) {
Print("EnterShort");
LongSignal=false;
ShortSignal=true;
} else {
LongSignal=false;
ShortSignal=false;
}
OldSignal=Signal;
} else if (SecondaryType==2) { // CCIANgle
double CCI_Angle=CCIAngle(MAPeriod, 0, shift);
if (OldSignal!=Signal && Signal>0 && CCI_Angle>AngleTreshold) {
Print("EnterLong");
LongSignal=true;
ShortSignal=false;
} else if (OldSignal!=Signal && Signal<0 && CCI_Angle<-AngleTreshold){
Print("EnterShort");
LongSignal=false;
ShortSignal=true;
} else {
LongSignal=false;
ShortSignal=false;
}
OldSignal=Signal;
}
if (Signal>0) {
Print("ExitShort");
ExitLong=false;
ExitShort=true;
} else if (Signal<0) {
Print("ExitLong");
ExitLong=true;
ExitShort=false;
} else {
ExitLong=false;
ExitShort=false;
}
Comment(Signal + " " + OldSignal + " " + CCI_Angle);
total = OrdersTotal();
for(cnt=total;cnt>=0;cnt--)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
OrderPrint();
if(OrderType()==OP_BUY && OrderMagicNumber()==MagicNumber) {
Print("Identified");
if(ExitLong) {
Print("Close Long");
OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Violet); // close position
err = GetLastError();
if (err>1) {
Print("Error closing BUY order [" + setup + "]: (" + err + ") " + ErrorDescription(err) + " " + setup);
}
return(0);
} else if(TrailingStop>0) {
if(Bid-OrderOpenPrice()>Point*TrailingStop) {
ts = Bid-Point*TrailingStop;
}
if((OrderStopLoss()<ts) || (OrderStopLoss()==0)) {
result=OrderModify(OrderTicket(),OrderOpenPrice(),ts,OrderTakeProfit(),0,White);
err = GetLastError();
if (err>1) {
Print("Error modifying BUY order [" + setup + "]: (" + err + ") " + ErrorDescription(err) + " " + setup);
}
}
}
} else if (OrderType()==OP_SELL && OrderMagicNumber()==MagicNumber) {
Print("Identified");
if (ExitShort) {
Print("Close Short");
OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Violet); // close position
err = GetLastError();
if (err>1) {
Print("Error closing SELL order [" + setup + "]: (" + err + ") " + ErrorDescription(err) + " " + setup);
}
return(0);
} else if(TrailingStop>0) {
if((OrderOpenPrice()-Ask)>(Point*TrailingStop)) {
ts=Ask+Point*TrailingStop;
}
if((ts!=0) && ((OrderStopLosПоказано первые 50% кода (символов: 7087)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.