trendlines_auto.mq5
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «trendlines_auto.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Индикатор автоматически определяет точки разворота с помощью алгоритма ZigZag и рисует трендовые линии между значительными максимумами и минимумами на графике. При пересечении цены нарисованной трендовой линии индикатор генерирует сигналы BUY или SELL, отображаемые в виде стрелок на графике, и может отправлять различные уведомления.
Индикатор использует три внутренних буфера для хранения данных о сигналах покупки, продажи и стоп-уровнях. Уровни сигналов рассчитываются на основе максимума/минимума бара, следующего за точкой пересечения, с возможностью настройки отступа в пунктах. Параметр Break определяет, какой метод сравнения используется для генерации сигнала.
Функция уведомлений поддерживает несколько типов: вывод отладочной информации в журнал, воспроизведение звука и всплывающие сообщения. Звуковой файл можно настроить. Внешний вид трендовых линий (цвет, толщина, режим луча) настраивается через соответствующие параметры.
При инициализации индикатор создаёт объекты трендовых линий на графике, а при деинициализации удаляет их. Параметры ZigZag (глубина, отклонение, возврат) позволяют настроить чувствительность поиска разворотов.
Настройки программы
| Настройка | Описание |
|---|---|
| _s0 | Заголовок группы настроек |
| Break | Включает или выключает проверку пробоя трендовой линии ценой для генерации сигнала |
| Expand | Управляет продлением трендовых линий при обновлении |
| UseAlert | Включает или выключает отправку уведомлений о сигналах |
| alertDebug | Включает или выключает вывод отладочной информации в журнал |
| alertSound | Включает или выключает звуковое уведомление при сигнале |
| alertMessage | Включает или выключает всплывающее сообщение при сигнале |
| fileSound | Имя звукового файла для воспроизведения при уведомлении |
| TrendUpName | Имя объекта восходящей трендовой линии |
| TrendDnName | Имя объекта нисходящей трендовой линии |
| TrendUp | Цвет восходящей трендовой линии |
| TrendDn | Цвет нисходящей трендовой линии |
| otstup | Отступ от цены в пунктах (pips) для установки уровней сигналов |
| _s1 | Заголовок группы настроек ZigZag |
| ExtDepth | Глубина ZigZag — минимальное количество баров между пивотами |
| ExtDeviation | Отклонение ZigZag — минимальное изменение цены для формирования пивота |
| ExtBackstep | Количество баров для возврата при построении ZigZag |
Поиск по коду файла
#property indicator_chart_window
#property indicator_buffers 3
#property indicator_color1 Blue
#property indicator_color2 Red
#property indicator_color3 Black
extern string _s0="????????? ?????";
extern bool Break=true;//?????? ??????? ???????? ?????? ??? ?????
extern bool Expand=true;// ???????? ?? ????????? ????????????? ????????????
extern bool UseAlert=true;
extern bool alertDebug=true;
extern bool alertSound=true;
extern bool alertMessage=false;
extern string fileSound="alert2.wav";
extern string TrendUpName="TrendlineUp";
extern string TrendDnName="TrendlineDn";
extern color TrendUp=Blue;
extern color TrendDn=Red;
extern int otstup=0;//?????? ??????? ?? ????? pips
extern string _s1="????????? ZZ";
extern int ExtDepth=12;
extern int ExtDeviation=5;
extern int ExtBackstep=3;
double buy[],sell[],stop[];
int init()
{
// код доступен только после оплаты
}
int deinit()
{
ObjectDelete(TrendUpName);
ObjectDelete(TrendDnName);
return(0);
}
int start()
{
// код доступен только после оплаты
}
int counted_bars=IndicatorCounted();
ArrayInitialize(buy,EMPTY_VALUE);
ArrayInitialize(sell,EMPTY_VALUE);
ArrayInitialize(stop,EMPTY_VALUE);
double zzUp1=0,zzUp2=0;
double zzDn1=0,zzDn2=0;
int iUp1,iUp2,iDn1,iDn2;
double zzCurrent=0,zzTmp;
int j=0,trend=0;
for(int i=0;i<Bars;i++){
zzTmp=iCustom(NULL,0,"ZigZag",ExtDepth,ExtDeviation,ExtBackstep,0,i);//current
if(zzTmp>0.0 && j==0) {zzCurrent=zzTmp; j=1;}
if(zzTmp>0.0 && j==1 && zzTmp<zzCurrent && zzDn1==0) {zzDn1=zzTmp; j=2; iDn1=i; trend=-1;}
if(zzTmp>0.0 && j==1 && zzTmp>zzCurrent && zzUp1==0) {zzUp1=zzTmp; j=2; iUp1=i; trend=1; }
if(trend==-1){
if(zzTmp>0.0 && j==2 && zzTmp>zzDn1 && zzUp1==0) {zzUp1=zzTmp; iUp1=i; j=3;}
if(zzTmp>0.0 && j==3 && zzTmp<zzUp1 && zzDn2==0) {zzDn2=zzTmp; iDn2=i; j=4;}
if(zzTmp>0.0 && j==4 && zzTmp>zzDn2 && zzUp2==0) {zzUp2=zzTmp; iUp2=i; j=5; break;}
}
if(trend==1){
if(zzTmp>0.0 && j==2 && zzTmp<zzUp1 && zzDn1==0) {zzDn1=zzTmp; iDn1=i; j=3;}
if(zzTmp>0.0 && j==3 && zzTmp>zzDn1 && zzUp2==0) {zzUp2=zzTmp; iUp2=i; j=4;}
if(zzTmp>0.0 && j==4 && zzTmp<zzUp2 && zzDn2==0) {zzDn2=zzTmp; iDn2=i; j=5; break;}
}
}
if(zzUp1!=0.0 && zzUp2!=0.0 && zzDn1!=0.0 && zzDn2!=0.0){
if(zzUp2>zzUp1 || Expand){
if(ObjectFind(TrendDnName)==-1) {
if(ObjectCreate(TrendDnName,OBJ_TREND,0,iTime(NULL,0,iUp2),zzUp2,iTime(NULL,0,iUp1),zzUp1)){
ObjectSet(TrendDnName,OBJPROP_COLOR,TrendDn);
ObjectSet(TrendDnName,OBJPROP_WIDTH,2);
ObjectSet(TrendUpName,OBJPROP_RAY,TRUE);
}
}
else {
ObjectSet(TrendDnName,OBJPROP_TIME1,iTime(NПоказано первые 50% кода (символов: 5021)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.