Operazioni non redditizie 0!!!!!! - pagina 10

 
granit77 >> :

E il bazar in questo thread è sostenuto solo nell'attesa che un forestale arrivi e ci mostri la strada per l'autostrada più vicina...

Sì... Beh, i risultati non sono così male, ho ottenuto al 40% di slippage 100% di aumento del deposito per una settimana... Ho usato OsMa pervertito... Ci sono un sacco di leve, si può fare molto. Se mi capisci, il segnale originale Low High filtro stocastico e Osma nello stesso, cioè IF stocastico e Osma ... In linea di principio, se non barare (si può solo aumentare 12000 da 1000 per 2 settimane con un drawdown del 78%), quindi il risultato normale ... Ora, cercherò di fare qualche magia in più ...

 

Un che può dirvi come ritirare un autolot che sarebbe la dimensione non era 0,1, e con 0,01, perché il mio dal KIM non vuole calcolare una percentuale del deposito sotto 200 grivnas.

Ecco il mio codice.

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

la mia versione

//+------------------------------------------------------------------+
//| Расчет лота соотв риску и балансу                                |
//+------------------------------------------------------------------+
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

Un miglioramento minore ha dato questi risultati: dal 01.05.08 al 01.12.08 profitto netto 6772 con LotsPercent=2. Deposito iniziale = 1000, drawdown relativo = 26,38%. Perdita = 72, solo da scambi non finiti. Un totale di 186 scambi.


 
Una rielaborazione in studio!
 
Darò la finalizzazione all'autore dell'esperto solo se è interessato.
 
khorosh >> :
Darò la rielaborazione all'autore dell'esperto solo se mostra interesse.

Non hai bisogno di un codice. Condividere i principi.

 
granit77 >> :

Non hai bisogno di un codice. Condividere i principi.

Come membro attivo del forum posso anche mandarti il codice, dammi solo l'indirizzo.
 

Fratelli, ho fatto un po' di confusione di notte e sono scioccato. Comunque, con il filtraggio stocastico e OsMoy, si possono fare un sacco di soldi. Ho una partenza di 1000 sterline da 10 a 28 viene fuori 21000 con un drawdown del 60,66%!!!!

Ma il 2% del mio deposito per scambiare... è un po' troppo... Per quanto riguarda la raffinatezza, potremmo fare uno scambio. Granito e KHorosh, dateci i vostri saponi. Il mio è bghoper@mail.ru

 
xrust >> :

la mia versione

Non capisco affatto come lo applichi...