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

 
rabanik :
Tünaydın. Bir danışman için aşağıdaki kodu yazmaya yardımcı olun. Bunu bir dizi aracılığıyla yapmak istiyorum (daha iyi bir seçenek varsa lütfen yardım edin). Genel olarak, EA mesajlar gönderir, ancak EA'nın onları bir dizi (geçici) aracılığıyla göndermesini istiyorum. Onlar. danışman mektubu göndermenin başında, verilen mesajın daha önce gönderilip gönderilmediğini kontrol etti (dizide böyle bir mesajın olup olmadığını kontrol etti), değilse gönderdi, mektup bulunursa göndermeden vazgeçildi. Umarım açıktır) Çok teşekkür ederim!

Görevden emin misin?

Basitçe, seçenekler var:

- son mesajı tekrarlamayın

- eskiyi görmezden gelin (biraz zaman gecikmesi ayarlandı), yani mesajı tekrarlamanız gerekiyor.

PS İlk seçenek, ikincisinin özel bir durumudur, ancak çok daha kolay uygulanır. Sorunla ilgili açıklamanız aynı zamanda sonsuz gecikmeli ikinci varyantın özel bir durumudur.

Eğer ilgileniyorsanız, işte sorununuzun çözümü.

İki dizi tanımlarız - bir metin, mesajları saklar, ikincisi - mesajları aramak için dizin.

Dizin dizisi int türündedir. İlk ölçümde, metin mesajının sağlama toplamını yazıyoruz. İkincisinde - ilk dizinin mesajının satır numarası. Dizin dizisi, ilk boyuta göre sıralanır.

Yeni bir mesaj alıyoruz. Sağlama toplamını düşünüyoruz. ArrayBsearch() fonksiyonunu kullanarak böyle bir mesaj arıyoruz. Bulunamazsa, bu mesaj orijinaldir. Bunu mesaj dizisine ve sıralamayı hatırlayarak dizin dizisine bir bağlantı içeren bir sağlama toplamı ekleriz.

Sağlama toplamı için seçenekler nelerdir? Bunu alırdım: karakter sayısını ve metnin sağlama toplamını hesaba katarız. Metnin sağlama toplamı, örneğin karakter kodlarının toplamı. Son değişikliklerle 65.536*256'yı geçemez. Yani, mesajın sağlama toplamı şöyle görünebilir:

karakter sayısını 10 milyon ile çarpın ve metnin sağlama toplamını ekleyin.

 

profesyonel! Köşedeki çizgide sorun var.

koordinatlara göre TRENDBYANGLE oluşturuldu

 ObjectCreate ( 0 , "anglestok" , OBJ_TRENDBYANGLE , 0 , 0 , 0 );
ObjectSet( "anglestok" ,OBJPROP_TIME1,X1); ObjectSet( "anglestok" ,OBJPROP_PRICE1,Y1);
ObjectSet( "anglestok" ,OBJPROP_TIME2,X2); ObjectSet( "anglestok" ,OBJPROP_PRICE2,Y2);

- açıyı bilmelisin, yap

anglestok= ObjectGetDouble ( 0 , "anglestok" , OBJPROP_ANGLE );

ve it = 0, yardımda program tarafından oluşturulan satırın SIFIR açısına sahip olduğu yazıyor, tamam.

Aynı kodu tekrar aynı koordinatlarda çalıştırıyorum, çizgiye elimle dokunmayın - sıfır değil doğru derece sayısı görünüyor. neden, nasıl yapılır, ilk seferde ne olur?

veya bazı koordinatlar verdi - açıyı soruyorum - 0 diyor. Diğerlerine hemen veriyorum - geçmiş koordinatların açısını söylüyor . saçmalık

 
İşlev imzasının açıklamasından sonra const hangi durumlarda konur? Bununla ilgili herhangi bir bilgi bulamıyor.
 void qwe( int abc) const {...}
 
Burada normal bilgili insan bulamazsın anlaşılan boşuna üye olmuşsun = /
 
K_i_r_i_t_o :
Yorumu en başa taşıdım yoksa kimse cevap vermedi ama çok gerekli =/
Bunu uygulamak mümkün mü: Bir tuşa basarsam, gösterge kodunun bir kısmı açılır (FAREYE TIKLAYARAK bir nesne oluşturmaktan sorumludur), o zaman bir olay meydana gelirse (kodun ikinci kısmı, olay olabilir) örneğin aynı nesnenin oluşturulması olabilir), o zaman kodun ilk kısmı devre dışı bırakılır (ve bu yapılmazsa, nesne her tıklamayla oluşturulur) ve tuşa basıldığında da başlatılır ve yani bir daire içinde)
Yapabilir. Bir OnChartEvent bloğu ekleyin. İçinde gerekli presleri, ölçümleri takip edin ve onlara verilen tepkiyi fikre göre tanımlayın.
 
SunnYtheDreamer :
Yapabilir. Bir OnChartEvent bloğu ekleyin. İçinde gerekli presleri, ölçümleri takip edin ve onlara verilen tepkiyi fikre göre tanımlayın.
Kodun bir bölümünü tuşa basılana kadar bir süre tam olarak devre dışı bırakmak mümkün değil =/ Daha basit bir seçenek var ama bir sorun var, tuşa basıldığında değerini geri döndürmem gerekiyor ilk if ifadesinin başlangıcı
 #define VK_D 0x44
void OnChartEvent ( const int id,         // идентификатор события   
                   const long & lparam,   // параметр события типа long 
                   const double & dparam, // параметр события типа double 
                   const string & sparam) // параметр события типа string 
{ 
 Comment ( __FUNCTION__ , ": id=" ,id, " lparam=" ,lparam, " dparam=" ,dparam, " sparam=" ,sparam);

int       y     =( int )dparam;
datetime dt    = 0 ;
double    price = 0 ;  
int       window= 0 ;
int i;
int x=( int )lparam;

if (id== CHARTEVENT_CLICK )
{
ChartXYToTimePrice ( 0 ,x,y,window,dt,price);
ObjectCreate ( "Trend Line" +i, OBJ_TREND , 0 ,dt,price,dt,price);
ObjectSetInteger ( 0 , "Trend Line" +i, OBJPROP_SELECTED , true );

if (id== CHARTEVENT_KEYDOWN ) 
{ switch ( int (lparam)) 
{ case VK_D:
i= rand ();
}}}}
 
K_i_r_i_t_o :
Kodun bir bölümünü tuşa basılana kadar bir süre tam olarak devre dışı bırakmak mümkün değil =/ Daha basit bir seçenek var ama bir sorun var, tuşa basıldığında değerini geri döndürmem gerekiyor ilk if ifadesinin başlangıcı
 if (id== CHARTEVENT_CLICK )
{
   ChartXYToTimePrice ( 0 ,x,y,window,dt,price);
   ObjectCreate ( "Trend Line" +i, OBJ_TREND , 0 ,dt,price,dt,price);
   ObjectSetInteger ( 0 , "Trend Line" +i, OBJPROP_SELECTED , true );

   if (id== CHARTEVENT_KEYDOWN ) 
   {
       switch ( int (lparam)) 
      {
         case VK_D: i= rand ();
      }
   }
}
Bu kod sadece mouse tıklandığında çalıştırılacaktır ve 3 satır koddan sonra keypress olayı kontrol edilir. Ve bu 3 satırlık kod birkaç milisaniye içinde yürütülecek ve mevcut OnChartEvent çağrısı sırasında id değişebilse bile, 3 satır kodun yürütülmesi sırasında tuşa basılma olasılığı = %0. Açıkçası, belirli bir id değerinde tetiklenen blok içindeki id'yi kontrol etmek ve başka bir değer beklemek anlamsızdır. İlk olarak, ayrı bir blokta tuş vuruşunu kontrol edin, tuş numarasını bir değişkende veya sadece istenen tuşa basma gerçeğini saklayın. Ve bu değişken, bir fare tıklaması için blokta bulunan bir kod parçasını etkinleştirir veya devre dışı bırakır.
 char key = - 1 ; //эта переменная должна быть объявлена за пределами блока OnCharEvent
if (id== CHARTEVENT_KEYDOWN )
key = lparam;

if (id== CHARTEVENT_CLICK && key == 'D')
{
   ChartXYToTimePrice ( 0 ,x,y,window,dt,price);
   ObjectCreate ( "Trend Line" +i, OBJ_TREND , 0 ,dt,price,dt,price);
   ObjectSetInteger ( 0 , "Trend Line" +i, OBJPROP_SELECTED , true );
   i= rand ();
   key = - 1 ;
}
 
SunnYtheDreamer :
Bu kod sadece mouse tıklandığında çalıştırılacaktır ve 3 satır koddan sonra keypress olayı kontrol edilir. Ve bu 3 satır kod birkaç milisaniye içinde yürütülecek ve mevcut OnChartEvent çağrısı sırasında id değişebilse bile, 3 satır kodun yürütülmesi sırasında tuşa basılma olasılığı = %0. Açıkçası, belirli bir id değerinde tetiklenen blok içindeki id'yi kontrol etmek ve başka bir değer beklemek anlamsızdır. İlk olarak, ayrı bir blokta tuş vuruşunu kontrol edin, tuş numarasını bir değişkende veya sadece istenen tuşa basma gerçeğini saklayın. Ve bu değişken, bir fare tıklaması için blokta bulunan bir kod parçasını etkinleştirir veya devre dışı bırakır.

Çok teşekkürler!) işte aradığım satır if (id==CHARTEVENT_CLICK && key == 'D'), iki olayı hiçbir şekilde bağlayamadım, bu işe yaramadı if (id==CHARTEVENT_CLICK) & id==CHARTEVENT_KEYDOWN) Bir kez daha çok teşekkür ederim)

 

merhaba, son n mum için ortalama mum boyutunu hesaplayan bir fonksiyonum var. ve bazen şu değerleri verir: "5e-05.0" . bana müdahale ediyorlar ve gerekli değiller, ne yazık ki niceliksel olarak kaç tane ve onları nasıl keseceğimi bilmiyorum. NormalizeDouble() yardımcı olmuyor. lütfen bana bu tür sayıları kesmek için programlı olarak nasıl hesaplayacağımı söyle

 
pycha :

merhaba, son n mum için ortalama mum boyutunu hesaplayan bir fonksiyonum var. ve bazen şu değerleri verir: "5e-05.0" . bana müdahale ediyorlar ve gerekli değiller, ne yazık ki niceliksel olarak kaç tane ve onları nasıl keseceğimi bilmiyorum. NormalizeDouble() yardımcı olmuyor. lütfen bana bu tür sayıları kesmek için programlı olarak nasıl hesaplayacağımı söyle


5e-05 (5*10 ila -5 güç) = 0.00005.
Kesmek için:
 if (val >= 0.00001 )
5 haneli bir hesapta, düşük zaman dilimlerinde sadece sakinken, 5 pips gibi küçük mumlarla tanışmak mümkündür. Scalping ile hiçbir ilginiz yoksa, ancak n mum için ortalama bazen çok küçükse, işlevin uygulanması şüpheli olmalıdır.