Вот высокоуровневый способ работы с фибо-объектами. Если вы предпочитаете разбираться в низкоуровневых функциях, вы можете использовать отладчик, чтобы просмотреть этот код и увидеть, как он обрабатывается стандартной библиотекой MQL.
#property strict
#property indicator_chart_window
#include <chartobjects/chartobjectsfibo.mqh>
CChartObjectFibo g_fibo;
int OnInit()
{
if(!g_fibo.Create(0, "fibo", 0, 0, 0.0, 0, 0.0))
return INIT_FAILED;
double levels[] = {0.0, 0.10, 0.236, 0.328, 0.5, 0.618, 0.764, 0.9, 1.0};
int total = ArraySize(levels);
g_fibo.LevelsCount(total);
for(int i=0; i<total; i++) {
g_fibo.LevelValue(i, levels[i]);
g_fibo.LevelDescription(i, DoubleToString(levels[i] * 100, 1));
}
return(INIT_SUCCEEDED);
}
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
int ihigh = ArrayMaximum(high, 10);
int ilow = ArrayMinimum(low, 10);
g_fibo.Time(0, time[ihigh]);
g_fibo.Time(1, time[ilow]);
g_fibo.Price(0, high[ihigh]);
g_fibo.Price(1, low[ilow]);
return(rates_total);
}
Я могу неопределенно понять код запутывания, если он чрезвычайно совершенствуется в том, что он делает, но я думаю, запутывая Ваш SQL, может не стоить стычки.
Так или иначе много SQL, который я видел здесь, стало запутываемое стандартом.
Если необходимо скрыть его, как насчет "С ШИФРОВАНИЕМ" пункт?
Посмотрите ПАРАМЕТР ШИФРОВАНИЯ для оператора CREATE PROCEDURE.
Нет. По крайней мере, не способом, который необратим. SQL Server 2000 "С ШИФРОВАНИЕМ" может быть инвертирован для получения исходного простого текста. Псевдокод и сценарий T-SQL, который иллюстрирует это, здесь: http://education.sqlfarms.com/education/ShowPost.aspx?PostID=783
Примечание: Я не попробовал его SQL, 2005 или выше, но мое предположение является этим, так же уязвимо.. Поскольку документы MSDN указывают:
ШИФРОВАНИЕ Указывает, что SQL Server преобразует оригинальный текст оператора CREATE PROCEDURE к запутываемому формату.
Акцент является моим.
Одна опция состояла бы в том, чтобы поместить просто чувствительные части хранимой процедуры в хранимой процедуре CLR и запутать тот блок с помощью профессионального продукта путаницы.
Можно всегда писать обычный код в C# (или VB) и хранить его вне базы данных в DLL.
Затем Вы не должны волноваться о запутывании Вашего SQL.
Если Вы действительно волнуетесь по поводу кого-то входящего в DB и видящий источник для процедуры, то как S. Lott сказал, можно портировать процедуру на C#. Я рекомендовал бы LINQ.
Однако сама база данных должна, вероятно, быть защищена от людей, получающих доступ к коду для процедур, которые не должны быть. Можно ограничить пользователя или права группы только иметь Доступ на выполнение к proc в случае необходимости.
Вы могли использовать пункт ШИФРОВАНИЯ при создании хранимой процедуры.
Это полагалось бы на не отъезд источника SQL на клиентской машине все же.
Посмотрите здесь для большего количества информации:
http://msdn.microsoft.com/en-us/library/ms187926 (SQL.90) .aspx
Легко обратимый, если Вы знаете, но пугающий к большинству людей, вводящих по абсолютному адресу вокруг кода. шестнадцатеричное число кодирует Вас sproc логика и затем выполняется с ДОЛЖНОСТНЫМ ЛИЦОМ (@hexEncodedString).
см. это сообщение.