[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 370

 
Bion >>:

Сделал как вы посоветовали

datetime LastTime;
datetime Pause=3600;

int start()
{
if(TimeCurrent()<LastTime+Pause)return(0);

...

bool cl() {if (OrderSelect(0,SELECT_BY_POS)==true){ int t=OrderType();
double l=OrderLots();
int tik=OrderTicket();Alert("tik=", tik);
}
if (t==OP_BUY) OrderClose(tik,l,Bid,3,Red);
if (t==OP_SELL) OrderClose(tik,l,Ask,3,Green);
LastTime=TimeCurrent();
}

Всеравно на тестере не реагирует открывает ордера все подряд в соответствии с условием, но при этом на время не реагирует.

И еще на тестере не реагирует параметр время существования отложенного ордера, т.е не удаляется когда ему пора удалиться.

Это так и должно быть?

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


Во-первых хочется сказать, что раз уж Вы создали функцию закрытия то неплохо было бы возвращать из неё значение, Во-вторых не очень красиво глобальной переменной присваивать занчение в какой то непонятной функции, вариантов решения два ибо передавать по ссылке, либо раз уж у вас функция возвращает значение булевского типа то можно если она завершилась удачно то присвоить значение глобальной переменной, конечно переменные под if объявлять тоже как то настораживает но это уже Ваше дело .... это так к слову))) А по теме из вашего кода не видно когда вызывается данная функция и вызывается ли она вообще. Попробуй продебажить внесением результатов в лог файл по нему сразу поймешь.
 

Вот полностью код, убрал все функции, переменые объявил как надо, а результат все тот же - в тестовом режиме на время не реагирует, лепит лишние ордера на одном и том же баре.

Что ему нужно?


double q0=0;
double q1=0;
double q2=0;
double q3=0;
datetime LastTime;
datetime Pause=3600;
int typ, tik;
double l;

int start()
{

datetime t=Hour();

if (t==8) {q0=0; q1=0; q2=0; q3=0;}

if (t>=9) {

int i0=0;
while (q0==0) { q0=iCustom(NULL,0,"MorningFlat_V3",0,15,8,45,161.8,Turquoise,Red,Gold, Silver,0,i0); i0++; }

int i1=0;
while (q1==0) { q1=iCustom(NULL,0,"MorningFlat_V3",0,15,8,45,161.8,Turquoise,Red,Gold, Silver,1,i1); i1++; }

int i2=0;
while (q2==0) { q2=iCustom(NULL,0,"MorningFlat_V3",0,15,8,45,161.8,Turquoise,Red,Gold, Silver,2,i2); i2++; }

int i3=0;
while (q3==0) { q3=iCustom(NULL,0,"MorningFlat_V3",0,15,8,45,161.8,Turquoise,Red,Gold, Silver,3,i3); i3++; }


Comment("g0=",q0, "\n","g1=",q1, "\n", "g2=",q2, "\n", "g3=",q3 ); }

double os0=iOsMA(NULL,0,5,26,9,4,0);

double os1=iOsMA(NULL,0,5,26,9,4,1);

// смотреть отсюда


if(TimeCurrent()<(LastTime+Pause))return(0);

if ( OrdersTotal()==0) { if (Bid>q0 && t>=9 && t<=20 && os1>0) OrderSend(Symbol(),OP_BUY,0.1,Ask,3,(Bid-30*Point),0,"__",555,0,Red );

if (Ask<q1 && t>=9 && t<=20 && os1<0) OrderSend(Symbol(),OP_SELL,0.1,Bid,3,(Ask+30*Point),0,"__",444,0,Green);}

if (OrdersTotal()==1) {OrderSelect(0,SELECT_BY_POS);
typ=OrderType();
tik=OrderTicket();
l=OrderLots();
if (typ==OP_BUY && os1<0) { LastTime=TimeCurrent(); OrderClose(tik,l,Bid,3,Red);}
if (typ==OP_SELL && os1>0) { LastTime=TimeCurrent();OrderClose(tik,l,Ask,3,Green);}

}

return(0);
}
//+------------------------------------------------------------------+

 

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

Вопрос к знатокам -

Ситуация такая: висит эксперт на демосчёте, Котировки проходят, цены меняются, но эксперт с некоторого времени торговать перестал, в логе генерируется ошибка :


2009.12.30 16:46:06 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Код ошибки = 136. Нет цен
2009.12.30 16:46:06 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Код ошибки = 136. Нет цен
2009.12.30 16:46:07 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Код ошибки = 136. Нет цен
2009.12.30 16:46:07 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Код ошибки = 136. Нет цен
2009.12.30 16:46:08 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Код ошибки = 136. Нет цен
2009.12.30 16:46:09 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Код ошибки = 136. Нет цен
2009.12.30 16:46:09 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Код ошибки = 136. Нет цен
2009.12.30 16:46:10 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Код ошибки = 136. Нет цен
2009.12.30 16:46:10 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Код ошибки = 136. Нет цен
2009.12.30 16:46:11 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Код ошибки = 136. Нет цен
2009.12.30 16:46:11 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Код ошибки = 136. Нет цен
2009.12.30 16:46:12 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Код ошибки = 136. Нет цен
2009.12.30 16:46:13 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Код ошибки = 136. Нет цен

Пара - USDCAD


Начало выхода ошибок в 2009.12.30 16:46:06 у остановка в

2009.12.30 17:29:58 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Код ошибки = 128. Истек срок ожидания совершения сделки

Согласитесь 43 минуты - это значимо, что еще хуже - портит алгоритм работы експерта.

Что еще более интересно ошибку выдает при попытке отправить ордер OP_BUYSTOP :-0 (какие могут быть котировки для отложек ?)


136 НЕТ ЦЕН = OFF QUOTES:


Почему нет цен если на экране они постоянно меняются?


Вопрос поднимался здесь https://www.mql5.com/ru/forum/105903/page2 уважаемым goldtrader-ом но так и не был решен официально ( надеюсь этот вопрос не из рода ТАБУ, которые не хотят обсуждать у всех на виду )


Хотелось бы узнать "Почему так", и "Как предупредить или обрабатывать такого рода ошибки"


Заранее спасибо за ответ.

 
AndBar >>:

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

Вопрос к знатокам -

Ситуация такая: висит эксперт на демосчёте, Котировки проходят, цены меняются, но эксперт с некоторого времени торговать перестал, в логе генерируется ошибка :


2009.12.30 16:46:06 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Код ошибки = 136. Нет цен
2009.12.30 16:46:06 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Код ошибки = 136. Нет цен
2009.12.30 16:46:07 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Код ошибки = 136. Нет цен
2009.12.30 16:46:07 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Код ошибки = 136. Нет цен
2009.12.30 16:46:08 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Код ошибки = 136. Нет цен
2009.12.30 16:46:09 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Код ошибки = 136. Нет цен
2009.12.30 16:46:09 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Код ошибки = 136. Нет цен
2009.12.30 16:46:10 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Код ошибки = 136. Нет цен
2009.12.30 16:46:10 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Код ошибки = 136. Нет цен
2009.12.30 16:46:11 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Код ошибки = 136. Нет цен
2009.12.30 16:46:11 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Код ошибки = 136. Нет цен
2009.12.30 16:46:12 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Код ошибки = 136. Нет цен
2009.12.30 16:46:13 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Код ошибки = 136. Нет цен

Пара - USDCAD


Начало выхода ошибок в 2009.12.30 16:46:06 у остановка в

2009.12.30 17:29:58 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Код ошибки = 128. Истек срок ожидания совершения сделки

Согласитесь 43 минуты - это значимо, что еще хуже - портит алгоритм работы експерта.

Что еще более интересно ошибку выдает при попытке отправить ордер OP_BUYSTOP :-0 (какие могут быть котировки для отложек ?)


136 НЕТ ЦЕН = OFF QUOTES:


Почему нет цен если на экране они постоянно меняются?


Вопрос поднимался здесь https://www.mql5.com/ru/forum/105903/page2 уважаемым goldtrader-ом но так и не был решен официально ( надеюсь этот вопрос не из рода ТАБУ, которые не хотят обсуждать у всех на виду )


Хотелось бы узнать "Почему так", и "Как предупредить или обрабатывать такого рода ошибки"

а какой ревайз платформы?

Тут обсужалось не раз о разных потоках данных. Для автоматической торговли поток закрылся. Видимо.

 
AndBar писал(а) >>

136 НЕТ ЦЕН = OFF QUOTES:

Перед выходом новостей такое часто бывает. Сделать ничего нельзя, разве что заранее ставить ордер и тянуть его за ценой пока возможно. 43 минуты - слишкм долго.

 
Bion писал(а) >>

Вот полностью код, убрал все функции, переменые объявил как надо, а результат все тот же - в тестовом режиме на время не реагирует, лепит лишние ордера на одном и том же баре.

Вопрос был о паузе после закрытия. После закрытия будет пауза.

-

Несколько открытий на одном баре. После открытия надо запоминать время бара, а перед открытием проверять, чтобы время бара не равнялось времени последнего открытия. Для запоминания этого времени лучше использовать GlobalVariable.

-

Во все while не помешает добавить проверку while (q0==0 && i<Bars).

-

LastTime=TimeCurrent(); - это делать лучше после проверки, что ордер действительно закрылся: if(OrderClose(...))LastTime=TimeCurrent();

 
Integer писал(а) >>

Вопрос был о паузе после закрытия. После закрытия будет пауза.

-

Несколько открытий на одном баре. После открытия надо запоминать время бара, а перед открытием проверять, чтобы время бара не равнялось времени последнего открытия. Для запоминания этого времени лучше использовать GlobalVariable.

-

Во все while не помешает добавить проверку while (q0==0 && i<Bars).

-

LastTime=TimeCurrent(); - это делать лучше после проверки, что ордер действительно закрылся: if(OrderClose(...))LastTime=TimeCurrent();

Из учебника - GV-переменная может иметь только тип double - как туда тогда ставить количество секунд

Сделал проверку закрытия ордера всеравно не работает, по прежнему с ошибкой.


if(Time[0]<(LastTime+Pause))return(0);

if ( OrdersTotal()==0) { if (Bid>q0 && t>=9 && t<=20 && os1>0) OrderSend(Symbol(),OP_BUY,0.1,Ask,3,(Bid-30*Point),0,"__",555,0,Red );

if (Ask<q1 && t>=9 && t<=20 && os1<0) OrderSend(Symbol(),OP_SELL,0.1,Bid,3,(Ask+30*Point),0,"__",444,0,Green);}

if (OrdersTotal()==1) {OrderSelect(0,SELECT_BY_POS);
typ=OrderType();
tik=OrderTicket();
l=OrderLots();
if (typ==OP_BUY && os1<0) if (OrderClose(tik,l,Bid,3,Red)) LastTime=Time[0];
if (typ==OP_SELL && os1>0) if (OrderClose(tik,l,Ask,3,Green)) LastTime=Time[0];
}

Не могли бы привести пример или дать ссылку где успешно реализована задача задержки открытия следующего ордера на час после предыдущего;

 
Bion писал(а) >>

Из учебника - GV-переменная может иметь только тип double - как туда тогда ставить количество секунд

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

Всех с наступающим!

 
Работал с одним индикатором, было все нормально, потом при переключении таймфрейма начал зависать терминал, переустановил винду, все равно зависает. Почему(((((((((((((
 
Fosfalugel писал(а) >>
Работал с одним индикатором, было все нормально, потом при переключении таймфрейма начал зависать терминал, переустановил винду, все равно зависает. Почему(((((((((((((

Индикатор наверно надо выкинуть. Или попросить Деда Мороза. Новый год же сегодня.

Причина обращения: