А чужие ордера (по другим символам и с др. магиками) ??? В тестере покатит, но если на счету будет кроме этого советника что-то ещё, то корректнее так:
Уважаемый с такими выкладками Вы парня введёте в большое заблуждение,а читать описания он не умеет. Представьте как он запутается ,я позтому и написал так чтобы ему понятнее было .
Только с экспертом я так и невник, как работает функция Delta Сделки срабатывают не при моих условиях Delta=30 Это значит я хочу, чтобы эксперт открывал позицию +-30 в пунктах. А он открывает и при 5-10 пунктах при росте и при падении, не понятно....
Реально функция Delta работает не пойми как :( Может есть какие то другие простые решения? Я тут нарыл одну функцию Distance=30 // Расстояниеот текущей цены до цены отложенных ордеров Можно ли ее реализовать не только для отложенных ордеров? Суть идеи прежняя: следить за текущим баром, за ценой его открытия и если от этой цены за время 5-мин бара цена либо вырастет, либо упадет, допустим на 30 пунктов расстояния от рынка открытия этого 5-мин бара, только тогда открывать позицию...... С отложенными ордерами моя стратегия не катит.....
Видимо, тут нужно со знаками(полярностью) Дельты разобраться при покупке и при продаже, "ибо" в коде выше, например, при покупке величина (iOpen(NULL,0,0)-Ask всё время будет отрицательной. И сделка открывается сразу по цене открытия бара (iOpen(NULL,0,0)-Ask>=Delta...
Если так попробовать (покупка) -
if(Ask - iOpen(NULL,0,0)>=Delta*Point)//Цена выросла на больше или = Delta пунктов
int start() { if(OrdersTotal()!=0) return; //Выполнять только одну сделку.
//---- if (Bid - iOpen(NULL,0,0)<=Delta*Point) //Цена упала на меньше или = Delta пунктов //Null-тек инструмент, 0-тек.график, 0-слежка за тек баром { ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point,"Купил",MagicNumber,11111,Green);
} if (Ask - iOpen(NULL,0,0)>=Delta*Point) //Цена выросла на больше или = Delta пунктов { ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Ask+StopLoss*Point,Bid-TakeProfit*Point,"Продал",MagicNumber,22222,Green); } //---- return(0); }
Я правильно смекаю или перепутал Ask с Bid в строках:
if (Bid - iOpen(NULL,0,0)<=Delta*Point) //Цена упала на меньше или = Delta пунктов
if (Ask - iOpen(NULL,0,0)>=Delta*Point) //Цена выросла на больше или = Delta пунктов
{
if(OrdersTotal()!=0) return;
//----
if (iOpen(NULL,5,0)-Bid>Delta*Point) //Цена упала больше Delta пунктов
........
if(OrdersTotal()!=0) return;
А чужие ордера (по другим символам и с др. магиками) ??? В тестере покатит, но если на счету будет кроме этого советника что-то ещё, то корректнее так:
Функция вернёт ложь (false) если нет ни одной открытой позиции по текущему символу с заданным (переданным ей) магиком.
Представьте как он запутается ,я позтому и написал так чтобы ему понятнее было .
Оба случая догнал, огромное человеческое спасибо.
Сделки срабатывают не при моих условиях
Delta=30
Это значит я хочу, чтобы эксперт открывал позицию +-30 в пунктах. А он открывает и при 5-10 пунктах при росте и при падении, не понятно....
Может есть какие то другие простые решения?
Я тут нарыл одну функцию
Distance=30 // Расстояние от текущей цены до цены отложенных ордеров
Можно ли ее реализовать не только для отложенных ордеров?
Суть идеи прежняя: следить за текущим баром, за ценой его открытия и если от этой цены за время 5-мин бара цена либо вырастет, либо упадет, допустим на 30 пунктов расстояния от рынка открытия этого 5-мин бара, только тогда открывать позицию......
С отложенными ордерами моя стратегия не катит.....
А ты бы выложил сюда целиком свой код. И посмотрим, почему Дельта не работает..
Вот весь код целиком.....
Да, действительно. Не работает Дельта....
Видимо, тут нужно со знаками(полярностью) Дельты разобраться при покупке и при продаже, "ибо" в коде выше, например, при покупке величина (iOpen(NULL,0,0)-Ask всё время будет отрицательной. И сделка открывается сразу по цене открытия бара (iOpen(NULL,0,0)-Ask>=Delta...
Если так попробовать (покупка) -
{
if(OrdersTotal()!=0) return; //Выполнять только одну сделку.
//----
if (Bid - iOpen(NULL,0,0)<=Delta*Point) //Цена упала на меньше или = Delta пунктов
//Null-тек инструмент, 0-тек.график, 0-слежка за тек баром
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point,"Купил",MagicNumber,11111,Green);
}
if (Ask - iOpen(NULL,0,0)>=Delta*Point) //Цена выросла на больше или = Delta пунктов
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Ask+StopLoss*Point,Bid-TakeProfit*Point,"Продал",MagicNumber,22222,Green);
}
//----
return(0);
}