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

 
Stepan241 >> :

Bir gösterge yazmaya çalışıyorum. Fikir basit: ORTALAMA (BOĞALARIN GÜCÜ- AYILARIN GÜCÜ). Doğal olarak belirli bir süre için.



int başlangıç()
{
int i=Bars-IndicatorCounted()-1;
while(i>=0)
{
Bears_array[i]=iBearsPower(NULL,0,PeriodPower,PRICE_CLOSE,i);
Bulls_array[i]=iBullsPower(NULL,0,PeriodPower,PRICE_CLOSE,i);
MA_Bears[i]=iMAOnArray(Bears_array,0,MA_Period,0,MODE_EMA,i);
MA_Bulls[i]=iMAOnArray(Bulls_array,100,MA_Period,0,MODE_SMA,i);
Buf_0[i]=MA_Boğalar[i];
ben--;
}
dönüş;
}

Sadece kontrol için ekranda gösteriyorum SMOOTHED bulls Buf_0[i]=MA_Bears[i]; Bu, hindi yapımının belirli bir aşamasında kontrol etmek için yapılır. ve hemen bu yumuşatılmış boğaların normal yerleşik boğalarla eşleşmediğini görüyorum. Hatta HAKKINDA. 1 periyotla yumuşatılırsa, teoride genellikle yerleşik boğaları tekrarlamaları gerekir. Dolayısıyla MA_Bulls[i]=iMAOnArray(Bulls_array,100,MA_Period,0,MODE_SMA,i); satırında bir şeylerin yanlış olduğu sonucuna varılır. Tam olarak ne anlamadım ... YARDIM !!!! ZATEN 3 GÜN Referans kitaplarına ve belgelere tırmanıyorum. TEŞEKKÜR ETMEK!


İlk önce boğalardan ve ayılardan veri dizileri oluşturuyorsunuz ve ardından bir sonraki döngüde onları okşuyorsunuz, aksi takdirde henüz oluşturmadınız ve zaten orada düzgünleştirme verileri uyguluyorsunuz, o zaman henüz düzgünleştirilecek bir şey yok mu?

 
Urain писал(а) >>

İlk önce boğalardan ve ayılardan veri dizileri oluşturuyorsunuz ve ardından bir sonraki döngüde onları okşuyorsunuz, aksi takdirde henüz oluşturmadınız ve zaten orada düzgünleştirme verileri uyguluyorsunuz, o zaman henüz düzgünleştirilecek bir şey yok mu?

Tercüme

 int start ( )
{
   int i , limit = Bars - IndicatorCounted ( ) - 1 ;
   for ( i = limit ; i > = 0 ; i - - ) {
    Bears_array [ i ] = iBearsPower ( NULL , 0 , PeriodPower , PRICE_CLOSE , i ) ;
    Bulls_array [ i ] = iBullsPower ( NULL , 0 , PeriodPower , PRICE_CLOSE , i ) ;
   }
   for ( i = limit ; i > = 0 ; i - - ) {
    MA_Bears [ i ] = iMAOnArray ( Bears_array , 0 , MA_Period , 0 , MODE_EMA , i ) ; 
    MA_Bulls [ i ] = iMAOnArray ( Bulls_array , 100 , MA_Period , 0 , MODE_SMA , i ) ; 
   }
   return ;
}
 

costy_ писал(а) >>

 extern string xxxxxxxxxxxxx = "x=0 сегодня х=1 вчера итд" ;
extern int х = 0 ;
int середина = ( iHigh ( 0 , PERIOD_D1 , х ) - iLow ( 0 , PERIOD_D1 , х ) ) / 2 ;
if ( Bid > середина ) . . . ;
if ( Ask < середина ) . . . ;


extern datetime some_time = D'14:56' ;
int середина_some_time = ( iHigh ( 0 , 0 , iBarShift ( 0 , 0 , some_time ) ) - iLow ( 0 , 0 , iBarShift ( 0 , 0 , some_time ) ) ) / 2 ;
if ( Bid > середина_some_time ) . . . ;
if ( Ask < середина_some_time ) . . . ;

Çok teşekkür ederim, yaklaşıyorum. Bir nokta tam olarak net değil.

'14:56' - tarih değişmez dizesi eksik

Anladığım kadarıyla yine tarih istiyor ama belirli bir tarihe ihtiyacım yok, benim için önemli olan mevcut fiyatın her gün aynı günün belirli bir saatindeki fiyatla kıyaslanması. Lütfen anı netleştirin.

 
alsu >> :

Ve neden onları iCastom üzerinden aramanız gerekiyor? Birleşme ya da ne için? Pekala, her biri için ayrı bir sarmalayıcı göstergesi yazın ve onları iCustom aracılığıyla arayın...

Sorun şu ki, bu iki göstergeyi (AO ve AC) yeniden yaptım ve şimdi çubukların değiştirilen göstergelere göre renklendirilmesini istiyorum. Yoksa bunu yapmanın başka yolları var mı? Sadece MQL ayrıştırmaya başladı...

 
Necron >> :

Sorun şu ki, bu iki göstergeyi (AO ve AC) yeniden yaptım ve şimdi çubukların değiştirilen göstergelere göre renklendirilmesini istiyorum. Yoksa bunu yapmanın başka yolları var mı? Sadece MQL ayrıştırmaya başladı...

Duc, ne yeniden yaptın ve ne diyorsun, sorun ne? Örneğin, dönüştürülen göstergeleriniz AO, AC olarak adlandırılıyorsa, çağrı şu şekilde olacaktır:

iCustom(0,0,"AO",0,shift);
iCustom(0,0,"AС",0,shift);

peki, ya da kendinizden bazılarını yaptıysanız, oraya parametreler ekleyin

 
future >> :

Çok teşekkür ederim, yaklaşıyorum. Bir nokta tam olarak net değil.

'14:56' - tarih değişmez dizesi eksik

Anladığım kadarıyla yine tarih istiyor ama belirli bir tarihe ihtiyacım yok, benim için önemli olan mevcut fiyatın her gün aynı günün belirli bir saatindeki fiyatla kıyaslanması. Lütfen anı netleştirin.


string час="15";
string мин="15";
datetime some_time=D'Year().Month().Day() час:мин';//попробуй так ____ но на тестере не будет работать, так как текущие год месяц и день 
привяжитесь к барам так проще вместо iBarShift ( 0 , 0 , some_time ) номер бара
 

costy_ писал(а) >>

gelecek >> :

Çok teşekkür ederim, yaklaşıyorum. Bir nokta tam olarak net değil.

'14:56' - tarih değişmez dizesi eksik

Anladığım kadarıyla yine tarih istiyor ama belirli bir tarihe ihtiyacım yok, benim için önemli olan mevcut fiyatın her gün aynı günün belirli bir saatindeki fiyatla kıyaslanması. Lütfen anı netleştirin.


string час="15";
string мин="15";
datetime some_time=D'Year().Month().Day() час:мин';//попробуй так ____ но на тестере не будет работать, так как текущие год месяц и день 
привяжитесь к барам так проще вместо iBarShift ( 0 , 0 , some_time ) номер бара

Yine de zamana bağlı kalmanın mümkün olup olmadığının temeline inmek istiyorum. MQL4 dilinde, her işlem gününün 14.00'deki Teklif fiyatı nasıl söylenir?

 

skifodessa 05.12.2009 14:07


Herkese iyi günler.

Lütfen bana belirli bir seviyenin fiyatına göre geçiş sayısını nasıl hesaplayacağımı söyleyin. Siparişin ilk hemzemin geçitten sonra değil, 3 (4.5...) sonra açılmasını istiyorum.

Teşekkür ederim.
-------------------------------------------------- ----------

algoritmayı deneyebilirsin


Eğer (Mevcut çubuğun fiyatı>seviyenin fiyatı VE önceki çubuğun fiyatı <seviye)Sonra {sayacı bir artırın}

Eğer (sayaç>3) ise {açık emir; sayacı sıfırla}

Şimdi her şeyi normal dilde aynı şekilde yazalım (sadece blok yazıyorum. Doğru yerlere kendiniz yerleştirin)

Dış int Çet=10; // kaç kavşaktan sonra sipariş açılır

Dış çift Seviye=1.6566; //fiyat hangi seviyeyi geçtikten sonra saymaya başlamalı

start fonksiyonunda, koşullar bunun gibi bir şey olacak

int k;

if(Open[0]> Uroven && Open[1]< Uroven )k=k+1;// YUKARI kavşak burada dikkate alınır

if(k> Çet ){SiparişGönder(.......);k=0};

Genel olarak, soru çok karmaşık değil.Algoritmaların bu temelleri MCL ders kitabında iyi tanımlanmıştır.

 

Vinin İÇİN yazdı >>

İlginiz için teşekkür ederim. ama bu yardımcı olmayacak. while döngüsünü bir FOR döngüsüyle değiştirdiğiniz için

Urain İÇİN yazdı >>

Sonraki iki satır sadece istenen diziyi oluşturur.

Bears_array[i]=iBearsPower(NULL,0,PeriodPower,PRICE_CLOSE,i);
Bulls_array[i]=iBullsPower(NULL,0,PeriodPower,PRICE_CLOSE,i);

Urain Muhtemelen önceden tamamlanmış bir diziyi iMAOnArray işlevine geçirmeniz gerektiğini düşündünüz.Bunu FOR döngüleriyle oluşturmak yardımcı olmadı. Çünkü bu işlev (iMAOnArray) bir diziden değil, onun ADI iletilir. Ve dizi ELEMENT BY ELEMENT işlenir.

MA_Bears[i]=iMAOnArray(Bears_array,0,MA_Period,0,MODE_SMA,i); satırında i'yi değiştirerek

Sorunu anladım. Göründüğünden çok daha derindir. Bu işlemi yalnızca Expert Advisor'da uygularsanız sorun olmaz, ancak buna dayalı bir grafik oluşturursanız, herhangi bir komisyon alır. Her şey dizilerin TERSİNE indekslenmesi ile ilgilidir. iMAOnArray işlevi doğrudan (soldan sağa) indekslemeye sahiptir, grafikler ise sağdan sola indekslenir. Bu açıklama için Garfich'e teşekkürler.



 
Stepan241 >> :

Vinin İÇİN yazdı >>

İlginiz için teşekkür ederim. ama bu yardımcı olmayacak. while döngüsünü bir FOR döngüsüyle değiştirdiğiniz için

Urain İÇİN yazdı >>

Sonraki iki satır sadece istenen diziyi oluşturur.

Bears_array[i]=iBearsPower(NULL,0,PeriodPower,PRICE_CLOSE,i);
Bulls_array[i]=iBullsPower(NULL,0,PeriodPower,PRICE_CLOSE,i);

Urain Muhtemelen önceden tamamlanmış bir diziyi iMAOnArray işlevine geçirmeniz gerektiğini düşündünüz.Bunu FOR döngüleriyle oluşturmak yardımcı olmadı. Çünkü bu işlev (iMAOnArray) bir diziden değil, onun ADI iletilir. Ve dizi ITEMS işlenir.

MA_Bears[i]=iMAOnArray(Bears_array,0,MA_Period,0,MODE_SMA,i); satırında i'yi değiştirerek

Sorunu anladım. Göründüğünden çok daha derindir. Bu işlemi yalnızca Expert Advisor'da uygularsanız sorun olmaz, ancak buna dayalı bir grafik oluşturursanız, herhangi bir komisyon alır. Her şey dizilerin TERSİNE indekslenmesi ile ilgilidir. iMAOnArray işlevi doğrudan (soldan sağa) indekslemeye sahiptir, grafikler ise sağdan sola indekslenir. Bu açıklama için Garfich'e teşekkürler.

Sorunun ne olduğunu bilmiyorum ama Vinin doğru yazmış (ya da süre fark etmez) asıl mesele, önce veri dizisinin döngü tarafından oluşturulması ve ardından iMA'nın bir sonraki döngü tarafından ondan oluşmasıdır. ,

ve Bears_array[i]=iBearsPower(NULL,0,PeriodPower,PRICE_CLOSE,i); satırı dizinin yalnızca bir i-inci değerini doldurur.,

döngüsü olmayanlar ise dizi oluşmayacaktır.