[ARŞİV] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 3. - sayfa 27

 
Code :


Tamam, farklı görünmeye çalışalım.

vteor12 (dVolume+vback1)/k1 (faktör 1) olarak yazılabilir

vrealUP12 (dVolume+vback1)/k2 (faktör 2) olarak yazılabilir

Göstergenin ideolojisini daha önce tanımlamaya çalıştığım için, bazı teorik ve gerçek seviyelerin karşılaştırılmasından ibarettir. Bu seviyeleri elde etmek için aynı değeri (dVolume + vback1) (yani böl) belirli bir teorik değer (k1) ve gerçek (k2) ile karşılaştırırım. Maça maça dersek sadece k1 uydurduğum anlaşılıyor. Ya da isterseniz, bir varsayımda bulunuyorum. Şimdi bir şeyle karşılaştırılmalı. Bu konuda tablonun kendisinden daha nesnel ve doğru bir şey yoktur. Bu nedenle, açılış ve kapanış arasındaki farkı belirli bir sürenin nihai sonucu olarak algılıyorum. Ve burada sadece bir görev var - aynı bit derinliğine getirmek, bu yüzden 1000 ile çarpılıyor.

Komşu mumlar için birkaç farklı seçeneği hesaplamak için bir hesap makinesi kullanmayı deneyin ve bu çok basit formülü kullanarak elde edilen çeşitli sonuçlara şaşırabilirsiniz.

Ve okul mantığı açısından haklısın. Okulda izin verilmeyen Hacim + Hacim/Fiyat ekliyorum. :))

Geçtim... :)))

Başlangıçta göstergeyi görüntülerken bir sorun yaşadınız mı? Onunla uğraştın mı?

 
MaxZ :

Geçtim... :)))

Başlangıçta göstergeyi görüntülerken bir sorun yaşadınız mı? Onunla uğraştın mı?


Evet, bu arada, kendim çözdüm. Histogram değil, bir çizgi çizildiğini hesaba katmadım. Bir çizginin 2 noktaya ihtiyacı vardır. Kod tüm seçenekleri açıklamadığından, ancak arka arkaya yalnızca 2 büyüyen mumdan sonra, ikinci büyüyen mumdan sonra aşağı bir mum belirirse, hindi hiçbir şey çizmedi. Ve doğru olanı yaptı. Bunu anladığımda, onu bir histograma değiştirdim, her şey orada çizildi.

Bu arada, toplama ve çıkarma kuralları hakkındaki mantığımı ciddiye almıyorsun, bunu bir deney olarak kabul et. :)))

Ve koda devam etmeme yardım ederseniz çok minnettar olacağım. Bu en başlangıçtı. Arka arkaya iki mum büyüttükten sonra aynı prensibe göre 3, 4 vb. hesaplamak istiyorum. büyüyen mumlar Görünüşe göre, burada bir mum arayışı ile bir döngü boyunca gerekli, değil mi? Ve bu hala bana bağlı değil. Sadece paylaşılan şeylerde döngülere girmezsiniz. :)))

 

Ertelenen

VladimirR 29.07.2011 23:02 düzenle | silmek

Merhaba. Sonunda ilk Uzman Danışmanımı yazdım! Sadece nasıl çalıştığını tam olarak anlamıyorum. Uzman Danışman, belirli koşullar karşılandığında 2 bekleyen emir verir. Bu durumda, bekleyen sat (al) emri için her iki emir için de zararı durdur Yüksek[1] (Düşük[1]) olur ve kar al her zaman puan olarak zararı durdur. Strateji test cihazında, kârın her zaman durma noktalarına eşit olmadığını fark ettim, ayrıca lütfen bana nasıl sonuçlandığını söyleyin. Stop emirlerinin hesaplandığı kod aşağıdadır (programda stopların değişmediği başka bir yer yoktur)

 //-2-анализ на установку buystop---------------------------------------------------------------------------------+
   if (Close[ 1 ]>=MA_17 && MA_3<=MA_17)
   {
    deposit_order=true;
    type_order = 4 ;
    open_price =High[ 1 ];
    stop_loss  =Low[ 1 ];
    take_profit= NormalizeDouble ( MathAbs ( 2 *open_price-stop_loss), Digits );
     if (Lot== 0 ) Lot= MarketInfo (symb,MODE_MINLOT);
   }
 //-3-анализ на установку sellstop-------------------------------------------------------------------------------+  
   if (Close[ 1 ]<=MA_17 && MA_3>=MA_17)
    {
     deposit_order=true;
     type_order   = 5 ;
     open_price   =Low[ 1 ];
     stop_loss    =High[ 1 ];
     take_profit  = NormalizeDouble ( MathAbs ( 2 *open_price-stop_loss), Digits );
     if (Lot== 0 )Lot= MarketInfo (symb,MODE_MINLOT);
    }

 
nadya :
tünaydın! söyle bana, lütfen, bir fonksiyon içindeki birkaç global değişkene bir değer atamak mümkünve bu durumda bu değişkenler nerede bildirilmelidir ?

Bu mümkün .

Değişkenleri global düzeyde - start() işlevinden önce bildirin . EA fonksiyonlarının içinde değerlerini istediğiniz gibi değiştirin - fonksiyondan döndükten sonra bu değişkenler tekrar bir yerde değiştirinceye kadar fonksiyonlarınız içinde atadığınız değerlere sahip olacaklardır.

 
nadya :
tünaydın! söyle bana, lütfen, bir fonksiyon içindeki birkaç global değişkene bir değer atamak mümkün müdür ve bu durumda bu değişkenler nerede bildirilmelidir?

Misal. Fonksiyonum içinde, iki global değişkene bir değer atarız. Böylece üç, dört ve n'inci sayıda değişkene bir değer atayabilirsiniz.

 int global1 = 1 ;
int global2 = 2 ;

void myfunction( int g1, int g2)
{
   global1 = g1;
   global2 = g2;
}

int start()
{
   // До выполнения функции:     global1=1, global2=2   <---  то что объявили в начале кода
   
   myfunction( 3 , 4 );
   
   // После выполнения функции:  global1=3, global2=4   <---  то что присвоили в функции
}

Ama sanırım sorunuzda bir yanlışlık var...

 
Code :


Evet, bu arada, kendim çözdüm. Histogram değil, bir çizgi çizildiğini hesaba katmadım. Bir çizginin 2 noktaya ihtiyacı vardır. Kod tüm seçenekleri açıklamadığından, ancak arka arkaya yalnızca 2 büyüyen mumdan sonra, ikinci büyüyen mumdan sonra aşağı bir mum belirirse, hindi hiçbir şey çizmedi. Ve doğru olanı yaptı. Bunu anladığımda, onu bir histograma değiştirdim, her şey orada çizildi.

Bu arada, toplama ve çıkarma kuralları hakkındaki mantığımı ciddiye almıyorsun, bunu bir deney olarak kabul et. :)))

Ve koda devam etmeme yardım ederseniz çok minnettar olacağım. Bu en başlangıçtı. Arka arkaya iki mum büyüttükten sonra aynı prensibe göre 3, 4 vb. hesaplamak istiyorum. büyüyen mumlar Görünüşe göre, burada bir mum arayışı ile bir döngü boyunca gerekli, değil mi? Ve bu hala bana bağlı değil. Sadece paylaşılan şeylerde döngülere girmezsiniz. :)))

Evet. Ancak bu sorunu çözmek için "for" sayacı olan bir döngü yerine "while" önkoşullu bir döngü kullanmak en iyisidir. Arka arkaya kaç tane yükseliş veya düşüş mumuyla karşılaşacağınız bilinmediği için.

Bu görev size çok zor geliyorsa, daha kolay bir görevle başlayın. Örneğin, a'dan b'ye sayıların s'lik artışlarla görüntülenmesi. Veya döngüyü kullanarak n sayısının faktöriyelini bulun.

Ve materyali birleştirmek için, bu sorunları her iki döngü tipini ("for" ve "while") kullanarak çözün. Ardından göstergenizi hassaslaştırmaya başlayabilirsiniz.

 

MaxZ dilinde süre sonrası döngüler yoktur.

Başkalarına yardım etme arzunuz övgüye değer, ancak bunun için dili daha iyi bilmeniz gerekiyor.

 
Mathemat :
Dilde post-while döngüsü yoktur.

Döngüyü aşağıdaki gibi düzenlerseniz, sadece bir son koşulla ortaya çıkacaktır:

 int i = 0 ;
while ( True )
{
   i++;
   if (i == 10 ) break ;
}

Ama değişikliğinizi kabul ediyorum. Teşekkür ederim. MQL4 dilinde iki tür döngü olduğundan: "for" (bir sayaçlı) ve "while" (ön koşullu). Üçüncü tip (sonkoşullu) yalnızca kasıtlı olarak organize edilebilir.


matematik :

Başkalarına yardım etme arzunuz övgüye değer, ancak bunun için dili daha iyi bilmeniz gerekiyor.

Ne bileyim oraya gitmiyorum...

Ve diğer tüm hatalar ihmalden yapılmıştır. Son zamanlarda dalgınım... Ve İnsanlara yardım etmek istiyorum.

 

MaxZ : Единственная проблема состоит в том, что если советник с данным кодом запустить в тестере, а переменной PERIOD присвоить значение PERIOD_M1, то обе функции iBarShift возвращают -1, т.е. функции не удалось найти в истории бар на ТФ M1 с таким временем... Почему так происходит, не знаю.

Büyük olasılıkla, bu işlev test cihazında modellenmemiştir (kontrol edilmemiştir). Ayrıca, kesin (fonksiyonun dördüncü parametresi) varsayılan olarak false olarak ayarlanmıştır.
 
Mathemat :
Büyük olasılıkla, bu işlev test cihazında modellenmemiştir (kontrol edilmemiştir). Ayrıca, kesin (fonksiyonun dördüncü parametresi) varsayılan olarak false olarak ayarlanmıştır.
Bunu çoktan anladım ... Sorun hikayedeydi. Test edilen süre için M1 çubuklarının geçmişi yoktu.