Проблмы при тестировании на истории и он-лайн - страница 2

 
Это окно подтверждения реально работающего эксперта Alligator, что видно из журнала терминала.
А чтоб понять что с тестером, надо смотреть журнал тестера.
 

to komposter: понял о чём вы. Непойму другого - оставлял комент с благодарностью помогавшим и с тем, что проблема была в коде...и с вопросом по открытию позиций одним советником на одном счёте с разных валютных пар - точно видел, что комент был, а теперь его нет...(((

 
hope:

to komposter: понял о чём вы. Непойму другого - оставлял комент с благодарностью помогавшим и с тем, что проблема была в коде...и с вопросом по открытию позиций одним советником на одном счёте с разных валютных пар - точно видел, что комент был, а теперь его нет...(((

Вчера переносили форум на другой сервер, и некоторые посты могли потеряться при этом. Сообщение об этом было вчера на форуме, но, похоже, так же потерялось при переезде. Бывает.
 

И ещё раз здравствуйте. Прочитал несколько статей по открытию советником нескольких позиций и контролю за ними. Добавил в код Expert_ID чем решил вопрос по открытию двух противоположных позиций. Однако решить вопрос с открытием двух "бай" или двух "селл" не удаётся. Посмотрите, пожалуйста, код и подскажите как быть. Хотелось бы получить возможность открытия экспертом позиций на одном счёте по сигналам с хотя бы трёх пар, т.е. получены сигналы с EUR, GBP - buy, а с CHF - sell, открыты две позиции buy (одна по EUR, одна по GBP) и одна sell (CHF).

//+------------------------------------------------------------------+
//|                                                  MACD Sample.mq4 |
//|                      Copyright © 2005, MetaQuotes Software Corp. |
//|                                       http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
 
extern double TakeProfit = 300;
extern double StopLoss = 300;
extern double Lots = 0.1;
extern double TrailingStop = 0;
extern int Expert_ID = 1;
 
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {
   double StochCurrentMain, StochPreviousMain;
   double StochCurrentSignal, StochPreviousSignal;
   double MAHightCurrent, MAHightPrevious, MALowCurrent, MALowPrevious;
   double PSARCurrent, PSARPrevious;
   int cnt, ticket;
// initial data checks
// it is important to make sure that the expert works with a normal
// chart and the user did not make any mistakes setting external 
// variables (Lots, StopLoss, TakeProfit, 
// TrailingStop) in our case, we check TakeProfit
// on a chart of less than 100 bars
   if(Bars<100)
     {
      Print("bars less than 100");
      return(0);  
     }
// to simplify the coding and speed up access
// data are put into internal variables
   StochCurrentMain=iStochastic(NULL,0,8,3,3,MODE_SMA,0,MODE_MAIN,1);
   StochPreviousMain=iStochastic(NULL,0,8,3,3,MODE_SMA,0,MODE_MAIN,2);
   StochCurrentSignal=iStochastic(NULL,0,8,3,3,MODE_SMA,0,MODE_SIGNAL,1);
   StochPreviousSignal=iStochastic(NULL,0,8,3,3,MODE_SMA,0,MODE_SIGNAL,2);
   MAHightCurrent=iMA(NULL,0,1,0,MODE_SMA,PRICE_HIGH,0);
   MAHightPrevious=iMA(NULL,0,1,0,MODE_SMA,PRICE_HIGH,1);
   MALowCurrent=iMA(NULL,0,1,0,MODE_SMA,PRICE_LOW,0);
   MALowPrevious=iMA(NULL,0,1,0,MODE_SMA,PRICE_LOW,1);
   PSARCurrent=iSAR(NULL,0,0.02,0.2,0);
   PSARPrevious=iSAR(NULL,0,0.02,0.2,1);
   
int BuyTotal=0,SellTotal=0;
int i;
 
//Подсчитываем отдельно бай и селл ордеры
for (i=0;i<OrdersTotal();i++)
  {
  if (OrderSelect(i,SELECT_BY_POS))
    {
    if (OrderType()==OP_BUY) BuyTotal++;
    if (OrderType()==OP_SELL) SellTotal++;
    }
  }
  if(BuyTotal<1)
     {
      // no opened orders identified
      if(AccountFreeMargin()<(1000*Lots))
        {
         Print("We have no money. Free Margin = ", AccountFreeMargin());
         return(0);  
        }
      // check for long position (BUY) possibility
      if(StochCurrentMain>StochCurrentSignal && MAHightCurrent>PSARCurrent)
        {
         ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,"macd sample",Expert_ID,0,Blue);
         if(ticket>0)
           {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice());
           }
         else Print("Error opening BUY order : ",GetLastError()); 
         return(0); 
        }
      }
  for(i=OrdersTotal()-1;i>=0;i--)
   {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      {
         if(OrderSymbol()==Symbol())
         {
            if(OrderType()==OP_BUY)
            {
               if(StochCurrentMain<StochCurrentSignal && MALowCurrent<PSARCurrent)
                  OrderClose(OrderTicket(),OrderLots(),Bid,3,Red);
            }
         }
      }
   }            
  if(SellTotal<1)
     {   
      // check for short position (SELL) possibility
      if(StochCurrentMain<StochCurrentSignal && MALowCurrent<PSARCurrent)
        {
         ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0,"macd sample",Expert_ID,0,Green);
         if(ticket>0)
           {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice());
           }
         else Print("Error opening SELL order : ",GetLastError()); 
         return(0); 
        }
      return(0);
     }
   // it is important to enter the market correctly, 
   // but it is more important to exit it correctly...   
   for(i=OrdersTotal()-1;i>=0;i--)
   {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      {
         if(OrderSymbol()==Symbol())
         {
            if(OrderType()==OP_SELL)
            {
               if(StochCurrentMain>StochCurrentSignal && MAHightCurrent>PSARCurrent)
                  OrderClose(OrderTicket(),OrderLots(),Ask,3,Red);
            }
         }
      }
   }
   return(0);
  }
// the end.
 
А вообще возможно такое? Или пойти по пути открытия разных счетов на каждую пру?:(((
 
Посмотрите советник Rosh'a Prototype. ("Поиск рулит!" (С))
 

Вот и всё заработало.

Vinin, Talex, rsi спасибо.

Очень помогли труды Rosh, rid и статьи Andrey Khatimlianskyi.

Причина обращения: