Ücretsiz bir danışman yazacağım - sayfa 41

 
Anton Kedo :
konu terk edildi
Hayır, neden ... bazen okurlar, sadece " kase gibi harika bir fikir var" gibi uygulamalar için nadiren kimse takip eder. Özellikle TK olmadan.
 
Güzel gün. Ilan'ın (martingale) sızmaması için nasıl değiştirileceğine dair ilginç bir fikir var. Çok uzun bir süre özünü burada anlatacak, kimin üstleneceği fikrin özünü Skype'ta açıklamaya çalışacağım.
 
Evgeniu Semenuta :
Güzel gün. Ilan'ın (martingale) sızmaması için nasıl değiştirileceğine dair ilginç bir fikir var. Çok uzun bir süre özünü burada anlatacak, kimin üstleneceği fikrin özünü Skype'ta açıklamaya çalışacağım.
Bir önceki gönderiyi okuyun!
 

TAMAM. tarif etmeye çalışacağım. Diyelim ki fiyat düşüyor, bundan önce İlhan bir satın alma oldu. Doğal olarak, alıma pozisyonlar ekler, lot büyüklüğünü arttırır ve bu şekilde fiyat geri gelene veya depo boşalana kadar devam eder. Bu seçeneği denemek istiyorum: örneğin 10 dizine ulaştığında, baykuş 15 puandan sonra hemen 2 bekleyen sipariş verir (önceki yerleşik siparişlerin toplam lot büyüklüğü 2'ye bölünür).

1 sipariş, yalnızca önceki 10 dizinin kar seviyesinde zararı durdur

Önceki 10 dizinin kar seviyesinde 2 stop loss emri, kar 15

O zaman olaylar için iki seçenek var: fiyat mevduatları yakalar, geri döner, 10 dizlik ızgarayı kapatır ve iki mevduattan kırmızıyız. Veya piyasa inatla daha da aşağı iner, bekleyen 2 kârla kapanır ve 10 puana bekleyen başka bir nokta koyar ve 10 dizlik ağdan bir veya bir çift negatif emri kapatır. İkinci bekleyen, stop loss'u başa baş noktasına çeker ve sonuna kadar bekler.

Bir şekilde. Kelimelerle anlatmak oldukça zor (. Fikri kim ilgilendirirse Skype'ta çizelge üzerinde detaylı olarak anlatacağım.

 
Evgeniu Semenuta :

TAMAM. tarif etmeye çalışacağım. Diyelim ki fiyat düşüyor, bundan önce İlhan bir satın alma oldu. Doğal olarak, alıma pozisyonlar ekler, lot büyüklüğünü arttırır ve bu şekilde fiyat geri gelene veya depo boşalana kadar devam eder. Bu seçeneği denemek istiyorum: örneğin 10 dizine ulaştığında, baykuş 15 puandan sonra hemen 2 bekleyen sipariş verir (önceki yerleşik siparişlerin toplam lot büyüklüğü 2'ye bölünür).

1 sipariş, yalnızca önceki 10 dizinin kar seviyesinde zararı durdur

Önceki 10 dizinin kar seviyesinde 2 stop loss emri, kar 15

O zaman olaylar için iki seçenek var: fiyat mevduatları yakalar, geri döner, 10 dizlik ızgarayı kapatır ve iki mevduattan kırmızıyız. Veya piyasa inatla daha da aşağı iner, bekleyen 2 kârla kapanır ve 10'dan sonra başka bekleyen puanlar koyar ve 10 dizlik ağdan bir veya bir çift negatif emri kapatır. İkinci bekleyen, stop loss'u başa baş noktasına çeker ve sonuna kadar bekler.

Bir şekilde. Kelimelerle anlatmak oldukça zor (. Fikri kim ilgilendirirse Skype'ta çizelge üzerinde detaylı olarak anlatacağım.

Kaçınılmaz tahliyeye yol açan olağan fikir! Ayrıntılar artık ilginç değil!
 

İyi günler, orijinal Expert Advisor'ı iyileştirme seçeneği bu başlıkta değerlendiriliyor mu? Cevabınız evet ise, açıklaması aşağıdadır:

Bitirilmesi gereken bir danışmanım var (ticarete izin verildiğinde ve iki parametre karşılanmadığında anlaşmaları kendi kendine kapatmaz: kapanış alanının belirlenmesi ve kısmi kapanış hacminin boyutunun belirtilmesi) ) Teknik görevin tanımı :

Zaman aralığı: herhangi


Kullanılan aletler:

Bollinger bantları: 20. dönem

sapmalar 2

kapatmak için uygulandı



ADX: 14. dönem

kapatmak için uygulandı

25. seviyeye sahip



Al sinyali: bir flat sırasında (ADX seviyesi 25 seviyesinin altındayken) fiyatın alt bollinger bandında kapanmasını bekleriz. o parametresi ile (o parametresi emrin açılış noktasını, ortasından uzaklığını belirler) alt bollinger bandı %100 olarak tanımlanır; %0 bu alt Bollinger bandında bir noktadır, %10 daha yüksek vb.) ardından fiyat artışı yönünde teyit mumunun kapanmasını bekleriz. Bir satın alma açma. Stoploss ayarlarda noktalar olarak ayarlanır.Siparişin kapatılması Expert Advisor'daki seçeneklere bağlıdır, seçeneklerin parametreleri daha sonra açıklanacaktır. .Sipariş, bollinger orta bandına değdiğinde n parametresi ile kapatılır (n parametresi yüzde olarak ayarlanır, hacmin hangi kısmının kapalı olduğunu belirler, lotlarda bu değer aşağı yuvarlanır, %0 hiçbir şeyin kapanmadığı anlamına gelir. ) . Emir açılış fiyatına stop loss konulur, ardından f parametresi ile emir tamamen kapatılır (orta Bollinger bandından üst banda kadar olan mesafe %100 olarak alınır, yüzde olarak tanımlanan f parametresi ise şu noktayı belirler: fiyat ona ulaşırsa emir kapanır, %0 üst Bollinger bandındaki nokta %10 daha düşük, vb. )/

Satış sinyali: Bir daire sırasında (ADX seviyesi 25 seviyesinin altındayken), fiyatın üst bolinger bandında kapanmasını bekleriz. o parametresi ile (o parametresi emir açma noktasını tanımlar, orta Bollinger bandından üst banda olan mesafe %100 olarak tanımlanır; %0, üst Bollinger bandında bir nokta, %10 daha düşük vb.), sonra onay mumunun yan fiyat indirimine yakın olmasını bekleriz. Satışı açıyoruz. Stoploss ayarlarda noktalar olarak ayarlanır.Siparişin kapatılması Expert Advisor'daki seçeneklere bağlıdır, seçeneklerin parametreleri daha sonra açıklanacaktır. .Orta Bollinger bandına değdiği zaman n parametresi ile emir kapatılır. (n parametresi yüzde olarak ayarlanır, hacmin hangi bölümünün kapalı olduğunu belirler, lotlarda bu değer aşağı yuvarlanır, %0 hiçbir şeyin kapalı olmadığı anlamına gelir). (Orta Bollinger bandından alt banda olan mesafe %100 olarak alınır, yüzde olarak tanımlanan f parametresi fiyatın gelmesi durumunda emrin kapanacağı noktayı belirler, %0 alt Bollinger eksenindeki noktadır, %10 daha yüksek, vb.)/



Seçenekler :

Danışmanın seçeneklerinde, kayıpları durdurun veya hiç ayarlanmadı. Stoploss iki türe ayrılır: normal, puan olarak gösterilen ve potansiyel beklenen kâra bağlı olan stop loss, yani bir emir açıldığında, emir fiyatından karşı Bollinger bandına (yani, üst veya alt) , mesafe puan olarak hesaplanır. Seçeneklerde, S katsayısı ayarlanır (0'dan 1'e). potansiyel kâr ile çarpılır. Bu değer, zararı durdur, yani katsayı 0,5 ise, zararı durdur, potansiyel kârın yarısına eşit bir değer olacaktır. )

Bu Uzman Danışmanı yazan programcı, öncelikle Bollinger Bantlarına dayalı herhangi bir Uzman Danışman yazmakla ilgilendi ve onu daha fazla geliştirmeyi planlamıyor. Ekte, danışmanın dayandığı tarih stratejisinin istatistikleri ve danışmanın VPS'deki bir buçuk haftalık çalışmasının açıklamaları (farklı para yönetimine sahip üç terminal başlatıldı). Kod aşağıdadır:

 #property copyright "Copyright 2015, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.00"
#property strict
//--- input parameters
input int       BBPeriod= 20 ;
input double    BBdeviation= 2.0 ;
input int       ADX= 14 ;
input double    AdxLevel= 25 ;
input double       SL= 2000 ;
input double       TP= 0 ;
input int       Obuy= 5 ;
input int       Osell= 5 ;
input double    Lot= 0.1 ;
input bool      CloseMiddle= true ;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
bool buyOpen= false ;
bool sellOpen= false ;
double _Obuy;
double _OSell;
int TryShots= 3 ;
int Slippage= 50 ;                         // Slippage
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnInit ()
  {
   _Obuy=Obuy/ 100 ;
   _OSell=Osell/ 100 ;

   if (!IsTradeAllowed())
     {
       string message= "You must allow trading!" ;
       Print (message);
       Comment (message);
       return INIT_FAILED ;
     }

   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
   static datetime prevTime;
   datetime currentTime=iTime( Symbol (), 0 , 0 );
   if (prevTime==currentTime)
     {
       return ;
     }
   else
     {
      prevTime=currentTime;
     }

   double adx= iADX ( NULL , 0 ,ADX, PRICE_CLOSE , 0 , 2 );

   if (adx<AdxLevel)
     {
       double bbMain1= iBands ( NULL , 0 ,BBPeriod,BBdeviation, 0 , PRICE_CLOSE , 0 , 2 );
       double close=iClose( NULL , 0 , 2 );
       if (!buyOpen)
        {
         double bbDown1= iBands ( NULL , 0 ,BBPeriod,BBdeviation, 0 , PRICE_CLOSE , 2 , 2 );
         BuyPosition(bbDown1,bbMain1,close);
        }
       else
        {
         double currentClose=iClose( NULL , 0 , 0 );
         double currentBB= iBands ( NULL , 0 ,BBPeriod,BBdeviation, 0 , PRICE_CLOSE , 0 , 0 );
         if (CloseMiddle && currentClose>currentBB)
           {
            CloseOpenPos(OP_BUY);
            buyOpen= false ;
           }
        }

       if (!sellOpen)
        {
         double bbUp1= iBands ( NULL , 0 ,BBPeriod,BBdeviation, 0 , PRICE_CLOSE , 1 , 2 );
         SellPosition(bbUp1,bbMain1,close);
        }
       else
        {
         double currentClose=iClose( NULL , 0 , 0 );
         double currentBB= iBands ( NULL , 0 ,BBPeriod,BBdeviation, 0 , PRICE_CLOSE , 0 , 0 );
         if (CloseMiddle && currentClose<currentBB)
           {
            CloseOpenPos(OP_SELL);
            sellOpen= false ;
           }
        }
     }

  }
//+------------------------------------------------------------------+

void BuyPosition( double bbDown, double bbMain, double close)
  {
   double dif=bbMain-bbDown;
   double proc=dif *_Obuy;
   double DownProc=bbDown+proc;

   if (close<DownProc)
     {
       double openCurrent=iOpen( NULL , 0 , 1 );
       double closeCurrent=iClose( NULL , 0 , 1 );
       if (closeCurrent>openCurrent)
        {

         for ( int it= 0 ; it<TryShots; it++)
           {
             ResetLastError ();
            RefreshRates();
             double sl,tp;
             if (SL!= 0 )
               sl= NormalizeDouble (Bid-SL* Point , Digits );
             if (TP!= 0 )
               tp= NormalizeDouble (Bid+TP* Point , Digits );
             Print (Ask+ " sl" +sl+ " tp" +tp);
             if (! OrderSend ( Symbol (),OP_BUY,Lot, NormalizeDouble (Ask, Digits ),Slippage,sl,tp))
              {
               if (it>=TryShots) { Print ( "Failed OP_BUY !" ); break ; }
               int err= GetLastError ();
               if (err== 4 || err== 6 || err== 8 || err== 128 || err== 137 || err== 141 || err== 146 ) Sleep ( 1000 *it);
               else { Print ( "Failed OP_BUY !" ); break ; }
              }
             else
              {
               buyOpen= true ;
               break ;
              }

           }
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void SellPosition( double bbUp, double bbMain, double close)
  {
   double dif=bbUp-bbMain;
   double proc=dif*_OSell;
   double UpProc=bbUp-proc;

   if (close>UpProc)
     {
       double openCurrent=iOpen( NULL , 0 , 1 );
       double closeCurrent=iClose( NULL , 0 , 1 );
       if (closeCurrent<openCurrent)
        {
         for ( int it= 0 ; it<TryShots; it++)
           {
             ResetLastError ();
            RefreshRates();
             double sl,tp;
             if (SL!= 0 )
               sl= NormalizeDouble (Ask+SL* Point , Digits );
             if (TP!= 0 )
               tp= NormalizeDouble (Ask-TP* Point , Digits );
             Print (Bid+ " sl" +sl+ " tp" +tp);
             if (! OrderSend ( Symbol (),OP_SELL,Lot, NormalizeDouble (Bid, Digits ),Slippage,sl,tp))
              {
               if (it>=TryShots) { Print ( "Failed OP_SELL !" ); break ; }
               int err= GetLastError ();
               if (err== 4 || err== 6 || err== 8 || err== 128 || err== 137 || err== 141 || err== 146 ) Sleep ( 1000 *it);
               else { Print ( "Failed OP_SELL !" ); break ; }
              }
             else
              {
               sellOpen= true ;
               break ;
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Close open position                                              |
//+------------------------------------------------------------------+
void CloseOpenPos( int or_tp)
  {
   int i,err,k= OrdersTotal ();
//---
   for (i=k- 1 ; i>= 0 ; i--)
     {
       if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES))
        {
         if (OrderSymbol()== Symbol ())
           {
             if (or_tp==OrderType())
              {
               for ( int it= 0 ; it<TryShots; it++)
                 {
                   ResetLastError ();
                  RefreshRates();
                   double _price=Ask; if (or_tp==OP_BUY) _price=Bid;
                   //---
                   if (!OrderClose(OrderTicket(),OrderLots(),_price,Slippage))
                    {
                     if (it>=TryShots) { Print ( "Failed to close the order " ,OrderTicket(), "!" ); break ; }
                     err= GetLastError ();
                     if (err== 4 || err== 6 || err== 8 || err== 128 || err== 137 || err== 141 || err== 146 ) Sleep ( 1000 * 100 );
                     else { Print ( "Failed to close the order " ,OrderTicket(), "!" ); break ; }
                    }
                   else break ;

                 }
              }
           }
        }
     }
  }

//+------------------------------------------------------------------+

VPS'de çalışan terminalden daha fazla ekran görüntüsü ekliyorum: "1" ve 2" ekran görüntüleri, danışmanın fırsatları açmadığı durumlara örnektir.  

Danışmanın "kilit" ekranı, ortaya çıkan satış koşulları nedeniyle satın alma işlemini kendi kendine kapatmadı ve satışı açtı.
ekran "sipariş çıktı", bu durumda sipariş doğru şekilde açıldı.
Dosyalar:
Pictures.zip  775 kb
a2ji9v3g8.zip  14 kb
Statement.zip  23 kb
 

Tüm siparişleri toplam kâra göre kapatan bir komut dosyasına sahip olan - lütfen atın.

Teşekkür ederim.

 

Merhaba, forex göz göstergesine danışman yazma fikrine nasıl bakıyorsunuz, çok doğru, bana göre sinyal veriyor ve buna TrendWave'i de eklerseniz filtre çıkıyor çok iyi olmak.

Prensipte, ekranda "gözleri" ve mavi ve kırmızı işaretleri hangi değişkenlere dayanarak gösterdiğini anlasaydı, yazmaya bile çalışabilirdi!

 
baikot :

Merhaba, forex göz göstergesine danışman yazma fikrine nasıl bakıyorsunuz, çok doğru, bana göre sinyal veriyor ve buna TrendWave'i de eklerseniz filtre çıkıyor çok iyi olmak.

Prensipte, ekranda "gözleri" ve mavi ve kırmızı işaretleri hangi değişkenlere dayanarak gösterdiğini anlasaydı, yazmaya bile çalışabilirdi!

Gösterge nerede?
 
Victor Nikolaev :
Gösterge nerede?
Buna değmese de. Sadece kod çözücüyü bulun ve banyoya girin