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

 
skyjet :

Teşekkür ederim! Saymaya hangi taraftan, yani 3. çubuktan başlayacağınız önemli değil mi?

Örneğiniz için aslında bir fark yok ama her durumda dizinin başlangıcını ve sonunu belirtmeniz gerekiyor.

 for ( int x= 3 ; x> 1 ; x--)
{
 if (Open[x]==Open[x- 1 ]) continue ;
 if (Open[x]<Open[x- 1 ])
   {
   //--- action
   }
}
Dizi büyükse yinelemenin başlangıcı önemlidir. Örneğin, koşul genellikle dizinin sonunda tetikleniyorsa, sondan başlamak en iyisidir. Bu örnek, bir sipariş/pozisyon aramak için tipiktir. Tabii ki, bu durumda önce arama yapılırsa, program yine de bu noktaya ulaşacaktır, ancak daha fazla kaynak harcanacaktır.
 
Danila_mactep :
Merhaba! lütfen bana böyle bir şey söyleyin... burada seviyeler sekmesinde MA göstergesine bir seviye atayabilirsiniz, diyelim 20, yani hareketli ortalama y ekseni boyunca 20 puan hareket edecek, ancak bunun fiyatı veri penceresinde seviye gösterilmez, örneğin, 798'e kadar taşımak istersem, bu birçok çift için baş belasıdır, bir gösterge nasıl yazılır, böylece ya üzerinde kaydırılmış bir hareketli ortalamanın fiyatını gösterir Veri penceresinde fiyatın görülebilmesi ve manuel olarak hesaplanmasına gerek olmaması için grafik veya böylece?
Giriş verileri MAC ofsetini içerecek bir gösterge oluşturun. Gösterge, fiyat seviyesini hesaplayacak ve hemen grafikte nesneler olarak gösterecektir.
 
chief2000 :
Böyle bir sorun - boyutu değişebilen tek boyutlu bir dizi var.
Bir döngüde birbirleriyle olası tüm dizi öğeleri kombinasyonları nasıl yinelenir?
Elemanların sırası önemli değildir, yani. 123==213==321..

4 elemanlı bir dizi için bir örnek:


Beyin için iyi bir bulmaca. Şu şekilde deneyebilirsiniz:
 int start(){
 double array[ 4 ];
 int k,N[];
 k= ArraySize (array);
 ArrayResize (N,k);
 for ( int i= 0 ;i<k;i++)N[i]=-i- 1 ; // Заполнили массив элементов массива отрицательными
//
 int j= 0 ;
 while (N[k- 1 ]<k){
   if (N[j]<k- 1 ){
   N[j]++;
   bool NewComb= false ;
   for (i= 0 ;i<k- 1 ;i++){
     if (N[i]>N[i+ 1 ]){NewComb= true ;} else {NewComb= false ; break ;}
   }
//
   if (NewComb){
// Получили новую комбинацию в массиве N размерностью k    
     string temp= "" ;
     for (i= 0 ;i<k;i++){ // Перебираем массив N. Если N[i] то элемент array[N[i]] не участвует в выборке.
                     // Например, для размерности 4 если N[0]=3,N[1]=1,N[2}<0,N[3]<0 то это выборка array[3] и array[1]
                     //                             если N[0]=3,N[1]=2,N[2]=1,N[3]=0 то это выборка array[3] и array[2] array[1] и array[0]
     if (N[i]< 0 )temp= StringConcatenate (temp, "X" ); else temp= StringConcatenate (temp,N[i]);
    }
   Print ( "NEWCOMB " ,temp); // это для проверки какие комбинации выбираются
   }
//
  }
   else {
   N[j]= 0 ;i= 1 ;
   while (i<k){
     if (N[i]<k- 1 ) { if (N[i]>= 0 )N[i]++; else N[i]= 0 ;j= 0 ; break ;}
     else {N[i]= 0 ;i++;}
   }
  }
   if (N[k- 1 ]>=k- 1 ) break ;
 }
 return ;
}

4. boyut için test sonucu . Dizinin X öğesi seçilmemişse, aksi takdirde boyut 6 için dizi[rakam] ve parça kullanın:

 
artmedia70 :
Giriş verileri MAC ofsetini içerecek bir gösterge oluşturun. Gösterge, fiyat seviyesini hesaplayacak ve hemen grafikte nesneler olarak gösterecektir.


ama bunu nasıl yapacağımı bilmiyorum ve dürüst olmak gerekirse, nasıl yapacağımı bile bilmiyorum - MA kodunu açıyorum, o kadar çok şey var ki, kopyalamak için level parametresinin nerede olduğunu göremiyorum ve seviyeleri atayın. ma kodunun hangi kısmı kopyalanacak ve oradaki seviyelere nereye girilecek?
 
Danila_mactep :

ama bunu nasıl yapacağımı bilmiyorum ve dürüst olmak gerekirse, nasıl yapacağımı bile bilmiyorum - MA kodunu açıyorum, o kadar çok şey var ki, kopyalamak için level parametresinin nerede olduğunu göremiyorum ve seviyeleri atayın. ma kodunun hangi kısmı kopyalanacak ve oradaki seviyelere nereye girilecek?
Hayır, göstergenizi yazmaya başlamanız gerekiyor ve orada size ne yapacağınızı söyleyecekler.
 
artmedia70 :
Hayır, göstergenizi yazmaya başlamanız gerekiyor ve orada size ne yapacağınızı söyleyecekler.

yeni bir gösterge oluşturdu, şu ana kadar şöyle görünüyor:

#property telif hakkı "Telif Hakkı 2013, MetaQuotes Software Corp."
#özellik bağlantısı "http://www.metaquotes.net"

#özellik göstergesi_chart_window
#özellik göstergesi_tamponları 1
#özellik göstergesi_renk1 Kırmızı
//--- arabellekler
çift ExtMapBuffer1[];
//+------------------------------------------- --------------------+
//| özel gösterge başlatma işlevi |
//+------------------------------------------- --------------------+
int init()
{
//---- göstergeler
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,ExtMapBuffer1);
dönüş(0);
}
//+------------------------------------------- --------------------+
//| özel gösterge sıfırlama işlevi |
//+------------------------------------------- --------------------+
int tanım()
{
//----
#include "Hareketli Ortalamalar.mq4"
//----
dönüş(0);
}
//+------------------------------------------- --------------------+
//| özel gösterge yineleme işlevi |
//+------------------------------------------- --------------------+
int başlangıç()
{
int counted_bars=IndicatorCounted();
//----

//----
dönüş(0);
}
//+------------------------------------------- --------------------+

 
 
MA göstergesinde seviyeler vardır. Soru şu - bu seviyelerden nasıl veri alabilirsiniz, diyelim ki fiyat 100 veya -100 seviyesine ulaştı (al/sat için bir anlaşma açıyoruz).
 
alexey1979621 :
MA göstergesinde seviyeler vardır. Soru şu - bu seviyelerden nasıl veri alabilirsiniz, diyelim ki fiyat 100 veya -100 seviyesine ulaştı (al/sat için bir anlaşma açıyoruz).

Sıfır (akım) çubuğundaki MA'nın kendisi:

 double priceMA0= iMA ( Symbol (), Period (), MA_Period, MA_Shift, MA_ Method, PRICE_OPEN , 0 );

Mashka'yı hesaplamak için, mevcut çubuktaki "çıngırdama" dan kurtulmak için Açık fiyatı alıyoruz.

O zaman seviye +100 fiyatı:

 double priceP100=priceMA0+ 100 * Point ;

Seviye -100 fiyatı:

 double priceM100=priceMA0- 100 * Point ;
 
artmedia70 :

Sıfır (akım) çubuğundaki MA'nın kendisi:

Mashka'yı hesaplamak için, mevcut çubuktaki "çıngırdama" dan kurtulmak için Açık fiyatı alıyoruz.

O zaman seviye +100 fiyatı:

Seviye -100 fiyatı:


Yardım ettiğin için teşekkürler. Yakında programlamada iyi olacağım...