Блог им. neophyte

Кто сказал что на смартлабе не у кого спрашивать совета?

"...
Если негде взять совета
У него берем!"
© К/ф «Веселая хроника опасного путешествия» (Арго).


Кто сказал что на смартлабе не у кого спрашивать совета? Это не так.
Есть люди, которые могут дать совет, и делают это совершенно бескорыстно.
Вот я вчера посетовал, что замучился с программированием и не знаю как прикрутить к советнику простую функцию. 
Мне тут же навалили кучу предложений и прототипов, с помощью которых я сегодня за 15 минут слепил рабочий блок кода, включающий режим антимартингейла.
Антимартингейл — это когда при серии прибылей, например на тренде, объем торговли наращивается по сравнению с обычным. А когда идет серия убытков, например на боковике робот «запилил», то объем уменьшается.

Парни. Большое спасибо. Вы мне реально помогли. Извините, что не упоминаю всех персонально, но советов действительно было много. И в комментариях, и в личку.
Для тех, кто просил сообщить о результате, публикую блок кода, сделанного с помощью ваших советов и предложений:

//---Мультипликатор риска
if (OrdersHistoryTotal()==0) KMM=1; // Если история пустая, множитель стартового лота равен единице
if (OrdersHistoryTotal()!=0) // Если история не пустая, рассчитываем множитель стартового лота
{
for (int i=OrdersHistoryTotal()-1;i>-1;i--) // Перебор всех закрытых позиций и удаленных ордеров
{
bool OrderSelec=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY); // Выбираем ордер
if(OrderCloseTime()!=0 && OrderSymbol()==Symbol() && OrderProfit()>0) // Если выбранный ордер закрыт с прибылью, увеличиваем объем позиции...
{
KMM=AsymmetryRiskFactor;
break;
}
if(OrderCloseTime()!=0 && OrderSymbol()==Symbol() && OrderProfit()<0) // Если выбранный ордер закрыт с убытком, уменьшаем объем позиции...
{
KMM=1/AsymmetryRiskFactor;
break;
}
}
}

В 7 строк, как обещал, не уложился. Если не считать пустые строки со скобками, то получилось 10.
Две ушло на прерывание цикла, о котором я как-то не подумал, но которое оказалось очень кстати. А еще одна на проверку истории пустая/не пустая. Об этом тоже не подумал. Ни в начале теста ни на старте нового счета робот без этого не будет знать что делать.

P.S. Если я, как распоследний чайник в программировании, чего напутал, буду благодарен за критику. Правда советник работает.

P.P.S. Этот же блок позволяет ввести в советник и режим мартингейла. Для этого достаточно задать значение параметра AsymmetryRiskFactor меньше единицы. :)

Результаты.
Антимартингейл выключен. Коэффициент AsymmetryRiskFactor=1.

Исходный код.
Кто сказал что на смартлабе не у кого спрашивать совета?

Новый код.
Кто сказал что на смартлабе не у кого спрашивать совета?

Разницы нет, результаты теста полностью идентичны. 

Антимартингейл включен. AsymmetryRiskFactor=2, т.е. расчетная позиция удваивается при профите и делится на двое при убытке. Соотношение объемов после прибыли и убытка 4:1.

Исходный код.
Кто сказал что на смартлабе не у кого спрашивать совета?

Новый код.
Кто сказал что на смартлабе не у кого спрашивать совета?

В результатах есть несущественная разница, которая вызвана различием обработки данных.
В исходном коде прибыль или убыток считаются по балансу, т.е. учитывается и своп и комиссия. В новом коде только результат торговли по данной сделке. Без учета свопа и комиссии.

★6
14 комментариев
Земной поклон за то, что не убили лудомана!)))
avatar

Дмитрий Ш, жив курилка.

Мается на отведенном ему полигоне.

Прос… л 1200 баксов, пытается торговать на 60.

Николай Скриган, Может, в этом и есть«смысл жизни»? Если никто другой от Ваших убытков не страдает(но и профиту не рад), то может, пусть Ваша игра Вас радует или печалит… Зачем что-то менять?
avatar

Дмитрий Ш, пока мне это доставляет удовольствие, это будет продолжаться. Плюс к этому — это тест советников и торговой стратегии.

Николай Скриган,  Не был ли Ваш коммент в полном согласии с моиим?;)
avatar
Николай Скриган, Но как только Вы спросите, что делать с недвижной, то тут все будет 50 на 50 :) Так что ценности в совете по такому вопросу не будет никакой
avatar
kbrobot.ru, чтобы получить правильные ответы нужно задавать правильные вопросы. :)
mql5?
avatar
Dordje, mql4
Непонятно как нововведения на размер лота влияют, потому что макслот очень быстро выскакивает — уберите первые ~250 сделок из теста, тогда будет понятно как эта фича влияет на поведение эквити кривой во времени приближенном к настоящему))
Бабёр-Енот, пожалуй вы правы. Упустил этот момент, польстившись на красивую картинку. Слаб человек, и тщеславен. :)
Еще можно добавить фильтр для строки if(OrderCloseTime()!=0 && OrderSymbol()==Symbol() && OrderProfit()>0) 
 OrderProfit()>= TakeProfit
avatar
Igor Ku4in, большинство сделок закрывется по развороту или трейлинг-стопу. Тейк-профит работает только на больших трендах, что бывает достаточно редко.
Николай Скриган, Я имел ввиду чтоб не учитывать сделки профит около нуля. Не знаю подробностей вашего робота, не буду спорить. Я применял коэффмциент TP/SL и наращивал или сокращал лоты по этому коэффициенту.
avatar

теги блога Николай Скриган

....все тэги



UPDONW
Новый дизайн