Что творится с SL - в чём прикол?! - страница 2

 
tim21701 писал(а) >>

Так это что же тогда получается, что программёр пишуший советника и раздающий его другим, изначально даже и не подразумевает о торговле без стопов? Ведь это вроде является прямой "недороботкой" кода, ведь так? Взять к примеру некоторые довольно "мясистые" експерты с прошлых чемпионатов (или платники) - если отключить стопы, они вообще перестают торговать!

Ставьте стопы по 5000 и все будет работать, ну или 20000, главное чтоб ниже нуля не было;)

 
tim21701 >>:
Господа, обьясните. Почему, в подавляющем большинстве тестированных мной советников - при отключении уровля StopLoss они вообще перестают торговать?

Квалифицированные программисты(себя к ним не отношу, использую опыт KimIV) обычно делают так:

double sl=0, tp=0;
 if (StopLoss!=0) sl=Ask-StopLoss*Point;
 if (TakeProfitB!=0) tp=Ask+TakeProfitB*Point;
и тогда всё будет окей. Пример для BUY.
 

А если StopLoss = 1 ?

Вы забыли, что существует Минимально допустимый уровень стоп-лосса/тейк-профита в пунктах.

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

 

Так будет выглядеть Ваш пример, но с использованием MarketInfo():

double sl=0, tp=0;
 if(StopLoss>=MarketInfo(Symbol(),MODE_STOPLEVEL)) sl=Ask-StopLoss*Point;
 if(TakeProfitB>=MarketInfo(Symbol(),MODE_STOPLEVEL)) tp=Ask+TakeProfitB*Point;
 
zxc >>:

А если StopLoss = 1 ?

Вы забыли, что существует Минимально допустимый уровень стоп-лосса/тейк-профита в пунктах.

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

Я привёл пример, когда StopLoss и TakeProfit заданы во внешних переменных и пользователь осмысленно выставляет их значение с учетом stoplevel. Если же я эти параметры расcчитываю, то, естественно, учитываю значение stoplevel. Так, что для моего случая этот код избыточен и работает медленнее. К тому же я столкнулся, что иногда по некоторым валютам функция

MarketInfo()


не получает информацию.
 
khorosh >>:

для моего случая этот код избыточен и работает медленнее

Понимаю...

Ваш советник открывает на реале сто сделок в секунду, а из-за этой функции (будь она неладна) он может открыть только пятьдесят сделок в секунду. Так?

 

khorosh >>:

К тому же я столкнулся, что иногда по некоторым валютам функция MarketInfo() не получает информацию.

А с таким ни разу не сталкивался...

 
zxc >>:

Что значит работает медленнее? В чем это проявляется?

Ваш советник открывает на реале сто сделок в секунду, а эта из-за этой функции (будь она неладна) он может открыть только пятьдесят сделок в секунду. Так?

А с таким ни разу не сталкивался...

Проверял вчера работу скрипта открывающего сделки по 14 валютам на демо Альпари. Открывал только по 13 валютам. Стал искать причину - оказалось MarketInfo() не получает информацию по

NSDUSD.

 
Kharin >>:

Ставьте стопы по 5000 и все будет работать, ну или 20000, главное чтоб ниже нуля не было;)

Самое интересное что при выставлении большого стопа - советник начинает безбожно сливать, тогда как при повторном прогоне просадка не большая, и там где были до этого стопы - долеко. Такое впечатление, что в некоторых советниках зарание предусмотрено использование стопов, а если нет - то идти в убыток. Фигня какая то... Или это ошибки программиста?