[АРХИВ] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 3. - страница 476

 
Артемида супер!!!
 
Roman.:


1. На всяк - прочтите всю инфу по моим ссылкам из 7-го поста этой странички.

2. Гляньте в прицепе прогу по Вашему вопросу. Второй файл - это мой пример работы с оптимизатором стратегий и зависимость, в данный момент на графике - величины стопа и профита ТС-ки, полученных в результате оптимизации от Фактора Восстановления. Сам ее юзаю недавно - еще сам разбираюсь, поэтому все вопросы к ее авторам. Их сайт смотрите через поск.

3. Все, ИМХО.


Ух, прикольно!! Эта прога Эсель, по-моему, называется? Как ей пользоваться,как в ние сохранять??
 

Ребят я полный нуб в этом всем, но помогите пожалуйста, как написать советника который действует таким образом, сначала просто открывает ордер на покупку и ставит тейк профит и стоп лос, потом если этот ордер закрывается по срабатыванию тейк профит то открывается такой же ордер на покупку, а если закрываеться по срабатыванию стоп лосс то уже на продажу
 
Как сохранять результаты в экселе? В тестере я нажал сохранить все, нашол и открыл эксель, на белом фоне нажал вставить, ничего не произошло. Может скоро брат прийти и меня вытеснить.Из-за компа.
 
dkfl.zrjdktdbx:
Как сохранять результаты в экселе? В тестере я нажал сохранить все, нашол и открыл эксель, на белом фоне нажал вставить, ничего не произошло. Может скоро брат прийти и меня вытеснить.Из-за компа.
Может второй комп купить?
 
Когда-нибудь..
 
dkfl.zrjdktdbx:
Как сохранять результаты в экселе? В тестере я нажал сохранить все, нашол и открыл эксель, на белом фоне нажал вставить, ничего не произошло. Может скоро брат прийти и меня вытеснить.Из-за компа.

копировать все и вставить, только название колонок самому приходится писать, а прибыльность переводит в месяцы у меня.
 
dkfl.zrjdktdbx:

Ух, прикольно!! Эта прога Эсель, по-моему, называется? Как ей пользоваться,как в ние сохранять??

Читайте ее хелп и документацию по МайкрософтОфис - эксель... :-)
 

Товарищи, совсем недавно задавал вопрос о том, что советник работает на реальном счету совсем не так, как на тестере стратегий. Вы сказали, что без кода самого советника - тут никак не разобраться. Выкладываю код:

Если вкратце описать, то совтник работает по принципу Мартингейла, то есть открывается двойным лотом, если предыдущий раз торговля была не успешной. Если ошибается более 3х раз, то я полагаю, что начался флэт и меняю размеры лотов и стопов, но пропорционально так, будто советник по прежнему открывается в другую сторону двойным лотом.

Если все было хорошо, то открывается в ту же сторону одним лотом. Так вот в чем проблема: на тестере все работает отлично, а на реально счету уже 2ю сделку он открывает на покупку лотом 0.24 (такое число задано в функции switch)... помогите плз... очень уж хочется на реале его попробовать, то эта загвоздка не выпускает меня из демо-счета =(

//+------------------------------------------------------------------+ 
//| StMartin++.mq4 | 
//| Sergey Kodolov | 
//| 84232676421@mail.ru | 
//+------------------------------------------------------------------+ 
#property copyright "Sergey Kodolov" 
#property link "84232676421@mail.ru" 

    extern int TP = 1000; 
    extern int TS = 1000; 
    extern double lots = 0.1; 

    double volumz; 
    int ticket,total; 
    int slip = 3; 
    int Magic = 4; 


    static int CriticalTicket = 0; 

    int TicketArray[4]; //миссив с тикетами
    int CTicketArray[10]; //массив с критическими тикетами

    void FormTicket(int number) //объявил шаблон под функцию запоминания тикетов 
    { 
      for(int i=3;i>0;i--) 
      { 
         TicketArray[0] = ticket; 
         if(TicketArray[0]>0 && TicketArray[0] == TicketArray[1])break; 
         TicketArray[i] = TicketArray[i-1]; 
      } 
    } 
    
    void FormCriticalTicket(int number1) //сюда записываю критическме тикеты
    { 
      for(int i=9;i>0;i--) 
      { 
         CTicketArray[0] = CriticalTicket; 
         if(CTicketArray[0]>0 && CTicketArray[0] == CTicketArray[1])break; 
         CTicketArray[i] = CTicketArray[i-1]; 
      } 
    }  


//+------------------------------------------------------------------+ 
//| expert initialization function | 
//+------------------------------------------------------------------+ 
int init() 
  { 
//---- 
     if(OrdersHistoryTotal()==0) 
     { 
        ticket = OrderSend(Symbol(),OP_SELL,lots,Bid,slip,Ask+TS*Point,Ask-TP*Point,"First order",Magic,0,Yellow); //открываем первый ордер 
     } 
//---- 
   return(0); 
  } 
//+------------------------------------------------------------------+ 
//| expert deinitialization function | 
//+------------------------------------------------------------------+ 
int deinit() 
  { 
//---- 

//---- 
   return(0); 
  } 
//+------------------------------------------------------------------+ 
//| expert start function | 
//+------------------------------------------------------------------+ 
int start() 
  { 
//---- 
FormCriticalTicket(CriticalTicket); //вызываем функцию, что запоминала критические тикеты
int CritLot = crit(); //функция берет минимальное значение из массива критических тикетов
int OrderTimeCheck = check3(); //проверяем, закрыт ли ордер 
bool OrderCloseCheck = check2(OrderTimeCheck); //проверяем, закрылись ли ордера в минус 
FormTicket(ticket); //вызываем функцию, чтоб запоминала тикеты 
OrderOpenFunction(OrderCloseCheck,CritLot); //тут открываем ордера 

//---- 
   return(0); 
  } 
//+------------------------------------------------------------------+ 


int crit()
{
   return(ArrayMinimum(CTicketArray,6,1));
}

int check3() //проверяем, закрыт ли ордер 
{ 
   OrderSelect(TicketArray[1],SELECT_BY_TICKET); 
   if(OrderClosePrice()==OrderTakeProfit()) 
      { 
         CriticalTicket=0;
      } 
   if(OrderCloseTime()>0)return(100); 
} 

bool check2(int OrderTimeCheck) //проверяем, если ордер закрыт, то последние 3 закрытых ордера были ли убыточными? 
{ 
   if(OrderTimeCheck == 100) 
   { 
      bool flag = true; 
      for(int j=1;j<4;j++) 
      { 
         OrderSelect(TicketArray[j],SELECT_BY_TICKET); 
         if(OrdersHistoryTotal()>2) 
         { 
            if(OrderClosePrice()!=OrderStopLoss()) 
            { 
               flag = false; 
            } 
         } 
         if(OrdersHistoryTotal()<=2) 
         { 
            flag = false; 
         } 
      } 
      return(flag); 
   } 
   else
      return(false); 
} 

void OrderOpenFunction(bool OrderCloseCheck, int CritLot) 
{ 
   total = OrdersTotal();
   if(OrderCloseCheck==true)
   {
      int TP1,TS1;
      double m1,m2,m3,m4,m5,m6;
      m1=1.2;
      m2=1.25;
      m3=2.0;
      m4=1.0;
      m5=1.25;
      m6=1.0;
   
      OrderSelect(TicketArray[1],SELECT_BY_TICKET); 
      switch(CritLot)
      {
         case 1: volumz = (OrderLots()*2)*m1;
                  TP1=TP/m1;
                  TS1=TS/m1; 
                  break;
         case 2: volumz = (OrderLots()*2)*m2/m1;
                  TP1=TP/m2;
                  TS1=TS/m2; 
                  break;
         case 3: volumz = (OrderLots()*2)*m3/m2;
                  TP1=TP/m3;
                  TS1=TS/m3; 
                  break;
         case 4: volumz = (OrderLots()*2)*m4/m3;
                  TP1=TP/m4;
                  TS1=TS/m4;
                  break;
         case 5: volumz = (OrderLots()*2)*m5/m4;
                  TP1=TP/m5;
                  TS1=TS/m5;
                  break;
         case 6: volumz = (OrderLots()*2)*m6/m5;
                  TP1=TP/m6;
                  TS1=TS/m6;
                  break;
      }

      if(total < 1) 
      { 
         if(OrderType()==OP_SELL) 
         { 
            double lot3 = volumz; 
            ticket = OrderSend(Symbol(),OP_BUY,lot3,Ask,slip,Bid-TS1*Point,Bid+TP1*Point,0,Magic,0,Green); 

            if(ticket>0) 
            { 
               CriticalTicket = ticket; 
            } 
         } 
         if(OrderType()==OP_BUY) 
         { 
            OrderSelect(TicketArray[1],SELECT_BY_TICKET); 
            double lot4 = volumz; 
            ticket = OrderSend(Symbol(),OP_SELL,lot4,Bid,slip,Ask+TS1*Point,Ask-TP1*Point,0,Magic,0,Red); 

            if(ticket>0) 
            { 
               CriticalTicket = ticket; 
            } 
         } 
      } 
   }   
   if(OrderCloseCheck==false) 
   { 
      if(total < 1) 
      { 
         OrderSelect(TicketArray[1],SELECT_BY_TICKET); 
         volumz = OrderLots(); 
         if(OrderClosePrice() == OrderStopLoss()) 
         { 
            if(OrderType() == OP_BUY) 
            { 
               double lot1 = volumz*2; 
               ticket = OrderSend(Symbol(),OP_SELL,lot1,Bid,slip,Ask+TS*Point,Ask-TP*Point,0,Magic,0,Red); 
            } 
            if(OrderType() == OP_SELL) 
            { 
               double lot2 = volumz*2; 
               ticket = OrderSend(Symbol(),OP_BUY,lot2,Ask,slip,Bid-TS*Point,Bid+TP*Point,0,Magic,0,Green); 
            } 
         } 
         if(OrderClosePrice() == OrderTakeProfit()) 
         { 
            if(OrderType() == OP_BUY) 
            { 
               ticket = OrderSend(Symbol(),OP_BUY,lots,Ask,slip,Bid-TS*Point,Bid+TP*Point,0,Magic,0,Green); 
            } 
            if(OrderType() == OP_SELL) 
            { 
               ticket = OrderSend(Symbol(),OP_SELL,lots,Bid,slip,Ask+TS*Point,Ask-TP*Point,0,Magic,0,Red); 
            } 
         } 
      } 
   } 
} 

все пояснения отражены... если нужны дополнительные - с удовольствие предоставлю.

 
Здравствуйте всем, С Новым Годом. Ребят помогите не могу ни как сделать чтобы ордер ставился только один раз, если условие которое выполняется после чего ставиться ордер, нужно чтобы потом если есть ордер уже чтобы второй раз он не ставился. Если можно примером.
Причина обращения: