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

 
xtonic :

Metadan akşam bilmeceleri:

Alıntı arşivindeki alıntıları içe aktardım, 1 dakika içinde diyor: Veritabanı: 0 / 3665972, pencere boş - bu ne anlama geliyor?

EURUSD,M1 grafiğini çevrimdışı açtığımda - büyük harfler gösteriyor: "Güncelleme bekleniyor" - bu ne anlama gelebilir?

Testi çalıştırıyorum - TestGenerator: 'EURUSD1' geçmiş verisi yok

Terminalinizi yeniden başlatın. Her şey doğru yapıldıysa, görünmelidir.

 

göstergenin parametrelerde hangisini nasıl çizdiğini nerede okuyacağınızı

SetIndexStyle(0,DRAW_HISTOGRAM, 0, 1, color1)

SetIndexStyle(1,DRAW_HISTOGRAM, 0, 1, color2)

Neden bazen çiziyor bazen çekmiyor anlamıyorum, normal bir çizgi çizdiğinizde çok iyi anlıyorum DRAW_LINE - gösterge arabelleğinin değeri y eksenini ayarlayacaktır ve eleman numarası grafikteki çubuk numarasına karşılık gelir

tür DRAW_HISTOGRAM olduğunda gösterge arabelleğindeki parametreler nelerdir ??? neden, aynı çubukta iki gösterge arabelleği olduğunda, çubukta yatay bir segment beliriyor ve gösterge arabelleklerinden biri EMPTY_VALUE 'e eşit olduğunda , hiçbir şey yok ve ayrıca renklendirme mantığını da anlamıyorum

 
ToLik_SRGV :

Terminalinizi yeniden başlatın. Her şey doğru yapıldıysa, görünmelidir.


Yani tüm bunları zaten yaptı, hatta sistemi aşırı yükledi, mesele bu.

 
xtonic :


Yani tüm bunları zaten yaptı, hatta sistemi aşırı yükledi, mesele bu.


İthal alıntılar nereden??

Çok tembel olmayacak ve tam olarak ne yaptığınızı adım adım açıklamayacaksınız - o zaman burada yardım alma olasılığınız daha yüksek olacaktır.

 

İyi insanlar, acıyın - başaramıyorum: düzleştirilmiş CCİ'nin bir sonraki zirvesinden sonra alım/satım.

İkinci tamponu ilan etmeye çalıştım (bana daha açık), hata yok, dergi sessiz, baskı, görünüşe göre düğme akordeonunu bir keçiye ayarlıyorum, hiçbir şey anlamadım.

 // Торговые критерии
   double c1b[];
   ArrayResize (c1b,PeriodB);
   double c1b_1[];
   ArrayResize (c1b_1,AvgB);
   for (i= 1 ;i<=PeriodB;i++)
   {
   c1b[i]= iCCI ( NULL , 0 ,PeriodB, PRICE_TYPICAL ,i);
   {
   c1b_1[i]=iMAOnArray(c1b, 0 ,AvgB, 0 , MODE_SMA ,i);
   }
   }
   
   double c1s[];
   ArrayResize (c1s,PeriodS);
   double c1s_1[];
   ArrayResize (c1s_1,AvgS);
   for (i= 1 ;i<=PeriodS;i++)
   {
   c1s[i]= iCCI ( NULL , 0 ,PeriodS, PRICE_TYPICAL ,i);
   {
   c1s_1[i]=iMAOnArray(c1s, 0 ,AvgS, 0 , MODE_SMA ,i);
   }
   }

if ( NormalizeDouble (c1b_1[i], 4 )< NormalizeDouble (c1b_1[i+ 2 ], 4 )&& NormalizeDouble (c1b_1[i+ 2 ], 4 )> NormalizeDouble (c1b_1[i+ 3 ], 4 ))
     {                                          // 
      Opn_B=true;                               // Критерий откр. Buy
      Cls_S=true;                               // Критерий закр. Sell
     }
if ( NormalizeDouble (c1s_1[i], 4 )> NormalizeDouble (c1s_1[i+ 2 ], 4 )&& NormalizeDouble (c1s_1[i+ 2 ], 4 )< NormalizeDouble (c1s_1[i+ 3 ], 4 ))
     {                                          // 
      Opn_S=true;                               // Критерий откр. Sell
      Cls_B=true;                               // Критерий закр. Buy
     }

Ekli tüm EA'dır. Görselleştirme testinden sonra, CCI hem bu hem de eski sürümde (ekteki dosyada topraklanmıştır) çizer, ancak düzleştirilmiş olan değildir ve buna göre anlaşmalar açılmaz.

Eski versiyon:

 // Торговые критерии
   double c1b[];
   for (i= 1 ;i<=PeriodB;i++)
   {
   c1b[i]= iCCI ( NULL , 0 ,PeriodB, PRICE_TYPICAL ,i);
   }
   double c1b_1=iMAOnArray(c1b, 0 ,AvgB, 0 , MODE_SMA , 1 );
   double c1b_2=iMAOnArray(c1b, 0 ,AvgB, 0 , MODE_SMA , 2 );
   double c1b_3=iMAOnArray(c1b, 0 ,AvgB, 0 , MODE_SMA , 3 );
   
   double c1s[];
   for (i= 1 ;i<=PeriodS;i++)
   {
   c1s[i]= iCCI ( NULL , 0 ,PeriodS, PRICE_TYPICAL ,i);
   }
   double c1s_1=iMAOnArray(c1s, 0 ,AvgS, 0 , MODE_SMA , 1 );
   double c1s_2=iMAOnArray(c1s, 0 ,AvgS, 0 , MODE_SMA , 2 );
   double c1s_3=iMAOnArray(c1s, 0 ,AvgS, 0 , MODE_SMA , 3 );

if ( NormalizeDouble (c1b_1, 4 )< NormalizeDouble (c1b_2, 4 )&& NormalizeDouble (c1b_2, 4 )> NormalizeDouble (c1b_3, 4 ))
     {                                          // 
      Opn_B=true;                               // Критерий откр. Buy
      Cls_S=true;                               // Критерий закр. Sell
     }
if ( NormalizeDouble (c1s_1, 4 )> NormalizeDouble (c1s_2, 4 )&& NormalizeDouble (c1s_2, 4 )< NormalizeDouble (c1s_3, 4 ))
     {                                          // 
      Opn_S=true;                               // Критерий откр. Sell
      Cls_B=true;                               // Критерий закр. Buy
     }

Hiç kimsenin başkalarını tırmıklama sorunu olmadığını anlıyorum, en azından Baskıyı özellikle nereye ekleyeceğinizi ve dergi veya günlüklerdeki incelemeye nereye bakacağınızı ve nelere dikkat etmeniz gerektiğini söyleyin.

Dosyalar:
21.mq4  15 kb
 

Tünaydın!

Kısmi kapatma ile ilgili soru, gerçek şu ki, her DC'nin kendi kuralları vardır. Siparişleri kaydetmenin nasıl daha doğru olduğunu anlamıyorum:

Görev: Sihir kullanmadan tam olarak bu TS için yeni ortaya çıkan bir siparişin onay işaretini bulmak gerekiyor.

1) Kısmen kapalı bir siparişin kendi mecazi yorumları olduğunu fark ettim, teorik olarak yorumu okuyabilirsiniz // Tüm DC'lerin yorum yazdığından emin değilim

2) sipariş açılış tarihine göre arama // tüm DC'ler için neyin işe yarayacağından emin değilim

3) Kısmi bir kapanışın gerçekleştirilmesinden ve hacmin kontrol edilmesinden hemen sonra yeni bir onay işareti arayın, bunun olması gereken sipariş olduğunu söylüyorlar.

4) başka bir şey

 
wenay :

siparişleri kaydetmenin en iyi yolu nedir:

oradaki yardımı okuyun:
yorum - Yorum metni sipariş edin. Yorumun son kısmı ticaret sunucusu tarafından değiştirilebilir .

magic - Siparişin sihirli numarası. Kullanıcı tanımlı bir tanımlayıcı olarak kullanılabilir.

sana yardım etmek için sihir

siparişinizi şu şekilde arayın:

if (OrderType() == OP_BUY && OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) {

......

 
Craft :

en azından Yazdır'ı tam olarak nereye ekleyeceğinizi ve günlük veya günlüklerdeki incelemeye nereye bakacağınızı ve nelere dikkat etmeniz gerektiğini söyleyin.

Print'i durumu yakalamak istediğiniz yere koyun (örneğin, bir sipariş vermek, günlükte bir sipariş hatası verme veya verme gerçeğini görüntülemek anlamına gelir)

işlevinizi arama olasılığından şüpheniz varsa, yani işlevi çağırma koşulu hiçbir zaman yerine getirilmeyecektir, işlevin girişinde hemen Yazdır'ı ayarlayın.

"Uzmanlar" sekmesindeki terminalde okunan yazdır

 
IgorM :

göstergenin parametrelerde hangisini nasıl çizdiğini nerede okuyacağınızı

SetIndexStyle(0,DRAW_HISTOGRAM, 0, 1, color1)

SetIndexStyle(1,DRAW_HISTOGRAM, 0, 1, color2)

Neden bazen çiziyor bazen çekmiyor anlamıyorum, normal bir çizgi çizdiğinizde çok iyi anlıyorum DRAW_LINE - gösterge arabelleğinin değeri y eksenini ayarlayacaktır ve eleman numarası grafikteki çubuk numarasına karşılık gelir

tür DRAW_HISTOGRAM olduğunda gösterge arabelleğindeki parametreler nelerdir ??? neden, iki gösterge tamponu aynı çubuktayken, çubukta yatay bir segment beliriyor ve gösterge tamponlarından biri EMPTY_VALUE değerine eşit olduğunda, hiçbir şey yok ve ayrıca renklendirme mantığını da anlamıyorum

DRAW_HISTOGRAM stili , diğer çizgi çizme stillerinden temel olarak farklı değildir, X ekseni çubuk numaralarını, Y ekseni gösterge dizisinin değerlerini gösterir, ancak dedikleri gibi bir nüans vardır.
Örnek olarak basit bir göstergeyi ele alalım:

 #property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Red
#property indicator_width1 2
double SIMPLE[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init(){
   SetIndexStyle( 0 , DRAW_HISTOGRAM );
   SetIndexBuffer ( 0 , SIMPLE);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start(){
   for ( int shift = Bars -IndicatorCounted()- 1 ; shift >= 0 ; shift--){
      SIMPLE[shift] = 1 ;
   }
}
//+------------------------------------------------------------------+

Bir gösterge dizisi, ayrı bir pencere, tüm öğelere 1 değeri atanır. Grafiğe ve gördüklerimize (soldaki Şekil 1) atın:

Gösterge okumaları "Veri Penceresi"nde görüntülenir, ancak penceresinde hiçbir şey yoktur. Bu çok nüans, MT4 basitçe 1'in ne kadar olduğunu bilmiyor mu? Kolon ne kadar yükseğe çekilmelidir? İtmesi için bir nedeni yok, yani başka bir deyişle, sütunlar için bölünme fiyatı yok. Fark ettiğiniz gibi, sütunların yüksekliğini ayarlayan ayrı bir parametre yoktur, yükseklikleri diğer öğelere göre otomatik olarak ayarlanır. MT4'e yardım edelim ve bölüm fiyatını belirleyelim, programlı olarak şunları yapabilirsiniz:

 #property indicator_minimum 0
#property indicator_maximum 2

Gösterge ayarlarında düşükleri (0 diyelim) ve yüksekleri (örneğin 2) kolayca düzeltebilirsiniz.
Ve her şey hemen yerine oturuyor (sağda Şekil 2), şimdi terminal sütunun hangi yükseklikte çizilmesi gerektiğini biliyor, 1 ortada 0 ile 2 arasında :))) olması gerektiği gibi çiziliyor, çünkü hepsi onlar birbirine göre çizilir, bu örnekte tüm gösterge dizisinin bir değeri vardır (özellikle “nüansı” göstermek için), bu nedenle terminale ne kadar veya ne kadar küçük olduğunu kendiniz göstermeniz gerekir. Dizi verisini örneğin 1'den Close[ shift ]'e değiştirdiğimiz anda, o zaman sabit bir limit belirlememize gerek yok, terminal kendini belirleyecek ve bizim için bir "ala MACD" resmi çizecek.

Ayrı bir pencerede değil, genel olarak bir histogram çizerseniz, biraz farklı bir resim. İlk gösterge dizisi için Close[ shift ] değerini bırakalım, sadece parametreyi değiştirin:

 #property indicator_chart_window

Ve yine aynı resim (Soldaki Şekil 3). Değerler var, görüntü yok.

Sütunların yüksekliğini otomatik olarak hesaplamak için terminalin bir şeyden başlaması gerekir ve genel pencerede minimumları ve maksimumları sabitlemek imkansız olduğundan, ikinci gösterge dizisi sahneye girer. İkinci bir satır ekleyin ve ona 0 değerini verin.

 #property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_width1 2
#property indicator_color2 Red
#property indicator_width2 2
double SIMPLE[];
double SIMPLE2[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init(){
   SetIndexStyle( 0 , DRAW_HISTOGRAM );
   SetIndexBuffer ( 0 , SIMPLE);
   SetIndexStyle( 1 , DRAW_HISTOGRAM );
   SetIndexBuffer ( 1 , SIMPLE2);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start(){
   for ( int shift = Bars -IndicatorCounted()- 1 ; shift >= 0 ; shift--){
      SIMPLE[shift] = Close[shift];
      SIMPLE2[shift] = 0 ;
   }
}
//+------------------------------------------------------------------+

Gösterge dizileri birbirine göre görüntülenmeye başlar. Ve her şey olması gerektiği gibi olur (sağdaki Şekil 4). Sütunlar SIMPLE[ shift ] 'den SIMPLE2[ shift ]'e çizilir.

Ve son olarak, mumları dolduran göstergenin kodu, yukarıysa mavi, aşağıysa pembe. Ve yine, her renk için iki dizi (çizim evden uca (Açıktan Kapata) gerçekleşir).

 //+------------------------------------------------------------------+
//|                                                       SIMPLE.mq4 |
//|                        Copyright © 2010,Анатолий Сергеев  |
//|                                            mql.sergeev@yandex.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2010, Анатолий Сергеев"
#property link      "mql.sergeev@yandex.ru"

#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 Blue
#property indicator_width1 2
#property indicator_color2 Blue
#property indicator_width2 2
#property indicator_color3 Pink
#property indicator_width3 2
#property indicator_color4 Pink
#property indicator_width4 2
double Blue_home[];
double Blue_end[];
double Pink_home[];
double Pink_end[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init(){
   SetIndexStyle( 0 , DRAW_HISTOGRAM );
   SetIndexBuffer ( 0 , Blue_home);
   SetIndexStyle( 1 , DRAW_HISTOGRAM );
   SetIndexBuffer ( 1 , Blue_end);
   SetIndexStyle( 2 , DRAW_HISTOGRAM );
   SetIndexBuffer ( 2 , Pink_home);
   SetIndexStyle( 3 , DRAW_HISTOGRAM );
   SetIndexBuffer ( 3 , Pink_end);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start(){
   for ( int shift = Bars -IndicatorCounted()- 1 ; shift >= 0 ; shift--){
      if (Close[shift] > Open[shift]){
         Blue_home[shift] = Open[shift];
         Blue_end[shift] = Close[shift];
      } else {
         Pink_home[shift] = Open[shift];
         Pink_end[shift] = Close[shift];
      }
   }
}
//+------------------------------------------------------------------+

 
IgorM :
oradaki yardımı okuyun:
yorum - Yorum metni sipariş edin. Yorumun son kısmı ticaret sunucusu tarafından değiştirilebilir .

magic - Siparişin sihirli numarası. Kullanıcı tanımlı bir tanımlayıcı olarak kullanılabilir.

sana yardım etmek için sihir

siparişinizi şu şekilde arayın:

if (OrderType() == OP_BUY && OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) {

......



Görev: Sihir kullanmadan tam olarak bu TS için yeni ortaya çıkan bir siparişin onay işaretini bulmak gerekiyor.
Neden: