![MQL5 - MetaTrader 5 müşteri terminalinde yerleşik ticaret stratejileri dili](https://c.mql5.com/i/registerlandings/logo-2.png)
Ticaret fırsatlarını kaçırıyorsunuz:
- Ücretsiz ticaret 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
Hepinize merhaba,
Grafiğin zamanına göre para biriminin gücünü göstermek için bir para birimi gücü ölçeri değiştirmeye çalışıyorum. Şu anda kullanılan kod şudur:
aLow = MarketInfo(mySymbol,MODE_LOW); // set a low today
aBid = MarketInfo(mySymbol,MODE_BID); // set a last bid
aAsk = MarketInfo(mySymbol,MODE_ASK);MODE_HIGH ve MODE_LOW'un mevcut günlerin en yüksek ve en düşük seviyesini aldığını anlıyorum. Bunun yerine mevcut zaman çerçevesinin en yüksek ve en düşük değerlerini nasıl alabilirim?
Teşekkürler!
Not Ben bir programcı değilim, bu yüzden lütfen küçük kelimeler kullanın :)MarketInfo() kullanmak zorunda değilsiniz. Mevcut Yüksek'i almak istiyorsanız, Yüksek[0] ve Düşük[n], Kapat[n], Aç[n]'ı kullanın. 'n', geçerli çubuktan ofseti belirtir. Örneğin, çubuğun Yüksek değerini akımdan önce almak için, akım 0 olduğundan ve çubuktan önceki çubuk, akımdan 1 ofsetine sahip olduğundan Yüksek[1] kullanabilirsiniz.
Grafikte görüntülediğiniz dışındaki diğer zaman dilimlerinin Yüksek, Düşük, Açılış ve Kapanışlarını kontrol etmek için iHigh(), iLow(), iClose() ve iOpen işlevlerini kullanabilirsiniz.
Aşağıdaki örnek kullanım.
double high_of_gbpusd_4hours_current = iHigh("gbpusd", period_h4, 0);
Teşekkürler! Siz harikasınız!
Sanırım hemen hemen işe yarıyor (emin değilim??), Ama nedense dizi, meşru değerlerle birlikte birçok '0' değeriyle doluyor.
Bunu şöyle yapardım:
#define TICKET 0
#define PRICES 1
double ResumeArray[0,2];
int CheckForResume()
{
ResumeCheck = TimeLocal()+(PERIOD_M1*60)*5;
bool success = false;
int k;
for (int i = 0; i<OrdersTotal();i++)
{
if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES))continue;
if (OrderType() > OP_SELL || OrderProfit()> Cutoff)continue;
int arraycount=ArrayRange(ResumeArray,TICKET);
bool found = false;
for (k=arraycount-1; k>=0; k--)
{
if (ResumeArray[k,TICKET] == OrderTicket())
{
found = true;
if (ResumeArray[k,PRICES] + Cutoff < OrderProfit())break;
else
{
success=true;
Print ("ELSE");
ResumeArray[k,PRICES] = OrderProfit();
break;
}
}
}
if (found == false)
{
arraycount = ArrayResize(ResumeArray,arraycount+1)/2;
ResumeArray[arraycount-1,TICKET] = OrderTicket();
ResumeArray[arraycount-1,PRICES] = OrderProfit();
success=true;
}
}
if(success)return (1);
else return(0);
}
TICKET ve PRICES tanımlarını kullanmanıza gerek yok, sadece 2 boyutlu bir dizinin nasıl çalıştığını göstermek için ekledim. TICKET ve PRICES'ın tüm oluşumlarını sırasıyla 0 ve 1 ile değiştirin.
'For' döngüsündeki 'return' komutlarını 'break' ile değiştirdim, böylece tüm açık siparişler işlenecek.
Unutulmaması gereken bir şey, kapalı siparişlerin diziden hiçbir zaman kaldırılmamasıdır , bu nedenle boyut olarak büyümeye devam edecek ve platformunuzu yavaşlatacaktır.
d4v3
Bar geçmişi sınırı
Birisi bu RenkoLiveChart_v3.2 betiğine çubuk sınırı seçeneği ekleyebilirse çok minnettar olurum.
Çok fazla bilgisayar kaynağı gerektirir.
Temel Uyarı EA
................[çözüldü] ................................
gürültü azaltma
herkese merhaba - Bir ticarette gürültüyü sınırlamanın ve daha hızlı bir kesinti yapmanın bir yolunu arıyordum
Fikir aslında oldukça basit![](https://c.mql5.com/forextsd/forum/71/cutoff.jpg)
gürültü bu resimde gösterilmektedir, dinamik anlamı piyasa koşullarına uyacak şekilde değişmeye devam ediyor
İşte kapanış için yaptığım bazı kodlar, eğer biri onu kullanmak isterse, sadece içine bazı çarpanların eklenmesi gerekiyor.
int Trades = ScanTrades(0,0);
if (İşlemler == 0) TS1 = 0;
if ((ScanTrades(2,0) > 0) && (kâr < 0)) TS= ((MarketInfo(Symbol(),MODE_BID)) + gürültü + Kayma);
if ((ScanTrades(2,0) > 0) && (kâr > 0)) TS= ((MarketInfo(Symbol(),MODE_BID)) + gürültü );
if ((ScanTrades(1,0) > 0) && (kâr < 0)) TS= ((MarketInfo(Symbol(),MODE_BID)) - gürültü - Kayma);
if ((ScanTrades(1,0) > 0) && (kâr > 0)) TS= ((MarketInfo(Symbol(),MODE_BID)) - gürültü );
//kısa boylu
if ((ScanTrades(2,0) > 0)&& (TS1 ==0 )) TS1 = TS;
if ((ScanTrades(2,0) > 0)&& (TS < TS1)) TS1 = TS;
if ((ScanTrades(2,0) > 0) && (MarketInfo(Symbol(),MODE_BID) > TS1)) CloseOrder(2);
//uzun
if ((ScanTrades(1,0) > 0)&& (TS1 ==0 )) TS1 = TS;
if ((ScanTrades(1,0) > 0)&& (TS > TS1)) TS1 = TS;
if ((ScanTrades(1,0) > 0) && (MarketInfo(Symbol(),MODE_BID) < TS1)) CloseOrder(1);
Bir çubuk grafikten mevcut ve önceki en yüksek ve en düşük değerleri almanın en iyi yolu ne olurdu. "Gürültü" değişkenini yaratmam gerekiyor
Bunu denedim ama isabet ve ıskalama t1 ve l1 bazen 0 en iç karartıcı, çünkü böyle bir şey varsa, tüm ea'nın "bitmiş" olması arasında duran her şey.
double ll2=Düşük;
çift hh3=Yüksek;
double ll3=Düşük;
çift t1,l1,gürültü;
//noise = önceki çubukların çakışması
if ((hh2 - hh3) > 0 ) t1 =(hh3); // temelde iki yükseliş arasındaki en düşük "yüksek" çubuğu seçmek
eğer ((hh3- hh2) > 0 ) t1=(hh2); //düşüş
if ((ll2 - ll3) > 0 ) l1 =(ll2); // en yüksek düşük çubuk yükselişini seçmek
if ((ll3-ll2) > 0 ) l1=(ll3); //düşüş
gürültü =(t1-l1);
Print("t1 = ",t1,"; l1 = ",l1);print'in tipik sonuçları t1=0 l1=94.3 en can sıkıcı, çünkü hh2 ve hh3 == ne yapacağımı bilmiyorum sadece kodumda bir sorun göremiyorum.
kim bana yardım edebilir ?
biri bana 3 tanıdık göstergeye dayanan yeni bir göstergenin nasıl yapıldığını gösterebilir mi? Çok güçlü al/sat sinyalleri gösteren 3 göstergeye dayalı bir strateji yapıyorum ama 1 gösterge oluşturmak istiyorum...
ea değişiklik lütfen
Lütfen bu üründe aşağıdaki değişiklikleri uygulamama yardım edin
1) saat içinde ekleyin
A) 33,0.5,0.5 ayarlarına sahip fisher_ 11 göstergesi
B) tcf düzleştirilmiş gösterge ayarları 17, 8, 0.7
c) Ayrıca dinap _basic göstergesinin sinyal yönüne karşı çekim yaptığında işlemlere izin vermemesini istiyorum, yani yukarı çekiyorsa, alım sinyallerine izin VERİLMEZ, düşerse satış sinyallerine izin VERMEZ.
2) 15 dakika içinde ekleyin
A) süper trend göstergesi
B) Trendlord göstergesi
para yönetimi
1) Her biri hesap toplamının ( %1,5) %3 stop zararında 2 işlem açın
2) Biri 80 pipte kar alır veya %2,2 ve ikincisi %3,8 kar alır
3) Ardışık 4 kayıptan sonra beşinci işlem için çift lot boyutu, ardından iki ardışık kazanç ve varsayılan lot boyutuna geri dönene kadar sonraki işlemler için doğrusal lot artışı.
4) 12piplik takip eden stop (tüm işlemler için eski mum atrstops_v1 göstergesinin satın alınması için yukarıda ve satış için aşağıda.
hepsi bu lütfen yardım edin
Bir satır kodla tamamen aynı şeyi başarabilirdiniz.
GlobalVariableSet("TRENDSET_"+Symbol());
Daha da benzersiz hale getirmek için zaman çerçevesini de ekleyebilirsiniz.
Dürüst olmak gerekirse, gönderinizin amacının ne olduğundan tam olarak emin değilim.
Saygılarımızla
Lüks
iCustom kullanarak H1'den değer nasıl çağırılır?
Merhaba,
Çok basit bir gösterge kodlamaya çalışıyorum ama H1'den Laguerre değerini çağıramıyorum.
yapmak istediğim şey :
1M TF'yi kullanma
al sinyali : Laguerre 0.15 seviye yukarıyı geçiyor ve Laguerre H1 > 0.75
sat sinyali : Laguerre 0.75 seviyesini baş aşağı geçiyor ve Laguerre H1 < 0.15
basit çarpı için gösterge yaptım ve işe yarıyor, sorun Laguerre H1'den değeri kontrol etmeye çalıştığımda: bu bir karmaşa!
2 yol denedim:
Birincisi:
#property indicator_buffers 2
#property indicator_color1 SeaGreen
#property indicator_color2 Red
#property indicator_width1 3
#property indicator_width2 3
double CrossUp[];
double CrossDown[];
extern bool SoundON=true;
double alertTag;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
SetIndexStyle(0, DRAW_ARROW, EMPTY,3);
SetIndexArrow(0, 233);
SetIndexBuffer(0, CrossUp);
SetIndexStyle(1, DRAW_ARROW, EMPTY,3);
SetIndexArrow(1, 234);
SetIndexBuffer(1, CrossDown);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start() {
int limit, i;
int counted_bars=IndicatorCounted();
//---- check for possible errors
if(counted_bars<0) return(-1);
//---- last counted bar will be recounted
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
for(i = 0; i <= limit; i++) {
if ( (iCustom(NULL,0,"Laguerre",0.66,9500,0,i) > 0.15) && (iCustom(NULL,0,"Laguerre",0.66,9500,0,i+1) < 0.15)
&& (iCustom(Symbol(),PERIOD_H1,"Laguerre",0.66,9500,0,i) > 0.75) ) //check for buy signal
{
CrossUp = Close;
}
else if ( (iCustom(NULL,0,"Laguerre",0.66,9500,0,i) 0.75)
&& (iCustom(Symbol(),PERIOD_H1,"Laguerre",0.66,9500,0,i) < 0.15) ) //check for sell signal
{
CrossDown = Close;
}
if (SoundON==true && i==1 && CrossUp > CrossDown && alertTag!=Time[0]){
Alert("SHORT signal on ",Symbol()," ",Period());
alertTag = Time[0];
}
if (SoundON==true && i==1 && CrossUp < CrossDown && alertTag!=Time[0]){
Alert("Long Signal on ",Symbol()," ",Period());
alertTag = Time[0];
}
}
return(0);
}[/CODE]
second one:
[CODE]//+------------------------------------------------------------------+
//| Shift.mq4 |
//| me |
//|
//+------------------------------------------------------------------+
#property copyright "me"
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Lime
#property indicator_color2 Red
#property indicator_width1 4
#property indicator_width2 4
//---- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
bool Fact_Up = true; // Fact of report that market..
bool Fact_Dn = true; //..is bullish or bearish
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
SetIndexStyle(0,DRAW_ARROW);
SetIndexArrow(0,241);
SetIndexBuffer(0,ExtMapBuffer1);
SetIndexEmptyValue(0,0.0);
SetIndexStyle(1,DRAW_ARROW);
SetIndexArrow(1,242);
SetIndexBuffer(1,ExtMapBuffer2);
SetIndexEmptyValue(1,0.0);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
//int limit;
int counted_bars=IndicatorCounted();
//---- last counted bar will be recounted
if(counted_bars>0) counted_bars--;
if(counted_bars<0) return(-1);
//limit=Bars-counted_bars;
//----
double MA; // MA value on 0 bar
double MA2;
double MA3;
double MA4;
//--------------------------------------------------------------------
double value1, value2, value3;
for (int i=Bars-1;i>=0;i--)
//---- main loop
//for(int i=0; i<limit; i++)
{value1=0.0;
value2=0.0;
value3=0.0;
//--------------------------------------------------------------------
// Checking if bullish
if( (iCustom(Symbol(),NULL,"Laguerre",0,i) > 0.15) && (iCustom(Symbol(),NULL,"Laguerre",0,i+1) < 0.15) && Fact_Up == true
&& (iCustom(Symbol(),PERIOD_H1,"Laguerre",0,i) > 0.75) )
{
Fact_Dn = true; // Report about bullish market
Fact_Up = false; // Don't report bullish market
// Alert("BUY SIGNAL.");
value1=Open;
}
//--------------------------------------------------------------------
// Checking if bearish
if( (iCustom(Symbol(),NULL,"Laguerre",0,i) 0.75) && Fact_Dn == true
&& (iCustom(Symbol(),PERIOD_H1,"Laguerre",0,i) < 0.15) )
{
Fact_Up = true; // Report about bearish market
Fact_Dn = false; // Don't report bearish market
// Alert("SELL SIGNAL.");
value2=Open;
}
ExtMapBuffer1=value1;
ExtMapBuffer2=value2;
}
//----
return(0);
}
//+------------------------------------------------------------------+ikisi de çalışmıyor, sorun KIRMIZI çizgi, KIRMIZI çizgi olmadan mükemmel çalışıyor .
denedim (iCustom(Symbol(),PERIOD_H1,"Laguerre",0, i ) < .....)
(iCustom(Symbol(),PERIOD_H1,"Laguerre",0, 0 ) < ....)
(iCustom(Symbol(),60,"Laguerre",0, i ) < ....)
(iCustom(Symbol(),60,"Laguerre",0, 0 ) < .....)
Değişkenlerle de denedim: (iCustom(Symbol(),PERIOD_H1,"Laguer re", 0.66,9500 ,0,i)
eğer koyarsam:
Print(iCustom(Symbol(),60,"Laguerre ",0, ben )); "eğer"den önce rastgele sayı döndürür...
ancak şununla birlikte: Print(iCustom(Symbol(),60,"Laguerre ",0, 0 )); H1'den iyi değeri döndürür
şimdi iCustom (Symbol(),60,"Laguerre",0, 0 ); kullanırsam sorun aynı kalır; "eğer" içinde çalışmıyor ...
sorun "for" ve "i" ve iCustom "shift" değeriyle ilgili ancak çözemiyorum.
yardımın çok memnuniyetle karşılanacaktır!
Denemek isterseniz kullandığım Laguerre göstergesini ekledim.
eğer birisi onu sıfırdan yeniden kodlamaya hazırsa lütfen tereddüt etmeyin
beni deli ediyor...