Отличный советник в бэктесте! - страница 108

 

результаты демо-версии прошлой недели

Привет, мир.

Примерно в прошлую пятницу я обнаружил потенциальную ошибку при расчете заблокированных часов.

Я использую FXDD с настройкой GMT=3. Следующий фрагмент кода должен вычислить текущий час (gmt).

int hadj=TimeHour(CurTime())-GMT;

однако в 00:00 по времени FXDD эта функция возвращает -3, в 01:00 - -2 и в 02:00 - -1. а правильные значения должны быть 21, 22 и 23.

Это было причиной того, что мои заблокированные часы 23:00 gmt для пар JPY так и не были заблокированы.

Я добавил этот код, чтобы компенсировать эту ошибку:

if (hadj<0) hadj = hadj + 24;

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

Мой реальный счет тоже не показал ничего хорошего.

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

AZBOfin

 

Арагорн, вы используете настройки по умолчанию для вашей версии 1.0 R2, или вы что-то изменили. риск, лоты и т.д. не имеют значения в любом случае, меня больше интересуют фильтры, настройки SL и тому подобное.

Я добавил вашу версию советника с сегодняшнего дня (пропустил вчерашний день торговли) в свой живой портфель для EUR$. Надеюсь, он сможет отыграть то, что потеряла "оригинальная" версия.

AZBOfin

BTW: хорошая работа с программированием действительно

 
Aaragorn:
Должен сказать, мне все еще нравится просыпаться утром и видеть, что этот советник заработал деньги, пока я спал.

Я провожу сравнение моего реального счета, на котором сейчас работает только версия alerteuro, и демо-счета, на котором я разрешаю работать с alert euro, usdcad и usdjpy, все из которых я разместил ранее в этой теме... из этих трех пар usdjpy, безусловно, самая активная, и она также, безусловно, наименее прибыльная, она, кажется, едва ли делает больше, чем безубыток, а иногда теряет много. Я хотел посмотреть, будут ли три пары вместе зарабатывать больше или меньше, чем только евро, что является наиболее надежным результатом, который я вижу до сих пор.

Ну, эти три пары вместе почти уничтожили мой демо-счет до уровня моего реального счета... они паршивые вместе! Думаю, я продолжу запускать версию euroalert на демо с риском=1 и на реальном счете с риском=.25 Баланс на моем реальном счете сегодня утром $315.16, а на демо - $322.63. Почти одинаково, посмотрим на демо, смогу ли я терпеть больший риск?

Тем временем... по пути развития...

У меня есть некоторые проблемы с созданием гистограммы с данными поддержки и сопротивления. Очевидно, я не освоил циклы и массивы. Я пытаюсь заставить цикл циклически просматривать массив, и если значение совпадает с уже имеющимся в массиве, то увеличивать счетчик и переходить к следующему значению, а если не находит совпадения, то добавлять значение в конец массива. Это оказывается отвратительно сложным. Во-первых, массив допускает только интергерные значения, поэтому я должен преобразовать значение уровня цен в интергерное. Для этого нужно выполнить два преобразования типа данных....THEN... он должен инсертироваться внутри цикла, что, очевидно, он не делает. Цикл работает, но он не инсертирует тестовые значения. Где же волшебник кодирования, когда он мне нужен?

#define SIZE 50 // must be set to match NumberOfBars

static int Index = 0;

static double Opens[ SIZE ] = { 0 };

static int TotalOMatches[ SIZE ] = { 0 };

static double OpenHistogram[2][ SIZE ] = { 0 };

int ct5=0,i5=NumberOfBars;

int level=0,matches=0;

// This loop cycles TotalOMatches thru the OpenHistogram looking for identical price levels and creates histogram of all unique open levels and their associated matches

for(ct5=NumberOfBars;ct5>0;ct5--)

{

string Openhist=DoubleToStr(Opens,4*10000);

int Ohist=StrToInteger("Openhist");

Print("Ohist: ",Ohist," ",TotalOMatches);

while(OpenHistogram[level][matches] == OpenHistogram[Ohist][TotalOMatches])

{

level++;

matches++;

Print("Ohist: ",Ohist," ",TotalOMatches);

//Print("cycle: ",i5);

if(OpenHistogram[level][matches] != OpenHistogram[Ohist][TotalOMatches])

{

OpenHistogram[level][matches] = OpenHistogram[Ohist][TotalOMatches];

// We print the result

Print("Open Histogram: ",OpenHistogram[level][matches]);

Print ("Open Histogram2: ",OpenHistogram[Ohist][TotalOMatches]);

}

i5--;

}

}

Когда я запускаю это, он печатает

Ohist 0, 0

Ohist 0, 0

Ohist 0, 0

Ohist 0, 0

.....

около миллиона раз.

Если кто-то может помочь мне заставить это работать, не стесняйтесь. Это заставило меня крутиться вокруг столба.

 
AZBOfin:
Арагорн, вы используете настройки по умолчанию для вашей версии 1.0 R2, или вы что-то изменили. Риск, лоты и т.д. не имеют значения в любом случае, меня больше интересуют фильтры, настройки SL и тому подобное.

Я добавил ваш советник-переделку с сегодняшнего дня (пропустил вчерашний день торговли) в свой живой портфель для EUR$. Надеюсь, он сможет отыграть то, что потеряла "оригинальная" версия.

AZBOfin

BTW: хорошая работа с программированием действительно

Спасибо, мне все еще нужна помощь в кодировании. Знаете кого-нибудь, кто мог бы мне помочь? На самом деле я вижу себя кодирующим, как Микки Маус в Фантазии, когда Виззард повернулся спиной.

Это то, что я запускаю прямо сейчас. Все остальное я отключил. Да, это злой мир, но я замечаю, что все еще играю в эту игру. Удивительно, как меняется мое отношение к миру, когда я получаю прибыль, по сравнению с тем, когда я ухожу в минус. Сейчас мои усилия направлены на улучшение управления деньгами. Надеюсь, мне удастся наладить работу с поддержкой/сопротивлением в ближайшее время.

Вау, как насчет этого движения сегодня утром! Жаль, что я не поймал эту волну... но опять же, эта система не выигрывает, ловя большие движения. По крайней мере, в моем варианте она просто ищет 7 пунктов на высоковероятном развороте, когда cci правильные. Я должен помнить, что 7 пунктов 3 раза в день - это 21 пункт в день, и если она будет делать это каждый день или даже близко к этому с любой степенью надежности, это будет отличная система, которая может быть использована для зарабатывания миллионов всего за несколько месяцев. Я должен держать цель в поле зрения и не отвлекаться на вспышки рынка. Все эти вспышки бесполезны, если вы не можете поймать их с определенной степенью надежности. Я вижу больше надежности в этой системе, как она есть, чем в любой другой, которую я изучал до сих пор, поэтому я все еще работаю над ней.

 

Мне кажется, я вижу закономерность.

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

программа совершила три сделки среди последующих разворотов. Она заняла одну короткую позицию и две длинные позиции.

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

Так что...

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

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

 

Хорошо, я добавил

break; в этот момент в коде, который я только что разместил...

}

i5--;

break;

}[/PHP]

now it's printing the second variable of the array...that's the matches

[PHP]2006.10.31 10:50:11 2006.10.27 13:03 Support and Resistance EURUSDm,H1: Ohist: 0 2

2006.10.31 10:50:11 2006.10.27 13:03 Support and Resistance EURUSDm,H1: Ohist: 0 2

2006.10.31 10:50:11 2006.10.27 13:03 Support and Resistance EURUSDm,H1: Ohist: 0 4

2006.10.31 10:50:11 2006.10.27 13:03 Support and Resistance EURUSDm,H1: Ohist: 0 4

2006.10.31 10:50:11 2006.10.27 13:03 Support and Resistance EURUSDm,H1: Ohist: 0 2

2006.10.31 10:50:11 2006.10.27 13:03 Support and Resistance EURUSDm,H1: Ohist: 0 2

2006.10.31 10:50:11 2006.10.27 13:03 Support and Resistance EURUSDm,H1: Ohist: 0 2

2006.10.31 10:50:11 2006.10.27 13:03 Support and Resistance EURUSDm,H1: Ohist: 0 2

2006.10.31 10:50:11 2006.10.27 13:03 Support and Resistance EURUSDm,H1: Ohist: 0 3

2006.10.31 10:50:11 2006.10.27 13:03 Support and Resistance EURUSDm,H1: Ohist: 0 3

2006.10.31 10:50:11 2006.10.27 13:03 Support and Resistance EURUSDm,H1: Ohist: 0 2

2006.10.31 10:50:11 2006.10.27 13:03 Support and Resistance EURUSDm,H1: Ohist: 0 2

2006.10.31 10:50:11 2006.10.27 13:03 Support and Resistance EURUSDm,H1: Ohist: 0 5

2006.10.31 10:50:11 2006.10.27 13:03 Support and Resistance EURUSDm,H1: Ohist: 0 5

2006.10.31 10:50:11 2006.10.27 13:03 Support and Resistance EURUSDm,H1: Ohist: 0 5

2006.10.31 10:50:11 2006.10.27 13:03 Support and Resistance EURUSDm,H1: Ohist: 0 5

2006.10.31 10:50:11 2006.10.27 13:03 Support and Resistance EURUSDm,H1: Ohist: 0 5

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

 

привет арагорн

Я тоже играю с этой системой, но у меня разные результаты.

Не могли бы вы быть так добры и сделать скриншот одного дня из последних дней?

Также мне интересно, мое окно тревоги выглядит как cyberia alert - продажа eur/usd, но система продает gbp/usd? (у меня запущено 2 окна eur/usd, gbp/usd).

спасибо за помощь и информацию

бегу

Файлы:
 
forex2006:
Привет, Арагорн

Я тоже играю с этой системой, но у меня разные результаты.

Не могли бы вы быть так добры и сделать скриншот одного дня из последних дней?

Также мне интересно, мое окно тревоги выглядит как cyberia alert - продажа eur/usd, но система продает gbp/usd? (у меня запущено 2 окна eur/usd, gbp/usd).

спасибо за помощь и информацию

бегу

поймите, что то, что я создал с помощью алармов, предназначено исключительно для пары eurusd. Это может быть изменено в коде, чтобы сказать gbpusd, но я не рекомендую запускать версию euroalert на любой другой паре, кроме пары, для которой она оптимизирована.

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

вот так... чего бы это ни стоило.

Файлы:
aleerteuro.gif  61 kb
 

Хорошо, я думаю, я получил урок о попытке вручную улучшить сделки... демо взял длинную позицию и выиграл ее, а мой реальный счет не выиграл, потому что у меня были заблокированы длинные сделки... oy lol Я собираюсь вернуться, чтобы разрешить как длинные, так и короткие.... доказать, что я не гений торговли. еще одна теория оказалась менее чем безупречной...

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

К сведению,

http://www.212movie.com/

 

Итак, я решил проблему с преобразованием данных. Я заставил предыдущий цикл загрузить все значения цен *10000 в массив interger до того, как код выполнит этот цикл. Теперь я просто вызываю массив interger в этом цикле.

int ct5=0,i5=NumberOfBars;

int level=0,matches=0;

// This loop cycles TotalOMatches thru the OpenHistogram looking for identical price levels and creates histogram of all unique open levels and their associated matches

for(ct5=NumberOfBars;ct5>0;ct5--)

{

//Print("bar: ",i5," Ohist: ",OpensInt," ",TotalOMatches);

while(OpenHistogram[level][matches] == OpenHistogram[OpensInt][TotalOMatches])

{

level++;

matches++;

//Print("Ohist: ",Ohist," ",TotalOMatches);

Print("cycle: ",i5," Ohist: ",OpensInt," ",TotalOMatches);

if(OpenHistogram[level][matches] != OpenHistogram[OpensInt][TotalOMatches])

{

OpenHistogram[level][matches] = OpenHistogram[OpensInt][TotalOMatches];

// We print the result

Print("Open Histogram: ",OpenHistogram[level][matches]);

Print ("Open Histogram2: ",OpenHistogram[OpensInt][TotalOMatches]);

}

i5--;

break;

}[/PHP]

this is the output...

[PHP]2006.10.31 14:38:28 2006.10.27 19:59 Support and Resistance EURUSDm,H1: bar in loop: 1 Ohist: 12730 3

2006.10.31 14:38:28 2006.10.27 19:59 Support and Resistance EURUSDm,H1: bar in loop: 2 Ohist: 12730 3

2006.10.31 14:38:28 2006.10.27 19:59 Support and Resistance EURUSDm,H1: bar in loop: 3 Ohist: 12725 2

2006.10.31 14:38:28 2006.10.27 19:59 Support and Resistance EURUSDm,H1: bar in loop: 4 Ohist: 12722 2

2006.10.31 14:38:28 2006.10.27 19:59 Support and Resistance EURUSDm,H1: bar in loop: 5 Ohist: 12730 3

2006.10.31 14:38:28 2006.10.27 19:59 Support and Resistance EURUSDm,H1: bar in loop: 6 Ohist: 12713 1

2006.10.31 14:38:28 2006.10.27 19:59 Support and Resistance EURUSDm,H1: bar in loop: 7 Ohist: 12684 2

2006.10.31 14:38:28 2006.10.27 19:59 Support and Resistance EURUSDm,H1: bar in loop: 8 Ohist: 12679 4

2006.10.31 14:38:28 2006.10.27 19:59 Support and Resistance EURUSDm,H1: bar in loop: 9 Ohist: 12666 2

Проблема все еще остается...

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

Что-то в части, которая должна добавлять уникальные значения в конец гистограммы, не работает до сих пор....huummm... Я просто не знаком с массивами, не говоря уже о двумерных массивах. Для тех, кто знает, как это сделать, вероятно, очень очевидно, что я делаю неправильно.

Причина обращения: