CTG-Modify Date
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «ctg-modify_date.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Программа CTG-Modify Date представляет собой скрипт для платформы MetaTrader, предназначенный для создания и модификации файлов исторических данных пользовательского таймфрейма. Она агрегирует данные текущего графика с учётом множителя периода и записывает их в файл формата .hst.
Основная функция скрипта — открытие исторического файла для указанного символа и периода, запись заголовка и данных баров (открытие, максимум, минимум, закрытие, объём), а затем мониторинг входящих тиков для актуализации файла в реальном времени. При достижении нового бара данные записываются в файл и обновляется текущий график.
Скрипт поддерживает опцию подавления данных за выходные дни (Nullbars), когда бары субботы и воскресенья заполняются значениями открытия без реальной торговой активности. Для обновления окон графиков используется вызов Windows API. Функция deinit() обеспечивает закрытие файла при завершении работы скрипта.
Настройки программы
| Настройка | Описание |
|---|---|
| new period multiplier factor (ExtPeriodMultiplier) | Множитель периода — Множитель для расчёта нового периода таймфрейма. Текущий период графика умножается на это значение, определяя период генерируемого исторического файла. |
| Nullbars | Нулевые бары выходных — Переключатель подавления данных за выходные дни. При активации бары субботы и воскресенья (для периодов до ежедневного включительно) заполняются значением открытия без реальной торговой активности. |
Поиск по коду файла
#property show_inputs
#include <WinUser32.mqh>
extern int ExtPeriodMultiplier=1; // new period multiplier factor
extern bool Nullbars=true;
int ExtHandle=-1;
int start()
{
// код доступен только после оплаты
}
int i, start_pos, i_time, time0, last_fpos, periodseconds,sk;
double d_open, d_low, d_high, d_close, d_volume, last_volume;
int hwnd=0,cnt=0;
int version=400;
string c_copyright;
string c_symbol=Symbol()+"-M_D";
int i_period=Period()*ExtPeriodMultiplier;
int i_digits=Digits;
int i_unused[13];
switch ( Period() )
{
case 1: sk=60; break;
case 5: sk=300; break;
case 15: sk=900; break;
case 30: sk=1800; break;
case 60: sk=3600; break;
case 240: sk=14400; break;
case 1440: sk=86400; break;
case 10080: sk=604800; break;
case 43200: sk=2592000; break;
default: break;
}
ExtHandle=FileOpenHistory(c_symbol+i_period+".hst", FILE_BIN|FILE_WRITE);
if(ExtHandle < 0) return(-1);
c_copyright="Copyright ? 2007, ChaosTradingGroup.com";
FileWriteInteger(ExtHandle, version, LONG_VALUE);
FileWriteString(ExtHandle, c_copyright, 64);
FileWriteString(ExtHandle, c_symbol, 12);
FileWriteInteger(ExtHandle, i_period, LONG_VALUE);
FileWriteInteger(ExtHandle, i_digits, LONG_VALUE);
FileWriteInteger(ExtHandle, 0, LONG_VALUE); //timesign
FileWriteInteger(ExtHandle, 0, LONG_VALUE); //last_sync
FileWriteArray(ExtHandle, i_unused, 0, 13);
periodseconds=i_period*60;
start_pos=Bars-1;
d_open=Open[start_pos];
d_low=Low[start_pos];
d_high=High[start_pos];
d_volume=Volume[start_pos];
i_time=Time[start_pos]/periodseconds;
i_time*=periodseconds;
for(i=Time[start_pos-1];i<=Time[0]; i+=sk)
{
time0=i;
if(time0>=i_time+periodseconds || i==Time[0])
{
if(i==Time[0] && time0<i_time+periodseconds)
{
d_volume+=Volume[0];
if (Low[0]<d_low) d_low=Low[0];
if (High[0]>d_high) d_high=High[0];
d_close=Close[0];
}
last_fpos=FileTell(ExtHandle);
last_volume=Volume[iBarShift(Symbol(),Period(),i)];
if ((Nullbars==true && i_period<=1440 && TimeDayOfWeek(i)==0) || (Nullbars==true && i_period<=1440 && TimeDayOfWeek(i)==6))
{
d_close=d_open;
d_low=d_open;
d_high=d_open;
}
FileWriteInteger(ExtHandle, i_time, LONG_VALUE);
FileWriteDouble(ExtHandle, d_open, DOUBLE_VALUE);
FileWriteDouble(ExtHandle, d_low, DOUBLE_VALUE);
FileWriteDouble(ExtHandle, d_high, DOUBLE_VALUE);
FileWriteDouble(ExtHandle, d_close, DOUBLE_VALUE);
FileWriteDouble(ExtHandle, d_volume, DOUBLE_VALUE);
FileFlush(ExtHandle);
cnt++;
if(time0>=i_time+periПоказано первые 50% кода (символов: 4169)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.