[ARŞİV] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 3. - sayfa 303
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
Örneğin açılış saatinin bir dosyasına yazmak gibi birçok seçenek vardır, ancak açık siparişler arasında gezinmek ve kullanım süresini karşılaştırmak daha kolaydır.
Ve genel olarak, her bir pozisyon için (soruyu anladığım gibi) "belirli bir süre sonra tüm açık pozisyonları kapatmak gerekir" ifadesini yeniden ifade edin.
Betik, testçinin zamanını o kadar kolay bulamaz (ancak göstergeyi bulacaktır), başlangıca bir test danışmanı ekleyebilirsiniz.
hızlı ve güvenilir...
Bir başlatıcı yazmaya çalışıyorum. Neden yeniden çizildiğini anlamıyorum. Ayrıca, yalnızca render üzerinde çizim yapar. Bana yardım et lütfen. Programlamada acemiyim.
#özellik göstergesi_chart_window
#özellik göstergesi_tamponları 2
#özellik göstergesi_color1 Macenta
#özellik göstergesi_renk2 Kırmızı
//---- giriş parametreleri
harici intN;
tarihsaat bazı_zaman=D'1971.01.11 00:00';
datetime some_time_1=D'1971.01.11 00:00';
//---- arabellekler
çift RLB_Buffer[];
çift RLB_Buffer_1[];
double Real_Line_Balance=0,x=0,last_high,last_low,RLB,Real_Line_Balance_1=0,x1=0,last_high_1,last_low_1,RLB_1;
bool dirlong, ilk;
int i,ii,bar_high,bar_low,first_t_bar,now_bar,first_t_bar_1,now_bar_1;
//+------------------------------------------- --------------------+
//| özel gösterge başlatma işlevi |
//+------------------------------------------- --------------------+
int init()
{
string kısa_adı;
//---- gösterge çizgisi
SetIndexStyle(0, DRAW_ARROW);
SetIndexArrow(0, 159);
SetIndexBuffer(0,RLB_Buffer);
//----;
SetIndexStyle(1, DRAW_ARROW);
SetIndexArrow(1, 159);
SetIndexBuffer(1,RLB_Buffer_1);
dönüş(0);
}
//+------------------------------------------- --------------------+
//| |
//+------------------------------------------- --------------------+
int başlangıç()
{
int counted_bars=IndicatorCounted();
Yorum(i," ",ii);
//----
if(çubuklar < 3)
dönüş(0);
//----------
first_t_bar=iBarShift(NULL,0,bir_zaman,yanlış); // yukarı trendin başlangıç çubuğu
now_bar=iBarShift(NULL,0,TimeCurrent(),false); //son çubuk, en sağdaki
i=counted_bars-first_t_bar+1;
//-----------
first_t_bar_1=iBarShift(NULL,0,some_time_1,false); // düşüş trendi başlatma çubuğu
now_bar_1=iBarShift(NULL,0,TimeCurrent(),false); //son çubuk, en sağdaki
ii=counted_bars-first_t_bar_1+1;
// if(IsVisualMode()==DOĞRU) i=first_t_bar-counted_bars-1; // görselleştirme varsa, trend başlatma çubuğu
if(sayılan_barlar == 0)
{
ilk = yanlış;
i=first_t_bar+1;
ii=first_t_bar_1+1;
}
//------------ //eksi hesaplanan çubuklar
dirlong=yanlış;
if(iMA(NULL,0,1,0,MODE_SMA,PRICE_MEDIAN,0)>iMA(NULL,0,2,0,MODE_SMA,PRICE_MEDIAN,0))dirlong = true;
if(dirlong == true) // trend yukarıysa
{
while(i>=0)
{
x++; // trendin başlangıcından itibaren bar sayacı
Real_Line_Balance=Kapat[i+5]; // trenddeki tümcelerin toplamının hesaplanması
RLB=Real_Line_Balance;
if(RLB<Düşük[1]) RLB_Buffer[i]=Real_Line_Balance; // satırı yalnızca fiyat en üstteyse göster
//-------
if(RLB>Kapat[i]&& x>50) //fiyat RLB'yi yukarıdan aşağıya geçerse
{
bar_high=iHighest(NULL,0,MODE_HIGH,first_t_bar,now_bar);//sonra arasında TOP'u tanımlarız
//son çubuk ve trend başlangıcı
some_time_1=Zaman[bar_high]; // düşüş trendinin yeni başlangıcı
x=0; // trendin başlangıcından itibaren bar sayacının sıfırlanması
Real_Line_Balance=0;
}
ben--;
}// süre
//-------
}//dirlong
//----------------------
//----------------------
if(dirlong == false) // trend aşağı ise
{
while(ii>=0)
{
x1++; // trendin başlangıcından itibaren bar sayacı
Real_Line_Balance_1=Kapat[ii+10]; // trenddeki tümcelerin toplamının hesaplanması
RLB_1=Real_Line_Balance_1;
if(RLB_1>Yüksek[1]) RLB_Buffer_1[ii]=Real_Line_Balance_1;
//-------
if(RLB_1<Close[ii]&& x1>50) //fiyat RLB'yi yukarıdan aşağıya geçerse
{
bar_low=iLowest(NULL,0,MODE_LOW,first_t_bar_1,now_bar_1);//sonra aradaki EN DÜŞÜK'ü belirleriz
//son çubuk ve trend başlangıcı
some_time=Zaman[bar_low]; // yükseliş trendinin yeni başlangıcı
x1=0; // trendin başlangıcından itibaren bar sayacının sıfırlanması
Real_Line_Balance_1=0;
}
ii--;
}// süre
//-------
}//dirlong
//----------------------
dönüş(0);
}
//+------------------------------------------- ------ ----------------------+
Saçmalık. Yerine
i=counted_bars-first_t_bar+1;
sayılan çubukları sayan bir tasarım koyun. HER ŞEY normal bir şekilde gitmeye başladı. GöstergeSayısı(); aksaklık ya da bir şeyi yakalayamıyorum ...
Bir değişkene kapalı bir siparişin durumu nasıl anlatılır?
Saçmalık. Yerine
i=counted_bars-first_t_bar+1;
sayılan çubukları sayan bir tasarım koyun. HER ŞEY normal bir şekilde gitmeye başladı. GöstergeSayısı(); aksaklık ya da bir şeyi yakalayamıyorum ...
while(i>=0) kullanırsınız, yani yeni bir mum çubuğu göründüğünde, i=1 (elbette, önceki mum çubuğunun verileri bir kez sabit verilere göre hesaplanır).
Neden bazı_zaman=D'1971.01.11 00:00'; Bars kullan , IndicatorCounted benim için sorunlu değil (peki, hata muhtemelen bu first_t_bar yüzünden) .
Algoritmanız ve onu tedavi ediyorsunuz.
" Programlamada yeniyim. " 2007'den beri))).
Bir değişkene kapalı bir siparişin durumu nasıl anlatılır?
:)
+ ...
Vitalyukha için:
https://docs.mql4.com/ru/trading/OrderStopLoss
https://docs.mql4.com/ru/trading/OrderTakeProfit
Sorun şudur - danışman siparişleri sürekli olarak yeniden açar, yani. satın almak için bir sinyal var - siparişi açar, sonra kârla kapatır ve koşullar hala korunur, tekrar açar. diğer sinyallerden sonra sadece açılması gerekir.
Alış ve takasların olağan sayacı yardımıyla ortadan kaldırılabileceğini düşündüm - eğer bir satın alma emri bir sayaç +1 açtıysa ve sayaç 0'dan büyükken yeni bir satın alma açılamıyorsa, sayaç sadece sıfırlanır. yerleştikten sonra. ama neden çalışmıyor nedenini çözemiyorum??? Mantığa bak, belki bir yerde yanılıyorum ?? mql metre tam olarak benzer bir sorunla karşı karşıya kaldı.