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

 
Morzh09 :

Bana neyin yanlış olduğunu söyle:

1) İki boyutlu bir diziyi ZigZag ekstremumunun oluşum zamanı ve ekstremumun kendisinin değeri ile dolduruyorum.

2) Verilen öğeye karşılık gelen ZigZag topunun yerel bir maksimum veya minimum olmasına bağlı olarak ikinci diziyi bir veya iki ile dolduruyorum.

3) Alert aracılığıyla sonuçları çıkarırım.

ancak 1 veya 2'nin görüntülenmesi gereken bir yerde sıfırlar her zaman görüntülenir.

yakalama tam olarak nedir?!?

//+------------------------------------------------------------------+

//| Custom indicator initialization function |

//+------------------------------------------------------------------+


string TimeSave1[100][2], TimeSave2[100][2];

double A[], B[];

double Number_of_extremum[];

extern string Currency = "EURUSD";


+------------------------------------------------------------------+

//| Custom indicator iteration function |

//+------------------------------------------------------------------+

int start()

{

int counted_bars=IndicatorCounted();

//----

int k;

k=0;

double date;

int status;

for(int shift = 0; shift <= Bars-1; shift++)

{

date = iCustom(NULL, 0, "ZigZag", 12, 5, 3, 0, shift);

//----------------------------------------------------

if(date > 0)

{

TimeSave1[k][0]=TimeToStr(Time[shift]);

TimeSave1[k][1]=date;

k++;

}

}

//====================================================

for (int u=1;u<=k;u++)

{

if (StrToDouble(TimeSave1[u][1])<=StrToDouble(TimeSave1[u-1][1]))

{

Number_of_extremum[u]=1;// значит под номером u - нашли min

}

else

if (StrToDouble(TimeSave1[u][1])>=StrToDouble(TimeSave1[u-1][1]))

{

Number_of_extremum[u]=2;// значит под номером u - нашли max

}

}

//====================================================

for (int j=1;j<10;j++)

{

Alert("время== ",TimeSave1[j][0], " значение== ", TimeSave1[j][1], " max/min== ", Number_of_extremum[j]);

}

//----

return(0);

}

//+------------------------------------------------------------------+

ve başka bir açıklama:

mql cinsinden tarih ve saatler nasıl karşılaştırılır (örneğin, ZZ'nin hangi köşesinin daha önce oluştuğunu belirlemem gerekiyor - bunun için oluşum zamanlarını karşılaştırmam gerekiyor ...)

datetime esasen bir int , 1970'den bar saatine kadar olan saniye sayısını içerir. Daha fazlasını/azını kontrol ediyorum - çalışıyor...
Gerisini izlemedim - yeni geldim...
 

Arkadaşlar soru:


Bu sorunla karşılaştı:

gösterge, Uyarı yoluyla bazı bilgileri görüntüler.

ancak, yavaş yavaş, Alert 'a...'nın çıktı alanında çok fazla "badyagi" birikir.

Gösterge yeniden başlatıldığında Uyarıdaki tüm eski girişleri temizlemek mümkün müdür?


Şimdiden çok teşekkür ederim.

not

yorum, plz, yazım biraz erken (neden 1 ve 2 yerine sıfır değerler görüntüleniyor)

 

forumda buldum...

soru - sipariş yorumunu değiştirmek mümkün mü? Peki, OrderSend() işlemi sırasında olduğu gibi, yoruma "OrderNotModify" değerini giriyorum ve bu siparişle başka bir işlem gerçekleştirirken, örneğin kısmi kapatma, OrderComment'ı "OrderIsModify" olarak değiştiriyorum... veya olumsuzluk?

 
Morzh09 :

Bana neyin yanlış olduğunu söyle:

Dizi 0'dan doldurulur ve burada 0. dizin atlanır ve 1.'den doldururuz ve

 for ( int u= 1 ;u<=k;u++) // k при старте =0, u <= k не будет, считать счетчику незачем

{

if (StrToDouble(TimeSave1[u][ 1 ])<=StrToDouble(TimeSave1[u- 1 ][ 1 ])) // выражение при старте всегда [1][1]<=[0][1]

{

Number_of_extremum[u]= 1 ; // значит под номером u - нашли min

}

else

if (StrToDouble(TimeSave1[u][ 1 ])>=StrToDouble(TimeSave1[u- 1 ][ 1 ])) // значит, всегда срабатывает [1][1]>=[0][1]

{

Number_of_extremum[u]= 2 ; // значит под номером u - нашли max

}

}
 
Abzasc :

Dizi 0'dan doldurulur ve burada 0. dizin atlanır ve 1.'den doldururuz ve

Yorumunuzu pek anlamadım.

1) k - başlangıçta - sıfıra eşit değil! k = belirli bir tarih derinliğinde bulduğumuz ZigZag köşelerinin sayısı!

2) " , [1][1]>=[0][1] " anlamına gelir - her zaman çalışır - neden her zaman çalışır? TimeSave1 dizisinin önceki elemanı > sonraki elemanı ise, çalışmayacaktır.

Tekrar et, plz, söylemek istediğini.

 
Morzh09 :

Yorumunuzu pek anlamadım.

1) k - başlangıçta - sıfıra eşit değil! k = tarihin belirli bir derinliğinde bulduğumuz ZigZag köşelerinin sayısı!

2) " , [1][1]>=[0][1] " anlamına gelir - her zaman çalışır - neden her zaman çalışır? TimeSave1 dizisinin önceki elemanı > sonraki elemanı ise, çalışmayacaktır.

Tekrar et, plz, söylemek istediğini.

k ile açıktır. anlamadığım bu

 for ( int u= 1 ;u<=k;u++) // на первом шаге счетчик присваивает u = 1

{

if (StrToDouble(TimeSave1[u][ 1 ])<=StrToDouble(TimeSave1[u- 1 ][ 1 ])) // здесь, значит[u=1][1]<=[(u=1)-1][1]
// т. е. 1<=0, вы же от 1 еще 1 отнимаете

{

sağ tarafta

 
Michelangelo :

sipariş yorumunu değiştirmek mümkün mü?

Yalnızca Siparişte Değiştir bilet fiyat kaybı durdurmak kar almak son ok_renk

Hayır gibi görünüyor.

 

yani... sıcak görünüyor... ve benim derleyicimi de etkiliyor :)

bak, max/min ZigZag'ın oluşum tarihini ve bu max/min değerini içeren diziyi gözden geçirmem gerekiyor.

Aslında, ZZ'nin köşelerinden hangisinin minimum, hangisinin maksimum olduğunu anlamam gerekiyor.

Bunu yapmak için sonraki 33 köşeyi bir öncekiyle karşılaştırırım.

bir sonraki daha büyükse, o zaman en üsttedir.

daha az ise, o zaman bir oyuktur.

üst veya alt olmasına bağlı olarak, sırasıyla başka bir dizinin öğesine 1 veya 2 ekleriz.

Aynı zamanda merak ediliyor, NEREDE HATA OLABİLİR !!!!

Dosyalar:
 
Buraya bir yay ile gideceğim - her neyse, zaten tüm hesap makinemi kırdım ... :)
Bilinen iki değere dayalı olarak fiba seviyelerini hesaplayabilmek istiyorum:
Sıfır fib seviyesi 1.2807 fiyatına, 23.6 seviyesi 1.2838'e karşılık gelir.

Diğer 38.2, 50.0, 61.5, 100.0 seviyelerini ve bunların hangi fiyatlara karşılık geldiğini bulmak gerekir.

İlkeleri anlamak için 1.2807 ile 1.2838 arasında o kadar net olmayan, hiç bir ilişki bile bulamadım.
diğer tüm değerleri arayın.

Biri bana söylesin... :)

 
IgorM :
Birisi göstergeyle eski zaman diliminde barın açılış saatini daha genç zaman diliminde görmek için, ne kadar ilginç olduğunu değil, çubuğun başladığı ve nerede bittiği çizelgede işaretler çizmek için tanıştı.
#property indicator_chart_window
#property link      "IgorM"

extern int num    = 10 ;
extern color line = White ;
int init()
{ return ( 0 );
}
  
void clear(){
   for ( int i= ObjectsTotal ()- 1 ; i>= 0 ;i--) {
      string name = ObjectName (i);
      if ( StringFind (name, "timeH1_" ) !=- 1 ) ObjectDelete (name);
    }
}

int deinit(){
clear();
return ( 0 );
}

int start()
{   
   int counted_bars = IndicatorCounted();
   if (counted_bars < 0 )   return (- 1 );
   clear();
   for ( int i= 0 ;i<=num;i++){ 
      string name = "timeH1_" +TimeToStr(Time[i],TIME_DATE|TIME_MINUTES);
      ObjectCreate (name, OBJ_VLINE , 0 ,iTime( NULL , PERIOD_H1 ,i), 0 );
      ObjectSet(name, OBJPROP_COLOR ,line);
      ObjectSet(name, OBJPROP_STYLE , STYLE_DOT );
    }
return ( 0 );
}

muhtemelen öyle, kod optimize edilmedi, ancak istediğimizi çiziyor