Николай Скриган
Николай Скриган личный блог
18 октября 2015, 17:50

Я наверное самый тупой на смартлабе?

P.S. (В начале, чтобы не читать до конца). Господа. Всем спасибо за обсуждение. Оно было конструктивным и полезным. Из множества мнений я выцепил возможный источник проблем и убрал его. Все работает, как часы.
Графики с результатами в конце публикации.

===================Дальше опубликованный ранее текст поста.
 Всем доброе утро...
Утро, потому что задолбала простейшая задачка — всю ночь ломал голову и экспериментировал с разными вариантами, но так и ушел в начале дня на хрен спать, не добившись результата. А сейчас проснулся... 

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

Я наверное самый тупой на смартлабе?

Что нужно? Хочу научить робота распознавать цепочки плюсовых и минусовых трейдов и менять при этом торговую тактику и загрузку капитала. Интересно, что из этого получится.

Выделяется три режима.
1. Старт.
2. Трейд завершился с прибылью.
3. Трейд завершился с убытком.

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

if(MathRound(AccountBalance()) == InitialBalanse )
{ ABL=AccountBalance();
KMM=K0; }

if(AccountBalance() > ABL)
{ ABL=AccountBalance();
KMM=K1; }

if(AccountBalance() < ABL)
{ ABL=AccountBalance();
KMM=K2; }

//--- ABL — переменная. Последнее зафиксированное значение баланса.


Задумано следующее.
Есть три выделяемых события.

1. Старт, при котором закрытых сделок еще не было. 

Первый оператор if работает на старте. Сравнивается текущий баланс счета со стартовым.
Если текущий баланс равен стартовому, переменной ABL присваивается значение текущего баланса счета, а переменной KMM — значение K0 — признак стартового состояния.
Если сделок нет и баланс не изменился, все так и повторяется при каждом проходе кода, в второй и третий операторы if не работаю, поскольку условия в скобках не выполняются, а значит никакие действия этими операторами не производятся.

2. Если закрылась позиция и баланс вырос, то первый оператор уже не сработает, включается второй оператор if и выполняет следующие функции:
— переменной ABL присваивается новое значение — теущее значение выросшего баланса счета,
— переменной KMM — значение K1 — признак завершения прибыльной сделки.

Условие для третьего оператора в этом случае естественно не выполнено, поскольку выполнено для второго. Соттветственно никаких действий по условию третьего оператора не производится.

3. Если закрылась позиция и баланс уменьшился, то включается третий оператор if и выполняет следующие функции:
— переменной ABL присваивается значение баланса счета,
— переменной KMM — значение K2 — признак завершения убыточной сделки.

Все просто, как грабли, но не работает.
Первый оператор if срабатывает нормально, инициализируя дальнейшие вычисления. После первой сделки, как бы она ни завершилась, с ростом или с убытком, управление передается на второй оператор и дальше молотит с коэффициентом К2.
Сутки мучаю.
Со сложного кода с кучей условий довел до шести строчек, а ни хрена не работает.
Убиться аб стену....
Где тут может быть ошибка? Вроде все по логике чайника нормально...


P.P.S.
//////////////
Как я уже сказал выше, проблема решена. Цель — резать оьбъем на серии убытков и восстанавливать, когда начинается серия прибылей.
Цель достигнута.
Грубый тест после достижения работоспособности программы:
Исходный вариант:
Я наверное самый тупой на смартлабе?

Вариант с дополнительным модулем:

Я наверное самый тупой на смартлабе? 

Игры разума с ММ дают выигрыш в прибыли примерно в два раза на фиксированном размере лота.
А если объем увеличивать с ростом баланса,

И еще один вариант, тоже грубый, с АвтоММ:
Я наверное самый тупой на смартлабе? 

93 Комментария
  • Александр НеПушкин
    18 октября 2015, 17:57
    Жалко, что робот перешёл дорогу. То ждал от Вас прогнозных комментариев по инструментам, а теперь эти рассуждения самим с собой.
  • Вестников (Витковский)
    18 октября 2015, 17:59
    Ты — умный. Я вообще не понял — что ты написал.
  • Sep38Rus
    18 октября 2015, 18:01
    баланс с чем сравнивает? точка от счета.
  • Translator
    18 октября 2015, 18:02
    Я так понимаю, между приведенными операторами сравнения есть еще какие-то операторы?
    Через Print попробуйте вывести значения в журнал и посмотрите, чему они равны.

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн