помогите с написанием Мартингейла...

 

Подскажите как найти последний ордер закрытый в минус?

я так понял вот это вообще не правильно:

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);
}

 
Maksim Neimerik:

Подскажите как найти последний ордер закрытый в минус?

я так понял вот это вообще не правильно:

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, то можно проверять что-то одно

Еще можно выбросить почти все фигурные скобки - но это уже высший пилотаж - тогда программа буде еще короче

 
LRA:

Слабые шахматисты, подумав над ходом, часто спрашивают противника: как ты последний раз ходил? Мастер думает над позицией, как бы она ни появилась

Представьте, Вы запустили термина после недельного перерыва. А советник ищет последний орде. Ну и зачем? Или даже утром в понедельник включили - а там был гэп... Искать надо последнее движение цены, свечи, тренд, канал, фракталы - ну много чего

ну как зачем? как только появился ордер с убытком сразу открываем противоположный ордер (например)...
 
Maksim Neimerik:
ну как зачем? как только появился ордер с убытком сразу открываем противоположный ордер (например)...

Проверяйте еще время закрытия ордера. В вашем коде советник будет всегда открывать новую позицию на любой убыточный ордер будь он закрыт хоть минуту назад хоть год назад.
 
Maksim Neimerik:
ну как зачем? как только появился ордер с убытком сразу открываем противоположный ордер (например)...
Пробовал уже лет 5 назад. При флете - слабом движении цены туда-сюда - быстро сливает
 
Vitalii Ananev:

Проверяйте еще время закрытия ордера. В вашем коде советник будет всегда открывать новую позицию на любой убыточный ордер будь он закрыт хоть минуту назад хоть год назад.

   for(int i=0; i<=OrdersTotal();i++)
   {
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
Скорее будет, но как ....
 
Vladimir Deryagin:

Скорее будет, но как ....

Бегаете в цикле по закрытым ордерам и ищите среди них ордер с самой большой датой закрытия. Он и будет последним закрытым ордером. Простой алгоритм, похожий на алгоритм сортировки по возрастанию.
 
Maksim Neimerik:

Подскажите как найти последний ордер закрытый в минус?

я так понял вот это вообще не правильно:


//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
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);
  }
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
Смотрим последний ордер в истории
 
Vladimir Deryagin:

Смотрим последний ордер в истории
Вот! То что нужно, СПАСИБО!!!!
 
Maksim Neimerik:

Подскажите как найти последний ордер закрытый в минус?


Так вам надо найти тикет последней убыточной позиции? Или выяснить убыточна ли последняя позиция? Если второй вариант, то можно использовать кимовскую из ветки - Полезные функции KimIV.
 
 
khorosh:
Так вам надо найти тикет последней убыточной позиции? Или выяснить убыточна ли последняя позиция? Если второй вариант, то можно использовать кимовскую из ветки - Полезные функции KimIV.
 
Мне нужно найти последний ордер который закрылся в убыток и открыть противоположный....