Автор |
Сообщение |
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
srom_tr писал(а): |
Еще можно выставить флаг в настройках на "Pad and align to reference symbol", тогда тоже дополняет пропущенные даты. |
Хм. Думал эта настройка относится только к работе тестера. Не думал, что на Skan влияет...
srom_tr писал(а): |
Но тут у меня другая вылезла проблема - он в конце добавляет строки с одними нулями.
Я хочу их отсечь, сделав проверку Close > 0, но как в условии If можно подставить текущее значение Close при переборе Scan? LastValue() и CurrentValue() не помогают. |
В смысле куда в конце??? В любом случае ничего не сделаешь. Если уж он решил добавить запись в базу, то добавит не зависимо от того, есть C > 0 или нет. Возможно сработает выставить диапазон в настройках АА так, чтобы даты куда Ами пихает ноли не заполнялись. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
srtrade
Зарегистрирован: 09.11.2010
Сообщения: 233
|
Фильтр на рынки и прочее работает, а фильтр на даты нет. Ставишь диапазон - игнорирует.
В анализаторе вообще нельзя что-ли нельзя как-то получить текущее значение Close, с которым он в данный момент работает? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Почему нельзя? Можно.
Но толку от этого не будет. Ну выловил ты момент когда данных нет (C == 0), но он всеравно добавит запись в композитный символ, поставит дату/время и OHLC = 0 |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
srtrade
Зарегистрирован: 09.11.2010
Сообщения: 233
|
Вот мой код:
Код: |
procedure Composite_Basket (Basket_Name, Weight)
{
AddToComposite(Weight*O, Basket_Name, "O", atcFlagDeleteValues );
AddToComposite(Weight*H, Basket_Name, "H", atcFlagDeleteValues );
AddToComposite(Weight*L, Basket_Name, "L", atcFlagDeleteValues );
AddToComposite(Weight*C, Basket_Name, "C", atcFlagDeleteValues );
}
_SECTION_BEGIN( "Basket_USDEUR" );
Filter = C > 0;
Basket_Name = "Basket_USDEUR";
MarketID_Currency = 5;
switch ( Name() )
{
case "USDRUB": Weight = 0.55; break;
case "EURRUB": Weight = 0.45; break;
default: Weight = 0; break;
}
if (Weight > 0) Composite_Basket (Basket_Name, Weight);
CategoryAddSymbol(Basket_Name, categoryMarket, MarketID_Currency);
_SECTION_END();
|
Если в If вставить доппроверку на С>0, то все будет нормально. Как это сделать? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
if (Weight > 0 AND С > 0)
Думаю не поможет.... |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
srtrade
Зарегистрирован: 09.11.2010
Сообщения: 233
|
Пробовал, выдает ошибку: "Close - это массив и он не может быть использован в IF".
LastValue() и CurrentValue() не помогают.
Может есть какая-то команда типа Stop, чтобы принудительно заставить остановить дальнейшее сканирование? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Нет. В том и дело, что массив обрабатывается не последовательно, а весь сразу целиком и нельзя обработать пол массива, а половину оставить. Точнее можно, но только в цикле. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
|