class CDistributedSR
Библиотечный класс для загрузки и отрисовки уровней поддержки и сопротивления на графике.
Сообщите нам, если считаете, что материал размещён без разрешения.
Обращение по товару «cdistributedsr.mqh» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
Библиотека CDistributedSR предназначена для работы в среде MQL. Она загружает уровни поддержки и сопротивления с удалённого сервера по URL, привязанному к торговому символу, и отображает их на графике в виде горизонтальных линий. Библиотека разделяет уровни на еженедельные и дневные, используя разные стили отрисовки для каждого типа.
При создании экземпляра класса указывается символ, для которого загружаются данные. Уровни загружаются автоматически при первом обращении или при смене торгового дня. Графические объекты, созданные библиотекой, имеют префикс тильды и удаляются при обновлении или уничтожении объекта.
Классов: 1 · методов: 4 · конструкторов: 1 · деструкторов: 1 · отдельных функций: 0
class CDistributedSR
Библиотечный класс для загрузки и отрисовки уровней поддержки и сопротивления на графике.
bool HasLevels()
Проверяет наличие загруженных уровней поддержки и сопротивления.
void DrawSR()
Отрисовывает горизонтальные линии уровней поддержки и сопротивления на графике.
CDistributedSR(string symbol)
Создаёт экземпляр класса с указанием торгового символа.
~CDistributedSR()
Удаляет созданные графические объекты и освобождает ресурсы.
void Refresh()
Обновляет уровни поддержки и сопротивления, загружая данные с удалённого сервера при смене дня.
bool IsLevelAt(int period, int bar, double pips)
Проверяет, находится ли уровень поддержки или сопротивления в заданном диапазоне свечи.
#property strict
#include <CDownloadFile.mqh>
class CDistributedSR
{
private:
CDownloadFile* _http;
string _symbol;
int _prevDay;
double _srLevelsW1[];
int _levelCountW1;
double _srLevelsD1[];
int _levelCountD1;
bool IsKnownSymbol()
{
string availableSymbols = "asx200 audcad audchf audjpy audnzd audusd btcusd cadchf cadjpy chfjpy ethusd euraud eurcad eurchf eurgbp eurjpy eurnzd eurusd gbpaud gbpcad gbpchf gbpjpy gbpnzd gbpusd nzdcad nzdchf nzdjpy nzdusd ukousd us500 usdcad usdchf usdjpy usdollar usdsgd usousd ws30 xagusd xauusd";
string symLower = _symbol;
StringToLower(symLower);
return StringFind(availableSymbols, symLower) >=0;
}
void Clear()
{
bool deleted = false;
do
{
deleted = false;
for (int i = 0; i < ObjectsTotal();++i)
{
string name = ObjectName(0, i);
if (StringSubstr(name, 0, 1) == "~")
{
ObjectDelete(0, name);
deleted = true;
break;
}
}
} while (deleted);
}
void LoadSR()
{
_levelCountW1 = 0;
_levelCountD1 = 0;
string key = _symbol;
StringToLower(key);
if (!IsKnownSymbol())
{
Print("UNKNOWN symbol:" + _symbol);
return;
}
string url = "" + key + ".txt";
string httpResult = "";
if (!_http.GrabWeb(url, httpResult))
{
Print("download failed for:" + url);
return;
}
string lines[];
int lineCount = StringSplit(httpResult, 10,lines);
for (int i=0; i < lineCount;++i)
{
string priceTxt = lines[i];
StringReplace(priceTxt,"\r","");
StringReplace(priceTxt,"\t","");
priceTxt = StringTrimLeft(priceTxt);
priceTxt = StringTrimRight(priceTxt);
if (StringLen(priceTxt) == 0) continue;
if (StringGetChar(priceTxt,0) == 100) // = d
{
priceTxt = StringSubstr(priceTxt, 1);
double price= StringToDouble(priceTxt);
_srLevelsD1[_levelCountD1++] = price;
}
else
{
double price= StringToDouble(priceTxt);
_srLevelsW1[_levelCountW1++] =Показано первые 50% кода (символов: 3072)
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.