FG evo II (зверская мартышка)

backlagan

Новичок форума
Есть соображения по-поводу стоп-лосса.
Мне кажется он должен быть реализован следующим образом для фг, а может и для трибунала тоже.
1. Робот определил стартовую цену.
2. Далее цена либо идет в нужном направлении и он открывает свои ордера и торгует , либо цена разворачивается и идет в другую строну. Тогда он меняет направление торговли и торгует в другом направлении. Если цена не разворачивается более, то опять-таки все ок и робот торгует далее.
3. И так разрешается роботу поменять направление торговли n раз, это параметр, который задается. И если цена n-й раз развернется, то он закрывает все открытые ордера в момент пересечения n-й раз текущей ценой линии стартовой цены.
4. Если параметр n равен 0, то этот вид стопа отключен.
 

senchakv

VIP-участник
Товарищи, помогите сообразить... Вот есть баланс, который мы запомнили в переменной при начале построения серии.
Нужна конкретная формула, с учетом возможных кредитных средств, по которой будет расчёт % профита.
Код:
       //profit=((AccountEquity() - AccountCredit() - GlobalVariableGet(identifier+"_balance"))*100)/GlobalVariableGet(identifier+"_balance");

       if (profit>=fixed_percentage)
эта схема работает почему-то некорректно
 

senchakv

VIP-участник
Товарищи, помогите сообразить... Вот есть баланс, который мы запомнили в переменной при начале построения серии.
Нужна конкретная формула, с учетом возможных кредитных средств, по которой будет расчёт % профита.
Код:
       //profit=((AccountEquity() - AccountCredit() - GlobalVariableGet(identifier+"_balance"))*100)/GlobalVariableGet(identifier+"_balance");

       if (profit>=fixed_percentage)
эта схема работает почему-то некорректно

вопрос снят, сам накосячил в дальнейших расчетах.
 

senchakv

VIP-участник
Печатный станок собран!

Дорогие товарищи-трейдеры, серия FG evo в моём исполнении подошла к концу.

Прикладываю сам советник, как и обещал.

В моём восторженном сознании, FG evo V - это грааль во плоти!

Давайте разберём параметры по порядку...

identifier - параметр нужен для определения "своих" переменных советника. Также важен, как и magic. Этот параметр следует указывать уникально. На тестирование никак не влияет.

percent_profit - параметр процент_профит влияет напрямую на лотность позиций. Параметр обозначает % от депозита, который советник будет стремиться заработать. Этот параметр следует тестировать.

the_purpose_of_profit - параметр "цель профита". Никак лучше не придумал как его обозвать. Параметр выше указывает процент, к которому стремится советник. А этот параметр указывает расстояние до этого "процента". Считается так: the_purpose_of_profit*step + step/2.
Т.е. если у нас step = 10, то указанный процент будет достигнут через 35 пунктов (при the_purpose_of_profit = 3). Этот параметр следует тестировать.

percent_lot - стандартный расчет лота. Мало влияет на общую динамику работы. Данный расчет лота работает только для доливки после 35 пунктов движения (почему 35? см. пункт выше).

step - шаг сетки. Оптимизировать обязательно!

indent - отступ сетки. Оптимизировать обязательно!

fixed_percentage - если эквити далеко улетело вверх, робот будет фиксировать указанный процент. Оптить!

Closing_of_the_initial_balance - флажок. Этот параметр нужен для определения типа фиксации по СЛ. Если true - фиксируем СЛ от депо старта серии. Если false - фиксируем СЛ от текущего баланса. Оптить!

SL - оптить!

Trailing_profit - трал в экспоненте Фибоначчи.

step_trailing - шаг трала СЛ. Оптить!

max_lot - динамический максимальный лот. В настройках указывается максимальный лот для 10000$. При других балансах всё автоматически пересчитывается. ОПТИТЬ!!!

Далее идут настройки зигзага - это ОПТИТЬ!! Разный ТФ зиги, разные результаты. Разная глубина зиги, разные результаты.

Ну и магик.
 

Вложения

  • FG evo V.ex4
    33,2 КБ · Просмотры: 123
  • FG evo V.mq4
    13,6 КБ · Просмотры: 178

senchakv

VIP-участник
И ещё кое-что...

Советник остро нуждается в оптимизации! Это вы и сами поняли.

Дак вот, чтобы и мне, и вам было хорошо - я объявляю конкурс!

Тот, кто сделает лучший сет, получит от меня 100$ на любые цели!

Предложение работает до 06.02.2016.

Обязательные требования:
1) Наличие сета.
2) Обязательно выложить его в данную ветку форума.
3) Робот должен проходить весь 2015 год.
4) В качестве подтверждения тестирования необходимо выложить расширенный стейтмент сюда же в ветку (валютная пара не имеет значения).

Ну вот и всё!
 

backlagan

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

senchakv

VIP-участник
Миша, во-первых спасибо тебе за титанический труд.
Во-вторых, как, если необходимо, отключить отслеживание на изменение стартовой цены внутри цикла, то есть до закрытия серии открытых уже ордеров? (Я имею ввиду как изменить нужную строку в коде советника).

Если я правильно тебя понял, тебе надо запретить изменение стартовых цен?
В функции FG это, в самом начале. Там реле есть такое, side по-моему.
 

backlagan

Новичок форума
string zz = zigzag();
int side = (int)GlobalVariableGet(identifier+"_side");

if (zz=="buy")
{
if (side==0 || side==2)
{
GlobalVariableSet(identifier+"_side",1);
GlobalVariableSet(identifier+"_start_buy",start_up);
GlobalVariableSet(identifier+"_start_sell",start_low);
}
} else
if (zz=="sell")
{
if (side==0 || side==1)
{
GlobalVariableSet(identifier+"_side",2);
GlobalVariableSet(identifier+"_start_buy",start_up);
GlobalVariableSet(identifier+"_start_sell",start_low);
}

Это оно?
Но если это реле отключить, то сов сразу сливает.
 
Последнее редактирование:

senchakv

VIP-участник
string zz = zigzag();
int side = (int)GlobalVariableGet(identifier+"_side");

if (zz=="buy")
{
if (side==0 || side==2)
{
GlobalVariableSet(identifier+"_side",1);
GlobalVariableSet(identifier+"_start_buy",start_up);
GlobalVariableSet(identifier+"_start_sell",start_low);
}
} else
if (zz=="sell")
{
if (side==0 || side==1)
{
GlobalVariableSet(identifier+"_side",2);
GlobalVariableSet(identifier+"_start_buy",start_up);
GlobalVariableSet(identifier+"_start_sell",start_low);
}

Это оно?
Но если это реле отключить, то сов сразу сливает.

Значит это реле нужно)) без этого реле стартовые цены меняться не будут.
 

clarmax

Архитектор
И ещё кое-что...

Советник остро нуждается в оптимизации! Это вы и сами поняли.

Дак вот, чтобы и мне, и вам было хорошо - я объявляю конкурс!

Тот, кто сделает лучший сет, получит от меня 100$ на любые цели!

Предложение работает до 06.02.2016.

Обязательные требования:
1) Наличие сета.
2) Обязательно выложить его в данную ветку форума.
3) Робот должен проходить весь 2015 год.
4) В качестве подтверждения тестирования необходимо выложить расширенный стейтмент сюда же в ветку (валютная пара не имеет значения).

Ну вот и всё!

Нужно еще добавить пункт, чтобы абс. просадка была не менее такого-то процента...а то можно год пройти и заработать миллион ,но на грани слива :)
 

backlagan

Новичок форума
Просадка не более 25%, доходность - не менее -100-150% годовых. Это для робота без стопов -минимум. Или, как вариант, просадка не более 50%, доходность - не менее 250-300%.
 

backlagan

Новичок форума
Чтобы знать, куда рыть примерно, прикладываю скрин чернового прогона 5й версии за 2015 год. Но это не годится, так как просадка 72 процента!!!
 

Вложения

  • Снимок экрана (16).png
    Снимок экрана (16).png
    354,9 КБ · Просмотры: 154

backlagan

Новичок форума
Я бы так сформулировал требование к сету. Сов должен пройти с включенным общим стоп-лоссом в 25% 2015 год и заработать не менее 100% годовых.
 

Aragorn_911

Прохожий
senchakv,
огромное спасибо за твой труд и то, что ты предоставляешь открытый код своей работы общественности.
Увидел это тему только сегодня, и почувствовал зернышко в твоем творении.
Сейчас разбираюсь с твоим кодом для определения полной логики, т.к. работаю на платформе JForex.
Обязуюсь поделиться результатами оптимизации после переписывания советника под свою платформу. Исторические данные на ней достаточно точные.

Код:
double _bine=((pow(((1+sqrt(5))/2),N)-pow(((1-sqrt(5))/2),N))/sqrt(5));

Можешь ли пояснить смысл зависимости рассчитываемой по этому выражению?

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

Andrejms

Активный участник
я думаю сову не помешал бы фиксированный стоп.
 

Paragon

Местный знаток
Трал по СЛ отдельно для каждого ордера и трал в % депо для всех. Т.е. либо закроет всё сразу, либо отдельно каждый.
Думаю над тем как совместить это ТР и СЛ,но это пока думаю.
Миша,может стоит прикрутить модуль частичной фиксации профита в виде % от прибыльного ордера с возможностью выбора % фиксации в параметрах настройки .
То есть ,через каждый пройденный степ(шаг),от колена до колена,в момент открытия очередного ордера, профитный ордер частично фиксирует или закрывает часть прибыли от профита данного ордера.
Вероятно надежнее закрывать часть профита,чем фиксировать,но при условии,что эти профиты должны накапливаться в течении данного цикла до полного закрытия по общему профиту или тралом.
Возможно я и ошибаюсь в выборе закрытия части профита или фиксации профита,важно чтобы четко исполнялось.
Это только вариант,но тебе решать.
Это вариант решения относиться к РС,который так и не применили,если не забыл ;) этот коннектювит.
 
Верх