то есть визуальный масштаб более-менее получите. Но это не та метрика которую стоит использовать в торговле. Не торгуют-же по пикселям в самом деле :-) Основа - метрика пункт/бар или пункт/сек, это уже только самому, это не зависит от терминала и монитора
Да в том-то и дело, что торгуют по пикселям руками.
Под себя настраивают масштаб, линии рисуют и торгуют.
У меня работ универсальный под любую пару и ТФ, и поэтому для уточнения сигнала под масштаб экрана подстраиваться будет не правильно.
Идею с коэффициентами, независящими от масштаба поддерживаю. Но настройку стратегии все равно быстрее делать визуально, чем в голове вращать треугольники и прикидывать углы. Потому и придумываю, как это лучше рисовать.
Pavel Valentov #: Я не знал этого, полагал, что масштаб чарта задаётся целыми числами от 0 до 4.
Спасибо.
Там есть и такое, но то немного другое. Там от 0 до 5. Через ChartGetInteger. А соотношение количества пипсов на бар - тоже шкала. И она не зависит от сжатия/растягивания графика по цене :)
Pavel Valentov #: Я не знал этого, полагал, что масштаб чарта задаётся целыми числами от 0 до 4.
Спасибо.
Необходимо очень аккуратно пользоваться функциями ChartGetDouble, ChartGetInteger, ChartTimePriceToXY. Их нужно использовать только при наступлении события CHARTEVENT_CHART_CHANGE. Иначе можно нарваться на жесткие лаги. Это, пожалуй, главный семантический косяк( в попытке сэкономить 1 цент MQ заплатили 10 баксов) платформы МТ5, чарт которой выглядит лагающим в сравнении с другими платформами конкурентов, написанных на более медленных языках.
Если не очень хочется углубляться в это, то для автоматизации этого процесса рекомендую использовать мою библиотеку, которую уже сбрасывал в этой ветке. Для этого необходимо просто включить строку
#include <Canvas\iCanvas_CB.mqh>
внутри этой библиотеки будет сформирован экземпляр W структуры Windows, которая будет автоматически обновляться при наступлении события CHARTEVENT_CHART_CHANGE.
W.dx_pix - это как раз масштаб. А именно расстояние в пикселях между барами (от 1 до 32 - 1, 2, 4, 8, 16, 32)
struct Window {
long ChartId; // current window identifieruint Color; // window background colorint Width; // window widthint Height; // window heightint height[]; // sub_windows heightint Left_bar; // number of the leftmost bar in the windowdouble Right_bar; // number of the rightmost bar in the windowdouble Total_bars; // the maximum number of bars in the windowint BarsInWind; // number of visible bars in the windowdouble Y_min; // The minimum value of the price in the windowdouble Y_max; // The maximum value of the price in the windowdouble dy_pix; // price change for one pixelintdx_pix;// changing the number of bars per pixelint MouseX; // coordinate X of the current position of the mouse pointerint MouseY; // coordinate Y of the current position of the mouse pointerdouble MouseBar; // the current bar position of the mouse pointerdouble MousePrice; // the current price of the mouse pointerdatetime MouseTime; // the current time of the mouse pointer
mouse_status MouseStatus; // 5 values: NO_PRESSED, LEFT_BUTTON_PRESSED,RIGHT_BUTTON_PRESSED, LEFT_AND_RIGHT_BUTTONS_PRESSED, KEY_PRESSEDint IdEvent; // id value of the last eventlong lparam; // last lparamint MouseSubWin; // number of the subwindow in which the mouse pointer is locatedint WindowsTotal;// total subwindows, including the main windowint SubWin; // current subwindowint DPI; // Screen DPIbool ActiveWin; // Active windowbool ChangeActive;// if true ActiveWin was changed in last CHARTEVENT_CHART_CHANGEdatetime time[]; // array of opening time of all visible bars in the window
};
Необходимо очень аккуратно пользоваться функциями ChartGetDouble, ChartGetInteger, ChartTimePriceToXY. Их нужно использовать только при наступлении события CHARTEVENT_CHART_CHANGE. Иначе можно нарваться на жесткие лаги. Это, пожалуй, главный семантический косяк( в попытке сэкономить 1 цент MQ заплатили 10 баксов) платформы МТ5, чарт которой выглядит лагающим в сравнении с другими платформами конкурентов, написанных на более медленных языках.
Если не очень хочется углубляться в это, то для автоматизации этого процесса рекомендую использовать мою библиотеку, которую уже сбрасывал в этой ветке. Для этого необходимо просто включить строку
#include <Canvas\iCanvas_CB.mqh>
внутри этой библиотеки будет сформирована экземпляр W структуры Windows, которая будет автоматически обновляться при наступлении события CHARTEVENT_CHART_CHANGE.
W.dx_pix - это как раз масштаб. А именно растояние в пикселях между барами (от 1 до 32 - 1, 2, 4, 8, 16, 32)
отключи фичу прямо сразу, пока не поздно ;-) только по запросув стиле 4ш-ного RefreshRates
слишком частое событие, торговля просто убьётся; учитывай что советники вообще в отдельных тредах и им не особо удобно+быстро получать всё тобой задуманное
отключи фичу прямо сразу, пока не поздно ;-) только по запросув стиле 4ш-ного RefreshRates
слишком частое событие, торговля просто убьётся; учитывай что советники вообще в отдельных тредах и им не особо удобно+быстро получать всё тобой задуманное
ну не так уж и частое. Только при новом баре или при обновлении максимума или минимума чарта, если юзер не дергает график. Но, впрочем, ты прав. Наверное имеет смысл добавить выключатель обновления W.
ЗЫ Тем более в режиме прихода нового бара, вся эта процедура обновления W занимает 1-10 милисекунд. Поэтому ничего не убьет.
ну не так уж и частое. Только при новом баре или при обновлении максимума или минимума чарта, если юзер не дергает график. Но, впрочем, ты прав. Наверное имеет смысл добавить выключатель обновления W.
ЗЫ Тем более в режиме прихода нового бара, вся эта процедура обновления W занимает 1-10 милисекунд. Поэтому ничего не убьет.
+-во время прихода нового бара, обновлений high/low, начинается самая жара
графика это хорошо, но только чтобы не мешала основному делу
Да... максимальную и минимальную цену видимой области можно получить через ChartGetDouble
в приведении к пикселям - да. ChartTimePriceToXY
то есть визуальный масштаб более-менее получите. Но это не та метрика которую стоит использовать в торговле. Не торгуют-же по пикселям в самом деле :-) Основа - метрика пункт/бар или пункт/сек, это уже только самому, это не зависит от терминала и монитора
Я не знал этого, полагал, что масштаб чарта задаётся целыми числами от 0 до 4.
Там есть и такое, но то немного другое. Там от 0 до 5. Через ChartGetInteger. А соотношение количества пипсов на бар - тоже шкала. И она не зависит от сжатия/растягивания графика по цене :)
+
Спасибо, Николай!
скинь картинку в спреды, плиз ;)
там поясняющий пост к тебе....
Не понял, что за спреды. Это ветка какая-то?
Не понял, что за спреды. Это ветка какая-то?
Я не знал этого, полагал, что масштаб чарта задаётся целыми числами от 0 до 4.
Необходимо очень аккуратно пользоваться функциями ChartGetDouble, ChartGetInteger, ChartTimePriceToXY.
Их нужно использовать только при наступлении события CHARTEVENT_CHART_CHANGE.
Иначе можно нарваться на жесткие лаги.
Это, пожалуй, главный семантический косяк( в попытке сэкономить 1 цент MQ заплатили 10 баксов) платформы МТ5, чарт которой выглядит лагающим в сравнении с другими платформами конкурентов, написанных на более медленных языках.
Если не очень хочется углубляться в это, то для автоматизации этого процесса рекомендую использовать мою библиотеку, которую уже сбрасывал в этой ветке.
Для этого необходимо просто включить строку
#include <Canvas\iCanvas_CB.mqh>
внутри этой библиотеки будет сформирован экземпляр W структуры Windows, которая будет автоматически обновляться при наступлении события CHARTEVENT_CHART_CHANGE.
W.dx_pix - это как раз масштаб. А именно расстояние в пикселях между барами (от 1 до 32 - 1, 2, 4, 8, 16, 32)
Необходимо очень аккуратно пользоваться функциями ChartGetDouble, ChartGetInteger, ChartTimePriceToXY.
Их нужно использовать только при наступлении события CHARTEVENT_CHART_CHANGE.
Иначе можно нарваться на жесткие лаги.
Это, пожалуй, главный семантический косяк( в попытке сэкономить 1 цент MQ заплатили 10 баксов) платформы МТ5, чарт которой выглядит лагающим в сравнении с другими платформами конкурентов, написанных на более медленных языках.
Если не очень хочется углубляться в это, то для автоматизации этого процесса рекомендую использовать мою библиотеку, которую уже сбрасывал в этой ветке.
Для этого необходимо просто включить строку
#include <Canvas\iCanvas_CB.mqh>
внутри этой библиотеки будет сформирована экземпляр W структуры Windows, которая будет автоматически обновляться при наступлении события CHARTEVENT_CHART_CHANGE.
W.dx_pix - это как раз масштаб. А именно растояние в пикселях между барами (от 1 до 32 - 1, 2, 4, 8, 16, 32)
отключи фичу прямо сразу, пока не поздно ;-) только по запросув стиле 4ш-ного RefreshRates
слишком частое событие, торговля просто убьётся; учитывай что советники вообще в отдельных тредах и им не особо удобно+быстро получать всё тобой задуманное
отключи фичу прямо сразу, пока не поздно ;-) только по запросув стиле 4ш-ного RefreshRates
слишком частое событие, торговля просто убьётся; учитывай что советники вообще в отдельных тредах и им не особо удобно+быстро получать всё тобой задуманное
ну не так уж и частое.
Только при новом баре или при обновлении максимума или минимума чарта, если юзер не дергает график.
Но, впрочем, ты прав. Наверное имеет смысл добавить выключатель обновления W.
ЗЫ Тем более в режиме прихода нового бара, вся эта процедура обновления W занимает 1-10 милисекунд. Поэтому ничего не убьет.
Разкомментируй строки 580,613,614 и увидишь
ну не так уж и частое.
Только при новом баре или при обновлении максимума или минимума чарта, если юзер не дергает график.
Но, впрочем, ты прав. Наверное имеет смысл добавить выключатель обновления W.
ЗЫ Тем более в режиме прихода нового бара, вся эта процедура обновления W занимает 1-10 милисекунд. Поэтому ничего не убьет.
+-во время прихода нового бара, обновлений high/low, начинается самая жара
графика это хорошо, но только чтобы не мешала основному делу