Про Советник из учебника Ковалева. - страница 3

 
atlantic:

ну понятно,ищем тренд,ждем "конца" сороса,и лузера с милионом.

а всетаки как убрать проверку то? или 20$ только решает проблему ?

Так зачем же Вы хотите убрать учет открытых ордеров?

Не исключаю, что именно этот вопрос многих ставит в тупик.

 
на паре предполагается работа нескольких советников ( или так сказать с разными критериями входа и выхода) и они могут выставлять отложенные и рыночные ордера.,на которые ругается данный советник.
 
atlantic:
на паре предполагается работа нескольких советников ( или так сказать с разными критериями входа и выхода) и они могут выставлять отложенные и рыночные ордера.,на которые ругается данный советник.

В приведенном советнике Ковалева нет магика.

Введите магик и избавитесь от проблемы.

 
подскажешь как их воткнуть в данный советник?
 
atlantic:
подскажешь как их воткнуть в данный советник?

В двух словах не смогу.

Откройте любой готовый советник из базы и посмотрите, где устанавливается магик.

Найдите в готовом советнике OrderMagicNumber(), рядом увидете магик. Все пишут его по-разному (MagicNumber или Magic, или mn, или как-то еще).

Когда идентифицируете магик, поиском пробегите по всем магикам советника. Это поможет понять, где и как ставить магик.

Разобраться несложно.

 
more:

И как бы его модифицировать, чтобы он приносил прибыль ?

хелп!!!


На тесте с начала этого года 22 сделки было (последних), на более же длинной истории следующее:

 

Посмотрите,скажите что не так сделал.

вставил строку extern int Magic = 111; // Мэджик ордера

вставил в блок учета ордеров выделено красным

//--------------------------------------------------------------- 4 --   
// Учёт ордеров   
Symb=Symbol();                               // Название фин.инстр.   
Total=0;                                     // Количество ордеров   
for(int i=1; i<=OrdersTotal(); i++)          // Цикл перебора ордер     
{     
 if (OrderSelect(i-1,SELECT_BY_POS)==true) // Если есть следующий        
 {                                       // Анализ ордеров:         
  if (OrderSymbol()!=Symb || Magic!=OrderMagicNumber())continue; // Не наш фин. инструм , не наш ордер        
  if (OrderType()>1)                     // Попался отложенный           
   {
    Alert("Обнаружен отложенный ордер.",Symb," Эксперт не работает.");            
    return;                             // Выход из start()           
   }         
   
  Total++;                               // Счётчик рыночн. орд         
  if (Total>1)                           // Не более одного орд           
   {   
    Alert("Несколько рыночных ордеров. Эксперт не работает.");            
    return;                             // Выход из start()          
   }         
  Ticket=OrderTicket();                  // Номер выбранн. орд.         
  Tip   =OrderType();                    // Тип выбранного орд.         
  Price =OrderOpenPrice();               // Цена выбранн. орд.         
  SL    =OrderStopLoss();                // SL выбранного орд.         
  TP    =OrderTakeProfit();              // TP выбранного орд.         
  Lot   =OrderLots();                    // Количество лотов       
   }     
   }
//--------------------------------------------------------------- 5 --

в блоке закрытия ордеров выделено красным

//--------------------------------------------------------------- 6 --
// Закрытие ордеров   
while(true)                                  // Цикл закрытия орд.     
{  
  if (Tip==0 && Cls_B==true)                // Открыт ордер Buy..        
   {                                       //и есть критерий закр        
    Alert("Попытка закрыть Buy ",Symb," ",Ticket,". Ожидание ответа..");        
    RefreshRates();                        // Обновление данных         
    Ans=OrderClose(Magic,Lot,Bid,2);      // Закрытие Buy        
    if (Ans==true)                         // Получилось :)          
    { 
     Alert ("Закрыт ордер Buy ",Symb," ",Ticket);            
     break;                              // Выход из цикла закр           
    }
    if (Fun_Error(GetLastError())==1)      // Обработка ошибок           
     continue;                           // Повторная попытка         
     return;                                // Выход из start()       
   }
  if (Tip==1 && Cls_S==true)                // Открыт ордер Sell..        
   {                                       // и есть критерий закр        
    Alert("Попытка закрыть Sell ",Symb," ",Ticket,". Ожидание ответа..");        
    RefreshRates();                        // Обновление данных        
    Ans=OrderClose(Magic,Lot,Ask,2);      // Закрытие Sell         
    if (Ans==true)                         // Получилось :)           
    {          
     Alert ("Закрыт ордер Sell ",Symb," ", Ticket);            
     break;                              // Выход из цикла закр          
    }        
    if (Fun_Error(GetLastError())==1)      // Обработка ошибок            
    continue;                           // Повторная попытка         
    return;                                // Выход из start()        
   }     
   break;                                    // Выход из while   
  }   
//--------------------------------------------------------------- 7 --   


и в блоке открытия ордеров выделено красным

 //--------------------------------------------------------------- 8 --
 // Открытие ордеров   
 while(true)                                  // Цикл закрытия орд.    
  {      
  if (Total==0 && Opn_B==true)              // Открытых орд. нет +        
  {                                       // критерий откр. Buy         
  RefreshRates();                        // Обновление данных         
  SL=Bid - New_Stop(StopLoss)*Point;     // Вычисление SL откр.         
  TP=Bid + New_Stop(TakeProfit)*Point;   // Вычисление TP откр.         
  Alert("Попытка открыть Buy. ", Symb ," Ожидание ответа..");         
  Ticket=OrderSend(Symb,OP_BUY,Lts,Ask,2,SL,TP,"EMA",Magic,0,Blue);//Открытие Buy        
   if (Ticket > 0)                        // Получилось :)           
   {           
    Alert ("Открыт ордер Buy ", Symb," по цене ",Ask," ", Ticket);            
    return;                             // Выход из start()          
     }       
       if (Fun_Error(GetLastError())==1)      // Обработка ошибок            
       continue;                           // Повторная попытка         
       return;                                // Выход из start()        
       }      
       if (Total==0 && Opn_S==true)              // Открытых орд. нет +        
       {                                       // критерий откр. Sell         
       RefreshRates();                        // Обновление данных         
       SL=Ask + New_Stop(StopLoss)*Point;     // Вычисление SL откр.         
       TP=Ask - New_Stop(TakeProfit)*Point;   // Вычисление TP откр.         
       Alert("Попытка открыть Sell. ", Symb ," Ожидание ответа..");         
       Ticket=OrderSend(Symb,OP_SELL,Lts,Bid,2,SL,TP,"EMA",Magic,0,Red);//Открытие Sell        
        if (Ticket > 0)                        // Получилось :)           
        {           
         Alert ("Открыт ордер Sell ", Symb ," по цене ",Bid," ",Ticket);            
         return;                             // Выход из start()           
         }        
          if (Fun_Error(GetLastError())==1)      // Обработка ошибок            
          continue;                           // Повторная попытка         
          return;                                // Выход из start()       
           }    
             break;                                    // Выход из while     
             }
//--------------------------------------------------------------- 9 --   
return;                                   // Выход из start()  
   }
//-------------------------------------------------------------- 10 --

правильно или нет?

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