KimIV'ten faydalı özellikler - sayfa 15

 
KimIV :
B_Dima :
CCİ değeri 100'ün üzerindeyse, değer -100'ün altına düşene kadar alış pozisyonu, -100'ün altına düştüğünde ise 100'ün üzerine çıkana kadar satış pozisyonu açın.

Dima, sana şu işlevi sunabilirim:

 int CCI_period = 14 ;
int Applied_Price = PRICE_CLOSE ;

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,   http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 28.24.2008                                                     |
//|  Описание : Возвращает торговый сигнал:                                    |
//|              1 - покупай                                                   |
//|              0 - сиди, кури бамбук                                         |
//|             -1 - продавай                                                  |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   ("" или NULL - текущий символ)          |
//|    tf - таймфрейм                  (    0       - текущий таймфрейм)       |
//|    nb - номер бара                 (    0       - текущий номер бара)      |
//+----------------------------------------------------------------------------+
int GetTradeSignal ( string sy = "" , int tf = 0 , int nb = 0 ) {
   if ( sy == "" || sy == " 0 " ) sy = Symbol () ;
   double cci0 = iCCI ( sy , tf , CCI_period , Applied_Price , nb ) ;
   double cci1 = iCCI ( sy , tf , CCI_period , Applied_Price , nb + 1 ) ;
   int bs = 0 ;

   if ( cci1 <=+ 100 && cci0 >+ 100 ) bs =+ 1 ;
   if ( cci1 >=- 100 && cci0 <- 100 ) bs =- 1 ;

   return ( bs ) ;
}

Bu fonksiyon satın alırken 1, satarken -1 döndürür. Satın alma / satış koşulları isteklerinize karşılık gelir. Şimdi her kene üzerinde aşağıdakileri yapmanız yeterlidir:

1. GetTradeSignal() işlevinin değerini alın.

2. Alınan değer ==0 ise, hiçbir şey yapmayın.

3. Alınan değer >0 ise tüm satışları kapatın ve satın alın.

4. Alınan değer <0 ise, tüm alımları kapatın ve satın.

:))) Elbette yardımın için teşekkürler ama benim hatam yeterince açık anlatamamışım CCİ göstergesi yön ve trend değişimini 50'şer aralıkla gösteriyor ve fiyat EMA 8'e değdiğinde açılış oluyor , ve zararı durdur ve kar al da düzeltmeyi belirlemek için ve diğer göstergeler kullanılır. Resim şu şekilde, CCİ +100'ü geçtiğinde, EMA'ya dokunduğunda bir satın alma pozisyonu açılıyor ve CCİ'nin nerede olduğu önemli değil (+10 veya -20), asıl mesele şu ki, satışlar geçtiğinde başlıyor - 100. CCI>=+100 ile CCI<=-100 arasındaki zaman aralığında 100 mum geçebilir ve 10 veya daha fazla pozisyon açılabilir. Umarım açıktır. tavsiye verirseniz sevinirim.

 
B_Dima писал (а):
Benim hatam yeterince açık anlatamadım

Peki... Hatanı düzeltmek sana kalmış :-)

Sana doğru yönü verdim. Hedefe götürecek. Öyleyse devam et...

 
KimIV :

ModifyOrder() işlevini kullanma örnekleri.

İlk önce, bana defalarca sorulan örnekler vermeye karar verdim. Bu, Piyasa İzleme piyasa emirlerinin piyasa yürütme koşullarında pozisyonların açılmasıdır. Bu, aynı anda piyasa fiyatından bir pozisyon açmak için bir emir vermek ve buna bekleyen bir emir eklemek imkansız olduğunda. Piyasa İzleme koşullarında böyle bir açılış iki aşamada gerçekleştirilmelidir: önce bir pozisyon açın ve ardından ona bekleyen emirleri ekleyin, yani StopLoss ve TakeProfit fiyat seviyelerini ayarlayın.

1. Mevcut enstrümandan 0.1 lot satın alın ve 30 puanlık bir stop loss ayarlayın

 int ti = OpenPosition ( NULL , OP_BUY , 0.1 ) ;
if ( OrderSelect ( ti , SELECT_BY_TICKET ))
  ModifyOrder ( - 1 , Ask - 30 * Point , - 1 , clModifyBuy ) ;

2. Mevcut enstrümanın 0.15 lotunu sat ve SL=45, TP=99 olarak ayarla

 int ti = OpenPosition ( NULL , OP_SELL , 0.15 ) ;
if ( OrderSelect ( ti , SELECT_BY_TICKET ))
  ModifyOrder ( - 1 , Bid + 45 * Point , Bid - 99 * Point , clModifySell ) ;
Fragmanda, örneklerle çalışan bir komut dosyası.


Igor, lütfen tekrar kontrol et - komut dosyası çalışmıyor:

1) Normal DC'lerde açık emir sayısında bir sınırlama yoktur (sürekli açılır)

2) Piyasa tarafından emirlerin açıldığı DC'lerde - (Error131). Örneğin, NorthFinance ile test edebilirsiniz.

 

Pek çok faydalı fonksiyon yayınlanmıştır ... Belki de, belirtilen koşullara bağlı olarak bekleyen emirleri, pozisyonları açıp kapatabilen, zararı al ve durdurabilen, emirleri ve pozisyonları değiştirebilen bir ticaret danışmanı yazmak için bir şablon yazma arzusu vardır. kullanıcı tarafından ... böyle bir şablon, yalnızca koşullar bloğunun değiştiği bir Uzman Danışmanın hızlı bir şekilde yazılmasına izin verecektir (doğal olarak, bu kısım, stratejiye bağlı olarak kullanıcı tarafından eklenecektir)...


Kim'den faydalı özellikler varsa, yani. kullanımda bazı çok yönlülük standardı, neden Kim'den bir ticaret danışmanı için şablon kodunu göndermiyorsunuz...

 
Set777 писал (а):
Igor, lütfen tekrar kontrol et - komut dosyası çalışmıyor:
1) Normal DC'lerde açık emir sayısında bir sınırlama yoktur (sürekli açılır)
2) Piyasa tarafından emirlerin açıldığı DC'lerde - (Hata131). Örneğin, NorthFinance ile test edebilirsiniz.

1. Komut dosyasında açık pozisyonların sayısı için bir kontrol yoktur. Scripti kaç kere çalıştırırsanız o kadar çok pozisyon açılacaktır.

2. Hata 131 - Yanlış hacim , parti büyüklüğü. Belki 0.15 sayısıdır. 0.2 olarak değiştirin

 
kharko писал (а):
O kadar çok kullanışlı özellik var ki...

Planladığımın beşte birini bile ortaya koymadım ... Sonbahara kadar buradaki herkesi rahatsız edeceğim. Bu yüzden sabırlı ol...

kharko yazdı:
Belki de bekleyen emirleri, pozisyonları açıp kapatabilen, alım ve stop zararı ayarlayabilen, emirleri ve pozisyonları kullanıcı tarafından belirtilen koşullara bağlı olarak değiştirebilen bir ticaret danışmanı yazmak için bir şablon yazma arzusu vardır...
desen... desen... İyi fikir! Teşekkür ederim! Ama önce özellikler...
 

DistMarketAndPos() işlevi.

İyi! Daha ilginç özellikler alalım! Örneğin, piyasa ile en yakın konum arasındaki nokta cinsinden mesafeyi döndüren. Kontrol edilen konumların daha doğru seçimi, harici parametreler tarafından belirlenir:

  • sy - Araç adı. Bu parametreyi ayarlarsanız, fonksiyon sadece belirtilen enstrümanın pozisyonlarını kontrol edecektir. "" veya NULL, geçerli enstrüman anlamına gelir.
  • op - Ticaret işlemi, pozisyon türü. Geçerli değerler: OP_BUY, OP_SELL veya -1. Varsayılan değer -1, herhangi bir konum anlamına gelir.
  • mn - Konum Kimliği (MagicNumber). Varsayılan değer -1 - herhangi bir büyü.
 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,   http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает расстояние в пунктах между рынком и ближайшей       |
//|             позицей                                                        |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   ("" или NULL - текущий символ)          |
//|    op - торговая операция          (    -1      - любая позиция)           |
//|    mn - MagicNumber                (    -1      - любой магик)             |
//+----------------------------------------------------------------------------+
int DistMarketAndPos ( string sy = "" , int op =- 1 , int mn =- 1 ) {
   double d , p ;
   int i , k = OrdersTotal () , r = 1000000 ;

   if ( sy == "" || sy == " 0 " ) sy = Symbol () ;
   p = MarketInfo ( sy , MODE_POINT ) ;
   if ( p == 0 ) if ( StringFind ( sy , " JPY " ) < 0 ) p = 0.0001 ; else p = 0.01 ;
   for ( i = 0 ; i < k ; i ++ ) {
     if ( OrderSelect ( i , SELECT_BY_POS , MODE_TRADES )) {
       if (( OrderSymbol () == sy ) && ( op < 0 || OrderType () == op )) {
         if ( mn < 0 || OrderMagicNumber () == mn ) {
           if ( OrderType () == OP_BUY ) {
             d = MathAbs ( MarketInfo ( sy , MODE_ASK ) - OrderOpenPrice ()) / p ;
             if ( r > d ) r = NormalizeDouble ( d , 0 ) ;
           }
           if ( OrderType () == OP_SELL ) {
             d = MathAbs ( OrderOpenPrice () - MarketInfo ( sy , MODE_BID )) / p ;
             if ( r > d ) r = NormalizeDouble ( d , 0 ) ;
           }
         }
       }
     }
   }
   return ( r ) ;
}
 

DistMarketAndPos() işlevini kullanma örnekleri.

Piyasanın ona en yakın konumdan ne kadar uzakta olduğunu belirleyen bir fonksiyona neden ihtiyacınız olsun ki? En az dört ana seçenek görüyorum:

  1. Satın alındı veya satıldı. Piyasa bize doğru hareket etti. Ve belli bir mesafeyi geçer geçmez mevcut pozisyonlar belli bir kazanç elde etti, bu yüzden hemen dolduruyoruz - tekrar aynı yöne giriyoruz.
  2. Satın alındı veya satıldı. Piyasa bize doğru hareket etti. Ve belli bir mesafe kateder etmez, mevcut pozisyonlar belli bir kazanç elde eder etmez, her şeyin olduğunu hemen anlıyoruz! Geri dönüş yakın! Dönüş zamanı. Mevcut pozisyonları kapatıp ters yönde açıyoruz.
  3. Satın alındı veya satıldı. Piyasa bize karşı çıktı. Ama nedense haklı olduğumuzdan eminiz ve en yakın giriş noktasından biraz uzaktayız, yani belirli bir kayıp seviyesinde ortalamayı alıyoruz - aynı yönde açıyoruz.
  4. Satın alındı veya satıldı. Piyasa bize karşı çıktı. Ve girdide bir hata olduğunu fark ettik. Bu nedenle, belirli bir kayıp seviyesinde sabitliyoruz ve diğer yönde açıyoruz.

not. Listelenen seçeneklerden herhangi birinin özel bir uygulamasına ihtiyaç duyan biri varsa, uygulamaları buraya yazın. Yukarıda saydıklarım çerçevesinde tüm isteklerimi yerine getireceğim.

ZY-ZY. Fragman, DistMarketAndPos() işleviyle deneme yapmak için bir komut dosyası içerir.

Dosyalar:
 
Sayın KimIV , e-TFL_v2 Uzman Danışmanınızda bulunan bool idPriceLevel() fonksiyonunda hata var : son durumda gdUpPrice==0 iki kez tekrarlanıyor, muhtemelen ikinci durumda gdDnPrice==0 yazmak istediniz . Bazı nedenlerden dolayı, bu danışman test cihazımda görsel modda çalışıyor, ancak yorumlarda satış ve satın alma seviyeleri hakkında rapor vermesine rağmen bir demo hesabında pozisyon açmıyor. Belki bana neyin yanlış olduğunu söyleyebilirsin.
 
khorosh :
e-TFL_v2 Expert Advisor'da bulunan bool idPriceLevel() işlevinde bir hata var: son durumda gdUpPrice==0 iki kez tekrarlanıyor, muhtemelen ikinci durumda gdDnPrice==0 yazmak istediniz.

Sayesinde! e-TFL_v2 Expert Advisor'ın düzeltilmiş versiyonu siteye yüklenmiştir.


horosh :
Bazı nedenlerden dolayı, bu danışman test cihazımda görsel modda çalışıyor, ancak yorumlarda satış ve satın alma seviyeleri hakkında rapor vermesine rağmen bir demo hesabında pozisyon açmıyor. Belki bana neyin yanlış olduğunu söyleyebilirsin.

Bilmiyorum... Bu Uzman Danışmanı NorthFinance demosunda test etmeyi yeni bitirdim. Dün Moskova'dan bir arkadaş aradı. Aynı danışman hakkında şikayette bulundum. Mesela çizgiden bir pozisyon açar, sonra bir tane daha ve bir tane daha, siz onu durdurana kadar birçok pozisyon açabilir. Bu nedenle, testin amaçları iki idi:

1. Sorunuz üzerine. Genel sağlık kontrolü.

2. Arkadaşımın sorusu üzerine. Bir satırdan sadece bir pozisyondan açma.

Test etmek için e-TFL_v2 Expert Advisor'ı 5 dakikalık TF EURUSD, GBPUSD, USDCHF ve USDJPY'ye koydum. Son 20-30 bar için kanal çizmek için trend çizgileri kullandım. Sonuç olarak, danışman olması gerektiği gibi çalıştı. Euro alt satırdan satın alındı ve yen tepeden satıldı. Pound ve şef için de her şey doğru bir şekilde işlendi. Bu yüzden kendiniz kontrol edin. İşçi danışmanı.

Neden: