Подскажите как найти последний ордер закрытый в минус?
я так понял вот это вообще не правильно:
bool MartinOrder()
{
for(int i=0; i<=OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
{
if(OrderSymbol()==Symbol())
{
if(OrderType()==OP_BUY&&OrderMagicNumber()==Magic1)
{
if(OrderProfit()<0)
{
if(OrderSend(Symbol(),OP_SELL,(OrderLots()*2),Bid,Slippage,0,0,"MartinSell",Magic3,0,Blue))
Print("MartinSell");
}
}
if(OrderType()==OP_SELL&&OrderMagicNumber()==Magic2)
{
if(OrderProfit()<0)
{
if(OrderSend(Symbol(),OP_BUY,(OrderLots()*2),Ask,Slippage,0,0,"MartinBuy",Magic4,0,Blue))
Print("MartinBuy");
}
}
}
}
}
return(true);
}
Слабые шахматисты, подумав над ходом, часто спрашивают противника: как ты последний раз ходил? Мастер думает над позицией, как бы она ни появилась
Представьте, Вы запустили термина после недельного перерыва. А советник ищет последний ордер. Ну и зачем? Или даже утром в понедельник включили - а там был гэп... Искать надо последнее движение цены, свечи, тренд, канал, фракталы - ну много чего. Нужно смотреть вперед
А вот функция Ваша bool и всегда возвращает true. Можно сделать ее void и убрать return. будет на 1 строчку правильнее
Если у Вас OP_BUY всегда Magic1 а OP_SELL всегда Magic2, то можно проверять что-то одно
Еще можно выбросить почти все фигурные скобки - но это уже высший пилотаж - тогда программа буде еще короче
Слабые шахматисты, подумав над ходом, часто спрашивают противника: как ты последний раз ходил? Мастер думает над позицией, как бы она ни появилась
Представьте, Вы запустили термина после недельного перерыва. А советник ищет последний орде. Ну и зачем? Или даже утром в понедельник включили - а там был гэп... Искать надо последнее движение цены, свечи, тренд, канал, фракталы - ну много чего
ну как зачем? как только появился ордер с убытком сразу открываем противоположный ордер (например)...
Проверяйте еще время закрытия ордера. В вашем коде советник будет всегда открывать новую позицию на любой убыточный ордер будь он закрыт хоть минуту назад хоть год назад.
ну как зачем? как только появился ордер с убытком сразу открываем противоположный ордер (например)...
Проверяйте еще время закрытия ордера. В вашем коде советник будет всегда открывать новую позицию на любой убыточный ордер будь он закрыт хоть минуту назад хоть год назад.
for(int i=0; i<=OrdersTotal();i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))Скорее будет, но как ....
Скорее будет, но как ....
Бегаете в цикле по закрытым ордерам и ищите среди них ордер с самой большой датой закрытия. Он и будет последним закрытым ордером. Простой алгоритм, похожий на алгоритм сортировки по возрастанию.
Подскажите как найти последний ордер закрытый в минус?
я так понял вот это вообще не правильно:
//+------------------------------------------------------------------+ //+------------------------------------------------------------------+ double curLot() { double p=Lots; datetime t=0; int j=-1,i; for(i=OrdersHistoryTotal()-1;i>=0;i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==true) { if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic1) { if(OrderType()==OP_BUY || OrderType()==OP_SELL) { if(t<OrderCloseTime()) { t=OrderCloseTime(); j=i; } } } } } if(OrderSelect(j,SELECT_BY_POS,MODE_HISTORY)==true) { if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic1) { if(OrderType()==OP_BUY || OrderType()==OP_SELL) { if(OrderProfit()<0) { p=OrderLots()*2; } } } } return(p); } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+Смотрим последний ордер в истории
Смотрим последний ордер в истории
Подскажите как найти последний ордер закрытый в минус?
Так вам надо найти тикет последней убыточной позиции? Или выяснить убыточна ли последняя позиция? Если второй вариант, то можно использовать кимовскую из ветки - Полезные функции KimIV.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Подскажите как найти последний ордер закрытый в минус?
я так понял вот это вообще не правильно:
bool MartinOrder()
{
for(int i=0; i<=OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
{
if(OrderSymbol()==Symbol())
{
if(OrderType()==OP_BUY&&OrderMagicNumber()==Magic1)
{
if(OrderProfit()<0)
{
if(OrderSend(Symbol(),OP_SELL,(OrderLots()*2),Bid,Slippage,0,0,"MartinSell",Magic3,0,Blue))
Print("MartinSell");
}
}
if(OrderType()==OP_SELL&&OrderMagicNumber()==Magic2)
{
if(OrderProfit()<0)
{
if(OrderSend(Symbol(),OP_BUY,(OrderLots()*2),Ask,Slippage,0,0,"MartinBuy",Magic4,0,Blue))
Print("MartinBuy");
}
}
}
}
}
return(true);
}