Есть простая прибыльная система, но писать эксперты не умею.... - страница 2

 
билд 178 (от 27/07/05)







20:54:08 2004.12.10 15:15  123: ------  sflag0 bflag1
20:54:08 2004.12.10 15:30  123: 2004.12.10 15:30 PrevJMA1.31950000 CurJMA1.31960000
20:54:08 2004.12.10 15:30  123: ------  sflag0 bflag1
20:54:08 2004.12.10 15:45  123: 2004.12.10 15:45 PrevJMA1.31960000 CurJMA1.31970000
20:54:08 2004.12.10 15:45  123: ------  sflag0 bflag1



А проблема есть, но она заключается в самом тестере

 
А ты в эксперте каким образом новый бар отлавливал?
 
Интересную я тут картинку наблюдаю.... обновил только что MT, и... аж ничего не изменилось!!! Ордера один в один! Правда есть небольшие изменения, а именно - тот график, который оставался со старого MT и новый график JMA отличаются (чуть чуть, конечно, но видно при беглой смене окон).


2004.12.10 14:30 JMAValue = 1.3190
2004.12.10 14:45 JMAValue = 1.3193
2004.12.10 15:00 JMAValue = 1.3194
2004.12.10 15:15 JMAValue = 1.3196
2004.12.10 15:30 JMAValue = 1.3197
2004.12.10 15:45 JMAValue = 1.3198

Даже не знаю, чему верить... 177 или 178 ;))
Не, ребята разработчики, что то я совсем запутался в толи багах, толи глюках... пора спать %->
 

А ты в эксперте каким образом новый бар отлавливал?


не совсем понял вопрос...
Зачем его отлавливать? мы же всегда смотрим на предидущий бар, а тот, который формируется сейчас нам и не нужен. Ну вот, смотрим, если условие true, то пытаемся ордер исполнить, если конечно нет других ордеров, уже исполненных в эту сторону. Ну а если есть в противоположную, то закрываем сначала... короче все стандартно, вроде...
 
Сори, за то, что зачастил с месседжами, но как вам такое... NO COMMENTS!
 
не совсем понял вопрос...
Зачем его отлавливать? мы же всегда смотрим на предидущий бар, а тот, который формируется сейчас нам и не нужен. Ну вот, смотрим, если условие true, то пытаемся ордер исполнить, если конечно нет других ордеров, уже исполненных в эту сторону. Ну а если есть в противоположную, то закрываем сначала... короче все стандартно, вроде...

так "предыдущий" он и будет всегда "предыдущим", а вот как отличить что "предыдущий" на который мы смотрим сейчас это не "предыдущий" на который мы смотрели некоторое время назад?
вчера шел домой и как "больной" думал о причинах, а ты не пробовал найти разницу между MQL и DLL вариантом в терминале и тестере? твой DLL вариант построен на основе алгоритма Welld'а?
может в этом дело?
 
Дело в том, что я сравнительно недавно начал mql заниматься. До этого был mtAPI... там у меня и терминал свой был и язык, и тестер... ну да ладно, не будем о грустном. MQ4 вроде бы не плохой язык, но на сколько я понял, глючит датафид...
В длл я перегнал код weld-а, но сделал свой интерфейс ввода. Кроме того, что к стати, не очень легко можно реализовать на чистом MQ4, там есть возможность строить мувинги от произвольных данных (не только close, open.....)

Насчет различения "предидущих". Если это есть сама цель, то конечно это надо дополнительно описывать (сравнивать с количеством баров), но ведь логика работы данного эксперта куда проще. Предидущий бар является сформировавшимся, а следовательно всегда равным одному и тому же значению. Теперь, допустим, у нас выполнено условие MA[1] < MA[2]. Если при этом у нас еще не открыта позиция на продажу, то открываем. Ну а если открыта, то и не делаем ничего. И хоть мы сто раз прогоним этот код, он все равно отработает только один раз - на первом тике нового бара. а остальные разы ничего открывать не будет. Теперь, пусть на n-ом баре условие изменилось: MA[n+1] > MA[n+2]. Значит закрываем продажу и открываем покупку. далее логика та же.
 
2Pol
Насчет различения "предидущих". Если это есть сама цель, то конечно это надо дополнительно описывать (сравнивать с количеством баров), но ведь логика работы данного эксперта куда проще. Предидущий бар является сформировавшимся, а следовательно всегда равным одному и тому же значению. Теперь, допустим, у нас выполнено условие MA[1] < MA[2]. Если при этом у нас еще не открыта позиция на продажу, то открываем. Ну а если открыта, то и не делаем ничего. И хоть мы сто раз прогоним этот код, он все равно отработает только один раз - на первом тике нового бара. а остальные разы ничего открывать не будет. Теперь, пусть на n-ом баре условие изменилось: MA[n+1] > MA[n+2]. Значит закрываем продажу и открываем покупку. далее логика та же.

Так в том то и дело зачем гонять сто раз, когда можно за один! И для этого в эксперт как раз добавлено определение нового бара (код ведь должен быть эффективен, а зачем напрягаться и проверять ряд условий, когда можно проверив одно отказаться от других) я проверяю появился новый бар? - если нет ничего не изменилось я отдыхаю, а если не отлавливать бар тогда - куда направлена АМА? есть ли у меня текущие позиции по направлению, причем делается это на каждом тике (хотя для бара с индексом 1 - ничего уже не поменяется). Так как можно использовать несколько вариантов для "ловли" нового бара , то вот я и спросил как ты их отлавливаешь? потому что при использовании сравнения времени баров (LastTime) тестер выдает ошибочные значения (об этом я писал в "Моделирование?!!"), одновременно я столкнулся что при "ловле" нового бара по количеству баров (LastBars) вроде как все нормально (но думаю что определять по Барс нужно очень осторожно, т.к. их количество ограничено базой и в какой-то момент его значение должно перестать меняться).
В длл я перегнал код weld-а

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

Абсолютно согласен! Незачем, если нормального эксперта делать. Но мне просто не хотелось усложнять этим себе жизнь, ведь все равно от этого ничего не изменится, а глюков, как ты правильно заметил, может прибавиться.
На мой взгляд единственный более ли менее надежный вариант - сравнивать Bars. Если ограничения на величину базы и есть, то они должны быть ОЧЕНЬ большими. Но в своей проге я сравнивал все таки по времени (и это правильно).

сравнения результатов не делал ?

Делал конечно. 1:1 соответствие. В начале, правда, расходятся слегка... но это возможно из-за инициализаци.
Да могу конечно и длл дать. Все равно идея JMA не моя ;)
 
Делал конечно. 1:1 соответствие.
и в тестере и в терминале? проверял визуально или сравнение и вывод в файл?