MMA_Breakout_strategy_volume I (без MM или MF) - закодировано WhooDoo22

 
Я подумал, что для новичков (и опытных кодеров) будет полезно разместить обновленную версию MMA_Breakout_strategy_Volume I, чтобы новички/опытные кодеры могли понять два важных обновления, необходимых для того, чтобы этот советник (том I) работал более гладко и эффективно. Эта версия не включает управление капиталом и рыночную фильтрацию и по-прежнему считается I томом. (Я все еще решаю, как внедрить функции управления капиталом и рыночной фильтрации в I том, чтобы в конечном итоге превратить I том во II. Я поделюсь частью своих мыслей о выполнении обеих задач - MM (управление деньгами) и MF (фильтрация рынка). ММ: Как вы хорошо знаете, в первом томе используется один ордер, и он частично закрывает свой ордер при пересечении скользящих средних. Цель ММ - увеличить размер лота по мере роста баланса счета (пример: баланс счета увеличивается на $1,000, блок кода изменит текущий размер лота на удвоенный. Этот блок кода также уменьшит размер лота до половины текущего размера лота, если баланс счета уменьшится на $1 000. Это текущая цель для ММ. Что касается MF: я тщательно рассматриваю все варианты, прежде чем открыть эту дверь на мою неопытную территорию кодирования. Я могу придумать несколько способов решения этой задачи. Для меня остается открытым вопрос, какой вариант мне выбрать? Я начал кодировать версии тома II с функцией MF, чтобы познакомиться с новыми и различными техниками. Повторение проб и ошибок приведет меня к завершению этого проекта. Обязательно прогоните период с 1999-2012.10 на таймфрейме M15 EURUSD, чтобы проверить самый последний бэк-тест, опубликованный в первом томе (он также частично считается вторым томом). В качестве примечания, я поражен тем, что первый том был скачан 10,000 раз в течение двух или около того месяцев! ВАУ! :) Я так рад, что моя работа оказалась ценной для кодеров/трейдеров. Спасибо. - WhooDoo22.
 
Как вы можете выбрать билет с номером 0 на реальном или демо-счете? Что произойдет, если любой из ваших вызовов OrderSelect() не сработает? Почему вы не проверяете возвращаемые значения и не сообщаете об ошибках?

Что такое возвращаемые значения функций? Как их использовать?
 
Здравствуйте, Саймон, я понимаю, что в настоящее время есть мелкие вопросы, менее приоритетные, чем ММ и МФ. Я действительно планирую доработать том II после добавления MM и MF. Я доработаю его, добавив код для отбора ордеров по магическому числу, код для запуска тома II на 4-5-значных брокерах и т.д. Я понимаю, что есть много мелких деталей, которые нужно проконтролировать, но пока что более сложная работа будет сделана первой. Ваш призыв принят, и я планирую перейти этот мост, когда до него доберусь. Я перейду по указанной вами ссылке. Спасибо.
 
WhooDoo22:
Здравствуйте, Саймон, я понимаю, что на данный момент есть мелкие вопросы, менее приоритетные, чем ММ и МФ. Я действительно планирую просмотреть том II после добавления MM и MF. Я доработаю его, добавив код для отбора ордеров по магическому числу, код для запуска тома II на 4-5-значных брокерах и т.д. Я понимаю, что есть много мелких деталей, которые нужно проконтролировать, но пока что более сложная работа будет сделана первой. Ваш призыв принят, и я планирую перейти этот мост, когда до него доберусь. Я зайду по указанной вами ссылке. Спасибо.
Если бы я думал, что то, что я написал в той ссылке, было мелочью или опцией, или чем-то, что можно добавить позже, если позволит время, я бы не нашел времени написать это... ...это необходимо IMO! Сколько сообщений спрашивают об ошибке 130? или ошибке 138? Проверьте возвращаемые значения, если у вас есть проблема, распечатайте ошибку и все соответствующие переменные... ... тогда, когда у вас возникнет проблема, у вас будет информация, необходимая для определения причины.

Вы не можете вернуться в прошлое и найти, что было в Ask, когда вы пытались разместить заказ, а он не прошел... .
 

Что такое переменная и как она может быть номером билета, когда вы делаете это с ним?

i++;

В данный момент у меня есть 4 реальные сделки, их номера билетов не являются последовательными...

 

Саймон,

Если бы я думал то, что написал...

RE: I understand that this fix is a necessity. Я исправлю это, я полагаю, раньше, чем я думал, потому что вы кажетесь очень непреклонным в применении этого исправления. Я согласен, что это исправление должно быть применено, и я проведу тесты с функцией проверки ошибок, чтобы изолировать источник ошибки. Я вернусь к этому Саймону. Спасибо.

Что такое переменная i...

RE: Переменная i является фиктивной переменной билета, но ;) i на самом деле не является билетом; i рассматривается экспертом как простая переменная. Эксперт считает переменную i вместо того, чтобы считать фактический номер билета (альтернативный метод подсчета текущего билета).

Как она может быть номером тикета, когда вы так с ней поступаете?

RE: Переменная i на самом деле не является номером билета. i - это фиктивная переменная билета, которая подсчитывается экспертом для поддержания текущего счета номеров билетов. В итоге, переменная i не считается номером билета.


Я хотел бы ответить на ваши сообщения как можно скорее, но не могу дать развернутые ответы, пока у меня нет времени на объяснение и обсуждение.

Спасибо за ваш важный пост!

 
WhooDoo22:

Саймон,

Я хотел бы ответить на ваши сообщения как можно скорее, но не могу дать развернутые ответы, пока у меня нет времени на объяснение и обсуждение.

Спасибо за ваш важный пост!

Вы можете ответить, когда у вас будет время, это нормально :-)

Еслиi - это фиктивный номер билета ... ... какой смысл делать это?

OrderClose( i,  0.01,Ask,30,CLR_NONE); 

Разве это не гарантирует неудачу?

 
Я считаю, что существует несколько способов выбора ордеров, все методы выбора ордеров должны использовать функцию OrderSelect(). С учетом сказанного, я не вижу причин, по которым это может привести к сбою, поскольку советник четко выполняет функцию OrderClose() для всех ордеров без ошибок в тестере стратегий. Возможно, что ошибки будут появляться, но я не заметил ни одной за последнее время. Более конкретно я скажу следующее: "Переменная i" - это замена номера тикета И переменная i используется блоками функции OrderClose(). Прошло уже некоторое время, но я полагаю, что причина, по которой я написал код в том виде, в котором он был написан, заключается в том, что я начинаю программу в первом блоке кода OrderSend(), ЕСЛИ OrdersHistoryTotal() == 0. Мне нужно было выбрать билет, а не переменную i, чтобы функция OrdersHistoryTotal() распознала, какой билет я выбираю, и могла "дать зеленый свет" для отправки заказа. Мне бывает трудно выразить это словами. Спасибо.
 
WhooDoo22:
Я считаю, что существует несколько способов выбора ордеров, все методы выбора ордеров должны использовать функцию OrderSelect(). С учетом сказанного, я не понимаю, почему это может привести к сбою, поскольку советник четко выполняет функцию OrderClose() для всех ордеров без ошибок в тестере стратегий.
Как он работает на демо-счете, где у вас есть номера билетов, которые не начинаются с 1 и постепенно увеличиваются?
 
Я не знаком с различиями между демо и лайв, за исключением концепции виртуальных и реальных средств на счетах. Я не знаю об этой разнице. В настоящее время я считаю, что OrdersHistoryTotal() начинается с 0 до того, как любой ордер будет подан и завершен. Я полагаю, что функция OrderClose() не будет выполнена, если ;) не будет переменной для выбора. Вот где переменная i представлена в первом блоке кода при выполнении ниже "i++". Как только переменная i становится равной 1 aka i++, функция OrderClose() проверяет наличие 1. Функция OrderClose() говорит: "Да, я вижу i, теперь мы можем закрыть этот ордер. Спасибо.
 
WhooDoo22:
Я не знаком с различиями между демо и лайв, за исключением концепции виртуальных и реальных средств на счетах.
Хорошо, я говорю о разнице между тестером стратегий и Demo/Live ... в ST первый ордер является тикетом 1 ... я только что разместил сделку Demo и номер моего тикета 46322730 ... если я размещу вторую сделку, номер тикета не будет46322731 В этой ситуации как работает инкремент переменной, которую вы используете для номера тикета?