apprenez comment gagner de l'argent avec les villageois [Episode 2] ! - page 157

 
BeerGod:
Le fait est que je veux me débarrasser de la distance fixe entre les garnitures, et les rendre dynamiques, et les fermer en traversant la ligne opposée (au signal opposé).

J'ai fait une largeur de canal dynamique en fonction de l'indication de l'ATR. Jusqu'à présent, j'ai utilisé ce schéma (inversé) de type Avalanche (martin inversé) sur micro-real, ainsi qu'Ilan avec des paramètres de cette branche. Je n'ai pas encore testé ce schéma dans ilan. Mon entrée ne se fait pas par Bollinger, mais par l'indicateur OSMA.

Pour Ilan - l'outil de moyenne, vous pouvez faire une entrée de départ par les barres de bollinger ...

Le code calcule la largeur du canal de moyennage, à partir de laquelle le moyennage est effectué sur des volumes plus importants :

extern int Period_ATR = 30;       // значение АТР для расчета динамического канала
extern double Mul_TP = 4.0;       // множитель целевой  прибыли в единицах волатильности (АТР)
extern double Mul_Sl = 0.8;       // множитель защитной  остановки с последующим производством усреднения позиции при ее сработке уже 
                                  // увеличенным лотом в единицах волатильности (АТР)
... 
//-----------------------------------------------------расчет динамического канала----------------------------    
    if (Symbol() == "GBPJPY" || Symbol() == "EURJPY" || Symbol() == "USDJPY" || Symbol() == "CHFJPY" ||  Symbol() == "NZDJPY" 
        ||  Symbol() == "USDRUR") 
         {                 
           channel = (iATR(Symbol(),PERIOD_D1,Period_ATR,1)*1000)*Mul_Sl;                 
           StopLossPips = NormalizeDouble(channel,0);                                                                                                         
         }       
    else
         {                 
           channel = 10* (iATR(Symbol(),PERIOD_D1,Period_ATR,1)*10000/3)*Mul_Sl;                 
           StopLossPips = NormalizeDouble(channel,0);                                                                                                         
         }               
          
    if (Symbol() == "XAGUSD")  // || Symbol() == "EURGBP")   StopLossPips = StopLoss;    // т.к. волатильность (по АТР) другая (выше)
         {                 
           channel = (iATR(Symbol(),PERIOD_D1,Period_ATR,1)*100)*Mul_Sl;                 
           StopLossPips = NormalizeDouble(channel,0);                                                                                                         
         }       
     if (Symbol() == "XAUUSD")  // || Symbol() == "XAUUSD" || Symbol() == "EURGBP")   StopLossPips = StopLoss;    // т.к. волатильность (по АТР) другая (выше)
         {                 
           channel = (iATR(Symbol(),PERIOD_D1,Period_ATR,1)*100)*Mul_Sl;   // Большая волатильность, поэтому умножение на 10.              
           StopLossPips = NormalizeDouble(channel,0);                                                                                                         
         }             
       
     TakeProfitPips=NormalizeDouble(StopLossPips*Mul_TP,0);  // расчет уровня тейка для всех инструментов по заданному значению динамического стопа        
                          
 

Merci, je vais faire des essais. En général, cela fonctionne si vous rechargez de manière raisonnable.


 
BeerGod:

Merci, je vais faire des essais. En général, il y a une utilité si vous faites les recharges de manière raisonnable.


Vous êtes les bienvenus. Bien sûr ! IMHO !

Nous ne parlons pas de recharges ici, nous parlons de moyennes - c'est si vous pensez à des exps de type Elan... :-)

Dès que j'aurai optimisé les variables externes et préparé une version pour le monde réel, je posterai un rapport !

Je peux aussi faire une entrée de départ sur les bandes de bollinger...

 
J'ai décidé d'écrire mon "Illan" à partir de zéro, c'est un métier risqué, mais le risque est justifié, j'ai décidé d'utiliser bollejder pour l'entrée et maintenant je dois faire une sage moyenne pour garder le système sur le dépôt minimum.
 
BeerGod:
J'ai décidé d'écrire mon "Illan" à partir de zéro, c'est un commerce risqué, mais le risque est justifié, j'ai décidé d'utiliser bollejder comme point d'entrée, maintenant je dois faire une moyenne sage, afin que le système fonctionne avec un dépôt minimal.

Je vais transférer les schémas de moyennage de mon Avalanche (inversé et additif) un à un sur Ilan (prix moyen des poses), et je vais utiliser des variantes. Je pourrais aussi faire une entrée sur Bollinger... Pour l'instant sur l'OSME.

J'ai un code comme celui-ci :

extern int Max_Iteration = 36;    // Максимальное количество итераций (ордеров) в мартине 
extern int k = 2;                 // с какой итерации тралим
extern int VAR_MM = 0;            // используемый вариант MM в соотв-ии:
                                  // 0 = множитель с числами ФИБО; 
                                  // 1 - по Илану в соответствие с LotExponent 
                                  // 2 - классический мартин - удвоение предыдущего объема
                                  // 3 - мн по ар-ой прогрессии 
                                  // 4 - мартин по схеме домножения предпредыдущего объёма на 2, т.е. 1,2,3,4,6,8,12,16,24,32
extern double LotExponent = 1.1;  // на сколько умножать стартовый лот в степени - схема по Илану          
....
 if (Iteration <= Max_Iteration && VAR_MM == 0)                  
              // Последующие лоты открываются по множителю в соответствие с числами ФИБО           
               switch(Iteration)                                  // Заголовок switch 
                   {                                              // Начало тела switch                  
                     case 1 : Lots_New = lastLots * 1; lots = lastLots; Print("Iteration = ", Iteration, " Lots_New = ", Lots_New );break; //расчет нового объема       
                     case 2 : Lots_New = lots * 2;    Print("Iteration = ", Iteration, " Lots_New = ", Lots_New);  break;   
                     case 3 : Lots_New = lots * 3;    Print("Iteration = ", Iteration, " Lots_New = ", Lots_New);  break;      
                     case 4 : Lots_New = lots * 5;    Print("Iteration = ", Iteration, " Lots_New = ", Lots_New);  break;  
                     case 5 : Lots_New = lots * 8;    Print("Iteration = ", Iteration, " Lots_New = ", Lots_New);  break;     
                     case 6 : Lots_New = lots * 13;   Print("Iteration = ", Iteration, " Lots_New = ", Lots_New);  break;      
                     case 7 : Lots_New = lots * 21;   Print("Iteration = ", Iteration, " Lots_New = ", Lots_New);  break;     
                 ...
                     case 19: Lots_New = lots * 6765; Print("Iteration = ", Iteration, " Lots_New = ", Lots_New);  break;                                                   
                     case 20: Lots_New = lots * 10946;Print("Iteration = ", Iteration, " Lots_New = ", Lots_New);  break;                           
                     default: Lots_New = lots * 17711; {Iteration = 0; Print("Выход за пределы. Iteration = ", Iteration, " Lots_New = ", Lots_New ); }                      
                   }                                    // Конец тела switch      
                    
           if (Iteration <= Max_Iteration && VAR_MM == 1)
              //Последующие лоты открываются по ИЛАНУ через экспоненту: iLots = NormalizeDouble(Lots * MathPow(LotExponent, NumOfTrades), lotdecimal);
               switch(Iteration)                        // Заголовок switch 
                   {                                    // Начало тела switch    
                  // case 0 : Lots_New = lots;  Print("старт, Lots_New = ", Lots_New );break; // СТАРТ                
                     case 1 : Lots_New = lastLots * 1; lots = lastLots; Print("Iteration = ", Iteration, " Lots_New = ", Lots_New );break; //расчет нового объема                                                                                                                        
                     // расчет последующих объемов, открываемых позиций, начиная с объема ПЕРВОЙ-case 1
                     default: Lots_New = lots * MathPow(LotExponent, Iteration); Print("Iteration = ", Iteration, " Lots_New = ", Lots_New);                                                                    
                   }                                   // Конец тела switch  
                
          if (Iteration <= Max_Iteration && VAR_MM == 2)// Последующие лоты открываются в соответствие с классическим мартином - удвоение           
               switch(Iteration)                       // Заголовок switch 
                   {                                   // Начало тела switch                       
                     case 1 : Lots_New = lastLots * 1; lots = lastLots; Print("Iteration = ", Iteration, " Lots_New = ", Lots_New );break; //расчет нового объема       
                     case 2 : Lots_New = lots * 2;    Print("Iteration = ", Iteration, " Lots_New = ", Lots_New);  break;   
                     case 3 : Lots_New = lots * 4;    Print("Iteration = ", Iteration, " Lots_New = ", Lots_New);  break;      
                ...                                                    
                     case 16: Lots_New = Lots * 32768;Print("Iteration = ", Iteration, " Lots_New = ", Lots_New);  break;
                     case 17: Lots_New = Lots * 65536;Print("Iteration = ", Iteration, " Lots_New = ", Lots_New);  break;                                                                  
                     default: Lots_New = lots * 65536; {Iteration = 0; Print("Выход за пределы. Iteration = ", Iteration, " Lots_New = ", Lots_New ); }                      
                   }                          
                   
         if (Iteration <= Max_Iteration && VAR_MM == 3)// Последующие лоты открываются в соответствие с членами ар прогрессии           
               switch(Iteration)                       // Заголовок switch 
                     {                                 // Начало тела switch         
                     case 1 : Lots_New = lastLots * 1; lots = lastLots; Print("Iteration = ", Iteration, " Lots_New = ", Lots_New );break; //расчет нового объема            
                     case 2 : Lots_New = lots * 3;    Print("Iteration = ", Iteration, " Lots_New = ", Lots_New );  break;   
                     case 3 : Lots_New = lots * 5;    Print("Iteration = ", Iteration, " Lots_New = ", Lots_New );  break;      
                     case 4 : Lots_New = lots * 7;    Print("Iteration = ", Iteration, " Lots_New = ", Lots_New );  break;  
                     case 5 : Lots_New = lots * 9;    Print("Iteration = ", Iteration, " Lots_New = ", Lots_New );  break;     
                ...
                     
                     case 57: Lots_New = lots * 113;  Print("Iteration = ", Iteration, " Lots_New = ", Lots_New );  break; 
                     case 58: Lots_New = lots * 115;  Print("Iteration = ", Iteration, " Lots_New = ", Lots_New );  break;        
                     default: Lots_New = lots * 117;  {Iteration = 0; Print("Выход за пределы. Iteration = ", Iteration, " Lots_New = ", Lots_New ); }                       
                   }                                   // Конец тела switch                                                      
              
               if (Iteration <= Max_Iteration && VAR_MM == 4) // мартин по схеме домножения предпредыдущего объёма на 2, т.е. 1,2,3,4,6,8,12,16,24,32             
               switch(Iteration)                       // Заголовок switch 
                   {                                   // Начало тела switch                       
                     case 1 : Lots_New = lastLots * 1; lots = lastLots; Print("Iteration = ", Iteration, " Lots_New = ", Lots_New );break; //расчет нового объема       
                     case 2 : Lots_New = lots * 2;    Print("Iteration = ", Iteration, " Lots_New = ", Lots_New);  break;   
                     case 3 : Lots_New = lots * 3;    Print("Iteration = ", Iteration, " Lots_New = ", Lots_New);  break;      
                     case 4 : Lots_New = lots * 4;    Print("Iteration = ", Iteration, " Lots_New = ", Lots_New);  break;  
                   ...  
                    
                     case 31: Lots_New = lots * 49152;Print("Iteration = ", Iteration, " Lots_New = ", Lots_New);  break;
                     case 32: Lots_New = lots * 65536;Print("Iteration = ", Iteration, " Lots_New = ", Lots_New);  break;
                     default: Lots_New = lots * 98304;{Iteration = 0; Print("Выход за пределы. Iteration = ", Iteration, " Lots_New = ", Lots_New ); }  
                   }                          
      
 
Merci pour les codes, ils me donnent une idée, même si je vais réécrire le code pour l'adapter à ma logique, je devrais expérimenter la moyenne dynamique, alors des miracles sont possibles) Le système a du potentiel... Oui, c'est une partie de l'histoire, mais tout dépend de la distance de moyenne (le bon calcul)
 
Est-ce que ça marche sur l'histoire ? Il est peut-être temps d'aller à la source des citations ?
 
 
rentik:

HELLO, villageois ! !!

https://www.mql5.com/ru/forum/142073/page2


Priva !

Félicitations pour la naissance de votre fille !

Bien joué !

 
elmucon:

L'ARBITRAGE est une chose amusante à faire

D'accord ! Voici le rapport du spread trading saisonnier sur Grande Capital. Le réel est juste au coin de la rue...

Dossiers :
1.zip  9 kb
Raison: