AlexeyVik: Сейчас тебе начнут объяснять, что угол зависит от масштабирования графика и это сделать невозможно... Но если возьмёшь не угол, а только тангенс этого угла, то вполне можешь выполнить задуманное.
Интересно,а как то более подробно можно узнать что это такое и как его определить,знаю в геометрии в школе учили тангенсы и катангенсы,но увы не помню.)У фреша спрашивал на форуме,но так и не получил конкретного ответа.
Объясните пожалуйста, как распихать данные из таблицы (*.csv) в трёх-мерный статический массив. В первом столбце таблицы - индекс по первому измерению массива, Во втором - индекс по второму измерению массива, В третьем и далее столбцах - сами значения по третьему измерению массива.
void AAA()
{
int Handle; // Файловый описательstring File_Name = "AAA.csv"; // Имя открываемого файлаstring str_1 = ""; // 1 Номер индекса по первому измерениюstring str_2 = ""; // 2 Номер индекса по второму измерениюstring str_3 = ""; // 3 Значениеstring str_4 = ""; // 4 Значениеstring str_5 = ""; // 5 Значение
Handle=FileOpen(File_Name, FILE_READ, ";"); // Открытие файлаwhile(FileIsEnding(Handle)==false) // До тех пор, пока файловый...
{ // ...указатель не в конце файла// Чтение данных из строки до файлового разделителя
str_1 = FileReadString(Handle); // 1 Номер индекса по первому измерению
str_2 = FileReadString(Handle); // 2 Номер индекса по второму измерению
str_3 = FileReadString(Handle); // 3 Значение
str_4 = FileReadString(Handle); // 4 Значение
str_5 = FileReadString(Handle); // 5 Значениеif(FileIsEnding(Handle)==true) // Файловый указатель в конце файлаbreak; // Выход из цикла чтения
????????????????????????????????????????????????????
}
FileClose(Handle); // Закрываем файлreturn; // Выход из функции
}
Leo59: Объясните пожалуйста, как распихать данные из таблицы (*.csv) в трёх-мерный статический массив. В первом столбце таблицы - индекс по первому измерению массива, Во втором - индекс по второму измерению массива, В третьем и далее столбцах - сами значения по третьему измерению массива.
Если для анализа в самом экселе, то сводная таблица.
Ну или покажите часть данных, похоже придется завести вспомогательные строковые массивы которые будут сопоставлять индекс-значение.
.... похоже придется завести вспомогательные строковые массивы которые будут сопоставлять индекс-значение.
void AAA()
{
int Handle; // Файловый описательstring File_Name = "AAA.csv"; // Имя открываемого файлаstring str_1 = ""; // 1 Номер индекса по первому измерениюstring str_2 = ""; // 2 Номер индекса по второму измерениюstring str_3 = ""; // 3 Значениеstring str_4 = ""; // 4 Значениеstring str_5 = ""; // 5 Значение
Handle=FileOpen(File_Name, FILE_READ, ";"); // Открытие файлаwhile(FileIsEnding(Handle)==false) // До тех пор, пока файловый...
{ // ...указатель не в конце файла// Чтение данных из строки до файлового разделителя
str_1 = FileReadString(Handle); // 1 Номер индекса по первому измерению
str_2 = FileReadString(Handle); // 2 Номер индекса по второму измерению
str_3 = FileReadString(Handle); // 3 Значение
str_4 = FileReadString(Handle); // 4 Значение
str_5 = FileReadString(Handle); // 5 Значениеif(FileIsEnding(Handle)==true) // Файловый указатель в конце файлаbreak; // Выход из цикла чтения// Завели строковый массив// Преобразование типов данных и запись в масссивArrayResize(Mas1, SizeMas1+1); // Увеличили размер массива Mas1
Mas1[SizeMas1][0] = StrToInteger(str_1); // 0 Номер индекса по первому измерению
Mas1[SizeMas1][1] = StrToInteger(str_2); // 1 Номер индекса по второму измерению
Mas1[SizeMas1][2] = StrToDouble(str_3); // 2 Значение
Mas1[SizeMas1][3] = StrToDouble(str_4); // 3 Значение
Mas1[SizeMas1][4] = StrToDouble(str_5); // 4 Значение
SizeMas1++; // Новый размер массива Mas1// Что дальше ????????????????????????????????????????????????????
}
FileClose(Handle); // Закрываем файлreturn; // Выход из функции
}
ObjectCreate("MyArrow",OBJ_ARROW_RIGHT_PRICE,0,Time[1],Open[1]) ; // создал OBJ_ARROW_RIGHT_PRICE
Alert( "objectTipe=", ObjectType("MyArrow")," КОД СТРЕЛКИ=",ObjectGet("MyArrow",OBJPROP_ARROWCODE) ) ; // кошмар "objecType=" =22, не понял почему не 36 как в первой строке ??
ResetLastError() ;
Alert("script delete arrow right price=",ObjectsDeleteAll(OBJ_ARROW_RIGHT_PRICE)," lastError=",GetLastError() ) ; // удаленных объектов =0, код ошибки =0
ставлю эксперимент дальше пишу: ObjectsDeleteAll(22) ; // и опять удаленных объектов =0
Используй это https://docs.mql4.com/ru/indicators/imaonarray
Посмотрите пожалуйста код, правильно ли так будет ?
Сейчас тебе начнут объяснять, что угол зависит от масштабирования графика и это сделать невозможно...
Но если возьмёшь не угол, а только тангенс этого угла, то вполне можешь выполнить задуманное.
Интересно,а как то более подробно можно узнать что это такое и как его определить,знаю в геометрии в школе учили тангенсы и катангенсы,но увы не помню.)У фреша спрашивал на форуме,но так и не получил конкретного ответа.
Если в Яндексе забанили, можно попользоваться гуглом.
А в кратце, тангенс угла в прямоугольном треугольнике, есть отношение противолежащего катета к прилежащему.
Переводя это в ситуацию на графике МТ, получаем - противолежащий катет будет равен пунктам (в шт.) а прилежащий в барах (тоже шт.)
Пример:
Открытие EURUSD 6.03 1.3732 открытие 7:03 1.3860 всего 128 пунктов. На M1 1440 баров tan = 128/1440=0.08889
В принципе это уравнение используется в функции ObjectGetValueByShift()
В первом столбце таблицы - индекс по первому измерению массива,
Во втором - индекс по второму измерению массива,
В третьем и далее столбцах - сами значения по третьему измерению массива.
Объясните пожалуйста, как распихать данные из таблицы (*.csv) в трёх-мерный статический массив.
В первом столбце таблицы - индекс по первому измерению массива,
Во втором - индекс по второму измерению массива,
В третьем и далее столбцах - сами значения по третьему измерению массива.
Если для анализа в самом экселе, то сводная таблица.
Ну или покажите часть данных, похоже придется завести вспомогательные строковые массивы которые будут сопоставлять индекс-значение.
.... похоже придется завести вспомогательные строковые массивы которые будут сопоставлять индекс-значение.
Как удалить все объекты например типа OBJ_ARROW_RIGHT_PRICE ?
Команда ObjectsDeleteAll(OBJ_ARROW_RIGHT_PRICE) не удаляет ! даже после смены таймфрейма (чтобы перерисовать весь график принудительно)
Написал простой скрипт, в комментах что пишет на экране:
Alert("obj_arrow_right_price=",OBJ_ARROW_RIGHT_PRICE) ; // =36
ObjectCreate("MyArrow",OBJ_ARROW_RIGHT_PRICE,0,Time[1],Open[1]) ; // создал OBJ_ARROW_RIGHT_PRICE
Alert( "objectTipe=", ObjectType("MyArrow")," КОД СТРЕЛКИ=",ObjectGet("MyArrow",OBJPROP_ARROWCODE) ) ; // кошмар "objecType=" =22, не понял почему не 36 как в первой строке ??
ResetLastError() ;
Alert("script delete arrow right price=",ObjectsDeleteAll(OBJ_ARROW_RIGHT_PRICE)," lastError=",GetLastError() ) ; // удаленных объектов =0, код ошибки =0
ставлю эксперимент дальше пишу: ObjectsDeleteAll(22) ; // и опять удаленных объектов =0
Как удалить все объекты например типа OBJ_ARROW_RIGHT_PRICE ?
Прочитать еще раз справку:
ObjectsDeleteAll
Удаляет все объекты с указанным типом и в указанном подокне графика.
Если объекты в главном окне графика:
Прочитать еще раз справку:
ObjectsDeleteAll
Удаляет все объекты с указанным типом и в указанном подокне графика.
Если объекты в главном окне графика: