Как кодировать? - страница 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" больше не действует, а теперь, например, сентябрьский контракт) больше не работает.

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

 

После каждой записи файла 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