Petiyashaket: Спасибо за науку.Тем не менее вопрос остается открытым.Мне нужно чтобы бай стоп тралился(модифицировался) по фракталам за ценой пока не сработает,и селлстоп таким же макаром.
Так а на вопрос-то в твоём коде, выделенный красным
if(Up>0&&Down==0&&Volume[0]<2) //если верхний фрактал есть а нижнего нету и прошло не больше 2х тиков то:
{
if((High[3]+5*Point-Ask)/Point>MarketInfo(Symbol(),MODE_STOPLEVEL)) //если расстояние 0 бара от хая фрактала позволяет то:OrderSend(Symbol(),OP_BUYSTOP,Lot,High[3]+5*Point,20,High[3]-sl,High[3]+tp,NULL,Magic,0,Green);//выставляем отложенный на покупкуelse {BS=High[3]+5*Point; Print("Виртуальный BS:",BS);} // а ели нет то запоминаем(позже будет добавлен вход с рынка){ // К чему относится эта скобка???
for (int pos=0;pos==OrdersTotal();pos++)
OrderSelect(pos,SELECT_BY_POS,MODE_TRADES);
if(OrderMagicNumber()==Magic&&OrderSymbol()==Symbol()&&OrderType()==OP_BUYSTOP)
{
OrderModify(OrderTicket(),Up+5*Point,High[3]-sl,High[3]+tp,0,CLR_NONE);
}
} // это пара к той...}
так и не ответил. А от этого и результат выполнения кода будет другим.
Иногда за один тик их приходит пачка. И на этом баре условие уже не сработает
Виктор, это вопрос не ко мне. Я пользуюсь такой функцией
bool NewBar()
{
staticdatetime lastbar = iTime(_Symbol, PERIOD_H1, 0); // Период можно менять по желанию
datetime curbar = iTime(_Symbol, PERIOD_H1, 0); // и будет отсчитывать новый бар заданного периода на любом ТФ
if(lastbar != curbar)
{
lastbar = curbar;
return (true);
}
elsereturn(false);
}//******************************************************************|
Я скопировал кусок кода для того чтобы задать вопрос о скобках.
Petiyashaket: Так учит Олег Ремизов на ютюбе, это условие ограничивает торговлю на новостях и отлов лосей :)
Ничего про Ремизова сказать не хочу. Но не обижайтесь, если Ваш код будет пропускать бары. Ладно, если минутки (на какой поставите конечно таймфрейм), но если будете гонять на часовиках и старше - останется только Вам посочувствовать
Petiyashaket: поэкспериментировал со скобками повсякому,и удалил и добавил, результат прежний
Да экспериментировать-то не надо, надо чётко понимать значение этих скобок и как их применять. Об этом написано в документации, читать лекцию не буду.
if(Up>0&&Down==0&&Volume[0]<2) //если верхний фрактал есть а нижнего нету и прошло не больше 2х тиков то:
{
if((High[3]+5*Point-Ask)/Point>MarketInfo(Symbol(),MODE_STOPLEVEL)) //если расстояние 0 бара от хая фрактала позволяет то:OrderSend(Symbol(),OP_BUYSTOP,Lot,High[3]+5*Point,20,High[3]-sl,High[3]+tp,NULL,Magic,0,Green);//выставляем отложенный на покупкуelse {BS=High[3]+5*Point; Print("Виртуальный BS:",BS);} // а ели нет то запоминаем(позже будет добавлен вход с рынка)for (int pos=0;pos==OrdersTotal();pos++)
{ // наверное сюда её надо
OrderSelect(pos,SELECT_BY_POS,MODE_TRADES);
if(OrderMagicNumber()==Magic&&OrderSymbol()==Symbol()&&OrderType()==OP_BUYSTOP)
{
OrderModify(OrderTicket(),Up+5*Point,High[3]-sl,High[3]+tp,0,CLR_NONE);
}
} // это пара к той...}
Но это только часть кода. Дальше есть аналогичная непонятка.
вот точная копия,не понимаю только счетчик for, потому что скопировал его с траллинг стопа ,поэтому и стоплосс прикрутить не могу к фракталам-потому что не умею их искать.короче все упирается в цикл.Вот если обьясните мне его в строке кода да с комментариями как у меня в предыдущем коде ,буду премного благодарен.
Но проверка на минимальный лот все равно нужна будет.
Вот зачем все эти сложности, X какой-то, который отдельно надо вычислять? Да ещё и проверка дополнительная потом потребуется...
Не проще ли проконтролировать прямым и честным образом валидность и допустимость всех значений, составляющих формулу, а потом её просто честно вычислить?
Кстати, MathRound() округляет к ближайшему целому, то есть, запросто неправомерно завысить может, что может вызвать уже дополнительные последствия.
Спасибо за науку.Тем не менее вопрос остается открытым.Мне нужно чтобы бай стоп тралился(модифицировался) по фракталам за ценой пока не сработает,и селлстоп таким же макаром.
Так а на вопрос-то в твоём коде, выделенный красным
так и не ответил. А от этого и результат выполнения кода будет другим.
Так а на вопрос-то в твоём коде, выделенный красным
так и не ответил. А от этого и результат выполнения кода будет другим.
Зачем Вы используете в условии Volume[0]<2 ?
Иногда за один тик их приходит пачка. И на этом баре условие уже не сработает
Зачем Вы используете в условии Volume[0]<2 ?
Иногда за один тик их приходит пачка. И на этом баре условие уже не сработает
Виктор, это вопрос не ко мне. Я пользуюсь такой функцией
Я скопировал кусок кода для того чтобы задать вопрос о скобках.
Зачем Вы используете в условии Volume[0]<2 ?
Иногда за один тик их приходит пачка. И на этом баре условие уже не сработает
Так учит Олег Ремизов на ютюбе, это условие ограничивает торговлю на новостях и отлов лосей :)
Так а на вопрос-то в твоём коде, выделенный красным
так и не ответил. А от этого и результат выполнения кода будет другим.
поэкспериментировал со скобками повсякому,и удалил и добавил, результат прежний
Да экспериментировать-то не надо, надо чётко понимать значение этих скобок и как их применять. Об этом написано в документации, читать лекцию не буду.
Но это только часть кода. Дальше есть аналогичная непонятка.Эту формулу довольно легко исправить под требования. Необходимо просто учитывать минимальный лот
Выглядеть будет немного по другому
Где Х - Баланс для открытия минимального лота,
Но проверка на минимальный лот все равно нужна будет.
Вот зачем все эти сложности, X какой-то, который отдельно надо вычислять? Да ещё и проверка дополнительная потом потребуется...
Не проще ли проконтролировать прямым и честным образом валидность и допустимость всех значений, составляющих формулу, а потом её просто честно вычислить?
Кстати, MathRound() округляет к ближайшему целому, то есть, запросто неправомерно завысить может, что может вызвать уже дополнительные последствия.
Бедненький.