MQL4 - automated forex trading   /  

Форум

Перевести из MT3 в MT4

К списку тем Авторизуйтесь или зарегистрируйтесь, чтобы создать новую тему

avatar
26
EvgeniX 15.02.2006 21:59 
Может кто помочь перегнать это в MT4 плиз


i = 1; while Ord(i,VAL_TICKET) != TicketSWS { i++; } CloseOrder(Ord(i,VAL_TICKET),Ord(i,VAL_LOTS),Ask,Slippage,Yellow); T41Cnt++; Exit;

Бесплатная Groupware для групп разработчиков

Установите систему групповой работы TeamWox и объедините усилия всех разработчиков. Это поможет вашей команде работать быстрее и организованнее. Благодаря TeamWox станет намного проще ставить задачи и контролировать их выполнение.


avatar
181
mandor 16.02.2006 08:33 
Например так:

int i, result; ... result=0; for (i=0;i<OrdersTotal();i++) { if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; if (OrderSymbol()!=Symbol() && OrderTicket()!=TicketSWS) continue; if (OrderClose(OrderTicket(),OrderLots(),Ask,Slippage)) result=1; break; } if (result>0) T41Cnt++;

Насчет "Exit" надо смотреть в контексте всей проги.

avatar
26
EvgeniX 18.02.2006 06:39 
спасибо огромное!

и еще один вопросик?

стоитли выходить из еа (return(0)) после каждого OrderClose(...) если нужно закрыть неприер 4 ордера (3 Buy и 1 Sell ) или мт4 может закрыть их подрят и без ошибок?

зарание блогодарен!

avatar
181
mandor 18.02.2006 17:44 
Теоретически можно, но ...
1. Перед выполнением любой торговой функции делаем проверку:

// // в начале функции start() if(IsTradeAllowed()!=true) return; // в цикле if(IsTradeAllowed()!=true) continue;

2. Из опыта следует, что надёжнее после запроса любой торговой фунции выйти до прихода нового тика (перед выходом выполнить проверку возвращаемого значения и напечатать код ошибки, если терминал версии 4.xx). Хотя выход после вызова любой торговой функции был строго небходим при использовании терминала 3.xx версии, не вижу препятствий для использования этого способа и при использовании терминала версии 4.xx. Надёжность в реале важнее красивого алгоритма.

3. Частенько в терминале на нескольких графиках висит по советнику. Будет лучше, если они будут выполнять свои операции минимально короткое время и не будут мешать друг другу. Поэтому такую "классную" фичу как Sleep(), а тем более в циклах, старательно игнорируем.

avatar
313
SKif 18.02.2006 18:16 
EvgeniX:

стоитли выходить из еа (return(0)) после каждого OrderClose(...) если нужно закрыть неприер 4 ордера (3 Buy и 1 Sell ) или мт4 может закрыть их подрят и без ошибок?
Эксперт или скрипт не выпустит одновременно несколько торговых приказов.
Более того, он не выпустит очередной приказ до тех пор, пока не получит ответ сервера по факту исполнения или неисполнения предыдущего приказа. Советник просто не передаст управление следующей командной строке (оператору), находящейся непосредственно за функцией, отправляющей торговый приказ, до ответа сервера. Это значит, что не будет являться некоррекным код, кот. поочерёдно посылает торговые приказы по нескольким ордерам в рамках одного запуска ф-ии Start().

Нужно только следить, чтобы перед отправкой приказа был проанализирован текущий курс, например, использовать RefreshRates(). Если курс изменился, то необходимо откорректировать значения параметров торговой функции. При хорошей связи ордера могут быть закрыты с периодичностью приблизительно 0,5 - 1 сек, что зачастую меньше, чем промежуток времени между тиками.
К списку тем  

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий