5 цифр обнаружения - страница 5

 
jjc:
...Если вы создаете систему для использования другими людьми, а не только для себя, то возможность вводить значения в пунктах является важным фактором простоты использования. Средний игрок знает, что означает 50 пунктов, но ему приходится много думать и перепроверять, имеет ли он в виду значение 0,005, а не 0,0005 или 0,05 или что-либо еще.

Да, это то, что я сказал: "Определение кажется важным для разработчика, который хочет запрограммировать коммерческую стандартную программу и хочет, чтобы у пользователя была гибкость в определении точного количества долларов, которыми он хочет рискнуть". Я не согласен с тем, что средний игрок знает, что подразумевается под 50 пунктами. ИМО, людям нравится думать в долларах или стандартных единицах их базовой валюты. Я бы перечислил свой личный опыт того, как я ходил туда-сюда по поводу определения пункта/пункта, но это может занять много времени.

Если вы не СУПЕР-программист с ГОДАМИ опыта работы на Форекс за плечами, нет смысла пытаться написать универсальную коммерческую программу для конечных пользователей. Когда кто-то покупает советника, он прежде всего ожидает, что он будет прибыльным. Затем, во-вторых, они ожидают, что программа будет гибкой до невозможности. Например, команда закрывать все ордера до выходных, возможность указать, какой суммой денег я хочу рискнуть и т.д. Как мы все знаем, достаточно сложно запрограммировать прибыльного советника, не делая его статичным для одного таймфрейма, валюты и т.д.

Но здесь вы пытаетесь запрограммировать коммерческий советник для среднестатистического Джо, который слышал о 2% риске и "не торгуйте по выходным". И хотят указать точно 20$ убытка на GBP/JPY, в то время как их базовая валюта - USD. Система была разработана для использования процента от ATR, сколько бы пунктов/пунктов или долларов это ни было. Теперь вся система сломана, так как она не будет соответствовать ожиданиям конечного пользователя #1 прибыльной. Однако если кто-то делает инструмент для конечных пользователей, чтобы они могли играть с ним, то это уже другая история.

ИМО, если бы я/я сам/лично собирался сделать систему, которой бы хотела торговать моя тетя или младший брат. Я бы сделал ее как можно более негибкой, поскольку единственное, что они могут указать, это Risk%, а любой другой периметр, с которым программа не предназначена работать, будет отклонен, например, вы укажете неправильный таймфрейм или валюту. Правда, большинство коммерческих систем позволяют пользователям указывать в пунктах. Программист не может нести ответственность, если конечный пользователь совершает ошибки типа "ой, я хотел рискнуть только $100, а в итоге получил $1000". Он ввел стопы в 100 пунктов, но использовал кредитное плечо 1000:1. Если вы не собираетесь предупреждать о каждом повороте и предупреждении в своем программировании, это безнадежно.

 
andydcoles:

Единственное, для чего MQL4 использует пипсы, - это для кодирования значения спреда в запросах ордеров. Все остальное задается в терминах курса. В качестве альтернативы можно использовать разницу курсов валют в качестве входных параметров для T/P, S/L и т.д. Например, укажите 0.0050 для S/L в 50 пипсов. Это работает независимо от разрядов и требует масштабирования на 100 только при обнаружении "JPY" в Symbol() в качестве валюты котировки. Это подходит для всех 21 основных пар (все комбинации USD, EUR, GBP, JPY, CHF, CAD, AUD) и, вероятно, для второстепенных пар (которыми мало кто торгует из-за более высоких спредов). Если вы действительно беспокоитесь о "пуленепробиваемости", вы можете ввести строку валюты и множитель в качестве входных параметров (например, JPY и 100). Это можно расширить и для экзотики, используя разных брокеров.

Я действительно думаю, что для большинства MQL4-кодеров это не имеет значения; когда они успешно реализуют и отлаживают прибыльный торговый алгоритм, они будут использовать его на своем собственном реальном счете. Мало кто захочет продавать или отдавать его, потому что рынок, скорее всего, скорректируется в противовес алгоритму.

Спасибо за ваш ответ, Энди. Но теперь я разобрался с функциями. Оглядываясь назад на свои последние сообщения, я понимаю, что в то время я был немного одержим этой чертовщиной :). Думаю, я больше искал, как вычислить Point, TickSize и т.д., а не "пуленепробиваемость" моего кода. 7bit начал тему в поисках способа программного определения 5-значной цены. И, соответственно, она разрослась до поиска/исследования определений предопределенных переменных MarketInfo-s. Еще раз спасибо за ваш вклад.
~cameo

 

If you are building a system for other people to use, not just for yourself, then the ability to enter values in pips is a major ease-of-use consideration. The average punter knows what they mean by 50 pips, but has to think quite a lot, and double-check, whether they mean a value of 0.005 rather than 0.0005 or 0.05 or whatever. The ability to enter parameters in pips matches how most end-users think in the forex world, and reduces errors. It also offers the prospect of being able to use the same parameter values on 2/3 and 4/5 digit symbols. I don't have much exposure to the mass-market commercial EAs, but I've never seen one where such parameters were entered as a price differential rather than a pip value.

@Jjc : Я рад, что кто-то со мной на одной волне в этом вопросе :). Я бы выбрал простоту использования и уменьшение количества ошибок в любое время суток :)

Это. Лично я не работаю в пунктах, я работаю в пунктах. Все ценовые данные даются в пунктах. Разница между двумя значениями цены - в пунктах. Мой стоплосс и точка выхода - все в пунктах... это конкретная рыночная цена. Понятие пунктов - интересное понятие, но, как могут подтвердить многие здесь присутствующие, как только вы пытаетесь соединить понятие пунктов с понятием пунктов, вы теряете строгость и надежность, и ради чего? [...]

@Phil : Я могу оценить ваши и другие различные способы расчета ценовых параметров. У нас есть свои предпочтения, зачем их менять, если мы не считаем нужным... Моя цель, как вы, возможно, хорошо знаете, заключается в изучении вычислений, лежащих в основе MarketInfo, для использования в различных инструментах и брокерах. Ваш метод использования цены, безусловно, является жизнеспособным и надежным способом.

Если вы не СУПЕР программист с ГОДАМИ опыта работы на Форекс за плечами, нет смысла пытаться написать универсальную коммерческую программу для конечных пользователей. Когда кто-то покупает советника, он прежде всего ожидает, что он будет прибыльным. Затем, во-вторых, они ожидают, что программа будет гибкой до невозможности. Например, команда закрывать все ордера до выходных, возможность указать, какой суммой денег я хочу рискнуть и т.д. Как мы все знаем, достаточно сложно запрограммировать прибыльного советника, не делая его статичным для одного таймфрейма или валюты и т.д.

@Ubzen : Лолс! Вам не нужно быть "СУПЕР программистом". Поверьте мне. И хотя это возможно, для меня решение не было предназначено для использования в коммерческой программе или для того, чтобы быть "гибким до невероятности". Я просто хочу тестировать свои стратегии на разных платформах и инструментах без необходимости настраивать и перепроверять параметры.

Что касается пипсов против доллара, могу предложить аналогию, с которой вы, вероятно, знакомы:

Допустим, я хочу сыграть в азартные игры в новом казино. Я захватил с собой $5000 капитала и готов рискнуть 2 процентами своего капитала. Но дом предоставляет фишки в очках! Доллары на кону конвертируются в фишки Points, они деноминированы в 0.0001, 0.0005, 0.001 и т.д. Мало того, на следующий стол требуется в 10 раз больше фишек, номинированных в десятую часть от предыдущего стола, И добавьте к этому, что цвет фишек не так-то просто разобрать! Ладно... Я немного преувеличиваю :)), но вы поняли мою мысль (каламбур не уместен). Доллары или базовая валюта не являются универсальными IMO, в то время как пипсы являются таковыми. Пипсы проще, потому что это не дробь, и, глядя на любой тип графиков и инструментов, если мы видим x пипсов прибыли / убытка, мы быстро, ИМХО, можем оценить и сравнить их.

PS : Я отредактировал и добавил это сообщение много.... почему перечитывая некоторые из моих сообщений иногда чувствовал себя дерьмово?

 

Сейчас я использую нижеприведенные функции, и они подходят для разных брокеров и инструментов.

double vPoint; 
if(Digits == 2 || Digits == 4) vPoint = Point; else
if(Digits == 3 || Digits == 5) vPoint = Point*10; // I use this for my indies; call once on init() & use where Point supposed to be used in start() 

double Poin() 
{ 
   int d = Digits;
   switch(d){
   case 2 : {return(Point); break;}
   case 4 : {return(Point); break; }
   case 3 : {return(Point*10); break;}
   case 5 : {return(Point*10); break:}
   default : return;
} // I just come up with this. Untested but should be ok/robust. To be used to replace Point for trade parameters calculations. 

спасибо, ~ Камея

 

недавно мне это понадобилось, и я закодировал это. вот мое решение:

//по моим наблюдениям, 1% от базового актива составляет около 100 пунктов.

//а "пункт" - это наименьшая единица приращения.

//Поэтому я просто вычисляю количество пунктов, равное 10 для 1% базового актива.

//это количество пунктов равно 100 пипсам.

double AmountPer100Pips()

{

int k=3;

while (MathRound((Bid*0.01)/(Point*MathPow(10, k)))==0))

{

k--;

}

//Comment("1%=", DoubleToStr(Bid*0.01, 5), "-", DoubleToStr(Point*MathPow(10, k), 5), " за 100 пунктов");

return(Point*MathPow(10, k));

}

 
ubzen:

...Среднестатистические Джо, которые слышали о "2% риске" и "не торгуйте по выходным"...


Вы забыли "тренд - ваш друг" - попробуйте вписать это в стратегию диапазона...!

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

-BB-

 
jesuscheung:

Недавно мне это понадобилось, и я закодировал это...


Этот код действительно работает только для валют, котируемых меньше 0.01 тика. Ввод Dow (TickSize 1) или Ger30 (TickSize 0.5) не работает.
 

cameofx: Допустим, я хочу сыграть в азартные игры в новом казино. Я взял с собой $5000 капитала и готов рискнуть 2 процентами своего капитала. Но дом предоставляет фишки в Points! Доллары на кону конвертируются в фишки Points, они деноминированы в 0.0001, 0.0005, 0.001 и т.д. Мало того, на следующий стол требуется в 10 раз больше фишек, номинированных в десятую часть от предыдущего стола, И добавьте к этому, что цвет фишек не так-то просто разобрать! Ладно... Я немного преувеличиваю :)), но вы поняли мою мысль (каламбур не уместен). Доллары или базовая валюта не являются универсальными IMO, в то время как пипсы являются таковыми. Пипсы проще, потому что это не дробь, и, глядя на любой тип графиков и инструментов, если мы видим x пипсов прибыли / убытка, мы быстро, ИМХО, можем оценить и сравнить их.

Ух ты, аналогия с казино. Я совсем упустил этот момент lol. Хорошо, я могу это понять. Допустим, средний Джо заходит в новое казино, вместо $5000 давайте упростим математику и скажем $100. Он протягивает великолепному дилеру 100 долларов Бенджамина Франклина, и прекрасный дилер вежливо спрашивает его: "Сэр, как бы вы хотели вернуть эти деньги? Красными, зелеными или половинками? Средний Джо в полном замешательстве. Его следующий вопрос к ней: "Сколько стоит красная, зеленая и что вы имеете в виду под половиной". В этот момент она улыбается, откидывает волосы набок и опускает плечи со вздохом, потому что знает, что имеет дело с новичком. Если я сижу рядом со Средним Джо, я оглядываюсь по сторонам в поисках официанток с петушиными хвостами. Она начинает тянуться к подносу и поднимать фишку вверх, провозглашая: "Это красная фишка, она стоит 0.0001 очков"..... (что! это же настоящее казино, но давайте согласимся с этим)..... Средний Джо все еще в замешательстве, и я бы тоже. Он восклицает: "Да, но сколько это в долларах". А она отвечает: "Это 5 долларов, сэр", "а зеленые стоят 25 долларов" и "Half-n-Half означает 2 зеленых и 10 красных".

Теперь очки полностью уходят в окно, Средний Джо зациклен на цветах. Вот так дом и получает вас, даже обезьяна может различать цвета. Средний Джо, желая казаться крутым, говорит: "Ну... тогда дайте мне половину от половины... красивая мамочка". Я рядом с этим парнем, и мне приходится улыбаться, чтобы не лопнуть от смеха. Короче, пришло время делать ставки, и Средний Джо думает о 2%, которые он хочет оставить за этим столом как можно дольше. О_о, ему нужно 2$, поэтому он спрашивает дилера "есть ли фишки по 2$", и она отвечает "да, белые по 1$, а розовые по 2.50$, хотите?". Он говорит: "Да". Она говорит: "Дайте мне 2-красные, а я дам вам 10 белых" (она не собирается давать вам все белые в лотке... они ей нужны для конвертации... но она надеется, что вы начнете давать чаевые).

Хорошо!!!, мы снова возвращаемся к ставкам. В этот момент Средний Джо кладет на стол 2 белые фишки. Это заставляет дилера замереть. Она смотрит на него, поворачивает табличку под видимым углом и говорит: "Это стол с минимальной ставкой 5 долларов, сэр". "Минимальный стол, который мы предлагаем в этом казино, - это стол с 3 долларами, - продолжает она, - он находится вон там, где парень из Buff занимается раздачей". Средний Джо задумывается на секунду, (2$ против 3$....Gorgeous против Fabillio там) "не, давайте играть в карты, - восклицает он, - вытаскивает свои 2-белые и бросает туда 2-красные".

Если бы это было японское казино, формат был бы таким же, только пришлось бы дольше объяснять, сколько стоит очко.

 
1005phillip:

Это. Лично я не работаю в пунктах, я работаю в пунктах. Все ценовые данные предоставляются в пунктах.

Это означает, что каждый раз, когда вы меняете брокера (или если брокер внезапно меняется, как это сделал IBFX несколько месяцев назад) , вы должны помнить, чтобы изменить все параметры вашего советника соответствующим образом. Например, проскальзывание, 3 или 30 пунктов.

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

Гораздо проще определять параметры не процентного типа в пунктах и преобразовывать их в пункты или удвоения, где это необходимо.

 
WHRoeder:

Это означает, что каждый раз, когда вы меняете брокера (или если брокер внезапно меняется, как это сделал IBFX несколько месяцев назад) , вы должны помнить, чтобы изменить все параметры вашего советника соответственно. Например, проскальзывание, 3 или 30 пунктов.

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

Гораздо проще определять параметры не процентного типа в пунктах и преобразовывать их в пункты или удвоения, где это необходимо.


На самом деле все с точностью до наоборот. Мои советники написаны так, чтобы быть достаточно общими, чтобы я мог установить их практически на любого брокера MT4 с любой комбинацией цифр и т.д., и механика торговли и стратегии не зависит от параметров брокера. Когда вы начинаете программировать с неопределенными параметрами, такими как "пипсы", вы открываете дверь для проблем.

Что мне кажется интересным, так это то, что если у вас уже есть стратегия, которая полагается на индикаторы или какие-то математические вычисления с участием рыночных цен для определения стоплосса и тейкпрофита - будь то ATR или RSI или уровни сопротивления и т.д. - в общем, все, кроме банального "я хочу фиксированный трейлинг-стоп в 30 пунктов", то вам совершенно незачем работать с пунктами в первую очередь.

Делать что-то с фиксированными пунктами - например, тейкпрофит в 25 пунктов или стоплосс в 50 пунктов - на мой взгляд, просто глупо, потому что рынок просто не работает/функционирует таким образом, поэтому вы не можете рассчитывать на прибыль, пытаясь забрать у него деньги, управляя торговой стратегией таким образом. Все это выше процентных движений, уровней сопротивления и т.д. Вещи, которые определяются ценой, а не пунктами.

Это только мое мнение, которое может быть совершенно ошибочным.

(PS - ваш пример с изменениями IBFX - идеальный пример, моим советникам было все равно, что IBFX внесла свои изменения. Другим примером является FXDD, который недавно этим летом перешел на 5-значные числа на одном из своих демо-серверов, я даже не осознавал этого или не знал, что это произошло, пока не просмотрел квартальные цифры и не заметил, что ценовые фиды изменились).

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