Феникс здесь! - страница 13

 
AZBOfin:
Вау, это становится все более запутанным с каждой минутой

я предлагаю следующее:

1) все расчеты производятся по времени сервера, а не по местному времени

2) все установки времени в советнике должны быть сделаны в GMT

3) ввести новую переменную под названием ServerOffset

эта переменная отражает смещение от часового пояса GMT к часовому поясу сервера.

мое местное время не имеет значения. сегодня я здесь в GMT-7, завтра я могу быть в GMT-4, на следующей неделе в GMT+2.

но мой торговый сервер всегда находится в одном и том же месте. и это должно быть основой для всех расчетов.

Просто мои 2 цента - Хендрик, ты мужик, что скажешь?

АЗБОФИН

Я думал о чем-то в том же духе... упростите это для тех, кто не умеет менять время, как я... Я поддерживаю предложение о переменной ServerOffset... Хотел бы я знать, как сделать это сам. Я еще не так далеко продвинулся в кодировании... единственное, что было бы лучше, это чтобы код определял, что ему нужно, и автоматически настраивался, чтобы пользователю не приходилось возиться.

 
Файлы:
 
Hendrick:
Мне нужна помощь. Сигналы BUY и SELL в Phoenix генерируются следующим куском кода:

MA =iMA(NULL,MA_Timeframe,MA_Length,0,MODE_SMA,PRICE_OPEN,0);

RVI=iRVI(NULL,0,10,MODE_MAIN,0)-iRVI(NULL,0,10,MODE_MAIN,1);

.

Хендрик, кажется, я все еще следую за вами на этих досках.

В Firebird v63g был код тренда, но он не использовался. Я использую его в модифицированном Firebird, и, похоже, он работает, останавливая сделки во время трендов.

extern int DVLimit = 10; // включено Ренато

int TrendUp=0, Trenddown=0;

double iFXAnalyser(int FXA_Period, int mode, int shift)// Сделана локальная функция MrPip

if ( (iFXAnalyser(0,MODE_DIV,0)>DVLimit*Point && iFXAnalyser(0,MODE_SLOPE,0)>0)) Trendup=1;

if ( (iFXAnalyser(0,MODE_DIV,0)<-DVLimit*Point && iFXAnalyser(0,MODE_SLOPE,0)<0 )) TrendDown=1;

Тогда pur "&& TrendUp !=1" после DealTime==1 в триггере SELL. И "&& TrendDown !=1" после DealTime==1 в триггере BUY.

Другой метод - ввести управляющий фактор для RV! для регулирования торговой активности.

extern double RVI_Factor =50; // коэффициент 0-200, добавляемый к значению RVI для регулирования торговой активности.

Затем в триггерах SELL и BUY измените коды RVI на "RVI(0+(RVI_Factor*Point))" уважительно.

Другой метод - поместить второй конверт iMA большего размера для сужения активной торговой области, чтобы стимулировать торговлю в нетрендовые периоды.

extern double PercentLimit = 0.15; // Второй более высокий конверт (полоса), который останавливает торговлю.

int Safe2=0;

if ( myMA*(1+(PercentLimit/100))=Ask) Safe2=1;

Поместите "&& Safe2==1" в триггеры SELL и BUY. Вы можете прикрепить второй индикатор типа Firebird, установленный на PercentLimit, чтобы видеть активную торговую область.

Я использую один Firebird со всеми тремя фильтрами, и в среднем он совершает на ~50% меньше сделок с ~90% выигрыша. Проблема, с которой я столкнулся, заключается в том, как новости влияют на рынок. Я сообщал в этой теме, что последние 4 пятницы имели большой негативный эффект из-за переноса открытых сделок с четверга. Я тестирую исключение торговых дней и/или времени, чтобы посмотреть, смогу ли я лучше управлять потерями исторической группы.

Хендрик, это было бы дальнейшим развитием вашей диаграммы результатов торгового времени, и это была бы большая работа. Но я хотел бы иметь советника, который программируется на 6/24 торгового времени и может исследовать свою историю, определять неудачные торговые периоды и прекращать торговлю в эти периоды, сохраняя историю призрачных сделок для этих периодов. Когда исторические сделки-призраки снова становятся прибыльными, эти времена восстанавливаются как хорошие торговые времена. Желаемое за действительное, но я собираюсь попробовать поработать над этим или посмотреть, сможет ли кодер заставить это работать. Сейчас я использую ваш тип графика и пытаюсь сделать это вручную.

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

Вакена

 
Hendrick:
Мне нужна помощь. Сигналы BUY и SELL в Phoenix генерируются следующим куском кода:

MA =iMA(NULL,MA_Timeframe,MA_Length,0,MODE_SMA,PRICE_OPEN,0);

RVI=iRVI(NULL,0,10,MODE_MAIN,0)-iRVI(NULL,0,10,MODE_MAIN,1);

Кто-то в теме Firebird предложил следующее изменение:

вместо вашего:

RVI=iRVI(NULL,0,10,MODE_MAIN,0)-iRVI(NULL,0,10,MODE_MAIN,1);

Они изменили это на:

RVI=iMACD(NULL,0,24,52,9,PRICE_CLOSE,MODE_MAIN,0)-iMACD(NULL,0,24,52,9,PRICE_CLOSE,MODE_MAIN,1);

Они утверждают, что это дает меньше ложных сигналов. Помогает ли это?

 

Дополнительный сигнал

Привет Хендрик,

Когда я готовлюсь к торговле, я всегда смотрю на более высокий ТФ, чтобы увидеть формирование тренда.

Возможно, добавление дополнительного сигнала к Phoenix на том же 15-минутном ТФ является ограниченным?

Пожалуйста, посмотрите на многотаймфреймовый индикатор XO.

Вы можете установить его на любой ТФ, но для Phoenix, работающего на М15, я бы установил его на Н4 или Н4.

я бы установил его на H4 или, может быть, даже на D1.

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

См. прикрепленную картинку с дважды загруженным индикатором: один для M15, другой для H4.

С уважением,

Герберт

PS, я поменял iRVI Firebird на iMACD, как напомнил Holyguy7 сегодня, но хотя это увеличило скорость Firebird в бэктестинге как побочный эффект , у меня сложилось впечатление, что это не убирает ложные сигналы.

Файлы:
 
holyguy7:
Кто-то в теме Firebird предложил следующее изменение:

вместо вашего:

RVI=iRVI(NULL,0,10,MODE_MAIN,0)-iRVI(NULL,0,10,MODE_MAIN,1);

Они изменили это на:

RVI=iMACD(NULL,0,24,52,9,PRICE_CLOSE,MODE_MAIN,0)-iMACD(NULL,0,24,52,9,PRICE_CLOSE,MODE_MAIN,1);

Они утверждали, что это дает меньше ложных сигналов. Помогает ли это?

Привет, Холигуй,

Для Phoenix версии 2 я теперь использую SMA 120 и SMA 12 на графике 15M. Основная цель - предотвратить то, что Phoenix размещает сделки против тренда. Пока все работает нормально.

 
HerbertH:
Привет Хендрик,

Когда я готовлюсь к торговле, я всегда смотрю на более высокий ТФ, чтобы увидеть формирование тренда.

Возможно, добавление дополнительного сигнала к Phoenix на том же 15-минутном ТФ является слишком ограниченным?

Пожалуйста, взгляните на многотаймфреймовый индикатор XO.

Вы можете установить его на любой ТФ, но для Phoenix, работающего на М15, я бы установил его на Н4 или Н4.

я бы установил его на H4 или, может быть, даже на D1.

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

См. прикрепленную картинку с дважды загруженным индикатором: один для M15, другой для H4.

С уважением,

Герберт

PS, я изменил iRVI Firebird на iMACD, как напомнил Holyguy7 сегодня, но хотя это увеличило скорость Firebird в бэктестинге как побочный эффект , у меня сложилось впечатление, что это не убирает ложные сигналы.

Привет, Герберт,

См. мой предыдущий ответ Holyguy.

 

Феникс v2

Феникс версия 2.

Изменения:

удалена дивергенция (я считаю, что она бесполезна)

удалены Surf-orders (производительность была не очень хорошей)

заменил RVI на этот кусок кода:

AdMA=(iMA(NULL,PERIOD_M15,120,0,0,3,1) - iMA(NULL,PERIOD_M15,12,0,0,3,1));

if(Point==0.0001) {AdMA=AdMA*1000;}

if(Point==0.01) {AdMA=AdMA*10;}

if(AdMA > 1)

{

AdSELLSignal = true;

SortOrder = "SELLSignal";

}

if(AdMA < -1)

{

AdBUYSignal = true;

SortOrder = "BUYSignal";

}

if((AdMA > -1) && (AdMA < 1))

{

AdBUYSELLSignal = true;

SortOrder = "BUYSELLSignal";

}

Цель этого кода - предотвратить, чтобы Phoenix размещал сделки против тренда.

Для тестирования:

Используйте настройки из файла. TF=15. Все доступные пары.

Файлы:
 
Hendrick:
Феникс версии 2.

Изменения:

удалены дивергенции (я считаю, что они бесполезны)

удалены Surf-orders (производительность была не очень хорошей)

заменил RVI этим куском кода:

AdMA=(iMA(NULL,PERIOD_M15,120,0,0,3,1) - iMA(NULL,PERIOD_M15,12,0,0,3,1));

if(Point==0.0001) {AdMA=AdMA*1000;}

if(Point==0.01) {AdMA=AdMA*10;}

if(AdMA > 1)

{

AdSELLSignal = true;

SortOrder = "SELLSignal";

}

if(AdMA < -1)

{

AdBUYSignal = true;

SortOrder = "BUYSignal";

}

if((AdMA > -1) && (AdMA < 1))

{

AdBUYSELLSignal = true;

SortOrder = "BUYSELLSignal";

}

Цель этого кода - предотвратить, чтобы Phoenix размещал сделки против тренда.

Для тестирования:

Используйте настройки из файла. TF=15. Все доступные пары.

Спасибо, нанесли на графики.

Вы проводите бэктест?

 
Yauhen:
Спасибо, нанесли на графики. Вы проводите бэктест?

Привет,

Нет бэктестов, только прямое тестирование.