[UYARI, KONU KAPALI!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde. - sayfa 660

 
Craft :


Anatoly, çok teşekkür ederim, Skype'ta olduğu gibi bir yay ile buraya bir simge ekleyememeniz üzücü. Her şey basit ve zarif. Bunların diğer programları ile iletişimden. analiz, bunun böyle olması gerektiğini anlıyorum, ancak mql ile çalışma pratiği henüz yeterli değil. Yöntemdeki seçimle ilgili ipucu için teşekkürler - anlıyorum.

Son olarak, bu danışman tarafından bir çubuğa birden fazla sipariş verilmesini nasıl önleyeceğimi söyleyebilir misiniz? Nazik insanlar zaten ipuçları verdiler, ancak ruha yalan söylemediler.

Sorununuzu çözmeye çalıştım ve olan buydu. Ancak, sırayla her şey hakkında.

Suçlu kim ve ne yapmalı? Ya da bacakların nereden büyüdüğü ...

Expert Advisor'da bir pozisyon açmak (ve buna göre bir öncekini kapatmak) için CCİ göstergesinin farklı ayarları kullanılır. Satın almak için, ayarlarınız, kendinizinkini satmak için. Anladığım kadarıyla, mesele bu. Örneğin, bir yükseliş trendi sırasında, kârın "büyümesine" izin vermek için satın alma için daha az hassas ayarları kullanmak daha karlıdır (yani, bir trend konumunu daha uzun süre tutmak mantıklıdır). O zaman satış için (yükseliş trendi ile), hızlı girişler/çıkışlar için, örneğin bir düzeltme yakalamaya çalışırken (sırasıyla, trende karşı bir pozisyonda piyasada olmak için) daha hassas ayarlara ihtiyaç vardır. daha az zaman). Her şey çok mantıklı ve fikir de sağduyusuz değil, ancak böyle bir sistemde bir nüans ortaya çıkıyor, ayarlardaki farklılıklar nedeniyle ne yapmalı (aslında bunlar terminal için iki gösterge), iki zıt sinyal aynı anda ortaya çıkıyor mu?

Mavi oklar hakkında...

Bir çubuktaki Expert Advisor hem al hem de sat sinyali alır ve yukarıda yazdığım gibi bir pozisyon açıldığında karşıdaki pozisyon kapatılmalıdır. Yani böyle bir görüntü elde ediyoruz, al komutu veriliyor ve satışı kapat o zamana kadar satış olmadığı için danışman SATIN AL açıyor. Bir sonraki tıklamada, satmak için ters bir sinyal üretilir ve buna göre yeni açılan satın alma işlemi kapanır. Başka bir gözlem, yalnızca “sosis” (mavi ok yığınları) satın aldığını fark ettiniz mi? Al/sat yöntemlerinin uygulanması anladığım kadarıyla ders kitabından alınmış ve öyle bir özellik var ki işlem tamamlandığında start() yönteminden iade operatörü tarafından çıkılıyor yani sadece tik başına bir açma/kapama gerçekleşebilir. Böylece, bir “çifte sinyal” alındığında tüm işlemler kapatılır (kapanış bloğu önce açıklanır), sonra anlaşmaları açmak için blok ve içinde ilk önce satın alma açıklanır !!! ve satın alma işleminden sonra start() çıkar, bu nedenle EA'nın satışlara ulaşmak için zamanı yoktur :))) ve "normal" tek sipariş alana kadar döngü yapar.

Çözümler hakkında...

Çok fazla çözüm yok.
1. Dedovski.
Başlangıç olarak, fikri "öldürebilir" ve satın alma ve satış için aynı parametreleri basitçe ayarlayabilirsiniz; sorun kendi kendine ortadan kalkacaktır.

2. Karmaşık.
Danışmandaki ana eğilimi belirlemek için algoritmaya girmek ve buna göre işlemlere farklı "ağırlık" vermek gerekir. Bu nedenle, çok yönlü sinyaller alırken, daha fazla “ağırlığa” sahip olanı (yani trendde olanı) tercih edilir.

3. Başlıksız.
Çok yönlü sinyaller alırken ...
Hiçbirşey yapmamak.

 if (Opn_B && Opn_S) return ;

Bu, aşağıdaki ekteki dosyadaki seçenektir.
Umarım her şeyi açıkça anlatmışımdır.
İyi şanlar :)))

Dosyalar:
11_3_1.mq4  13 kb
 

Volfram'ın gönderisi birden fazla konuya yayıldığı için kaldırıldı.

Volfram , bu amaç için özel olarak kendi şubenizi oluşturdunuz. Size zaten cevap verildi; Bu yeterli değil?

Not: Sana bir sır vereceğim, Volfram : Fikrinize açık bir ilginin olmaması, örtük olarak bu fikrin ilgiyi hak etmediğini gösterir. Buna göre, "ücretsiz" uygulamaya istekli kimse yoktu.

 
ToLik_SRGV :

2. Karmaşık.
Danışmandaki ana eğilimi belirlemek için algoritmaya girmek ve buna göre işlemlere farklı "ağırlık" vermek gerekir. Bu nedenle, çok yönlü sinyaller alırken, daha fazla “ağırlığa” sahip olanı (yani, trend olan) tercih edilir.

3. Başlıksız.
Çok yönlü sinyaller alırken ...
Hiçbirşey yapmamak.

Bu, aşağıdaki ekteki dosyadaki seçenektir.
Umarım her şeyi açıkça anlatmışımdır.
İyi şanlar :)))

Kilometre taşımı ekleyebilir miyim... :)

Ben de ders kitabıyla başladım. Daha basit hale getirilebilir: Satış sinyalinde al kapanışını ve al sinyalinde satış kapanışını kaldırmak yeterlidir, yani. Sergey Kovalev'in eğitiminde uygulanan salıncak ticaretini kullanmayın... Pozisyonları biletle değil, sihirle takip edin. İlk başta, tam da bunu yaptım ve sessizce fikirlerimi test ettim. Sonra, zaten iş için kendi işlevlerimi yazdım ...

not. Koda bakmadım, bu yüzden bu EA hakkında yanılıyor olabilirim...

 

Bir fonksiyonun ekstremumlarını nasıl bulacağımı bulamıyorum

Değerleri depolayan bir dizi veriye sahibim:

molalar nasıl bulunur - 250 öğelik bir veri dizisini kullanarak uç noktalar ve yalnızca bu uç noktaların bulunduğu öğe numaralarını kaydedin

 

Arkadaşlar benim bir sorum var:

Eğilim algılama işlevi açıkça belirtir ki, ilk çubuktaki AC, ikinci çubuktaki AC'den daha büyükse (yani artar ), ancak eğilim düşüyorsa (diğer hindiler aşağı görünüyor), o zaman bu durumda sıfır döndür, yani. düşüş trendi yok... Ama danışman inatla görmezden geliyor, sebebi ne olabilir?


F-tion def. akım:

 int Trend_BBOsMA ( string sy, int tf)
{
   if (sy== "" || sy== "0" ) sy= Symbol ();
double
   BB    = iCustom (sy,tf, "BB_MA" , 13 , 13 , 0 , 1 ),
   OsMA  = iOsMA   (sy,tf, 9 , 21 , 5 , PRICE_CLOSE , 1 ),
   AC1   = iAC (sy,tf, 1 ),
   AC2   = iAC (sy,tf, 2 ),
   AC3   = iAC (sy,tf, 3 );
   
   if (BB> 0 && OsMA> 0 && AC1>AC2) return ( 1 );
   if (BB< 0 && OsMA< 0 && AC1<AC2) return (- 1 );
   else return ( 0 );
}

Kontörlerin açılmasını kontrol etmek (en başta, yanıt vermediği trendi kontrol etmek: trH1 ve trM15 ) - koşullarla ilgili daha fazla deney, dikkat etmeyin, ancak kod çalışıyor...

 //============================================================================================== 
   // Доливка 1
//==============================================================================================  
//------------------------- Покупка 1 ------------------------   
   if (AddPose1 &&
         trH1 == 1 &&                   // Если часовой и 
         trM15 == 1 &&                 // пятнадцатиминутный тренды восходящие
         Mom5_1>Mom5_2 &&               // найден разворот
         Mom5_2<=Mom5_3 &&             // Моментума
//         Mom5_2<=100.0 &&
//         DeM5_1<=0.6 &&                  // и Демаркер в зоне перепроданности
//         AC1>AC2 &&                    // Ускорение вверх ----------------------- ВОТ ЗДЕСЬ УБРАЛ
         SecondsAfterOpenLastPos( NULL , OP_BUY, 511 )>= 4 * 60
      )
         {
            Magic= 511 ;           // Задаём магик... 
            Lots=GetSizeLot();
            divider= 1 ;
//            if (trH1==10 || trM15==10) divider=2;
            Lots_New=NormalizeLot(Lots/divider, true, NULL );
            New_Comm= "Buy_M5_Стратегия_1_Доливка1" ;   // Задаём комментарий для позиции
            OpenPosition( NULL , OP_BUY, Lots_New, 0 , 0 , Magic, New_Comm);
         }
//------------------------- Продажа 1 ------------------------   
   if (AddPose1 && 
         trH1 ==- 1 &&                 // Если часовой и 
         trM15 ==- 1 &&                 // пятнадцатиминутный тренды нисходящие
         Mom5_1<Mom5_2 &&               // найден разворот
         Mom5_2>=Mom5_3 &&             // Моментума
//         Mom5_2>=100.0 &&
//         DeM5_1>=0.4 &&                  // и Демаркер в зоне перекупленности
//         AC1<AC2 &&                    // Ускорение вниз ------------------------ ВОТ ЗДЕСЬ УБРАЛ
         SecondsAfterOpenLastPos( NULL , OP_SELL, 511 )>= 4 * 60
      )
         {
            Magic= 511 ;           // Задаём магик... 
            Lots=GetSizeLot();
            divider= 1 ;
//            if (trH1==-10 || trM15==-10) divider=2;
            Lots_New=NormalizeLot(Lots/divider, true, NULL );
            New_Comm= "Sell_M5_Стратегия_1_Доливка1" ;   // Задаём комментарий для позиции
            OpenPosition( NULL ,OP_SELL,Lots_New, 0 , 0 ,Magic,New_Comm);
         }
//==============================================================================================

Benim göremediğimi kimse görebilir mi? Teşekkür ederim.

 
Ekran görüntüsü BB_MA göstergesini göstermiyor. Ve üst kodda trend yönü kontrolü yoktur. BB değişkeni her zaman bir değer içerecektir. Anladığım kadarıyla BB_MA göstergesi hareketli bir ortalama . Hareketli ortalamanın yönünü belirlemek için farklı mumlarda, örneğin birinci ve ikinci mumlarda 2 değere sahip olmanız ve bu değerleri birbirleriyle karşılaştırmanız gerekir. Dolayısıyla üst kodun görevini ancak kısmen yerine getirdiğini söyleyebiliriz.
 
IgorM :

Bir fonksiyonun ekstremumlarını nasıl bulacağımı bulamıyorum

Değerleri depolayan bir dizi veriye sahibim:

molalar nasıl bulunur - 250 öğelik bir veri dizisini kullanarak uç noktalar ve yalnızca bu uç noktaların bulunduğu öğe numaralarını kaydedin


Dizinin değerlerinden geçtiğimiz bir döngü düzenliyoruz. Önceki dizi hücresindeki değer, geçerli hücredeki değerle karşılaştırılır . Daha büyükse, döngünün bir sonraki yinelemesine gidin. Kısacası, dizinin sonraki her hücresindeki değer büyüdükçe aramaya devam ediyoruz. Bir öncekinden daha az olur olmaz, önceki hücrenin sayısı önceden bildirilen bir dizide saklanır, çünkü eğilim tersine döndü - zirveyi bulduk. Şimdi trend aşağı gidiyor. Şimdi bir sonraki hücre öncekinden daha büyük bir değer içerene kadar yineliyoruz. Bu olur olmaz, önceki hücrenin sayısı önceden bildirilen bir dizide saklanır, çünkü eğilim tersine döndü - depresyonun dibini bulduk. Tepeleri çukurlardan filtrelemek için farklı dizilerde sayılar girebilirsiniz. Tek kelimeyle, tüm dizi değerlerinin tam bir numaralandırmasından sonra, sıralanmış verileri alacağız (bir / iki dizide istenen hücre sayıları)
 
drknn :

Dizinin değerlerinden geçtiğimiz bir döngü düzenliyoruz. Önceki dizi hücresindeki değer, geçerli hücredeki değerle karşılaştırılır. Daha büyükse, döngünün bir sonraki yinelemesine gidin. Kısacası, dizinin sonraki her hücresindeki değer büyüdükçe aramaya devam ediyoruz. Bir öncekinden daha az olur olmaz, önceki hücrenin sayısı önceden bildirilen bir dizide saklanır, çünkü eğilim tersine döndü - zirveyi bulduk. Şimdi trend aşağı gidiyor. Şimdi bir sonraki hücre öncekinden daha büyük bir değer içerene kadar yineliyoruz. Bu olur olmaz, önceki hücrenin sayısı önceden bildirilen bir dizide saklanır, çünkü eğilim tersine döndü - depresyonun dibini bulduk. Tepeleri çukurlardan filtrelemek için farklı dizilerde sayılar girebilirsiniz. Tek kelimeyle, tüm dizi değerlerinin tam bir numaralandırmasından sonra, sıralanmış verileri alacağız (bir / iki dizide istenen hücre sayıları)

evet, bir süre denemeniz gerektiği anlamına geliyor - bu ilk zirveye kadar ve sonra ........ - tekrar anlamıyorum
 
drknn :
Ekran görüntüsü BB_MA göstergesini göstermiyor. Ve üst kodda trend yönü kontrolü yoktur. BB değişkeni her zaman bir değer içerecektir. Anladığım kadarıyla BB_MA göstergesi hareketli bir ortalama. Hareketli ortalamanın yönünü belirlemek için farklı mumlarda, örneğin birinci ve ikinci mumlarda 2 değere sahip olmanız ve bu değerleri birbirleriyle karşılaştırmanız gerekir. Dolayısıyla üst kodun görevini ancak kısmen yerine getirdiğini söyleyebiliriz.

Hayır, BB_MA - Bu, boğaların ve ayıların kuvvetlerinin değerlerini toplayan ve bunları bir McDuck veya benzeri bir histogram olarak görüntüleyen, kısalık için Bears&Bulls_MA adını verdiğim şeydir. Her zaman, histogram sıfırın üzerindeyken - trend yukarı, aşağı - aşağı...

Bu nedenle, trend yönünü kontrol etmek:

 if (BB> 0 && OsMA> 0 && AC1>AC2) return ( 1 );

UP için ve

 if (BB< 0 && OsMA< 0 && AC1<AC2) return (- 1 );

AŞAĞI için, iyi

 else return ( 0 );

daire için.

Onlar. Bears&Bulls_MA sıfırın üzerindeyse, OsMA sıfırın üzerindeyse ve ilk AC çubuğunun değeri ikinci AC çubuğunun değerinden büyükse işlev 1 döndürür,

düşüş trendi için - tam tersi... Bir daire için, grafiklerdeki diğer tüm anlaşmazlıklar (şimdilik..., o zaman, anladığım kadarıyla, hızlanma / yavaşlama ile bir hareket kontrolü bağlayacağım ve tersine çevirme).

Pozisyonlar sadece açık bir "yükseliş trendi" veya "düşüş trendi" olduğunda açılmalıdır... Prensipte, açılış pozisyonlarını (kısmen) hariç tutmak için para birimi hareketinin hızını kontrol etmek için AS'yi ekleyene kadar her şey çalıştı. hareketin, trend tükenmesi veya düzeltmeler üzerine.

Henüz çalışmıyor... ve bu AC

 
IgorM :

evet, bir süre denemeniz gerektiği anlamına geliyor - bu ilk zirveye kadar ve sonra ........ - tekrar anlamıyorum

Hayır - döngü için yapılmalıdır. Böyle bir senaryo çizmeye çalışacağım. Fikir aslında yapılabilir.