[АРХИВ!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 4. - страница 527

 
hoz:


 Евгений, я конечно, могу всё понять НО, это написано в так называемом учебнике. Как мне идти от простого, где смотреть ? Если ты сам программист, возможно, для тебя это очевидно. Но я не въехал совсем.

 Да и ветка для новичков, я же задаю вопросы по теме.. Уже второй день пытаюсь понять. Пожалели бы уже, и объяснили бы кто-нибудь. :( 

 А по поводу:


  Если не копать, то и понять не возможно. А если не понять, то пользоваться тоже не получится в полной мере.


Нужна практика (отработка на терминале). Читайте чужие коды, ищите логику, снова практика. Ставьте себе  задачи для получения логических ответов от терминала или сервера.
Усложняйте задачи.
Терминал ,Учебник, Документация -- отличные источники для учебы и творческой работы, тем более для новичка (испытано на себе).
 
Учитесь на ошибках для того, чтобы не допускать их! Им отдельное почетное место в своей памяти.
Это спорт на уровне творчества (свои приёмчики, постоянное нахождение в форме).
А правит вашими действиями и мыслями Логика.
 
За два дня невозможно прожить два месяца.
 

перерабатываю моноэксперта на мультивалютный. Подскажите, как в этом случае в  МТ4 обновляются цены и загружаются бары для других пар? 

Может где есть описание как работает эксперт, прикрепленный к одному графику с другой валютной парой? 

 
Usual_Trader:

перерабатываю моноэксперта на мультивалютный. Подскажите, как в этом случае в  МТ4 обновляются цены и загружаются бары для других пар? 

Может где есть описание как работает эксперт, прикрепленный к одному графику с другой валютной парой? 


Вам нужны как минимум 2 функции: MarketInfo() и Refreshrates()

Первая позволит запрашивать цены с другого торгового инструмента, а вторая - обновит данные для использования первой. Поэтому в коде сначала вызываете   Refreshrates(), а затем можете делать запросы MarketInfo(). Но это в том случае, если советник, скажем спал какое-то время функцией Sleep(), или очень долго производил какие-то вычисления. Мол, пока это происходило котировки пришли новые и нужно обновить их с помощью   Refreshrates()

 
drknn:


Вам нужны как минимум 2 функции: MarketInfo() и Refreshrates()

Первая позволит запрашивать цены с другого торгового инструмента, а вторая - обновит данные для использования первой. Поэтому в коде сначала вызываете   Refreshrates(), а затем можете делать запросы MarketInfo(). Но это в том случае, если советник, скажем спал какое-то время функцией Sleep(), или очень долго производил какие-то вычисления. Мол, пока это происходило котировки пришли новые и нужно обновить их с помощью   Refreshrates()


Как я понял, Refreshrates() работает по текущему инструменту или все-таки обновляет данные по всем инструментам?

 

Добрый вечер.

В кодо-писании я "карась" :) Вот собираю советник на индикаторе Фибоначчи. Пока на стратегию необрашаите внимание. Загвозтка в следуюшем - 7 уровння Фибоначчи, как зделать чтоби на каждом пересечонном уровне выставлялись только 2 разних отложных ордера и не более. 

Был би презнателен за какую либо подсказку.

За ранее извеняюсь за мои неловкий Руский. 

Файлы:
 
Usual_Trader:


Как я понял, Refreshrates() работает по текущему инструменту или все-таки обновляет данные по всем инструментам?


По всем инструментам.
 
Sarguss:

Добрый вечер.

В кодо-писании я "карась" :) Вот собираю советник на индикаторе Фибоначчи. Пока на стратегию необрашаите внимание. Загвозтка в следуюшем - 7 уровння Фибоначчи, как зделать чтоби на каждом пересечонном уровне выставлялись только 2 разних отложных ордера и не более. 

Был би презнателен за какую либо подсказку.

За ранее извеняюсь за мои неловкий Руский. 


Работа

P.S. "На то щука, чтоб карась не дремал".(Русская пословица).

 
Roll:


Работа

P.S. "На то щука, чтоб карась не дремал".(Русская пословица).


Спосибо за пословицу:)) Какраз по теме - 

Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 4.

Допишите - Любои ответ ПРОФИ! 

 

Здравствуйте эксперты, прошу помощи в создании скрипта. На графике обозначены 2 МА(Moving Average) индикатора, МА1 обозначен красным цветом, а МА2 синим. Задача скрипта: пересечение МА1 и МА2 так, чтобы красная линия пересекла синию сверху вниз. Эту точку назовем А, а если красная пересекла синюю сверху вниз то это точка В. Так вот, в точке А нужно чтобы скрипит закрыл ордер селл и открыл ордер бай, а в точке В закрыть ордер бай и открыть ордер селл. Этот цикл должен быть бесконечным. Прикрепил похожий код, помогите пожалуйста, буду очень благодарен 

 

Файлы:
 
Lisi4ka330:
 Чтобы не усугублять путаницу, хочу исправить ошибку, допущенную мной в предыдущем ответе,  запись   "array1[Bars*6-60,60][0] " - не правильна, т.к. Bars*6 - это общее количество элементов а массиве array1.  Каждый бар имеет по 6 свойств, допустим у нас имеется 30 баров,   умножив их на 6,  мы получим количество элементов в первом массиве - 180 . Второй массив имеет всего 60 свободных "ячеек" (т.е. 10 х 6 свойств), поэтому мы должны выбрать только 60 элементов из первого массива для копирования. С помощью выражения [Bars*6-60,60] мы из общего количества вычитаем 60,т.е 180 - 60 = 120, т.е. 120 элемент первого массива запишется в нулевой элемент второго, 121 в 1-й и.т.д. , другой вопрос каким образом получается,  что информация о последих сформировавшихся барах  содержатся не в начале первого массива, а в конце... но видимо ответ кроется в коде функции, и глубже капать уже нет смысла...


  Ну база то у меня есть, это не причём. Логически Наталья написала верно. И, даже в случае, когда у нас 30 баров, то значение индекса массива array1 получилось 120. Соответственно, значение соответствующего индекса у массива array2 при инициализации уже в коде объявлено как 10.

 https://docs.mql4.com/ru/array/ArrayCopy

double array2[10][6];

 В книге по Си я прочитал, что:

 В  языке  Си  не  контролируется  выход  за  границы  массива,  то  есть  формально  вы  можете записать  что-то  в  элемент  с  несуществующим  индексом,  например  в  A[345]  или  в  A[-12]. Однако при этом вы стираете какую-то ячейку в памяти,  не  относящуюся  к  массиву,  поэтому последствия такого шага непредсказуемы и во многих случаях программа зависает. 

 Получается индекс у массива array1(исходного массива) больше соответствующего индекса массива array2 (массива-приёмника). А следовательно так делать не следует! Вот что я имел ввиду..

Причина обращения: