[Arşivle!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 2. - sayfa 520

 
Roger :

Genel olarak, bunu yaptım, iki değişken ekledim - biri ulaşmak istediğiniz depozito seviyesi için, ikincisi ise silinecek dosya sayısı. Yalnızca bir kez çalışacaktır, ardından seviyeyi farklı bir değere düzeltmeniz veya danışmanı yeniden başlatmanız gerekir.
Teşekkürler - şimdi teste gidiyorum. Yoksa test cihazında çalıştırmak için uygun değil mi?
 
alex12 :
Teşekkürler - şimdi teste gidiyorum. Yoksa test cihazında çalıştırmak için uygun değil mi?

Nasıl kontrol edecektim?
 
demlin :

Hepiniz hoşgeldiniz!

Daireyi belirlemek için normal bir gösterge önermenizi rica ediyorum, şimdiden teşekkürler)))


Bunu kendim test ediyorum.

iCustom() aracılığıyla Expert Advisor'a kolayca eklenir (bağlanır).

 
2 arabanın kesişimi için basit bir sistem.
Bai - hızlı ortalar yavaşlar.
Sat - hızlı çaprazlar yavaşlar.

Kapanış - ters sinyal veya trol. Her pozisyonu açarken stop = 50 puan vermesi için kodda nelerin değiştirilmesi gerektiğini söyler misiniz?

 extern double Lots           =   0 ; // лот, если 0, то динамический
extern double RiskPercentage =   70 ; // % от депо на лот, если динамический
extern int     FastPer        =   4 ;
extern int     SlowPer        =   18 ;
extern int     magicnumber    = 777 ;
extern int     TrailingStop   =   20 ; 
extern bool    PolLots        = true;



int prevtime;
int ticket= 0 ;
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----




   if (! IsDemo ())
    {
//     Print ("Эта версия только для демо-счетов");
//     return(0);
    }   


   if (Time[ 0 ] == prevtime)
   { 

       return ( 0 );
   }
   prevtime = Time[ 0 ];
   if (! IsTradeAllowed ()) 
     {
       prevtime = Time[ 1 ];
       return ( 0 );
     }




 int Ord= 0 ;
 double ClLot= 0 ;
int LotsCount= 0 ;
   int i= 0 ;  
   int total = OrdersTotal ();   
   for (i = 0 ; i <= total; i++) 
     {
       if (TrailingStop> 0 )  
       {                 
       OrderSelect (i, SELECT_BY_POS, MODE_TRADES);
       if ( OrderMagicNumber () == magicnumber) 
         {
         ticket= OrderTicket (); 
         ClLot= OrderLots ();
         if ( OrderType ()==OP_BUY)
          {
           Ord= 1 ;
          }
         else
          {
           Ord= 2 ;
          }         
          LotsCount ++;
          TrailingStairs( OrderTicket (),TrailingStop);
         }
       }
      }
/*
 
     for(i = 0; i <= OrdersTotal(); i++) 
      {
       OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
       if(OrderMagicNumber() == magicnumber) 
         {
         ticket=OrderTicket(); 
         ClLot=OrderLots();
         if (OrderType()==OP_BUY)
          {
           Ord=1;
          }
         else
          {
           Ord=2;
          }
         }
      } 
*/     
bool SellOp=false;
bool BuyOp=false;

double MAFast1= NormalizeDouble ( iMA ( NULL , 0 ,FastPer, 0 , MODE_SMA , PRICE_CLOSE , 2 ), Digits );
double MAFast2= NormalizeDouble ( iMA ( NULL , 0 ,FastPer, 0 , MODE_SMA , PRICE_CLOSE , 1 ), Digits );
double MAFast3= NormalizeDouble ( iMA ( NULL , 0 ,FastPer, 0 , MODE_SMA , PRICE_CLOSE , 0 ), Digits );
double MASlow1= NormalizeDouble ( iMA ( NULL , 0 ,SlowPer, 0 , MODE_SMA , PRICE_CLOSE , 2 ), Digits );
double MASlow2= NormalizeDouble ( iMA ( NULL , 0 ,SlowPer, 0 , MODE_SMA , PRICE_CLOSE , 1 ), Digits );
double MASlow3= NormalizeDouble ( iMA ( NULL , 0 ,SlowPer, 0 , MODE_SMA , PRICE_CLOSE , 0 ), Digits );


      
if ((MAFast1<MASlow1)&&
    (MAFast2==MASlow2)&&
    (MAFast3>MASlow3))
{
 BuyOp=true;
}

if ((MAFast1>MASlow1)&&
    (MAFast2==MASlow2)&&
    (MAFast3<MASlow3))
{
 SellOp=true;
}



if (BuyOp)
 {
   if (Ord== 2 )
   {
     OrderClose (ticket,ClLot,Ask, 3 , Red );
   }
   if (Ord!= 1 )
   {
     OrderSend ( Symbol (),OP_BUY,Lot(),Ask, 3 , 0 , 0 , "MA_Buy" ,magicnumber, 0 , Green );
   }
 }

if (SellOp)
 {
   if (Ord== 1 )
   {
     OrderClose (ticket,ClLot,Bid, 3 , Green );
   }
   if (Ord!= 2 )
   {
     OrderSend ( Symbol (),OP_SELL,Lot(),Bid, 3 , 0 , 0 , "MA_Sell" ,magicnumber, 0 , Red );
   }
 }



   
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
void TrailingStairs( int ticket, int trldistance)
   { 
     int Spred=Ask - Bid;
     if ( OrderType ()==OP_BUY)
      {
       if ((Bid- OrderOpenPrice ())>( Point *trldistance))
         {
           if ( OrderStopLoss ()<Bid- Point *trldistance || ( OrderStopLoss ()== 0 ))
            {
             OrderModify (ticket, OrderOpenPrice (),Bid- Point *trldistance, OrderTakeProfit (), 0 , Green );
             if (PolLots)
             if ( NormalizeDouble ( OrderLots ()/ 2 , 1 )> MarketInfo ( Symbol (), MODE_MINLOT))
               {
               OrderClose (ticket, NormalizeDouble ( OrderLots ()/ 2 , 1 ),Bid, 3 , Green );
               }
             else
               {
               OrderClose (ticket, OrderLots (),Bid, 3 , Green );
               }
            }
         }
       }
     else
       {
         if (( OrderOpenPrice ()-Ask)>( Point *trldistance))
          {
           if (( OrderStopLoss ()>(Ask+ Point *trldistance)) || ( OrderStopLoss ()== 0 ))
             {
               OrderModify ( OrderTicket (), OrderOpenPrice (),Ask+ Point *trldistance, OrderTakeProfit (), 0 , Red );
             if (PolLots)
             if ( NormalizeDouble ( OrderLots ()/ 2 , 1 )> MarketInfo ( Symbol (), MODE_MINLOT))
               {
               OrderClose (ticket, NormalizeDouble ( OrderLots ()/ 2 , 1 ),Ask, 3 , Green );
               }
             else
               {
               OrderClose (ticket, OrderLots (),Ask, 3 , Green );
               }
             }
          }
        }
    }
    
double Lot()
{
 double LotQ = Lots;

 if (Lots== 0 )
  {
   double margin = MarketInfo ( Symbol (), MODE_MARGINREQUIRED);
   double minLot = MarketInfo ( Symbol (), MODE_MINLOT);
   double maxLot = MarketInfo ( Symbol (), MODE_MAXLOT);
   double step =   MarketInfo ( Symbol (), MODE_LOTSTEP);
   double account = AccountFreeMargin ();
   
   double percentage = account*RiskPercentage/ 100 ;
   
   LotQ = MathRound (percentage/margin/step)*step;
   
   if (LotQ < minLot)
   {
      LotQ = minLot;
   }
   
   if (LotQ > maxLot)
   {
      LotQ = maxLot;
   }
  } 
   return (LotQ);
  }

 
Roman. :


Bunu kendim test ediyorum.

iCustom() aracılığıyla Expert Advisor'a kolayca eklenir (bağlanır).

Expert Advisor'da son derece düşük ve aşırı yüksek değerlerini nasıl belirlediğinizi merak ediyorum? Gerçekten de, grafiğin bir yerel bölümünde, 0,3800 (mavi çizgi) aşırı bir değerdi ve geçici bir düzeltmeye karşılık geldi, bir sonraki yerel bölümde, zaten 0,3041 (yeşil çizgi) aşırı değeri oldu ve bir tersine işaret etti...

Ancak, ilk yerel alanda (kırmızı çizgi) hiçbir şey söylemeyen 0,4596'lık son derece düşük değere ne dersiniz?

Ve son derece düşük bir gösterge değerinin tam olarak neyi gösterdiğini nasıl belirlersiniz - bir düzeltme mi yoksa tersine çevirme mi? Sonuçta, ilk durumda 0,3800 değeri bir düzeltmeyi (yeşil dikey çizgi) gösterdi, ikinci durumda - trendin sonu (kırmızı dikey çizgi)

Ve son olarak - bu tür yerel aşırı değerler - grafikte bir düzine düzine. Sonuçta, 3-5 saatlik bir süre için kesinlikle en düşük değer olacak ve belirli bir süre için son derece düşük olacaktır. Göstergenin aşırı değerlerini aramak için belirli bir süre ayarlarsanız, bulunur, ancak... sonraki çubuklarda, seçilen sürenin dışında, gösterge değerinin daha da düşmesi (daha yüksek) olabilir. ) ve sonra bu değer zaten aşırı düşük (yüksek) olacaktır, ancak bir önceki bulunanla ne yapmalı? Üstelik danışman zaten bu konuda bir karar verecek...

Yine de...


 
artmedia70 :

Expert Advisor'da son derece düşük ve aşırı yüksek değerlerini nasıl belirlediğinizi merak ediyorum? Gerçekten de, grafiğin bir yerel bölümünde, 0,3800 (mavi çizgi) aşırı bir değerdi ve geçici bir düzeltmeye karşılık geldi, bir sonraki yerel bölümde, zaten 0,3041 (yeşil çizgi) aşırı değeri oldu ve bir tersine işaret etti...

Ancak, ilk yerel alanda (kırmızı çizgi) hiçbir şey söylemeyen 0,4596'lık son derece düşük değere ne dersiniz?

Ve son derece düşük bir gösterge değerinin tam olarak neyi gösterdiğini nasıl belirlersiniz - bir düzeltme mi yoksa tersine çevirme mi? Sonuçta, ilk durumda 0,3800 değeri bir düzeltmeyi (yeşil dikey çizgi) gösterdi, ikinci durumda - trendin sonu (kırmızı dikey çizgi)

Ve son olarak - bu tür yerel aşırı değerler - grafikte bir düzine düzine. 3-5 saatlik bir süre için kesinlikle en düşük değer olacaktır ve bu süre için son derece düşük olacaktır. Göstergenin aşırı değerlerini aramak için belirli bir süre ayarlarsanız, bulunur, ancak... sonraki çubuklarda, seçilen sürenin dışında, gösterge değerinin daha da düşmesi (daha yüksek) olabilir. ) ve sonra bu değer zaten aşırı düşük (yüksek) olacaktır, ancak bir önceki bulunanla ne yapmalı? Üstelik danışman zaten bu konuda bir karar verecek...

Yine de...





Bu göstergeye, bir trend veya düz bir strateji için pazara girmek için bir filtre olarak bakıyorum, yani. Bu onun tanıklığının yorumudur:

 double iVAR_1 = iCustom ( Symbol (),trend_period, "iVAR" , n, nBars, 0 , 1 );                     // расчет индикатора iVAR
   

0,5'in altındaki gösterge değeri, piyasanın trend durumunu ifade eder -

iVAR_1 < 0.5 &&                                                             // тренд на основном ТФ   

Son derece düşük bir değer genellikle mevcut trendin sonundan (düzeltilmesinden) önce gelir - önemli değil - burada (piyasadayken) takip çalışır.


0,5'in üzerindeki gösterge değeri, piyasanın düz olduğu anlamına gelir -

iVAR_1 > 0.5 && 

Son derece yüksek bir değer, genellikle önemli eğilimlerin başlangıcından önce gelir - aşağıya bakın. önceki yorum.

0,5 bölgesindeki gösterge değeri, piyasanın belirsiz bir durumu anlamına gelir - burada belirli bir "düzey" girinti kullanmak mümkündür (bunun gereksiz olduğunu dışlamıyorum, yani 0,5 değerini alıyoruz ve bu kadar), hem düşük - x hem de daha yüksek - y değerleri 0,5 (temel seviye), bunları harici değişkenlere yönlendirin ve örneğin 0,02'lik artışlarla optimize edin, ayrıca n - başlangıç: 2 adım: 1 durak: 7 - bu gereksiz değil, bunu yapıyorum - sonuçları yakında Çığ dalında yayınlayacağım (bu bir trend sistemi... :-))), sadece Martin'in MM'si ile... ve bu kadar... :- )))))

 
Roman. :


Bu göstergeye, bir trend veya düz bir strateji için pazara girmek için bir filtre olarak bakıyorum, yani. ifadesinin aşağıdaki yorumu elde edilir:

0,5'in altındaki gösterge değeri, piyasanın trend durumunu ifade eder -

Son derece düşük bir değer genellikle mevcut trendin sonundan (düzeltilmesinden) önce gelir - önemli değil - burada (piyasadayken) takip çalışır.


0,5'in üzerindeki gösterge değeri, piyasanın düz olduğu anlamına gelir -

Son derece yüksek bir değer, genellikle önemli eğilimlerin başlangıcından önce gelir - aşağıya bakın. önceki yorum.

0,5 bölgesindeki gösterge değeri, piyasanın belirsiz bir durumu anlamına gelir - burada belirli bir "düzey" girinti kullanmak mümkündür (bunun gereksiz olduğunu dışlamıyorum, yani 0,5 değerini alıyoruz ve bu kadar), hem düşük - x hem de daha yüksek - y değerleri 0,5 (temel seviye), bunları harici değişkenlere yönlendirin ve örneğin 0,02'lik artışlarla optimize edin, ayrıca n - başlangıç: 2 adım: 1 durak: 7 - bu gereksiz değil, bunu yapıyorum - sonuçları yakında Çığ dalında yayınlayacağım (bu bir trend sistemi... :-))), sadece Martin'in MM'si ile... ve bu kadar... :- )))))

Optimizasyonu sevmiyorum: özü uyuyor... Ve asla beyin çocuklarımın parametrelerini optimize etmiyorum... Farklı piyasa koşulları için gerekli parametreleri seçmelerine izin vermeye çalışıyorum.

Yine de açıklama için teşekkürler... :) Dürüst olmak gerekirse - yukarıdaki yazı Türkiye'ye bir çakıl taşıydı... :)

 

Tünaydın!

Bir sorum var. EA, işlemlerin sonuçlarını bir csv dosyasına yazan, ancak EA parametrelerinde para yönetim sistemi seçeneğini etkinleştirirken/devre dışı bırakırken ( TRUE/FALSE ) oluşan bir sorun bulan bir işleve sahiptir. Örneğin kaynak dosya derlendikten hemen sonra her şey düzgün çalışıyor ve istendiği gibi işlemler dosyaya yazılıyor. Aşağıdaki şekil, doğru şekilde kaydedilmiş verileri göstermektedir:

Daha sonra test cihazında uzman parametrelerinde para yönetim sistemi seçeneğini açıp test çalıştırıyorum fakat veriler dosyaya doğru yazılmıyor. Aşağıdaki şekil, karşılaştırma için iki seçeneği göstermektedir. Soldaki doğru (yukarıdaki gibi), sağdaki doğru değil:

Ne olduğunu çözemedim ama şunu buldum. Para yönetim sistemi seçeneğini de etkinleştirir/devre dışı bırakırsanız ve teste başlamadan önce kaynak dosyayı yeniden derlerseniz, her şey doğru bir şekilde kaydedilir.

Söyle bana sorun ne olabilir?

 
artmedia70 :

Optimizasyonu sevmiyorum: özü uyuyor... Ve asla beyin çocuklarımın parametrelerini optimize etmiyorum... Farklı piyasa koşulları için gerekli parametreleri seçmelerine izin vermeye çalışıyorum.

Yine de açıklama için teşekkürler... :) Dürüst olmak gerekirse - yukarıdaki yazı Türkiye'ye bir çakıl taşıydı... :)


Anlıyorum ... İşte, ilgileniyorsanız, böyle bir şey (bir römorkta). Ayrıca buraya bakın (tüm iş parçacığı) - 0.6'nın üstünde / altında ve burada (seçici sayfalar) bir yorum var.

Dosyalar:
 
Roman. :


Bunu kendim test ediyorum.

iCustom() aracılığıyla Expert Advisor'a kolayca eklenir (bağlanır).

Teşekkürler, indirdim, danışmanda test edeceğim