Текущий период графика (как узнать?)
Добавлено: Пт мар 27, 2009 1:15 pm
Текущий период графика (как узнать?)
в MQL4 это можно узнать функцией
Period();
Заранее спасибо
в MQL4 это можно узнать функцией
Period();
Заранее спасибо
Наш сайт: https://forextester.ru/
https://www.forextester.ru/forum/
Для индикатора это можно узнать функцией Timeframe, для стратегий узнать нельзя потому что стратегия не привязана к таймфрейму и валюте, там Вы сами задаете текущую валюту и таймфрейм функцией SetCurrencyAndTimeframe.Sharx писал(а):Текущий период графика (как узнать?)
в MQL4 это можно узнать функцией
Period();
Заранее спасибо
У меня такая задача:Terranin писал(а):Для индикатора это можно узнать функцией Timeframe, для стратегий узнать нельзя потому что стратегия не привязана к таймфрейму и валюте, там Вы сами задаете текущую валюту и таймфрейм функцией SetCurrencyAndTimeframe.Sharx писал(а):Текущий период графика (как узнать?)
в MQL4 это можно узнать функцией
Period();
Заранее спасибо
В Forex Tester индикаторы привязаны к конкретному таймфрейму, поэтому при переключении видимых таймфреймов для них ничего не меняется и ничего не пересчитывается. Если нужно видеть индикатор на таймфрейме m5 и h1 нужно повесить 2 индикатора на эти 2 таймфрейма. А внутри индикатора уже смотреть на каком таймфрейме он висит с помощью Timeframe.Sharx писал(а):У меня такая задача:Terranin писал(а):Для индикатора это можно узнать функцией Timeframe, для стратегий узнать нельзя потому что стратегия не привязана к таймфрейму и валюте, там Вы сами задаете текущую валюту и таймфрейм функцией SetCurrencyAndTimeframe.Sharx писал(а):Текущий период графика (как узнать?)
в MQL4 это можно узнать функцией
Period();
Заранее спасибо
1. Рисовать линию от фрактала(0) до фрактала(1) не через буфер, а напрямую через содание обекта TrendLine (что то вроде зигзага)
2. Хотел чтобы при переключении таймфрейма, допустим с M5 на H1 линия перечечивалась по фракталам H1.
Сдесь скорее стоит задача Как получить текущий просматриваемый таймфрейм.
Можно ли это осуществить?
(ps в МТ4 при переключении таймфреймов, вызывается функция Start() 'куда приходят тики', в которой пресчитываются данные с учетом нового, полученого Period())
ЖальTerranin писал(а):В Forex Tester индикаторы привязаны к конкретному таймфрейму, поэтому при переключении видимых таймфреймов для них ничего не меняется и ничего не пересчитывается. Если нужно видеть индикатор на таймфрейме m5 и h1 нужно повесить 2 индикатора на эти 2 таймфрейма. А внутри индикатора уже смотреть на каком таймфрейме он висит с помощью Timeframe.Sharx писал(а):У меня такая задача:Terranin писал(а): Для индикатора это можно узнать функцией Timeframe, для стратегий узнать нельзя потому что стратегия не привязана к таймфрейму и валюте, там Вы сами задаете текущую валюту и таймфрейм функцией SetCurrencyAndTimeframe.
1. Рисовать линию от фрактала(0) до фрактала(1) не через буфер, а напрямую через содание обекта TrendLine (что то вроде зигзага)
2. Хотел чтобы при переключении таймфрейма, допустим с M5 на H1 линия перечечивалась по фракталам H1.
Сдесь скорее стоит задача Как получить текущий просматриваемый таймфрейм.
Можно ли это осуществить?
(ps в МТ4 при переключении таймфреймов, вызывается функция Start() 'куда приходят тики', в которой пресчитываются данные с учетом нового, полученого Period())
Михаил, скажите, а как текущий таймфрейм можно задать в скрипте?Terranin писал(а):Для индикатора это можно узнать функцией Timeframe, для стратегий узнать нельзя потому что стратегия не привязана к таймфрейму и валюте, там Вы сами задаете текущую валюту и таймфрейм функцией SetCurrencyAndTimeframe.Sharx писал(а):Текущий период графика (как узнать?)
в MQL4 это можно узнать функцией
Period();
Заранее спасибо
Код: Выделить всё
// points index
index1 := iBarShift(Symbol, Timeframe, time1, false);
Скрипты писались со стратегий и там нет такой возможности, потому что стратегия не привязана к таймфрейму или какому-то графику отдельному. Там валюта и таймфрейм задавались с помощью процедуры SetCurrencyAndTimeframe , и после этого и так было ясно какой таймфрейм используется потому что сами его и задавали. Но в принципе можно добавить такую возможность в следующем обновлении.Николай Тарасов писал(а):Михаил, скажите, а как текущий таймфрейм можно задать в скрипте?Terranin писал(а):Для индикатора это можно узнать функцией Timeframe, для стратегий узнать нельзя потому что стратегия не привязана к таймфрейму и валюте, там Вы сами задаете текущую валюту и таймфрейм функцией SetCurrencyAndTimeframe.Sharx писал(а):Текущий период графика (как узнать?)
в MQL4 это можно узнать функцией
Period();
Заранее спасибо
На запись:у меня компилятор выдаёт: [Error] TIRmTargets.dpr(83): Undeclared identifier: 'Timeframe'Код: Выделить всё
// points index index1 := iBarShift(Symbol, Timeframe, time1, false);
Хотя, к проекту скрипта я прикрепил и 'ScriptInterfaceUnit', и 'TechnicalFunctions'.
* * *
Кстати, не проще ли вам ввести константу "0" (ноль) для обозначения текущего таймфрейма (как в МТ4)?
Спасибо. Будем ждать.Terranin писал(а): ... в принципе можно добавить такую возможность в следующем обновлении.
---Как рассчитать количество дней и часов между двумя TDateTime?
Ниже приведён примерчик универсального определения периода между TDateTime. За основу взята функция DataDiff из RxLib и добавлено определение разности часов.В качестве домашнего задания: сделать расчёт минут, секунд и т.д.Код: Выделить всё
procedure DateTimeDiff(Date1, Date2: TDateTime; var Hours, Days, Months, Years: Word); var DtSwap: TDateTime; Day1, Day2, Month1, Month2, Year1, Year2: Word; Hour1, Min1, Sec1, MSec1, Hour2, Min2, Sec2, MSec2: Word; begin if Date1 > Date2 then begin DtSwap := Date1; Date1 := Date2; Date2 := DtSwap; end; DecodeDate(Date1, Year1, Month1, Day1); DecodeDate(Date2, Year2, Month2, Day2); Years := Year2 - Year1; Months := 0; Days := 0; Hours:= 0; if Month2 < Month1 then begin Inc(Months, 12); Dec(Years); end; Inc(Months, Month2 - Month1); if Day2 < Day1 then begin Inc(Days, DaysPerMonth(Year1, Month1)); if Months = 0 then begin Dec(Years); Months := 11; end else Dec(Months); end; Inc(Days, Day2 - Day1); DecodeTime(Date1, Hour1, Min1, Sec1, MSec1); DecodeTime(Date2, Hour2, Min2, Sec2, MSec2); if Hour2 < Hour1 then begin Inc(Hours, 24); Dec(Days); end; Inc(Hours, Hour2 - Hour1); end;
Код: Выделить всё
var
tf: integer = 1;
begin
tf := Trunc(Abs(ScriptInterfaceUnit.Time(0)-ScriptInterfaceUnit.Time(1))*24*60+5/9);
end;
Код: Выделить всё
function
TimeFr(quota: integer) result: integer;
...
Итак, прошу любить и жаловать - функция для расчёта Timeframe текущего графика (не только в скрипте):Terranin писал(а):Скрипты писались со стратегий и там нет такой возможности, потому что стратегия не привязана к таймфрейму или какому-то графику отдельному. Там валюта и таймфрейм задавались с помощью процедуры SetCurrencyAndTimeframe , и после этого и так было ясно какой таймфрейм используется потому что сами его и задавали. Но в принципе можно добавить такую возможность в следующем обновлении.Николай Тарасов писал(а):Михаил, скажите, а как текущий таймфрейм можно задать в скрипте?Terranin писал(а): Для индикатора это можно узнать функцией Timeframe, для стратегий узнать нельзя потому что стратегия не привязана к таймфрейму и валюте, там Вы сами задаете текущую валюту и таймфрейм функцией SetCurrencyAndTimeframe.
На запись:у меня компилятор выдаёт: [Error] TIRmTargets.dpr(83): Undeclared identifier: 'Timeframe'Код: Выделить всё
// points index index1 := iBarShift(Symbol, Timeframe, time1, false);
Хотя, к проекту скрипта я прикрепил и 'ScriptInterfaceUnit', и 'TechnicalFunctions'.
* * *
Кстати, не проще ли вам ввести константу "0" (ноль) для обозначения текущего таймфрейма (как в МТ4)?
Код: Выделить всё
function TimeFr(): integer;
// Поиск Timeframe по минимальному шагу баров, а не по самому модному,
// т.к. все бары в ForexTester_2.6 рассчитываются из минуток (M1).
// Минимальное число точек выборки (квота) - 4, т.к. между праздниками
// и выходным теоретически возможен всего один рабочий день.
var
i, quota, time_frame, time_step :integer;
begin
time_frame := Trunc(Abs(ScriptInterfaceUnit.Time(0)-
ScriptInterfaceUnit.Time(1))*24*60+5/9);
quota := 4;
if quota < Bars-2 then quota := Bars-2;
for i:=0 to quota do
begin
time_step := Trunc(Abs(ScriptInterfaceUnit.Time(i)-
ScriptInterfaceUnit.Time(i+1))*24*60+5/9);
if time_step < time_frame then time_frame := time_step;
end;
Result := time_frame;
end;
Код: Выделить всё
…
// Limits - Границы
alfa, betta, gamma, delta: TDateTime; // limit1..4
…
Код: Выделить всё
…
// Limits - Ãðàíèöû
alfa, betta, gamma, delta: TDateTime; // limit1..4
…
Спасибо большое, Александр!FT Support писал(а):Здравствуйте, Николай,
Похоже что-то не так с Вашим вордом
попробуйте сначала скопировать текст в блокнот а потом оттуда в ворд, или как вариант можно использовать какие-нибудь конвертеры (например прикреплённую программку)
Чтобы сообщение было видно, мне пришлось эмитировать, что это ссылка, отказавшись от явного указания, что это URL-код.Таблицу "Цвета HTML" смотрите здесь: http://ru.wikipedia.org/wiki/Цвета_в_Web