Hatalar, hatalar, sorular - sayfa 623

 
MetaDriver :
Şu anda kesinlikle kaba olacaksınız ... :))

Belki,

Sorunun özünü kavradım, neden her göstergede bir zamanlayıcı ayarlanması gerektiğini anlamıyorum ve aslında neden bu gösterge demeti,

Danışmanın zamanlayıcısında gerekli enstrümanın tekliflerini doğrudan almak mümkün mü? ve ortak bir montajda saklayın,

bu varyantta, ayrıklık sırayla olacak ve göstergeli varyantta, senkronize olmayan bir veri akışımız var.

Casuslarla ilgili başka bir konu, çünkü tüm enstrümanlar için döngüleri ve olayları yok, uzun sürmeyebilirler veya birbiri ardına işaret edebilirler.

Bu arada, bir Son fiyatın olduğu işlemlerde, Teklif verileri her zaman mevcut değildir, bu nedenle kontrol yoluyla ya Teklif, değilse de Son'u yazarız.

 

MetaDriver :

Bir uzlaşma öneriyorum: casuslarla keneleri yakalarsınız ve onları hemen bir milisaniye işaretiyle (GetTickCount()) baş Uzman Danışmana gönderirsiniz. Expert Advisor bunları işaretlere göre düzenler ve ikinci blokları keser.

Çok kolay değil, ama doğrulukla düzen olacak.

Kötü bir seçenek değil. Benim düşünceme göre, sadece temel almaya değer olanlar.

Ukrayna :

Bu arada, bir Son fiyatın olduğu işlemlerde, Teklif verileri her zaman mevcut değildir, bu nedenle kontrol yoluyla ya Teklif, değilse de Son'u yazarız.

Güzel açıklama ben rastlamadım. dikkate alınması gerekecektir.
 

MetaDriver :

Предлагаю компромисс: ловишь тики шпионами и сразу отправляешь в головной эксперт, снабдив милисекундной меткой(GetTickCount()). Эксперт их упорядочивает в соответствии с метками и нарезает секундные блоки.

Не очень просто, зато с точностью будет порядок.

ilginç :

Kötü bir seçenek değil. Bence, sadece temel almaya değer olanlar.

Güzel açıklama ben rastlamadım. dikkate alınması gerekecektir.

Seçenek kötü olmayabilir, yalnızca terminalde kene gönderme mekanizması eksik. 16 çift için 5-10 tik/sn tahmin edin. Bir kez daha, çoktan geçti))

Ve böyle bir doğruluk gerekli değildir - 1 saniye yeterlidir.

Genel olarak, hepinize teşekkür ederim - bu konu bitti.

 

Sorun, dakika dakika geçmişinin henüz tutulmadığı uzak tarihsel geçmişte daha yüksek zaman dilimlerinin çubuklarının yerine dakika çubuklarının değiştirilmesiyle bağlantılı olarak çok tatsız. Çözümlerden sadece sahte çubukların gerçek olanlara karmaşık dönüşümü akla geliyor ve bu, doğruluk garantisi olmadan. Böyle bir dönüşümün doğruluğu hakkında şüpheler hakkında olduğu kadar karmaşıklık hakkında bile değil.

İlk görev, inşa edilen Fibonacci Zaman Dilimlerinin alaka düzeyini kontrol etmektir. Bölge çok uzaksa ve tüm alt bölgelerinin çalışma genişliği (varsayılan olarak - 34 temel genişlik birimine kadar) toplamda o kadar darsa, sağ sınır o anki ana ulaşmıyorsa, onu inşa etmiyoruz, aksi takdirde biz grafikte bir nesne yaratacaktır. Birini verdiğim iki benzer şekilde çözmeye çalıştım. Tek fark, ilk yöntemde hikayenin başından itibaren dans ettim.

   datetime firstDate=( datetime ) SeriesInfoInteger ( _Symbol , _Period , SERIES_FIRSTDATE );
ve ikincisinde - tam tersine (bu yöntemi veriyorum), öz ve sonuçlar hiç değişmiyor. NZD/USD üzerinde test edilmiştir.

Sahte hikayeniz benimki gibi 2009'da değil de farklı bir tarihte bitiyorsa, bu iki Fibo Zaman Dilimi'ni biri bu dönüm noktasından geçecek şekilde yeniden düzenleyin ve ikincisi zaten hikayenin tamamen sağ tarafında olur. , tüm çubukların gerçek olduğu yer. Bu durumda script içerisindeki startTime1, endTime1 değerlerini ve gerekirse startTime2, endTime2 değerlerini de değiştirmeyi unutmayınız; fiyatlar değiştirilemez - ilkesizdir. Şimdi test edebilirsiniz... Sonuç üzücü olacak: her iki saat dilimi için aynı doğrulama algoritmasıyla, yalnızca tarihsel olarak sağ elini kullanan bölge için ve bir ayağı dönüş noktasından önce ve diğeri sonra olan bölge için doğru şekilde çalışacaktır. , algoritma hatalı bir şekilde filtreleme yapacak ve bizim onu oluşturmamıza izin vermeyecek . Her iki bölgenin de birbirine oldukça yakın olduğunu ve benzer genişliklere sahip olduğunu ve bu iki genişliğin geleceğe uzandığını ve uzun süre alakalı olacağını, aslında ikisinin de filtrelenmemesi gerektiğini not ediyorum (koşulları yorumlayın ve siz her iki saat diliminin de oluşturulduğunu görecektir).

 void OnStart ()
  {
   datetime startTime1= D'2009.07.08 18:00:00' ;
   datetime endTime1= D'2009.11.03 12:17:00' ;
   datetime startTime2= D'2009.06.30 08:00:00' ;
   datetime endTime2= D'2009.10.21 20:16:00' ;

   double startPrice1= 0.61930 ;
   double endPrice1= 0.70948 ;
   double startPrice2= 0.65470 ;
   double endPrice2= 0.76300 ;

   int FTZ1pos1,FTZ2pos1,bandwidth;
   datetime Arr[],time1;

   CopyTime ( _Symbol , PERIOD_M1 , 0 , 1 ,Arr);
   time1=Arr[ 0 ];

   FTZ1pos1= CopyTime ( _Symbol , PERIOD_M1 ,time1,startTime1,Arr);
   bandwidth= CopyTime ( _Symbol , PERIOD_M1 ,endTime1,startTime1,Arr)*( 34 + 2 ); // +2 - небольшой запас общей ширины
                                                                         // зоны на всякий случай

   if (FTZ1pos1<=bandwidth)
      ObjectCreate ( 0 , "FTZ1" , OBJ_FIBOTIMES , 0 ,
                   startTime1,startPrice1,
                   endTime1,endPrice1
                  );


// ---
   FTZ2pos1= CopyTime ( _Symbol , PERIOD_M1 ,time1,startTime2,Arr);
   bandwidth= CopyTime ( _Symbol , PERIOD_M1 ,endTime2,startTime2,Arr)*( 34 + 2 ); // +2 - небольшой запас общей ширины
                                                                         // зоны на всякий случай

   if (FTZ2pos1<=bandwidth)
      ObjectCreate ( 0 , "FTZ2" , OBJ_FIBOTIMES , 0 ,
                   startTime2,startPrice2,
                   endTime2,endPrice2
                  );
  }

İstenen sonuç: İki Fibo Zaman Dilimi olmalıdır

Birinci ve ikinci 0 taban çizgileri arasında bir yerde, sahte dakika çubuklarını ve gerçek olanları ayıran bir dönüm noktası vardır.

Çubuk sayısında hesaplamayı reddederseniz ve tarihlerdeki her şeyi hesaplamayı reddederseniz, bu kesinlikle istenen doğruluğu vermeyecektir, çünkü hafta sonlarını (piyasanın +/- kapanış / açılış saati), tatil günleri vb. ., bir dakikadan fazla kenelerin yokluğunda ve zaman ölçeğindeki tutarsızlıklarda çubukları atlamayı bırakın, genellikle sessiz kalırım.

Güvenilir bir çözüm olarak ne önerirsiniz?

 

EA'da dosya yüklenirken hata oluştu. Kategoriden 10 farkı bulun. İlk kod komut dosyasıyla ilgilidir, ikincisi EA için, Ctrl-C Ctrl-V ile aynıdır. Kod, komut dosyasında çalışır, ancak EA'da çalışmaz.

 #include <\\MyClass\RegulFind-v1- 1 .mqh>
#include <Trade\Trade.mqh>
int hMa,hRsi ;
double mMa[],mRsi[];                             
Kohonen  koh;
CTrade trade ;
void OnStart ()
  {
   koh.LoadMap( "KitMaRsi.csv" ) ;
   hMa= iMA ( _Symbol , Period (), 10 , 0 , MODE_EMA , PRICE_CLOSE ) ;
   if (hMa == INVALID_HANDLE )
       Print ( "Ошибка загрузки машки====================== " , GetLastError ());
   hRsi= iRSI ( _Symbol , Period (), 10 , PRICE_CLOSE );
   if (hRsi == INVALID_HANDLE )
       Print ( " Ошибка загрузки РСИ ==========" );   
   
  }
 #include <\\MyClass\RegulFind-v1- 1 .mqh>
#include <Trade\Trade.mqh>
int hMa,hRsi ;
double mMa[],mRsi[];                             
Kohonen  koh;
CTrade trade ;
int OnInit ()
  {
   koh.LoadMap( "KitMaRsi.csv" ) ;
   hMa= iMA ( _Symbol , Period (), 10 , 0 , MODE_EMA , PRICE_CLOSE ) ;
   if (hMa == INVALID_HANDLE )
       Print ( "Ошибка загрузки машки====================== " , GetLastError ());
   hRsi= iRSI ( _Symbol , Period (), 10 , PRICE_CLOSE );
   if (hRsi == INVALID_HANDLE )
       Print ( " Ошибка загрузки РСИ ==========" );   
   return ( 0 );
  }
 
ivandurak :

EA'da dosya yüklenirken hata oluştu. Kategoriden 10 farkı bulun. İlk kod komut dosyasına atıfta bulunur, ikincisi danışmana, bunlar Ctrl-C Ctrl-V ile aynıdır. Kod, komut dosyasında çalışır, ancak EA'da çalışmaz.

Test cihazında başka bir dosya sanal alanı var. Expert Advisor'ın test cihazında bir adet *.csv dosyası ile normal şekilde çalışmasını istiyorsanız, onu ortak dizine koyun ve dosyayı FILE_COMMON değiştiricisi ile açın.


Not: Ortak (ortak) bir klasöre koymak için, ya
FILE_COMMON değiştiricisiyle bir dosya yazmanız ya da bunun gibi bir şey bulmanız gerekir (XP seçeneği):

C:\Documents and Settings\All Users\Application Data\MetaQuotes\Terminal\Common\Files\



 
x100intraday :

Güvenilir bir çözüm olarak ne önerirsiniz?

MT4'e geri dön.

Geliştiricilere bu sorunun geleceği hakkında döndüm, sessiz kaldılar, bu yüzden kişisel olarak benim için beklentiler anlaşılmaz.

 

Switch bir şekilde sembolik değişkenlerle çalışmıyor...

Yerine:

 string type = "Buy" ;

switch (type)
{
case "Buy" : {direction = ORDER_TYPE_BUY ;  price = SymbolInfoDouble (zSymbol, SYMBOL_ASK ); break ;}
case "Sell" : {direction = ORDER_TYPE_SELL ; price = SymbolInfoDouble (zSymbol, SYMBOL_BID ); break ;}
default : { return (lot_value);}
}

'type' - geçersiz anahtar ifadesi türü
'Satın al' - sabit ifade ayrılmaz değildir

Şu şekilde çizmelisin:

 if (zShift == "Buy" )  {direction = ORDER_TYPE_BUY ;  price = SymbolInfoDouble (zSymbol, SYMBOL_ASK );}
if (zShift == "Sell" ) {direction = ORDER_TYPE_SELL ; price = SymbolInfoDouble (zSymbol, SYMBOL_BID );}
if (zShift != "Buy" || zShift != "Sell" ) { return (lot_value);}

bu kadar net ve çarpık değil.

Diğer dillerde rulolar...

Farklı yazmalı mıyım?

 
awkozlov :

Her nasılsa switch sembolik değişkenlerle çalışmıyor ...


Belgeler diyor ki (benimki vurgulanır) - Switch ifadesi :

Her durumda ifadenin değerini sabitlerle karşılaştırır ve kontrolü ifadenin değeriyle eşleşen operatöre aktarır. Her durum durumu , bir tamsayı sabiti , bir karakter sabiti veya bir sabit ifade ile işaretlenebilir. Sabit bir ifade, değişkenleri veya işlev çağrılarını içeremez. Switch ifadesi ifadesi tamsayı türünde olmalıdır.

 
awkozlov :

Diğer dillerde rulolar...

Başkalarının üzerinde yuvarlanması bir özelliktir. Anahtar, başlangıçta yalnızca integral türleri için tasarlanmıştır. Burada böyle bir özellik yok.