Как заработать деньги. Проект сам себе финансист.
ноябрь 2024
пн вт ср чт пт сб вс
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30

Пишем простейшего эксперта

Пишем простейшего эксперта На наш взгляд, наиболее простым способом для новичка изучить процесс написания экспертов будет подробный разбор специально написанных для этой цели экспертов. На данный момент (да и далее в своих статьях) мы не будем ставить перед собой цель написать супер гениального эксперта, который способен будет зарабатывать десятки процентов в месяц и делать это стабильно. Основная цель - показать все аспекты программирования экспертов, а не создать биржевой "грааль". Итак, внимательно изучите код эксперта ниже, но не волнуйтесь, что на данный момент Вам пока еще ничего не понятно. В следующих выпусках мы вместе с вами во всех подробностях разберем каждую строчку этого эксперта. Благодарим Вас за то, что Вы мужественно дочитали до этой строчки. Как было сказано выше, в следующих выпусках мы подробно остановимся на каждой строчке этого эксперта, и проясним все непонятные моменты.
Полная версия статьи
Категория: Советники форекс


'Критическая секция': разграничение доступа к ресурсу

"Критическая секция": разграничение доступа к ресурсу В данной статье будет рассказано о способе организации "критической секции" в советнике. Дело в том, что если в момент выполнения этих функций будет осуществлен доступ к массивам данных, хранимых в глобальных переменных, из нескольких советников одновременно, то результат будет непредсказуемым и в большинстве случаев данные будут испорчены. Для того, чтобы избежать этого, мы создадим объект "критическая секция", который может находиться в двух состояниях: "зеленый свет" (-1); и "красный свет" (1). В каждый конкретный момент только один советник может получить доступ к данным. Пока советник получает данные, будет гореть "красный свет" и другие советники будут ждать "зеленового света". Если горит "зеленый свет", то дорога свободна, т. к. никто в данный момент к данным не обращается. Напишем две функции: Lock() - вызываем ее перед началом работы с ресурсом.
Полная версия статьи
Категория: Советники форекс


OrderSend() - открытие позиции или размещение отложенного ордера

OrderSend() - открытие позиции или размещение отложенного ордера В прошлых выпусках мы узнали о большом количестве функций, с помощью которых можно получить информация об ордере, выделенном с помощью функции OrderSelect(). Большинство из этих функций очень важны и полезны. Однако, Вам наверняка уже хочется приступить к изучению функций, с помощью которых можно открывать и закрывать позиции, выставлять, модифировать и удалять ордера. Сегодня будет рассказано о первой такой функции - функции OrderSend(). Формат функции: Функция OrderSend() предназначена для размещения отложенного ордера или открытия позиции. Функция вовзращает номер тикера открытой позиции или размещенного отложенного ордера. В случае неудачи функция OrderSend() возвращает число -1. При этом: Symbol - инструмент, по которому будет открыта позиция или размещен отложенный ордер; Cmd - тип ордера (см. таблицу 1); Volume - объем в лотах; Price - цена открытия позиции или уровень отложенного ордера; Slippage - максимально допустимое отклонение между price и ценой сервера…
Полная версия статьи
Категория: Советники форекс


Пример использования функции GlobalVariableSetOnCondition()

Пример использования функции GlobalVariableSetOnCondition() В предыдущей статье мы узнали о функции GlobalVariableSetOnCondition(). В этом же выпуске мы рассмотрим пример ее практического использования. О том, где и как используются эти две функции мы расскажем в следующих статьях. Автор статьи: Андрей Ведихин
Полная версия статьи
Категория: Советники форекс


GlobalVariableSet() - установка нового значения глобальной переменной

GlobalVariableSet() - установка нового значения глобальной переменной В предыдущей статье мы узнали о том, как проверить наличие глобальной переменной с помощью функции GlobalVariableCheck(). Предположим, что ее не существует или же нам надо изменить ее значение. В этом случае надо использовать функцию GlobalVariableSet(). datetime GlobalVariableSet(string name, double value) Функция GlobalVariableSet() устанавливает новое значение value глобальной переменной с именем name и в случае успеха возвращает время последнего доступа к глобальной переменной. Если произошла какая-то ошибка, то функция возвращает 0. Код ошибки, как обычно, можно получить с помощью функции GetLastError(). Если глобальная переменная с именем name отсутствовала, то она создается и она принимает значение value. Пример использования функции GlobalVariableSet() можно найти в написанной нами функции WaitBeforeTransaction(): // если глобальная переменная LastTradeTime не существует, // то создать ее if (!GlobalVariableCheck("LastTradeTime")) { // Если произошла какя-то ошибка при вызове функции // GlobalVariableCheck(), выйдем с ошибкой if (GetLastError()!=0)
Полная версия статьи
Категория: Советники форекс


Определение режима тестирования на истории с помощью функции IsTesting()

Определение режима тестирования на истории с помощью функции IsTesting() Из предыдущей статьи мы узнали о функции WaitBeforeTransaction(), которая выдерживает паузу между двумя последовательными торговыми операциями. В коде этой функции встречается очень много незнакомых функций. В этом и последующих выпусках я планирую очень кратко о них рассказать. Сам исходный код функции обладает достаточным количеством комментариев, и я уверен, что логика реализации этой функции Вам станет абсолютно понятна после изучения следующих функций: IsTesting() GlobalVariableCheck() GlobalVariableSet() GlobalVariableGet() LocalTime() Начнем с рассмотрения функции IsTesting(). bool IsTesting() Функция IsTesting() возвращает true, если эксперт работает в режиме тестирования на исторических данных, и false - если работа ведется на демо - или реальном счете. Дело в том, что необязательно сразу заставлять эксперта торговать на демо - или реальном счете. Гораздо эффективнее вначале оттестировать эксперта на исторических данных, которые есть в клиентском терминале.
Полная версия статьи
Категория: Советники форекс


Как убедиться, что советник может торговать

Как убедиться, что советник может торговать В прошлых выпусках мы узнали о различных торговых функциях, с помощью которых можно открывать/закрывать позиции, выставлять/модифицировать/удалять ордера: OrderSend(), OrderModify(), OrderDelete(), OrderClose() и OrderClosyBy(). В каждом случае мы исходили из того, что советнику разрешено торговать. Но в реальности это не всегда так. В данной статье будет рассказано о трех функциях: IsExpertEnabled(), IsTradeContextBusy() и IsTradeAllowed(). Функция IsExpertEnabled() bool IsExpertEnabled() Функция IsExpertEnabled() возвращает true, если экспертам разрешено совершать сделки и управлять ордерами. Дело в том, что на уровне настроек клиентского терминала можно запретить ВСЕМ экспертам торговать. Это можно сделать, например, с помощью команды главного меню: Сервис -> Настройки. В появившемся окне выбираем вкладку "Советники", в которой ставим или убираем галочку напротив "Включить советники...". Более простой способ отключать/включать советников - кнопка. Если же на уровне настроек терминала работа экспертов запрещена, то функция IsExpertEnabled() вернет false.
Полная версия статьи
Категория: Советники форекс


GlobalVariableCheck(): проверка существования глобальной переменной

GlobalVariableCheck(): проверка существования глобальной переменной В этом и последующих выпусках мы немножко углубим наши познания о глобальных переменных и о функциях, с ними связанных. Для человека, имеющего уже опыт написания экспертов, выражение "глобальные переменные" может внести небольшую путанницу. Дело в том, что в действительности существует два вида "глобальных переменных": Переменные, которые видны из любой функции ОДНОГО эксперта (т. е. являются глобальными в пределах этого эксперта); и Переменные, которые являются общими для ВСЕХ экспертов. О глобальных переменных первого типа - тех, которые являются общими для всех функций ОДНОГО эксперта, - я рассказывал ранее, в выпуске "Глобальные переменные". Сейчас же речь пойдет именно о глобальных переменных второго типа - общих для ВСЕХ экспертов. Глобальная переменная второго типа - это переменная, к которой можно обратиться из любого эксперта. Если в течение четырех недель не было сделано попытки прочесть значение глобальной переменной или записать в нее новое значение, то глобальная переменная автоматически удаляется клиентским терминалом.
Полная версия статьи
Категория: Советники форекс


RefreshRates(): обновление информации о текущих котировках

RefreshRates(): обновление информации о текущих котировках В прошлых выпусках в эксперте мы использовали функцию RefreshRates(), чтобы обновить информацию о текущих котировках. В нашем примере мы были вынуждены использовать эту функцию, потому что за время ожидания, пока другой эксперт закончит торговать и функция WaitUntilTradingIsAllowed( ) завершит свое исполнение, котировки могли измениться. Чтобы не пытаться совершить сделку по старым котировкам и не получить сообщение об ошибке, мы обновляем информацию о текущих котировках с помощью функции RefreshRates(). bool RefreshRates() Функция возвращает true, если информация была обновлена, и false, если данные не изменились и в обновлении нет нужды. Если данные были обновлены, то вызов функции RefreshRates() также обновит время последней котировки, которое возвращается функцией CurTime(). Считается хорошим тоном вызывать функцию RefreshRates() перед вызовом торговой функции, если перед этим эксперт что-то очень долго или пересчитывал. Или же если эксперт ждал, пока другой эксперт закончит торговать и торговый поток освободиться.
Полная версия статьи
Категория: Советники форекс


Выдерживаем паузу между торговыми операциями

Выдерживаем паузу между торговыми операциями В клиентском терминале MetaTrader 4 в отличии от MetaTrader 3 нет жесткого ограничения на паузу между торговыми операциями, совершаемых советниками. Поэтому теоретически можно совершать хоть десятки сделок в секунду. Тем не менее чрезмерное злоупотребление этим приведет к тому, что Ваш счет будет заблокирован для торговли. Это произойдет или потому, что сервер подумает, что такое количество запросов в секунду может осуществлять только злоумышленник, который ставит перед собой лишь цель "завалить" торговый сервер. Или потому, что сотнями запросами в минуту Вы разъярите дилера - сотрудника дилингового центра, которому приходится обрабатывать Ваши запросы. Считается правилом хорошего тона не совершать торговые операции чаще, чем 1 раз в 5-10 секунд. Конечно, в любом правиле могут быть исключения и иногда Вам крайне необходимо совершить операции с меньшим временным лагом, но старайтесь этой возможностью не злоупотреблять.
Полная версия статьи
Категория: Советники форекс


Прыг: 01 02 03 04 05 06 07 08 09 10 11
Скок: 10

Есть что сказать? Не стесняйтесь!






Видео по теме:




В мире больших денег

  • Самые богатые люди
    планеты. Ежегодные рейтинги FORBS. Истории успеха признаных финансовых гуру
  • Самые дорогие вещи:
    Часы, автомобили, ноутбуки стоимотью в десятки и сотни тысяч долларов. Рубрика "Чтоб я так жил"
  • Денежные прогнозы
    Что покупать и что продавать? Периодические прогнозы цен на иностранные валюты, акции крупнейших компаний и драгоценные металлы

ВКонтакте с деньгами

УГОЛОК АДМИНИСТРАТОРА