村人の稼ぎ方を学ぶ【第2話】! - ページ 157

 
そこがポイントで、フィル間の固定距離をなくしてダイナミックにし、反対側のラインを超えたら(シグナルが反転したら)クローズするようにしたいです
 
BeerGod:
要は、トッピングの距離が固定されているのを解消して、ダイナミックに、反対側のラインを超えたら閉じる(反対側の信号で閉じる)ようにしたいのです

ATRの表示によってダイナミックにチャンネル幅を変化させるようにしました。今のところ、このブランチの設定でイランとともに、マイクロリアルでこの(逆)アバランチ型スキーム(逆マーチン)を使っています。イランではまだそのスキームをテストしていません。私のエントリーはボリンジャーではなく、OSMAというインジケーターで行っています。

アイラン-平均化ツールの場合、ボリンジャーバーでスタートエントリーができるのですが・・・。

このコードでは、平均化チャネル幅を計算し、その幅に達すると平均化が実行され、ボリュームが増加します。

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);  // расчет уровня тейка для всех инструментов по заданному значению динамического стопа        
                          
 

ありがとうございます、実験してみます。一般的には、感覚的に詰め替えればうまくいきます。


 
BeerGod:

ありがとうございます、実験してみます。一般的には、感覚的に詰め替えを行えば、ある程度の使用感はあります。


どういたしまして。もちろんです!(笑IMHO!

ここではリフィルの話ではなく、平均値の話をしているのですが、それはエラン的なExpを考えているのであれば...です。:-)

外部変数を最適化し、本番用のバージョンを用意したら、すぐにレポートをアップします

ボリンジャーストリップでスターターエントリーもできるのですが・・・。

 
私の「イラン」はゼロから書くことにしました、リスクの高いトレード ですが、リスクは正当化されます、エントリーにはボレーダーを使うことにしました、あとは、最小限の預金でシステムを維持するために、賢明な平均化をしなければなりませんね。
 
BeerGod:
私の「イラン」はゼロから書くことにしました、リスクの高い取引ですが、リスクは正当化されます、ボレーダーをエントリーポイントにすることにしました、あとは賢い平均化をすることです、そうすれば最小限の預金でシステムが機能します。

私のアバランチ(反転・加算)の平均化方式をアイラン(ポーズの平均化価格)で一対一に移し、バリアントを使用することにします。ボリンジャーのスターターもやろうかな...。OSMEでとりあえず。

このようなコードがあります。

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 ); }  
                   }                          
      
 
コードをありがとうございます、アイデアをくれました、私のロジックに合うようにコードを書き直しますが、動的平均化で実験すべきです、そうすれば奇跡は可能です)システムは可能性を秘めています・・・はい、それは話の一部ですが、平均化距離(正しい計算)が全てです。
 
履歴に残るか?そろそろ引用元へ行くべきかな?
 

村人たちよ、HELLO!!!!

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

 
rentik:

村人たちよ、HELLO!!!!

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


プリヴァ!

娘さんの誕生、おめでとうございます。

よくぞ言ってくれました。