cumulativedelta.mq5
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «cumulativedelta.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Индикатор для MetaTrader 4, отображающий в отдельном окне данные накопительного дельта-анализа. Он отслеживает изменения цен Bid/Ask и объём тиков, формируя на их основе гистограммные визуальные элементы с настраиваемыми цветами для бычьих и медвежьих баров.
Поддерживается запись тиковых данных в CSV-файлы и загрузка исторических записей для расчёта. При активации режима загрузки истории индикатор восстанавливает ранее накопленные значения и перерисовывает бары на основе сохранённых тиков.
Опционально рассчитывается корреляционный коэффициент между накопительной дельтой и ценовыми изменениями OHLC, отображаемый в виде линии на том же графике. Набор переключателей позволяет управлять отображением, записью и загрузкой данных.
Настройки программы
| Настройка | Описание |
|---|---|
| showCumulative | Показать накопительную дельту — Переключатель накопления дельта-значений. При отключении значения сбрасываются и не копятся между тиками. |
| recordTicks | Запись тиков — Переключатель записи текущих тиковых данных (время, Bid, Ask, объём) в CSV-файл. |
| printHistory | Загрузка истории тиков — Переключатель загрузки и чтения ранее сохранённых тиковых данных из CSV-файла при запуске индикатора. |
| dnColor | Цвет медвежьего бара — Цвет гистограммных элементов, соответствующих медвежьим (нисходящим) барам. |
| upColor | Цвет бычьего бара — Цвет гистограммных элементов, соответствующих бычьим (растущим) барам. |
| showCorr | Показать корреляцию — Переключатель отображения линии корреляционного коэффициента на графике. |
| corrPeriod | Период корреляции — Количество баров, используемых в качестве периода для расчёта корреляционного коэффициента. |
Поиск по коду файла
#property indicator_separate_window
#property indicator_buffers 17
#import "user32.dll"
int GetDC(int hwnd);
int ReleaseDC(int hwnd,int hdc);
#import "gdi32.dll"
color GetPixel(int hdc,int x,int y);
#import
extern bool showCumulative = true;
extern bool recordTicks = true;
extern bool printHistory = true;
extern color dnColor = Crimson;
extern color upColor = Green;
extern bool showCorr = false;
extern int corrPeriod = 20;
double closed[],opened[],highed[],lowed[];
static double Up_Body_Green[];
static double Dn_Body_Red[];
static double EqBodyBuffer[];
static double Bg_Body_Black[];
static double Up_Wick_Green[];
static double Dn_Wick_Red[];
static double EqShadowBuffer[];
static double Bg_Wick_Black[];
static double Dn_Body_Green[];
static double Up_Body_Red[];
static double Dn_Wick_Green[];
static double Up_Wick_Red[];
static double correlation[];
double Curr_Bid;
double Prev_Bid;
double Curr_Ask;
double Prev_Ask;
double Curr_Vol;
double Prev_Vol;
datetime timestamp;
color bkg_color;
int handle=0;
bool firstTick=true;
int init() {
// код доступен только после оплаты
}
int deinit() {
if (handle==1){
FileClose(handle);
}
return (0);
}
int start(){
// код доступен только после оплаты
}
void initialize(){
if (printHistory==true){
handle=FileOpen("Ticks_"+Symbol()+".csv", FILE_CSV|FILE_READ|FILE_WRITE,',');
if (handle<0){
Print("Could Not Create/Open File "+GetLastError());
FileClose(handle);
}
if (handle==1){
Print("File Opened Successfully");
FileSeek(handle,0,SEEK_SET);
if (!FileIsEnding(handle)) readData(); //Function to Read data line by line from file starting from the earliest record
}
}
if (recordTicks==true && handle==0){
handle=FileOpen("Ticks_"+Symbol()+".csv", FILE_CSV|FILE_READ|FILE_WRITE,',');
if (handle<0){
Print("Could Not Create/Open File "+GetLastError());
FileClose(handle);
}
if (handle==1) Print("File Opened Successfully");
FileSeek(handle, 0, SEEK_END);
}
if (recordTicks==true && handle==1){
FileSeek(handle, 0, SEEK_END);
}
Prev_Vol=iVolume(NULL,0,0);
Curr_Vol=iVolume(NULL,0,0);
firstTick=false;
}
void readData(){
datetime time1 = StrToTime(FileReadString(handle));
double bid1 = StrToDouble(FileReadString(handle));
double ask1 = StrToDouble(FileReadString(handle));
double volume1 = StrToDouble(FileReadString(handle));
int i=0;
while (time1<=Time[i]){
i++;
}
opened[i]=0;
closed[i]=0;
highed[i]=0;
lowed[i]=0;
datetime time2=time1;
for (i; i>-1; i--){
if (i>0){
while ((time2<Time[i-1]) && !FileIsEnding(handle)){
time2 = StrToTimeПоказано первые 50% кода (символов: 10115)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.