int start()
{
double Price=Ask+300*Point;
double SL=Price-300*Point;
double TP=Price+150*Point;
bool New_Bar;
if (Time[0]) // если образовался новый бар int Ticket=OrderSend(Symbol(),OP_BUYSTOP,0.1,Price,3,SL,TP ); // выставить отложенный ордерreturn ;
Fun_New_Bar();
if ( New_Bar==true) // если образовался следующий бар
OrderDelete(Ticket); // удалить отложенный ордер//+------------------------------------------------------------------+void Fun_New_Bar(); //НО ПО ОТНОШЕНИЮ К ЭТОЙ СТРОКЕ КОМПИЛЯТОР ПИШЕТ ОШИБКУ '(' - function definition unexpected
{
staticdatetime New_Time=0;
New_Bar=false;
if( New_Time!==Time[0])
New_Time=Time[0];
New_Bar=true;
}
/* сорри, малость поправил пост - что бы читаемым был Vinin */
/* сорри, малость поправил пост - что бы читаемым был Vinin */
Эта строка
if (Time[0])
означает: "если время последнего бара не равно нулю". Так оно всегда не равно нулю.
Далее, переменная
bool New_Bar;
определена внутри функции start(), поэтому внутри других функций ее будет не видно. Кроме того, Fun_New_Bar() вы попытались определить внутри тела start(), в MQL так делать нельзя, все функции надо объявлять на глобальном уровне модуля. Туда же стоит вынести и объявление New_Bar.
Кроме того, в процессе одного выполнения функции start() (если она не зациклена), нельзя определить формирование бара, а потом ждать формирования следующего бара: start() по определению вызывается и завершается на каждом тике (с нюансами, но в целом так).
означает: "если время последнего бара не равно нулю". Так оно всегда не равно нулю.
Спасибо.Но не понимаю где в этой строке "НЕ". Не равно обозначается символом !==.
А я имел в виду - как только появилось время открытия нового бара,т.е. появился новый бар - открыть ордер.
и действительно вот такой код открывает ордер на открытии каждой пятиминутки
int start()
{
double Price=Open[0]+300*Point;
double SL=Price-300*Point;
double TP=Price+150*Point;
if (Time[0])
int Ticket=OrderSend(Symbol(),OP_BUYSTOP,0.1,Price,3,SL,TP );
}
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Да, и что с того?
Есть ряд ограничений при работе в режиме визуализации
Что я сделал не так!!!!
Придумал вот такое решение своей проблемы
/* сорри, малость поправил пост - что бы читаемым был Vinin */
Что я сделал не так!!!!
Придумал вот такое решение своей проблемы
/* сорри, малость поправил пост - что бы читаемым был Vinin */
означает: "если время последнего бара не равно нулю". Так оно всегда не равно нулю.
Далее, переменная
bool New_Bar;определена внутри функции start(), поэтому внутри других функций ее будет не видно. Кроме того, Fun_New_Bar() вы попытались определить внутри тела start(), в MQL так делать нельзя, все функции надо объявлять на глобальном уровне модуля. Туда же стоит вынести и объявление New_Bar.
Кроме того, в процессе одного выполнения функции start() (если она не зациклена), нельзя определить формирование бара, а потом ждать формирования следующего бара: start() по определению вызывается и завершается на каждом тике (с нюансами, но в целом так).
Советую перечитать справку и ликвидировать пробелы в области выполнения программ MQL, а также посмотреть пример написания зацикленной программы, незацикленной тоже.
Спасибо за заботу.А на какую кнопку нужно нажимать ,что бы код получался в таком формате.
SRC----------------------------\|/
--------------------------------------- V
Эта строка
означает: "если время последнего бара не равно нулю". Так оно всегда не равно нулю.
Спасибо.Но не понимаю где в этой строке "НЕ". Не равно обозначается символом !==.
А я имел в виду - как только появилось время открытия нового бара,т.е. появился новый бар - открыть ордер.
и действительно вот такой код открывает ордер на открытии каждой пятиминутки
int start() { double Price=Open[0]+300*Point; double SL=Price-300*Point; double TP=Price+150*Point; if (Time[0]) int Ticket=OrderSend(Symbol(),OP_BUYSTOP,0.1,Price,3,SL,TP ); }Я решил пойти другим как мне кажется более простым путем.
Не удалять отложенный ордер - а выставлять отложенный ордер только если не закончилась пятиминутная свеча
Т.е. устанавливать отложенный ордер при исполнении двух условий. При исполнении первого условия
if (Time[0])- я проверял ордер устанавливается
А как оформить второе условие,т.е установить отложенный ордер только если не истекли 5 минут. if (---------- && ?????????)