barabashkakvn: Если Вы знаете время и даты своих точек, то Вам нужно вызывать только bool TrendCreate()
Спасибо за совет. Все оказалось проще.
Сделал так:
#property strict#property script_show_inputs//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart()
{
long chart_ID=0; // ID графикаstring name="TrendLine"; // имя линииint sub_window=0; // номер подокна//--- сбросим значение ошибкиResetLastError();
//--- создадим трендовую линию по заданным координатамif(!ObjectCreate(chart_ID,name,OBJ_TREND,sub_window,Time[41],1.0656,Time[65],1.0494))
{
Print(__FUNCTION__,
": не удалось создать линию тренда! Код ошибки = ",GetLastError());
return;
}
}
//+------------------------------------------------------------------+
P.S. Одного не могу понять, почему в примере выбраны именно такие цифры:
forexman77: Теперь следующую задачу необходимо решить, как продолжить линию вправо и получить значение линии в советнике?
В коде скрипта всё есть:
//+------------------------------------------------------------------+//| Создает линию тренда по заданным координатам |//+------------------------------------------------------------------+bool TrendCreate(constlong chart_ID=0, // ID графика
.
.
.
//--- включим (true) или отключим (false) режим продолжения отображения линии влевоObjectSetInteger(chart_ID,name,OBJPROP_RAY_LEFT,ray_left);
//--- включим (true) или отключим (false) режим продолжения отображения линии вправоObjectSetInteger(chart_ID,name,OBJPROP_RAY_RIGHT,ray_right);
.
.
.
1.При вызове из тестера сделки открываются. Если провожу оптимизацию везде нули. Запускаю любой прогон из оптимизации сделки есть. Как быть?
2.Как сделать так, чтобы если сделка произошла(на каждой сделке) линия сохранялась, а если нет удалялась?
long chart_ID=0; // ID графикаstring name="TrendLine"; // имя линииint sub_window=0; // номер подокнаObjectDelete(chart_ID,name);
//--- сбросим значение ошибкиResetLastError();
//--- создадим трендовую линию по заданным координатамif(!ObjectCreate(chart_ID,name,OBJ_TREND,sub_window,Time[minbar],Low[minbar],Time[IPMIN],Low[IPMIN]))
{
Print(__FUNCTION__,
": не удалось создать линию тренда! Код ошибки = ",GetLastError());
return(0);
}
ObjectSet("TrendLine",OBJPROP_TIME1,Time[minbar]);
ObjectSet("TrendLine",OBJPROP_PRICE1,Low[minbar]);
ObjectSet("TrendLine",OBJPROP_TIME2,Time[IPMIN]);
ObjectSet("TrendLine",OBJPROP_PRICE2,Low[IPMIN]);
if (IPMIN!=0){ double uroven= ObjectGetValueByTime(chart_ID,name,Time[1],sub_window);}
}
Print("uroven=",uroven);
if (Time[0] > b && Close[1] < uroven){Opn_B=true;}
Сделки нужно контролировать Вам самим. А вот для того, чтобы на каждую сделку была своя линия, нужно каждой линии при создании присваивать уникальное имя.
barabashkakvn: Сделки нужно контролировать Вам самим. А вот для того, чтобы на каждую сделку была своя линия, нужно каждой линии при создании присваивать уникальное имя.
При визуализации тестирования эксперт взаимодействует с реальным графиком. При обычном тестировании без визуализации эксперт работает с "виртуальным" графиком, который не отрисовывается, в этом случае возможны нюансы. При работе тестера в режиме оптимизации работа с графическими объектами не поддерживается.
Два дня на изучение, а оказывается нельзя провести оптимизацию.
Интересно, если сделать индикатор? Смогу ли получить через него значение линии в советнике?
Кто, что скажет. Может кто уже изучал данный вопрос?
Но все равно через использование индикатора легче все решить. В индикаторе выполняются вычисления и их результаты отображаются через индикаторные буферы.
Еще есть запасной вариант. Вместо линий создавать глобальные переменные с параметрами линии, но тогда функция GetValueByShift() не будет работать, нужно писать ее аналог.
Если Вы знаете время и даты своих точек, то Вам нужно вызывать только bool TrendCreate()
Спасибо за совет. Все оказалось проще.
Сделал так:
P.S. Одного не могу понять, почему в примере выбраны именно такие цифры:
От них линия тренда куда-то в середину диапазона ставится.
...
От них линия тренда куда-то в середину диапазона ставится.
Теперь следующую задачу необходимо решить, как продолжить линию вправо и получить значение линии в советнике?
В коде скрипта всё есть:
В коде скрипта всё есть:
1.При вызове из тестера сделки открываются. Если провожу оптимизацию везде нули. Запускаю любой прогон из оптимизации сделки есть. Как быть?
2.Как сделать так, чтобы если сделка произошла(на каждой сделке) линия сохранялась, а если нет удалялась?
Сделки нужно контролировать Вам самим. А вот для того, чтобы на каждую сделку была своя линия, нужно каждой линии при создании присваивать уникальное имя.
Каким образом? Можно пример?
Графические объекты при тестировании
При визуализации тестирования эксперт взаимодействует с реальным графиком. При обычном тестировании без визуализации эксперт работает с "виртуальным" графиком, который не отрисовывается, в этом случае возможны нюансы. При работе тестера в режиме оптимизации работа с графическими объектами не поддерживается.
Два дня на изучение, а оказывается нельзя провести оптимизацию.
Интересно, если сделать индикатор? Смогу ли получить через него значение линии в советнике?
Кто, что скажет. Может кто уже изучал данный вопрос?
...
Интересно, если сделать индикатор? Смогу ли получить через него значение линии в советнике?
...
Если индикатор создает графические объекты и потом получает их параметры, то нет.
Но все равно через использование индикатора легче все решить. В индикаторе выполняются вычисления и их результаты отображаются через индикаторные буферы.
Еще есть запасной вариант. Вместо линий создавать глобальные переменные с параметрами линии, но тогда функция GetValueByShift() не будет работать, нужно писать ее аналог.