Советники: MyTral

 

MyTral:

Небольшой TrailingStop.

Author: Сергей

 

Опишите плиз вкратце его работу, ТФ, предпочтительная пара, и др.

 
Cashin:

Опишите плиз вкратце его работу, ТФ, предпочтительная пара, и др.


Тут, собственно, и описывать нечего. :)

Обыкновенный TrailingStop, работает на любой паре, на любом ТФ. Работает с текущей парой.
Подтягивает StopLoss за ценой на указанном в параметре TrailingLevel расстоянии, при достижении прибыли, указанной в параметре ZeroLevel, переводит ордер в безубыток.
Чтобы не было попыток модификации ордера на каждый тик введен параметр TrailingStep, т.е. модификация ордера будет происходить при изменении цены на расстояние TrailingStep.
Если MagicNumber == 0? то "тралим" все ордера по данному символу (на который подвешен советник), если не равен "нулю", то только те, у которых MagicNumber равен заданному.

Была мысль ввести множитель для котировок (4-х или 5-тизначные), но подумал, что не стоит заморачиваться по этому поводу, проще самому в параметрах все умножать на 10 (для Alpari, например).

 
sergeev:

1. Вобщем нормально, единственно надо в модификации NormalizeDouble цены стоплоса (те которые Bid-TrailingLevel*Point и так далее). 

А можно узнать, чем чревато использование без NormalizeDouble?
sergeev:

2. MagicNumber (0 - тралим все ордера) - у вас в коде нет этого анализа. Если в магике ордера стоит 0 - то это не значит, что это "все ордера".

А разве
if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol())
это не проверка?
Я думал, что если указан MagicNumber, то тем самым будем "тралить" только эти ордера, а если не указан, то он "нулевой".
Или я не прав?

 
sergeev:
Macleod:

А можно узнать, чем чревато использование без NormalizeDouble?

тут понимаете какое дело... даблы они ведь не то, что вы хотите видеть. например число 300*Point в вашем понимании не будет равнятся 0,00300. А будет равнятся типа 0,003000000000111 или как то так.

Но брокер такую цену не примет и выдаст 130. поэтому надо нормализовать. Это все подробно описано в статьях и обсосано на форуме. И вообще советую сразу привыкнуть к этой операции. И нормализовать все что относится к ценам. Добавьте к себе в либу такую короткую функцию для удобства

//---------------------------------------------------------------   ND
double ND(double d, int n=-1) 
{  
    if (n<0) return(NormalizeDouble(d, Digits)); return(NormalizeDouble(d, n)); 
}

и вызывайте ND(Ask+TS*Point)

А разве

if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol())
это не проверка?
Я думал, что если указан MagicNumber, то тем самым будем "тралить" только эти ордера, а если не указан, то он "нулевой".
Или я не прав?

если OrderMagicNumber()==0, то это только и обозначает что OrderMagicNumber()==0.

Он же может быть и !=0, а равен напримtр 777. А в вашей фразе "MagicNumber (0 - тралим все ордера)" - это не исполняется.

Прошу прощения, со всеми замечаниями согласен...

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

По 2-му: согласен, действительно если в MagicNumber будет стоять какое-либо число, то этот ордер "тралится" не будет... недоработочка... сейчас исправим. :)

 
Вроде все исправил, но пока на проверке...
 
Исправлено.
 
Ну а графит то где ? Оценка 1, уж извините.
 
Anton1:
Ну а графит то где ? Оценка 1, уж извините.

вы что, трал от эксперта уже отличить не можете? вам график чего надо? зависимость лени от навыков?

 
Anton1:
Ну а графит то где ? Оценка 1, уж извините.

Вообще-то, уважаемый Антон, у "трала" график не возможен по определению, поскольку TrailingStop - это не торговля, а функционал, который может относится скорее к "помощи в торговле".
Задуман и написан он был только потому, что в МТ TrailingStop начинает работать только тогда, когда цена уже прошагает указанное Вами расстояние в сторону "профита", данный же советник начинает "тралить" Ваш ордер уже с первых пунктов в сторону "профита".
А в разделе советники он, потому как построен по принципу советника, а не индикатора или скрипта, т.е. вешается на график любой валютной пары и "тралит" StopLoss Вашего ордера на установленном Вами же расстоянии от цены.
Т.е. работает по принципу TrailingStop'а из МТ, но не дожидаясь изменения цены на указанное расстояние, для этого предусмотрен "Безубыток", можно сказать тоже что в МТ, но здесь уровень TrailingStop'а и уровень "Безубытка" - это разные вещи и, соответственно, могут отличаться.
 
Долго искал что-то подобное. Спасибо. Я так понял, что он сам умножает, если пятизнак?
Причина обращения: