Как кодировать? - страница 263

 

Можно ли перетаскивать линию вверх и вниз ... ?

Здравствуйте,

Возможно ли, чтобы линия уровней (или "эффективные" линии уровней) в отдельном окне индикатора могла быть перемещена (т.е. "перетащена") вручную и чтобы новое значение параметров было обновлено в советнике, который использует их для инициирования и выхода из сделки?

Я читал, что существуют скрипты drag 'n drop, в которых можно перемещать линию, но не знаю, возможно ли встроить/склеить такой скрипт в советник.

 
 
yourspace:
привет

Возможно, это правильно, вы можете попробовать.

double upper_red = iCustom(NULL,0, "DDM",Nmbr_Bars,Order,Ecart,3,0);

Ничего не изменится, но все равно танки на реакцию.

Может кто-то знает похожий индикатор?

edit: Я решил эту проблему, индикатор " i-Regr H&L" почти такой же, этот рисует нормально.

 

Сохранение цитат

Здравствуйте,

Я хочу сохранять фактические тиковые данные в csv-файл. Каждую неделю или месяц я хочу сохранять один csv-файл.

Поэтому в моей init-функции я открываю новый файл и каждый тик я делаю следующее

FileWrite(handle_tick,TimeToStr(CurTime(),TIME_DATE|TIME_MINUTES|TIME_SECONDS),Bid,Ask);

Теперь у меня есть несколько проблем/вопросов:

1.

Когда возникает проблема с записью в файл, ea останавливается для дыры (неделя/месяц) и не может открыть его снова.

-Должен ли я писать FileOpen(...) каждый тик? Или лучше использовать FileFlush(...)?

2.

Также возникла проблема с сохраненным временем. Если я сравнивал его с графиком или временем из центра истории, то наблюдалась большая разница (не статическая, иногда, например, 39 минут или 87 минут).

Должен ли я сохранять CurTime или какое время?

3.

У меня бывают перерывы в подключении к интернету (например, 2-5 минут, примерно 3 раза в день).

Как я могу автоматически проверять мои сохраненные котировки, чтобы ea получала недостающие минутные данные из истории?

И как я могу получить мои тиковые данные, если интернет соединение было потеряно? Есть ли также центр истории или буфер для последних часов?

4.

Кто-нибудь знает простой способ автоматического объединения отдельных файлов csv-quote?

5.

Я также хочу сохранять тиковые и минутные данные с таких cfd, как Ger30! Если я сохраняю .csv-файл ежемесячно, но новый контракт, который приходит каждые 3 месяца, меняется в течение месяца. Тогда советник не может найти данные, потому что фактический базовый контракт (контракт "Juli" больше не действует, а теперь, например, сентябрьский контракт) больше не работает.

Может быть, уже есть надежный советник для этой проблемы?

[Eliminato]  

После каждой записи файла FileWrite необходимо выполнить промывку файла, чтобы убедиться, что данные записываются на диск после каждой записи. Если flush не используется, файловая система сохраняет записи в буфере памяти, а затем записывает все записи в буфере на диск для повышения эффективности. Это может быть причиной потери записей; ea останавливается, и вы теряете записи из памяти. Файл-флэш записывает каждую запись на диск, что медленнее, но гарантирует, что вы получите их все. При использовании функции file flush вы можете открыть файл с помощью Excel во время работы советника и изучить его в режиме "только чтение".

В функции deinit проверьте, что хэндл файла > 0, а затем закройте файл.

Это приведет к автоматической очистке буфера памяти.

При открытии есть возможность либо создать новый файл на диске, либо добавить к существующему файлу. Похоже, что вам следует использовать метод добавления к существующему файлу. Это позволит решить проблему слияния файлов автоматически. Вы можете открыть каждый CSV-файл в отдельном экземпляре Excel и вырезать и вставить, можно также использовать Блокнот. В Excel вы можете сохранить объединенный файл как CSV или использовать Excel как базу данных для хранения объединенной информации в формате XLSX. Или вы можете получить VB express от MS, он бесплатный, изучить VB и написать объединение файлов на этом языке.

Лучший вариант - поискать другие примеры экономии тиков.

Спасибо

 

У меня есть еще один вопрос:

6.

Полезно ли сохранять бид, аск и объем в моем тик-файле?

7.

Есть ли у кого-нибудь учебник по бэктестингу тиковых данных в metatrader 4 или/и 5?

Есть ли там эксперт, который мог бы помочь мне?! Вы также можете ответить в личном сообщении...

Спасибо!

юлия

 

Особенно, что касается CFD? Они меняют контракт каждые три месяца! Так как я могу запрограммировать это в моем tick-saver.mq4, чтобы смена базового актива происходила автоматически и я не терял тики???

[Удален]  

Привет всем, мне нужна помощь в использовании 1 советника на нескольких графиках!!!

краткое содержание моего вопроса:

У меня есть советник, который выставляет только 1 ордер за раз, используя переменную total = OrdersTotal() . Новый ордер открывается только после закрытия 1 ордера.

Как я могу изменить его так, чтобы две разные валютные пары могли иметь по 1 открытому ордеру без того, чтобы одна и та же валютная пара имела 2 открытых ордера?

Мне нужны строки кода, которые позволят мне сделать следующее:

разместить 1 ордер (скажем, с магическим # 12345), если еще нет открытого ордера с таким магическим #.

или, разместить 1 ордер, если еще не открыт ордер с таким же символом ордера.

--------------------------

более длинная версия моей проблемы:

Недавно я модифицировал простой советник, основанный на размещении ордеров при пересечении линий 10 и 5 SMA.

Он отлично работает с моим графиком EURUSD и выставляет только один ордер за раз, либо на покупку, либо на продажу, потому что у меня есть эти строки кода:

total = OrdersTotal();

if(total < 1)

-тогда он размещает ордер

Однако когда я создал дубликат советника и применил его к графику EURJPY, мне пришлось изменить код на

total = OrdersTotal();

if(total < 2)

-чтобы он выставлял ордер, если на графике EURUSD уже открыт ордер.

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

Я даю разным парам отдельные магические числа. У меня был открыт ордер на графике EURUSD с магическим номером 22341, и я попробовал использовать новую переменную для графика EURJPY:

tott = OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if(OrderMagicNumber() == 22341) //22341 - магический номер для ордеров EURUSD

total = OrdersTotal();

if(total < 2 && tott == true)

-тогда ордер размещается на EURJPY

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

Любая помощь будет принята с благодарностью!

редактировать:

я решил использовать магические числа:

total= 0;

for(int i=0;i<OrdersTotal(); i++ )

{

if(OrderSelect(i, SELECT_BY_POS)==true)

{

if (OrderMagicNumber()==12341)

total++;

}

}

{

if(total < 1)

-тогда будет произведена сделка

 

Бэктестинг тикданных

Суншинэ,

"7. Есть ли у кого-нибудь учебник по бэктестингу тиковых данных в metatrader 4 или/и 5?".

Старый билд - я думаю, это был 208 - был последним, который делал тиковые данные. Он был где-то опубликован, сначала поищите в TSD.

Если вы решите эту проблему, я бы тоже хотел ее использовать. Я также знаю тему, где это решено приемлемо, хотя это может быть не на TSD.

Big Be

 

Как заставить советника понять, что предыдущий бар закрылся выше BB?

Привет всем,

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

и эма пересекается или что-то в этом роде. Пока что мой код выглядит следующим образом:

int bar, sll;

if( Close[0] > полосы Боллинджера ){

bar = Bars;}

if( bar+1 == Bars){

if(ema1>ema2){

sll = 1}

if ( bar+2 == Bars ){

bar = 0;}

К сожалению, это не работает, и я также пробовал сделать это статической и глобальной переменной. Поэтому я буду очень благодарен, если кто-нибудь направит меня в нужном направлении.

Будьте здоровы,

Sapere