[Архив!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 2. - страница 439

 
peshihod:


Так понимаю, что выставленный(отложенный) ордер и открытый ордер - это разные ордера. А если отложенный ордер, открывается то задача сводиться к исходной, к открытому ордеру. Если я правильно понимаю, то сложно получается.

А что за задачи? Может быть всё проще можно сделать?

Так понимаю, что выставленный(отложенный) ордер и открытый ордер - это разные ордера. -------------- да(возможно) Можетбыть и нет . Главное что бы скрипт срабатывал при открытии этого отложеного ордера, тойсть не тогда когда он выставлен, а когда именно открылся .

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


вот почти готовый вариант, но он не срабатывает если открылся отложеный ордер(Был отложеный ордер, цена до него дошла, он открылся и робот должен отреагировать тоже ) . А нужно что-бы и на такие ордера срабатывал .

Сртано, тестирую его сейчас, все работает. Почемуже при 1-м тесте не сработало хм... Может из-за того что был рестарт компьютера ...Но после планового рестарта, робот улыбался (работал).

Подскажите еще одну деталь . Этот скрипт на исторических графиках не будет работать, и почему?

//+------------------------------------------------------------------+
//| Order_act.mq4 |
//| |
//| |
//+------------------------------------------------------------------+
#property copyright ""
#property link ""
int Order_array[200];
int Total=0;
int j,pos,count,order_tick,type;
bool found;

//+------------------------------------------------------------------+
//| script program start function |
//+------------------------------------------------------------------+
int start()
{
//----
// создаем список ордеров (туда входят и открытые, и отложенные)
Total=OrdersTotal();

for(pos=0;pos<Total;pos++)
{
if(OrderSelect(pos,SELECT_BY_POS,MODE_TRADES)==true)
{ Order_array[pos]=OrderTicket();}
}

// проверочная часть скрипта
int i=0;
while ( !IsStopped() )
{
count=OrdersTotal();
for(pos=0;pos<count;pos++)
{
if(OrderSelect(pos,SELECT_BY_POS,MODE_TRADES)==true)
{
found=false;
order_tick=OrderTicket();

for (j=0;j<Total;j++)
{

if (order_tick==Order_array[j]) {found=true;}
}
if (!found)
{
type=OrderType();

if ((type==OP_BUY) || (type==OP_SELL))
{
Total++; // в случае,если есть новый открытый
Order_array[Total-1]=order_tick; //ордер - добавляем в список

Alert("Новый открытый ордер"); // и делаем с ним что хотим

}
}
}
// если планируется, что скрипт будет работать долго или открываемся часто
// удаляем из списка все закрытые ордера чтобы не было переполнения.
// А чтобы работало быстрее, количество записей можно уменьшить (лишь бы не превысило
// максимально возможного числа открытых и отложенных поз.
if (Total>190)
{
for (j=0;j<Total;j++)
{
if(OrderSelect(Order_array[j],SELECT_BY_TICKET)==true)
{
if (OrderCloseTime()!=0)
{
Alert("нашли закрытый в списке и удалили");
for (i=j+1;i<Total;i++) {Order_array[j]=Order_array[i];}
Total--;
}
}
}
}
Sleep(100);
}
}
//----
return(0);
}
//+------------------------------------------------------------------+

Его написал RAVen_ Спасибо этому профессионалу .

 

Уважаемые профессионалы,

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

 
demlin:

Уважаемые профессионалы,

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


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

Уважаемые профессионалы,

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

Ещё есть такая библиотека.
 
semiromid:

Так понимаю, что выставленный(отложенный) ордер и открытый ордер - это разные ордера. -------------- да(возможно) Можетбыть и нет . Главное что бы скрипт срабатывал при открытии этого отложеного ордера, тойсть не тогда когда он выставлен, а когда именно открылся .


Это вскапывание пары деревьев при помощи эксковатора! Какой смысл разделять ордера? Цена -- одна единая для всех. Всегда ордера обрабатываются вместе,оптом, по единому наилучшему варианту.

Т.е. неважно кто ставит ордера, важно какие параметры у каждого отдельного ордера. Пустого ищешь.

Раз нужно выполнить задачу1 и задачу2, значит надо проверить каждый ордер, выполнена ли к нему нужная задача или нет. А проверять открылся это ордер прямо сейчас, или чуть раньше, или вот-вот откроется, в этом нет нужды.

 
peshihod:


Это вскапывание пары деревьев при помощи эксковатора! Какой смысл разделять ордера? Цена -- одна единая для всех. Всегда ордера обрабатываются вместе,оптом, по единому наилучшему варианту.

Т.е. неважно кто ставит ордера, важно какие параметры у каждого отдельного ордера. Пустого ищешь.

Раз нужно выполнить задачу1 и задачу2, значит надо проверить каждый ордер, выполнена ли к нему нужная задача или нет. А проверять открылся это ордер прямо сейчас, или чуть раньше, или вот-вот откроется, в этом нет нужды.

Это вскапывание пары деревьев при помощи эксковатора! ----------- Что есть проще вариант?

Какой смысл разделять ордера? -------------- мне нужно разделять ордера на буй и селл .Или вы имели введу насчет обработки ореров?Тогда может и нету смысла . Намекните хотябы, как cделать скрипт попроще ?

Сртано, тестирую его сейчас, все работает. Почемуже при 1-м тесте не сработало хм... Может из-за того что был рестарт компьютера ...Но после планового рестарта, робот улыбался (работал). Какие есть варианты, почему он тогда не сработал ? Просто возможно подобный збой произойдет и в будущим.

 

Доброго времени суток всем.

Возник вот такой вопрос. Допустим имеется индикатор XXXXXXX (название не имеет значения)

Исходного кода индикатора к сожалению нет. Соответсвенно на чём основана его работа не очень понятно)

Можно ли написать эксперт на основе сигналов индикатора XXXXXXXX для открытия ордеров на продажу и покупку?

Вот вам пример на скрине

 
FreeSerfer:

Доброго времени суток всем.

Возник вот такой вопрос. Допустим имеется индикатор XXXXXXX (название не имеет значения)

Исходного кода индикатора к сожалению нет. Соответсвенно на чём основана его работа не очень понятно)

Можно ли написать эксперт на основе сигналов индикатора XXXXXXXX для открытия ордеров на продажу и покупку?

Вот вам пример на скрине


Да, возможно. Даже догадываюсь, что за индюк... :-)))
 

Подскажите . Как можно сделать что бы этот робот покупал четко через 20 секунд?

А не так, когда уже прошло 20 секунд, потом цена стоит еще 20, и в итоге получаеться что он срабатывает через 40 секунд .

int start()
{

OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Bid-15*Point,Bid+15*Point, "Ордер №", 0); // открытие ордера на покупку
Sleep(20000); // Таймер на 20 секунд

return(0);
}

 
Зацикленный скрипт нужен, чтобы работать по времени, а не по тикам.
Причина обращения: