Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz, hiçbir yerde - 6. - sayfa 614

 
yan720 :
Cevap verdiğiniz için teşekkürler. Zor değilse, lütfen bahsettiğiniz danışmanı (veya kanalla olan bir parçasını) gönderin - başka bir uygulama görmek ilginç.

Birkaç yıl önce ne yaptığımı anlayamıyorum. Eskiden çalışıp ticaret yaptığımı hatırlamama rağmen nedense olmuyor. Önce kodu anlayalım, düzeltelim ve sonra gönderelim. Belki yarın. Birdenbire bazı çocukça hatalar ortaya çıkarsa, bu sadece şerefsiz olma arzusu değildir.

 
yan720 :

Genel fikir, elbette, bu. Ve kanal genişliği nasıl belirlenir (sizin durumunuzdaki aralık)? Benim için bu, ortalama bir mumun boyutuyla yapılır, ayrıca hepsi kanalın uzunluğuna bağlıdır, çünkü kanalın varlığı sabit sayıda çubukta değil, örneğin bir uzunlukta kontrol edilir. 10 ila 30 bar.

Uzunluktan genişliği seçme sorusuyla ilgileniyorum ...

Bir hindide kanal genişliği için birkaç harici parametre yapabilirsiniz. Ve her parametre için ayrı hesaplamalar yapmak.

 

Uzunluk için aynı.

 
Example2 :
Merhaba. Sepet danışmanı, koşul oluştuğunda, tüm siparişleri kapatmalıdır, ancak önce siparişi kapatır, ardından tekrar kapatmaya çalışır (sunucu "Geçersiz bilet" hatası verir) ve ancak o zaman devam eder. İşte bir örnek kod ve danışmanın kendisi.

CloseOrders() işlevinizde, sipariş kapanırsa, while( cnt<= 5 ) döngüsü bir kez daha kodu siparişi kapatmaya yönlendirir ve doğal olarak bir hata oluşur, ardından if().. break;

                    int cnt= 0 ;
                     while (cnt<= 5 ){
                      Result[ 0 ]=OrderClose(OrderTicket(),OrderLots(),MarketInfo( "USDCAD" ,MODE_BID),slip,Blue);
                       if (!Result[ 0 ]){
                        Answer=ERRORS( GetLastError ());
                         if (Answer== 1 ) continue ; cnt++;
                         if (Answer== 2 ) break ;
                      }
                    }

ProtectionClose() işlevinde, while'dan doğru çıkışa sahip satırları zaten eklediniz .

 if (Result[ 0 ]) break ;
 } continue ;
Burayı kazmaya çalışın.
 
pu6ka :

CloseOrders() işlevinizde, sipariş kapanırsa, while( cnt<= 5 ) döngüsü bir kez daha kodu siparişi kapatmaya yönlendirir ve doğal olarak bir hata oluşur, ardından if().. break;

ProtectionClose() işlevinde, while'dan doğru çıkışa sahip satırları zaten eklediniz .

Burayı kazmaya çalışın.


Ama tarif ettiğim durumda, emirleri kapatan ProtectionClose() işlevidir ve bu da yakalamadır. Ve bu hatayı düzelteceğim.
 
Example2 :

Ama tarif ettiğim durumda, emirleri kapatan ProtectionClose() işlevidir ve işin özü bu. Ve bu hatayı düzelteceğim.

Kodun derinliklerine inmedim, test cihazında çalıştıramadım, gösterge yok.

Ancak, örneğin, OpenUsdbuy(); OpenSellusd() üst üste.

OpenSellusd() GBPUSD, EURUSD, AUDUSD, NZDUSD vb. açar. NZDUSD, AUDUSD vb.'yi ters sırayla kapatmaya ilk başlayan sizsiniz.

Gönderdiğiniz kodda, ProtectionClose() işlevinde, iki seçenekte yalnızca üç çiftte çıkış var: USDCAD, USDCHF, USDJPY.

Diğer para birimlerinde ise while()'dan yalnızca if(!Result[..]) hatasıyla çıkılabilir.

 
FOReignEXchange :

Bir hindide kanal genişliği için birkaç harici parametre yapabilirsiniz. Ve her parametre için ayrı hesaplamalar yapmak.

İşin aslı, kanalın genişliğini zorlamak istemiyorum - EA/gösterge, döviz çifti ve/veya mevcut oynaklıktan bağımsız olarak kanalın varlığını belirlemelidir. Buna göre, harici parametrelerden kanalın sadece minimum ve maksimum uzunluğunu belirledim ve o zaman bile sadece algoritmada hata ayıklama sürecinde - o zaman bu parametreler içeriye dikilecek. Bu aşamada bazı şikayetler var. Ve genel olarak kanallar yakalanmış olsa da (resim çalışma kodundandı), bu soruna başka çözümler de görmek istiyorum.

 
pu6ka :

Kodun derinliklerine inmedim, test cihazında çalıştıramadım, gösterge yok.

Ancak, örneğin, OpenUsdbuy(); OpenSellusd() üst üste.

OpenSellusd() GBPUSD, EURUSD, AUDUSD, NZDUSD vb. açar. NZDUSD, AUDUSD vb.'yi ters sırayla kapatmaya ilk başlayan sizsiniz.

Gönderdiğiniz kodda, ProtectionClose() işlevinde, iki seçenekte yalnızca üç çiftte çıkış var: USDCAD, USDCHF, USDJPY.

Diğer para birimlerinde ise while()'dan yalnızca if(!Result[..]) hatasıyla çıkılabilir.


İpucu için teşekkürler, döngüden çıkışı bırakmayı gerçekten unuttum, şimdi kesinlikle çalışması gerekiyor, isterseniz göstergeyi teşekkür olarak düzenleyebilirim.
 
yan720 :

Genel fikir, elbette, bu. Ve kanal genişliği nasıl belirlenir (sizin durumunuzdaki aralık)? Benim için bu, ortalama bir mumun boyutuyla yapılır, ayrıca hepsi kanalın uzunluğuna bağlıdır, çünkü kanalın varlığı katı sayıda çubuk üzerinde değil, örneğin bir uzunlukta kontrol edilir. 10 ila 30 bar .

Uzunluktan genişliği seçme sorusuyla ilgileniyorum ...

Bu 10 barlık uzunluk temel rakamdır. Yani, en az 10 ... ve daha fazlaysa, böyle bir kader. Bunu dışarı çıkarın, böylece deney yapma fırsatınız olur. Aralık olarak adlandırdığım, mumun ortalama boyutu olmasına izin verin, önemli değil, ancak harici olanlara da koymak daha iyidir. Belki bir maksimum cf atamak istersiniz. boyut ve minimum, o zaman iki değişkeni Max_ ve Min_ ayarlamanız gerekir. Ardından her çubukta bu 10 çubuk için ortalama mum boyutunu kontrol edin ve uygunsa 10 çubuk için yukarı ve aşağı trend çizgileri çizin. Ve bir sonraki çubukta, zaten 11 çubuğu kontrol edebilirsiniz ve koşul ihlal edilmemişse, ObjectSet(...); ilk koordinat için yalnızca OBJPROP_PRICE1 değişir ve ikincisi için hem OBJPROP_PRICE2 hem de OBJPROP_TIME2 ve her çubuk için böyle devam eder. Veya önceden oluşturulmuş kanalı göz önünde bulundurarak hiçbir şeyi yeniden hesaplayamaz ve bu kanalın bozulmasını bekleyemezsiniz. Zaten isteğe bağlı.

Benim durumumda, kanal yüksekliğini ve minimum çubuk sayısını aynı şekilde ayarlamak için fenerin hafif bir versiyonunu önerdim.


yan720 :

İşin aslı, kanalın genişliğini zorlamak istemiyorum - EA/gösterge, döviz çifti ve/veya mevcut oynaklıktan bağımsız olarak kanalın varlığını belirlemelidir. Buna göre, harici parametrelerden sadece kanalın minimum ve maksimum uzunluğunu ayarladım ve o zaman bile sadece algoritmada hata ayıklama sürecinde - o zaman bu parametreler dikilecek . Bu aşamada bazı şikayetler var. Ve genel olarak kanallar yakalanmış olsa da (resim çalışma kodundandı), bu soruna başka çözümler de görmek istiyorum.

İlk olarak, parametrelerin harici veya dikilmiş olması gerçeğinden hiçbir farkı olmayacaktır. İkincisi, kanal genişliğini ayarlamazsanız, belirlediğiniz 10 çubuk için hesapladığınızı neyle karşılaştıracaksınız? Bir kanalın kanal olup olmadığını nasıl belirlemek istersiniz? Ve üçüncüsü, IMHO, mumun ortalama boyutu yeterince çalışmayacaktır. Şimdi, 10 çubuğun tümü yükselişteyse, ancak ortalama çubuk boyutu kontrol olandan daha büyük değilse. Kanal mı, değil mi? Belki bir kanal, ancak sadece eğimli ve yatay olanı çiziminize göre söküyoruz.
 
yan720 :

İşin aslı, kanalın genişliğini zorlamak istemiyorum - EA/gösterge, döviz çifti ve/veya mevcut oynaklıktan bağımsız olarak kanalın varlığını belirlemelidir. Buna göre, harici parametrelerden kanalın sadece minimum ve maksimum uzunluğunu belirledim ve o zaman bile sadece algoritmada hata ayıklama sürecinde - o zaman bu parametreler içeriye dikilecek. Bu aşamada bazı şikayetler var. Ve genel olarak kanallar yakalanmış olsa da (resim çalışma kodundandı), bu soruna başka çözümler de görmek istiyorum.

Pekala, arka arkaya 2 üst fraktal veya örneğin 5-10 mumdan oluşan 2 iHighest yakalama fikri var. Bu durumu belirli bir uzunluk aralığında yakalarız. Bu piklerin değerleri birbirine yakın ise bu iki pik arasında iLowest'i ararız. Bütün bunlar tek bir döngüye sığdırılabilir.

Benzer şekilde, önce iki alt tepe noktası, sonra aralarındaki üst tepe noktası arayın.

Bu bulunan zirvelerden daha fazla dans edin. Başlangıç olarak, üzerlerine seviyeler çiziyoruz. Sonra kodu daha fazla düşünmeyi öğretiriz.

Bu seçenek bizi channel_width gibi harici bir parametreden kurtaracak.

Beğenin ya da beğenmeyin, ama en azından uzunluk için bazı parametrelere ihtiyaç var, sanırım.