[ARŞİV!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 4. - sayfa 133
Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
win_idx - doğru mu?
win_ind doğru.
ObjectCreate("maks",OBJ_HLINE,win_idx,0,üst); istenilen pencerede çizer,
ObjectSet("maks",OBJPROP_COLOR,Sarı); doğru renkle boya
ObjectSet("maks",OBJPROP_WIDTH,0); doğru çizgiyi çizer
ancak en üstteki parametreyi tanımlamaz
double top=WindowPriceMax(win_idx);
ve topBuffer[] boş.
kod
#özellik göstergesi_separate_window
#özellik göstergesi_tamponları 3
#özellik göstergesi_color1 Kireç
#özellik göstergesi_renk2 Kırmızı
//--- arabellekler
çift ExtMapBuffer1[];
çift ExtMapBuffer2[];
double topBuffer[];
bool initFinished=false; // başlatma durumunu hatırlayacak bir değişken ekleyin.
// false - henüz başlatma yok
// doğru - oldu
//+------------------------------------------- --------------------+
//| özel gösterge başlatma işlevi |
//+------------------------------------------- --------------------+
int init()
{
//---- göstergeler
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,ExtMapBuffer1);
SetIndexStyle(1,DRAW_LINE);
SetIndexBuffer(1,ExtMapBuffer2);
SetIndexStyle(2,DRAW_NONE);
SetIndexBuffer(2,topBuffer);
göstergeDigits(5);
//----
dönüş(0);
}
//+------------------------------------------- --------------------+
//| özel gösterge sıfırlama işlevi |
//+------------------------------------------- --------------------+
int tanım()
{
//----
//----
dönüş(0);
}
//+------------------------------------------- --------------------+
//| özel gösterge yineleme işlevi |
//+------------------------------------------- --------------------+
int başlangıç()
{
int counted_bars=IndicatorCounted(),
sınır;
if(counted_bars>0)
counted_bars--;
limit=bars-counted_bars;
//----
for(int i=0;i<limit;i++)
{
ExtMapBuffer1[i]=iMACD(0,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i);
ExtMapBuffer2[i]=iMACD(0,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,i);
if(initFinished==yanlış)
{
GöstergeShortName("MACD_max-min");
int win_idx=WindowFind("MACD_max-min");
// göstergemizin alt pencere numarasını bulun
if(win_idx<0)
{
// alt pencere numarası -1 ise, bir hata oluştu
Print("Pencere bulunamadı");
dönüş(0);
}
double top=WindowPriceMax(win_idx);
//geçerli grafiğin belirtilen alt penceresinin dikey ölçeğinin maksimum değerini bulun
ObjectCreate("maks",OBJ_HLINE,win_idx,0,üst);
// gösterge alt penceremizde yatay bir çizgi çizin
ObjectSet("maks",OBJPROP_COLOR,Sarı);
ObjectSet("maks",OBJPROP_WIDTH,0);
WindowRedraw();
// çizgiyi görmek için pencereyi yeniden çiz
initFinished=true;
// çizim bitti
}
topBuffer[i]=üst;
}
//----
dönüş(0);
}
//+------------------------------------------- --------------------+
win_ind doğru.
ObjectCreate("maks",OBJ_HLINE,win_idx,0,üst); istenilen pencerede çizer,
ObjectSet("maks",OBJPROP_COLOR,Sarı); doğru renkle boya
ObjectSet("maks",OBJPROP_WIDTH,0); doğru çizgiyi çizer
ancak en üstteki parametreyi tanımlamaz
double top=WindowPriceMax(win_idx);
ve topBuffer[] boş.
kod
#özellik göstergesi_separate_window
#özellik göstergesi_tamponları 3
#özellik göstergesi_color1 Kireç
#özellik göstergesi_renk2 Kırmızı
//--- arabellekler
çift ExtMapBuffer1[];
çift ExtMapBuffer2[];
double topBuffer[];
bool initFinished=false; // başlatma durumunu hatırlayacak bir değişken ekleyin.
// false - henüz başlatma yok
// doğru - oldu
//+------------------------------------------- --------------------+
//| özel gösterge başlatma işlevi |
//+------------------------------------------- --------------------+
int init()
{
//---- göstergeler
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,ExtMapBuffer1);
SetIndexStyle(1,DRAW_LINE);
SetIndexBuffer(1,ExtMapBuffer2);
SetIndexStyle(2,DRAW_NONE);
SetIndexBuffer(2,topBuffer);
göstergeDigits(5);
//----
dönüş(0);
}
//+------------------------------------------- --------------------+
//| özel gösterge sıfırlama işlevi |
//+------------------------------------------- --------------------+
int tanım()
{
//----
//----
dönüş(0);
}
//+------------------------------------------- --------------------+
//| özel gösterge yineleme işlevi |
//+------------------------------------------- --------------------+
int başlangıç()
{
int counted_bars=IndicatorCounted(),
sınır;
if(counted_bars>0)
counted_bars--;
limit=bars-counted_bars;
//----
for(int i=0;i<limit;i++)
{
ExtMapBuffer1[i]=iMACD(0,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i);
ExtMapBuffer2[i]=iMACD(0,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,i);
if(initFinished==yanlış)
{
GöstergeShortName("MACD_max-min");
int win_idx=WindowFind("MACD_max-min");
// göstergemizin alt pencere numarasını bulun
if(win_idx<0)
{
// alt pencere numarası -1 ise, bir hata oluştu
Print("Pencere bulunamadı");
dönüş(0);
}
double top=WindowPriceMax(win_idx);
//geçerli grafiğin belirtilen alt penceresinin dikey ölçeğinin maksimum değerini bulun
ObjectCreate("maks",OBJ_HLINE,win_idx,0,üst);
// gösterge alt penceremizde yatay bir çizgi çizin
ObjectSet("maks",OBJPROP_COLOR,Sarı);
ObjectSet("maks",OBJPROP_WIDTH,0);
WindowRedraw();
// çizgiyi görmek için pencereyi yeniden çiz
initFinished=true;
// çizim bitti
}
topBuffer[i]=üst;
}
//----
dönüş(0);
}
//+------------------------------------------- --------------------+
müdahale ettiğim için özür dilerim
topBuffer[i] döngü ve çizim için şunu deneyin:
Merhaba !
pzhl'yi doğru yolda itin:
Aynı türden N tane dış değişken verilmiştir. Kodu karıştırmadan bunlardan maksimum değer nasıl seçilir - MathMax maksimum iki değer döndürür ve varsa, diyelim ki 20 ?
Veya bu verilerden nasıl bir dizi oluşturulur, o zaman ArrayMaximum ne uygulanır ?
extern int A = 10;
extern int .......;
extern int N = 1253;
şimdiden teşekkürler !
https://docs.mql4.com/en/array/ArrayMaximum
int ArrayMaximum(çift dizi[], int sayı=BÜTÜN_ARRAY, int başlangıç=0)Maksimum değere sahip öğeyi arayın. İşlev, dizideki maksimum öğenin konumunu döndürür.
Seçenekler:
dizi[] - Aranacak sayısal dizi.
count - Aranacak öğe sayısı.
start - Aranacak başlangıç dizini.
double num_array[15]={4,1,6,3,9,4,1,6,3,9,4,1,6,3,9};
int maxValueIdx=ArrayMaximum(sayı_dizi);
Print("Maks değer = ", num_array[maxValueIdx]);
Ama, formda
int Max [N] = {A,.....,N};
dizi oluşturulmaz.
Burada: A,......N - aynı türden değişkenler verilir. Değişken sayısı = N
Harici değişkenlerden (komut dosyası) bir dize dizisi oluşturmaya bir örnek:
Harici değişkenlerden (komut dosyası) bir dize dizisi oluşturmaya bir örnek:
Teşekkür ederim !
Çalıştı, ancak bir değişiklikle: yerine
int init(){sym[1]=sym1;............
böyle yap
int init(){sym[0]=sym1;.......
ve sonra tüm unsurlar dikkate alınır.
müdahale ettiğim için özür dilerim
topBuffer[i] döngü ve çizim için şunu deneyin: