Убыточных сделок 0!!!!!! - страница 10

 
granit77 >>:

Да и базар в этой теме поддерживаем только в расчете, что придет лесник и покажет выход к ближайшему шоссе...

Дааааа...Ну, результаты не такие уж и удручающие, я добился при 40% просадке 100% прироста депо за неделю...Использовал ОсМа извращенский...Благо рычагов много, намутить много можно. Кто меня понимает, то при исходном сигнале Low High  фильтр Стохастика и Осма в нем же, тоесть ИФ стохастик и Осма...В принципе если не наглеть (можно просто из 1000 поднять 12000 за 2 недели при просадке в 78%), то нормальный результат...ЩА попробую поколдавать еще...

 

А кто подскажет как вывести автолот что бы размер был не на 0.1, а с 0.01, ато мой от КИМа не хочет высчитывать процент от депо ниже 200 гринов.

Вот мой код-

string _Parameters_b_Lots = "Параметры модуля расчёта лота"; 
int LotsWayChoice = 1;     // Способ выбора рабочего лота: 
                                  //  0-фиксированный, 
                                  //  1-процент от депозита, 
                                  //  2-фракционно-пропорциональный, 
                                  //  3-фракционно-фиксированный, 
extern int LotsPercent    = 40;    // Процент от депозита (Оптимизация проведена для 1000$)
int LotsDeltaDepo  = 20;   // Коэффициент приращения депозита 
int LotsDepoForOne = 20;   // Размер депозита для одного минилота 
int LotsMax        = 10000; // Максимальное количество лотов 
(и в конце)
if(ik == 0)
     {
       Balance0 = AccountBalance();
       ik = 1;
     } 
//----
   if(ReInvest == 1)
       lotsi = Lots*AccountBalance() / Balance0; 
   else 
       lotsi = Lots; 
//----
   if(lotsi < 0.1)
     {
       lotsi = 0.01;
     } 
//----
   if(lotsi >= 0.1 && lotsi < 0.2)
       lotsi = 0.1; 
   else 
    {
     if(lotsi >= 0.2 && lotsi < 0.5)
       lotsi = 0.2; 
     else 
      { 
       if(lotsi >= 0.5 && lotsi < 1)
         lotsi = 0.5; 
       else 
        {
         if(lotsi >= 1 && lotsi < 2)
           lotsi = 1; 
         else 
          { 
           if(lotsi >= 2 && lotsi < 3)
             lotsi = 2; 
           else 
            {
             if(lotsi >= 3 && lotsi < 4)
               lotsi = 3; 
             else 
              { 
               if(lotsi >= 4 && lotsi < 5)
                 lotsi = 4; 
               else 
                {
                 if(lotsi >= 5 && lotsi <6 )
                   lotsi = 5; 
                 else 
                  { 
                   if(lotsi >= 6 && lotsi < 7)
                     lotsi = 6; 
                   else 
                    {
                     if(lotsi >= 7 && lotsi < 8)
                       lotsi=7; 
                     else 
                      { 
                       if(lotsi >= 8 && lotsi < 9)
                         lotsi = 8; 
                       else 
                        {
                         if(lotsi >= 9 && lotsi < 15)
                           lotsi = 9; 
                         else 
                          { 
                           if(lotsi >= 15 && lotsi < 20)
                             lotsi = 15; 
                           else 
                            {
                             if(lotsi >= 20 && lotsi < 25)
                               lotsi = 20; 
                             else 
                              { 
                               if(lotsi >= 25 && lotsi < 30)
                                 lotsi = 25; 
                               else 
                                {
                                 if(lotsi >= 30 && lotsi < 35)
                                   lotsi = 30; 
                                 else 
                                  { 
                                   if(lotsi >= 35 && lotsi < 40)
                                     lotsi = 35; 
                                   else 
                                    {
                                     if(lotsi >= 40 && lotsi < 45)
                                       lotsi = 40; 
                                     else 
                                      { 
                                       if(lotsi >= 45 && lotsi < 50)
                                         lotsi = 45; 
                                       else 
                                        {
                                         if(lotsi >= 50 && lotsi < 55)
                                           lotsi = 50; 
                                         else 
                                          { 
                                           if(lotsi >= 55 && lotsi < 60)
                                             lotsi = 55; 
                                           else 
                                            {
                                             if(lotsi >= 60 && lotsi < 65)
                                               lotsi = 60; 
                                             else 
                                              { 
                                               if(lotsi >= 65 && lotsi < 70)
                                                 lotsi = 65; 
                                               else 
                                                {
                                                 if(lotsi >= 70 && lotsi < 75)
                                                   lotsi = 70; 
                                                 else 
                                                  { 
                                                   if(lotsi >= 75 && lotsi < 80)
                                                     lotsi = 75; 
                                                   else 
                                                    {
                                                     if(lotsi >= 80 && lotsi < 85)
                                                       lotsi = 80; 
                                                     else 
                                                      { 
                                                       if(lotsi >= 85 && lotsi < 90)
                                                         lotsi = 85; 
                                                       else 
                                                        {
                                                         if(lotsi >= 90 && lotsi < 95)
                                                           lotsi = 90; 
                                                         else 
                                                          { 
                                                           if(lotsi >= 95 && lotsi < 100)
                                                             lotsi = 95; 
                                                           else 
                                                            {
                                                             if(lotsi >= 100)
                                                               lotsi=lotsi;/*100*/ 
                                                            }
                                                          }
                                                        }
                                                      }
                                                    }
                                                  }
                                                }
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    } 
   MidLot = GetSizeLot(); 
   lotsi = NormalizeDouble(MidLot, 1); 
   total=OrdersTotal();                                        
   cbars=Bars;
   return(0);
   } 
double GetSizeLot() 
  { 
   double dLot; 
   if(LotsWayChoice == 0) 
     dLot = lotsi; 
// фиксированный процент от депозита 
   if(LotsWayChoice == 1) 
     { 
       dLot = MathCeil(AccountFreeMargin() / 10000*LotsPercent)/10; 
     } 
// фракционно-пропорциональный 
   if(LotsWayChoice == 2) 
     { 
       int k = LotsDepoForOne; 
       //----
       for(double i = 2; i <= LotsMax; i++) 
         { 
           k = k + i*LotsDeltaDepo; 
           //----
           if(k > AccountFreeMargin()) 
             { 
               dLot = (i - 1) / 10; 
               break; 
             } 
         } 
     } 
// фракционно-фиксированный 
   if(LotsWayChoice == 3) 
     { 
       dLot = MathCeil((AccountFreeMargin() - LotsDepoForOne) / LotsDeltaDepo)/10; 
     } 
//----
   if(dLot < 0.1)  
       dLot = 0.1; 
//----
   if(dLot > LotsMax) 
       dLot = LotsMax;   
   return(dLot);  
  } 
 

моя версия

//+------------------------------------------------------------------+
//| Расчет лота соотв риску и балансу                                |
//+------------------------------------------------------------------+
double CalcLotsAuto(double Risk)
{

   double LotOpt,Zalog;
   RefreshRates();
   double Marga=AccountFreeMargin();
   double Balans=AccountBalance();
   double LotMin=MarketInfo(Symbol(),MODE_MINLOT);
   double LotMax=MarketInfo(Symbol(),MODE_MAXLOT);
   double StepLot=MarketInfo(Symbol(),MODE_LOTSTEP);
   double StopLv=AccountStopoutLevel();
   int PrsMinLot=1000*LotMin;
   if(Risk<0)Risk=0;
   if(Risk>100)Risk=100; 
   if(StepLot==0.01){int step=2;}else{step=1;}  
//---------------------------     
   Zalog=(Balans*(Risk/100));
   LotOpt=NormalizeDouble((Zalog/1000),step);
   if(LotOpt>LotMax)LotOpt=LotMax;
   if(LotOpt<LotMin)LotOpt=LotMin;
   //if(Marga<Sredstva/2){return(0);}
   return(LotOpt);
}
 

Hoper23

Небольшая доработка дала такие результате: с 01.05.08 по 01.12.08 чистая прибыль 6772 при LotsPercent=2. Начальный депозит = 1000, относительная просадка 26,38%. Убыток=-72, только от не завершённой сделки. Всего 186 сделок.


 
Доработку в студию!
 
Доработку дам только автору эксперта, если он проявит интерес.
 
khorosh >>:
Доработку дам только автору эксперта, если он проявит интерес.

А не надо кода. Принципами поделитесь.

 
granit77 >>:

А не надо кода. Принципами поделитесь.

Как активному форумянину могу выслать и код, только дайте адрес.
 

Браты, а я тут намудрил ночью, аж в шоке. Короче, при фильтрации стохастиком и ОсМой накуралесить можно круто. У меня при стартовой 1000 баксов с 10 по 28 выходит 21000 при просадке в 60,66%!!!!

А вот 2% от депозита на торговлю...это как то вААпче... А что насчет доработки, можно и обменяться. Гранит и КХорош, давайте свои мыла. Мое bghoper@mail.ru

 
xrust >>:

моя версия

что то я вообще не понял, как ты ее применяешь...

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