Мультитаймфреймовые индикаторы - страница 405
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
объединение таймфреймов TDI
Привет, ребята, привет, Младен,
Поскольку некоторые из вас используют TDI в качестве поставщика сигналов, я столкнулся с системой оповещения TDI, как показано ниже (я просто подаю сигнал или даже оповещаю по электронной почте, когда происходит пересечение TDI). Вероятно, в этом нет ничего нового. Поскольку более безопасно торговать TDI как минимум на двух таймфреймах (60мин как основа, 5мин для скальпинга), я спрашиваю, возможно ли следующее:То, что я хочу, это объединить сигналы как минимум двух разных таймфреймов, чтобы дать мне в целом более надежный сигнал: Больший таймфрейм используется как основа, повышение или понижение задает направление для меньшего(их). Если тот же сигнал появляется на меньшем таймфрейме, это сделка; выход из сделки осуществляется только по сигналу выхода в зависимости от меньшего таймфрейма.
Итак, вот индикатор, о котором я говорю, создающий сигналы; что вы думаете, ребята, или что-то подобное уже было опубликовано?
Привет, ребята, привет Младен,
Поскольку некоторые из вас используют TDI в качестве поставщика сигналов, я наткнулся на систему TDI Alert System, как показано ниже (я просто подаю сигнал или даже EMail Alert, когда происходит пересечение TDI). Вероятно, в этом нет ничего нового. Поскольку более безопасно торговать TDI как минимум на двух таймфреймах (60мин как основа, 5мин для скальпинга), я спрашиваю, возможно ли следующее:То, что я хочу, это объединить сигналы как минимум двух разных таймфреймов, чтобы дать мне в целом более надежный сигнал: Больший таймфрейм используется как основа, повышение или понижение задает направление для меньшего(их). Если тот же сигнал появляется на меньшем таймфрейме, это сделка; сделка завершается только по сигналу выхода в зависимости от меньшего таймфрейма.
Вот индикатор, о котором я говорю, создавая сигналы; что вы думаете, ребята, или что-то подобное уже было опубликовано?Индикатор будет выложен через секунду...
FxTrendsTrader Вот, пожалуйста
Уважаемый Младен
Не могли бы Вы добавить в этот индикатор "Раскраску по наклону".
Заранее спасибо
секретный код
Выложу индикатор через секунду...
Сердечный приступ....?...
Сердечный приступ....?...
Нет, никакого сердечного приступа: Вот код, просто скопируйте его и создайте индикатор, не могу найти файл
/*------------------------------------------------------------------------------------
Название: xTDI-Arrow.mq4
Copyright ?2010, Xaphod, Forex Whiz
Описание: - Рисует стрелки для кроссов TDI.
- Предоставляет предупреждения при пересечении вышеуказанных трех линий.
Журнал изменений:
2010-10-19. Xaphod, v1.00
- Первоначальный релиз
-------------------------------------------------------------------------------------*/
// Свойства индикатора
#property copyright "Copyright ? 2010, Xaphod"
#property link "http://forexwhiz.appspot.com"
#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 LimeGreen
#property indicator_color2 Red
#property indicator_color3 Green
#property indicator_color4 FireBrick
#property indicator_width1 1
#property indicator_width2 1
#property indicator_width3 1
#property indicator_width4 1
#property indicator_maximum 1
#property indicator_minimum 0
// Постоянные определения
#define INDICATOR_NAME "xTDI-Arrow"
#define INDICATOR_VERSION "v1.00"
#define BAR_HEIGHT 1.00
#define TDI_INDI "Traders_Dynamic_Index"
#define ARROW_THIN_UP 225
#define ARROW_THIN_DN 226
#define ARROW_THICK_UP 233
#define ARROW_THICK_DN 234
#define ARROW_HOLLOW_UP 241
#define ARROW_HOLLOW_DN 242
#define ARROW_ROUND_UP 221
#define ARROW_ROUND_DN 222
// Параметры индикатора
extern string Indi.Copyright= "?2010, forexwhiz.appspot.com";
extern string Indi.Version= INDICATOR_VERSION;
extern string Show.Settings= "????????????????????????????????????";
extern int Show.TimeFrame=0; // Используемый таймфрейм. Текущий таймфрейм=0.
extern bool Show.MarketBaseLine=true; // Показывать крест выше/ниже базовой линии рынка другим цветом.
extern int Show.ArrowType=0; // 0=тонкая, 1=толстая, 2=полая, 3=круглая
extern int Show.ArrowSize=1; // Размер стрелки (1-5)
extern int Show.ArrowOffset=10; // Смещение от конца свечи для отображения стрелки
extern string TDI.Settings="????????????????????????????????????";
extern int TDI.RSIPeriod = 13; // Период. Рекомендуемые значения: 8-25
extern int TDI.RSIPrice = 0; // 0=CLOSE, 1=OPEN, 2=HIGH, 3=LOW, 4=MEDIAN, 5=TYPICAL, 6=WEIGHTED
extern int TDI.VolatilityBand = 34; // Рекомендуемые значения: 20-40
extern int TDI.RSIPriceLine = 2; // Период
extern int TDI.RSIPriceType = 0; // 0=SMA, 1=EMA, 2=SSMA, 3=LWMA
extern int TDI.TradeSignalLine = 7; // Период
extern int TDI.TradeSignalType = 0; // 0=SMA, 1=EMA, 2=SSMA, 3=LWMA
extern string Alert.Settings = "????????????????????????????????????";
extern bool Alert.RSIPriceLine=true; // Предупреждение, если цена RSI пересекает сигнальную линию. Зеленый цвет пересекает красный.
extern bool Alert.MarketBaseLine=true; // Оповещение, если цена RSI пересекает сигнальную линию и базовую линию рынка. Зеленый пересекает красный и желтый
extern bool Alert.NewBarOnly=true; // True=Оповещение при открытии нового бара. False=оповещение при любом пересечении линий
extern int Alert.Timeout=60; // Деактивировать оповещения на N секунд после оповещения. Только когда Alert.NewBarOnly=false
extern bool Alert.Popup=true; // Всплывающее окно и звук при оповещении
extern bool Alert.Email=false; // Отправка электронного письма при оповещении
// Глобальные переменные модуля
double dBuffer0[];
double dBuffer1[];
double dBuffer2[];
double dBuffer3[];
bool bStartup;
void SetArrowType(int& iArrowUp, int& iArrowDn) {
switch (Show.ArrowType) {
case 1: // Тонкий
iArrowDn=ARROW_THIN_DN;
iArrowUp=ARROW_THIN_UP;
break;
case 2: // Полый
iArrowDn=ARROW_HOLLOW_DN;
iArrowUp=ARROW_HOLLOW_UP;
break;
case 3: // Круглый
iArrowDn=ARROW_ROUND_DN;
iArrowUp=ARROW_ROUND_UP;
break;
default: // Толстая
iArrowDn=ARROW_THICK_DN;
iArrowUp=ARROW_THICK_UP;
break;
}
}
//-----------------------------------------------------------------------------
// функция: init()
// Описание: Пользовательская функция инициализации индикатора.
//-----------------------------------------------------------------------------
int init() {
int iArrowUp;
int iArrowDn;
string sType;
string sTF;
SetArrowType(iArrowUp, iArrowDn );
SetIndexStyle(0,DRAW_ARROW,EMPTY,Show.ArrowSize);
SetIndexBuffer(0,dBuffer0);
SetIndexLabel(0, "TDI:Mkt-Up");
SetIndexArrow(0, iArrowUp);
SetIndexStyle(1,DRAW_ARROW,EMPTY,Show.ArrowSize);
SetIndexBuffer(1,dBuffer1);
SetIndexLabel(1, "TDI:Mkt-Dn");
SetIndexArrow(1, iArrowDn);
SetIndexStyle(2,DRAW_ARROW,EMPTY,Show.ArrowSize);
SetIndexBuffer(2,dBuffer2);
SetIndexLabel(2, "TDI:Sig-Up");
SetIndexArrow(2, iArrowUp);
SetIndexStyle(3,DRAW_ARROW,EMPTY,Show.ArrowSize);
SetIndexBuffer(3,dBuffer3);
SetIndexLabel(3, "TDI:Sig-Dn");
SetIndexArrow(3, iArrowDn);
if (Show.TimeFrame==0)
sTF="";
иначе
sTF=TF2Str(Show.TimeFrame);
IndicatorShortName(INDICATOR_NAME+""+sTF);
bStartup=true;
return(0);
}
//-----------------------------------------------------------------------------
// функция: deinit()
// Описание: Пользовательская функция деинициализации индикатора.
//-----------------------------------------------------------------------------
int deinit() {
return (0);
}
///-----------------------------------------------------------------------------
// функция: start()
// Описание: Пользовательская функция итерации индикатора.
//-----------------------------------------------------------------------------
int start() {
int iNewBars;
int iCountedBars;
int i;
double dVBHighLine; // Верхняя полоса волатильности - верхняя синяя линия
double dVBLowLine; // Нижняя полоса волатильности - нижняя синяя линия
double dMarketBaseLine0; // Базовая линия рынка - желтая линия
double dRSIPriceLine0; // RSI PriceLine - Зеленая линия
double dTradeSignalLine0; // Линия торгового сигнала - Красная линия
static double dMarketBaseLine1; // Базовая линия рынка - желтая линия
static double dRSIPriceLine1; // RSI PriceLine - Зеленая линия
static double dTradeSignalLine1; // Линия торгового сигнала - красная линия
double dOffset;
// Получение необработанных тиков
iCountedBars=IndicatorCounted();
if(iCountedBars < 0) return (-1);
if(iCountedBars>0) iCountedBars--;
iNewBars=Bars-iCountedBars;
for(i=iNewBars; i>=0; i--) {
// Получение предыдущих данных TDI
//if (Time!=tCurTime) {
//tCurTime=Time;
dMarketBaseLine1=iCustom(NULL,Show.TimeFrame,TDI_INDI,TDI.RSIPeriod,TDI.RSIPrice,TDI.VolatilityBand,TDI.RSIPriceLine,
TDI.RSIPriceType,TDI.TradeSignalLine,TDI.TradeSignalType,2,i+1); // Желтая линия
dRSIPriceLine1=iCustom(NULL,Show.TimeFrame,TDI_INDI,TDI.RSIPeriod,TDI.RSIPrice,TDI.VolatilityBand,TDI.RSIPriceLine,
TDI.RSIPriceType,TDI.TradeSignalLine,TDI.TradeSignalType,4,i+1); // Зеленая линия
dTradeSignalLine1=iCustom(NULL,Show.TimeFrame,TDI_INDI,TDI.RSIPeriod,TDI.RSIPrice,TDI.VolatilityBand,TDI.RSIPriceLine,
TDI.RSIPriceType,TDI.TradeSignalLine,TDI.TradeSignalType,5,i+1); //Красная линия
//}
// Получение текущих данных TDI
dMarketBaseLine0=iCustom(NULL,Show.TimeFrame,TDI_INDI,TDI.RSIPeriod,TDI.RSIPrice,TDI.VolatilityBand,TDI.RSIPriceLine,
TDI.RSIPriceType,TDI.TradeSignalLine,TDI.TradeSignalType,2,i); // Желтая линия
dRSIPriceLine0=iCustom(NULL,Show.TimeFrame,TDI_INDI,TDI.RSIPeriod,TDI.RSIPrice,TDI.VolatilityBand,TDI.RSIPriceLine,
TDI.RSIPriceType,TDI.TradeSignalLine,TDI.TradeSignalType,4,i); // Зеленая линия
dTradeSignalLine0=iCustom(NULL,Show.TimeFrame,TDI_INDI,TDI.RSIPeriod,TDI.RSIPrice,TDI.VolatilityBand,TDI.RSIPriceLine,
TDI.RSIPriceType,TDI.TradeSignalLine,TDI.TradeSignalType,5,i); // Красная линия
// Очистить текущий буфер дисплея
dBuffer0 = EMPTY_VALUE;
dBuffer1 = EMPTY_VALUE;
dBuffer2 = EMPTY_VALUE;
dBuffer3 = EMPTY_VALUE;
dOffset=Point*(10*Show.ArrowOffset/MarketInfo(Symbol(),MODE_TICKVALUE));
if (dRSIPriceLine0>dMarketBaseLine0 && dRSIPriceLine1dTradeSignalLine0 && Show.MarketBaseLine)
dBuffer0 = Low-dOffset;
else if (dRSIPriceLine0>dTradeSignalLine0 && dRSIPriceLine1<dTradeSignalLine1)
dBuffer2 = Low-dOffset;
if (dRSIPriceLine0dMarketBaseLine1 && dRSIPriceLine0<dTradeSignalLine0 && Show.MarketBaseLine)
dBuffer1 = High+dOffset;
else if (dRSIPriceLine0dTradeSignalLine1)
dBuffer3 = High+dOffset;
// Проверка наличия алертов
if (i==0) AlertCheck();
}
// Сброс флага запуска
if (bStartup) bStartup=false;
// Пока-пока
return(0);
}
//+------------------------------------------------------------------+
//-----------------------------------------------------------------------------
// функция: TF2Str()
// Описание: Преобразование таймфрейма в строку
//-----------------------------------------------------------------------------
string TF2Str(int iPeriod) {
switch(iPeriod) {
case PERIOD_M1: return("M1");
case PERIOD_M5: return("M5");
case PERIOD_M15: return("M15");
case PERIOD_M30: return("M30");
case PERIOD_H1: return("H1");
case PERIOD_H4: return("H4");
case PERIOD_D1: return("D1");
case PERIOD_W1: return("W1");
case PERIOD_MN1: return("MN1");
по умолчанию: return("M "+iPeriod);
}
}
//-----------------------------------------------------------------------------
// функция: AlertCheck()
// Описание: Проверка наличия условий оповещения и выполнение оповещений
//-----------------------------------------------------------------------------
void AlertCheck() {
string sAlertMsg;
static datetime tCurTime=0;
static int iAlertTimer[2];
static int iAlertStatus[2];
double dMarketBaseLine[2]; // Базовая линия рынка - желтая линия
double dRSIPriceLine[2]; // RSI PriceLine - зеленая линия
double dTradeSignalLine[2]; // Линия торгового сигнала - красная линия
int i,j;
bool bNewBar=false;
// Прервать работу, если индикатор только что запустился
if (bStartup) {
tCurTime=Time[0];
return(0);
}
// Проверяем наличие предупреждений
if (Alert.RSIPriceLine || Alert.MarketBaseLine) {
// Предупреждение, если только новый бар
if (Alert.NewBarOnly) {
// Сброс времени
if(tCurTime!=Time[0]) {
tCurTime=Time[0];
bNewBar=true;
// Получение данных TDI на новом баре, т.е. на барах 1 и 2
for (i=0; i<2; i++) {
j=i+1;
dMarketBaseLine=iCustom(NULL,Show.TimeFrame,TDI_INDI,TDI.RSIPeriod,TDI.RSIPrice,TDI.VolatilityBand,TDI.RSIPriceLine,
TDI.RSIPriceType,TDI.TradeSignalLine,TDI.TradeSignalType,2,j); // Желтая линия
dRSIPriceLine=iCustom(NULL,Show.TimeFrame,TDI_INDI,TDI.RSIPeriod,TDI.RSIPrice,TDI.VolatilityBand,TDI.RSIPriceLine,
TDI.RSIPriceType,TDI.TradeSignalLine,TDI.TradeSignalType,4,j); // Зеленая линия
dTradeSignalLine=iCustom(NULL,Show.TimeFrame,TDI_INDI,TDI.RSIPeriod,TDI.RSIPrice,TDI.VolatilityBand,TDI.RSIPriceLine,
TDI.RSIPriceType,TDI.TradeSignalLine,TDI.TradeSignalType,5,j); // Красная линия
} //endfor
}//endif
}
else {
// Получение данных TDI на текущем баре, т.е. на барах 0 и 1
for (i=0; i<2; i++) {
dMarketBaseLine=iCustom(NULL,Show.TimeFrame,TDI_INDI,TDI.RSIPeriod,TDI.RSIPrice,TDI.VolatilityBand,TDI.RSIPriceLine,
TDI.RSIPriceType,TDI.TradeSignalLine,TDI.TradeSignalType,2,i); // Желтая линия
dRSIPriceLine=iCustom(NULL,Show.TimeFrame,TDI_INDI,TDI.RSIPeriod,TDI.RSIPrice,TDI.VolatilityBand,TDI.RSIPriceLine,
TDI.RSIPriceType,TDI.TradeSignalLine,TDI.TradeSignalType,4,i); // Зеленая линия
dTradeSignalLine=iCustom(NULL,Show.TimeFrame,TDI_INDI,TDI.RSIPeriod,TDI.RSIPrice,TDI.VolatilityBand,TDI.RSIPriceLine,
TDI.RSIPriceType,TDI.TradeSignalLine,TDI.TradeSignalType,5,i); // Красная линия
} //endfor
} //end if(Alert.NewBarOnly)
if (bNewBar || (!Alert.NewBarOnly && iAlertTimer[0]<GetTickCount())) {
//Alert RSIPriceLine > TradeSignalLine
if (dRSIPriceLine[0]>dTradeSignalLine[0] && dRSIPriceLine[1]<dTradeSignalLine[1] && Alert.RSIPriceLine) {
if (!Alert.NewBarOnly) iAlertTimer[0]=GetTickCount()+Alert.Timeout*1000;
sAlertMsg="TDI Alert - "+Symbol()+" "+TF2Str(Period())+": RSIPriceLine Above TradeSignalLine.";
if (Alert.Popup) Alert(sAlertMsg);
if (Alert.Email) SendMail( sAlertMsg, "MT4 Alert!\n" + TimeToStr(TIME_DATE|TIME_SECONDS )+"\n "+sAlertMsg);
} //end if
//Алерт RSIPriceLine < TradeSignalLine
if (dRSIPriceLine[0]dTradeSignalLine[1] && Alert.RSIPriceLine) {
//PrintD("RSIPriceLine < TradeSignalLine");
if (!Alert.NewBarOnly) iAlertTimer[0]=GetTickCount()+Alert.Timeout*1000;
sAlertMsg="TDI Alert - "+Symbol()+" "+TF2Str(Period())+": RSIPriceLine Ниже TradeSignalLine.";
if (Alert.Popup) Alert(sAlertMsg);
if (Alert.Email) SendMail( sAlertMsg, "MT4 Alert!\n" + TimeToStr(TIME_DATE|TIME_SECONDS )+"\n "+sAlertMsg);
} //end if
} //end if
if (bNewBar || (!Alert.NewBarOnly && iAlertTimer[1]<GetTickCount())) {
//Alert if RSIPriceLine > TradeSignalLine && dMarketBaseLine
if (dRSIPriceLine[0]>dMarketBaseLine[0] && dRSIPriceLine[1]<dMarketBaseLine[1] && Alert.MarketBaseLine) {
if (dRSIPriceLine[0]>dTradeSignalLine[0] && dRSIPriceLine[1]<dTradeSignalLine[1]) {
if (!Alert.NewBarOnly) iAlertTimer[1]=GetTickCount()+Alert.Timeout*1000;
sAlertMsg="TDI Alert - "+Symbol()+" "+TF2Str(Period())+": RSIPriceLine Выше TradeSignalLine и MarketBaseLine.";
if (Alert.Popup) Alert(sAlertMsg);
if (Alert.Email) SendMail( sAlertMsg, "MT4 Alert!\n" + TimeToStr(TIME_DATE|TIME_SECONDS )+"\n "+sAlertMsg);
} //end if
} //end if
//Alert if RSIPriceLine < TradeSignalLine && dMarketBaseLine
if (dRSIPriceLine[0]dMarketBaseLine[1] && Alert.MarketBaseLine) {
if (dRSIPriceLine[0]dTradeSignalLine[1]) {
if (!Alert.NewBarOnly) iAlertTimer[1]=GetTickCount()+Alert.Timeout*1000;
sAlertMsg="TDI Alert - "+Symbol()+" "+TF2Str(Period())+": RSIPriceLine Ниже TradeSignalLine и MarketBaseLine.";
if (Alert.Popup) Alert(sAlertMsg);
if (Alert.Email) SendMail( sAlertMsg, "MT4 Alert!\n" + TimeToStr(TIME_DATE|TIME_SECONDS )+"\n "+sAlertMsg);
} //end if
} //end if
} //end if
}//end if(Alert.RSIPriceLine || Alert.MarketBaseLine)
return(0);
}
ALERT: Я разделил код на две части из-за политики 10k; поэтому просто скопируйте обе части в одну и создайте индикатор!
Ладно, ребята, вот, пожалуйста, извините за все формулы!
Неправильный Просто скопировал правильный код в другой, переписал старый, скомпилировал его, а файл все еще использует старый код?! Не понимаю; в любом случае код правильный
Неправильный Просто скопировал правильный код в другой, переписал старый, скомпилировал его, а файл все еще использует старый код?! Не понимаю; в любом случае код правильный
Код, который я разместил раньше....
На моем старом ноутбуке установлена версия Vista, поэтому файлы mq4 исчезают; теперь все должно работать!