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
Herkese selam, Stocastic'te EA'mda bu özel hatayı yaşıyorum.
Bu benim kriterlerim şöyle:
stocEquator'um yukarı doğru kesiştiğinde (Uptrend), stocTrigger'ım yukarıya geçtiğinde ve stocEquator aşağı doğru kesiştiğinde (Downtrend) yalnızca long tetiklenir, stocTrigger aşağı geçtiğinde yalnızca kısa tetiklenir.
Ancak, test için EA'yı çalıştırdığımda, tetiklenen hiçbir işlem yok ve burada sorunun ne olabileceğini merak ediyordum ve birisi bana burada yardımcı olabilirse memnun olurum.
Yardım için şimdiden teşekkür ederim.
Saygılarımızla
teras
int isCrossedTrigger= 0;
double shortStoc1Trigger= iStochastic(NULL,0,3,5,7,MODE_SMA,0,MODE_MAIN,1);
double longStoc1Trigger = iStochastic(NULL,0,3,5,7,MODE_SMA,0,MODE_SIGNAL,1);
double shortStoc2Trigger= iStochastic(NULL,0,3,5,7,MODE_SMA,0,MODE_MAIN,2);
double longStoc2Trigger = iStochastic(NULL,0,3,5,7,MODE_SMA,0,MODE_SIGNAL,2);
double diff1Trigger= shortStoc1Trigger-longStoc1Trigger;
double diff2Trigger= shortStoc2Trigger-longStoc2Trigger;
if ((diff1Trigger*diff2Trigger)<0)
{
if (shortStoc1Trigger>uzunStoc1Trigger)
isCrossedTrigger= 1;
başka isCrossedTrigger= 2;
}
int isCrossedEquator = 0;
double shortStoc1Equator = iStochastic(NULL,0,10,100,20,MODE_SMA,0,MODE_MAIN,1);
double longStoc1Equator = iStochastic(NULL,0,10,100,20,MODE_SMA,0,MODE_SIGNAL,1);
double shortStoc2Equator = iStochastic(NULL,0,10,100,20,MODE_SMA,0,MODE_MAIN,2);
double longStoc2Equator = iStochastic(NULL,0,10,100,20,MODE_SMA,0,MODE_SIGNAL,2);
double diff1Equator = kısaStoc1Equator-uzunStoc1Equator;
double diff2Equator = kısaStoc2Equator-longStoc2Equator;
if ((diff1Equator*diff2Equator)<0)
{
if (kısaStoc1Equator>uzunStoc1Equator)
isCrossedEquator = 1;
başka isCrossedEquator = 2;
}
if(toplam < 2)
{
if(isCrossedTrigger== 1 && isCrossedEquator == 1)
{
Satın almak
}
if(isCrossedTrigger== 2 && isCrossedEquator == 2)
{
Satmak
}
dönüş(0);
}
dönüş(0);
Herkese selam, Stocastic'te EA'mda bu özel hatayı yaşıyorum.
Bu benim kriterlerim şöyle:
stocEquator'um yukarı doğru kesiştiğinde (Uptrend), stocTrigger'ım yukarıya geçtiğinde ve stocEquator aşağı doğru kesiştiğinde (Downtrend) yalnızca long tetiklenir, stocTrigger aşağı geçtiğinde yalnızca kısa tetiklenir.
Ancak, test için EA'yı çalıştırdığımda, tetiklenen hiçbir işlem yok ve burada sorunun ne olabileceğini merak ediyordum ve birisi bana burada yardımcı olabilirse memnun olurum.
Yardım için şimdiden teşekkür ederim.
Saygılarımızla
teras
int isCrossedTrigger= 0;
double shortStoc1Trigger= iStochastic(NULL,0,3,5,7,MODE_SMA,0,MODE_MAIN,1);
double longStoc1Trigger = iStochastic(NULL,0,3,5,7,MODE_SMA,0,MODE_SIGNAL,1);
double shortStoc2Trigger= iStochastic(NULL,0,3,5,7,MODE_SMA,0,MODE_MAIN,2);
double longStoc2Trigger = iStochastic(NULL,0,3,5,7,MODE_SMA,0,MODE_SIGNAL,2);
double diff1Trigger= shortStoc1Trigger-longStoc1Trigger;
double diff2Trigger= shortStoc2Trigger-longStoc2Trigger;
if ((diff1Trigger*diff2Trigger)<0)
{
if (shortStoc1Trigger>uzunStoc1Trigger)
isCrossedTrigger= 1;
başka isCrossedTrigger= 2;
}
int isCrossedEquator = 0;
double shortStoc1Equator = iStochastic(NULL,0,10,100,20,MODE_SMA,0,MODE_MAIN,1);
double longStoc1Equator = iStochastic(NULL,0,10,100,20,MODE_SMA,0,MODE_SIGNAL,1);
double shortStoc2Equator = iStochastic(NULL,0,10,100,20,MODE_SMA,0,MODE_MAIN,2);
double longStoc2Equator = iStochastic(NULL,0,10,100,20,MODE_SMA,0,MODE_SIGNAL,2);
double diff1Equator = kısaStoc1Equator-uzunStoc1Equator;
double diff2Equator = kısaStoc2Equator-longStoc2Equator;
if ((diff1Equator*diff2Equator)<0)
{
if (kısaStoc1Equator>uzunStoc1Equator)
isCrossedEquator = 1;
başka isCrossedEquator = 2;
}
if(toplam < 2)
{
if(isCrossedTrigger== 1 && isCrossedEquator == 1)
{
Satın almak
}
if(isCrossedTrigger== 2 && isCrossedEquator == 2)
{
Satmak
}
dönüş(0);
}
dönüş(0);teras
Kontrol edemediğim tek şey "toplam" değişkeni
Toplam değişken doğru ayarlanmışsa kod çalışmalıdır. İşte koşullarınızla kullandığım bir test göstergesi ve geçerli al ve sat sinyalleri yükseltiyor (göstergeyi görsel modda çalıştırın ve uyarı verdiğinde göreceksiniz) yani hata başka bir yerde
#property indicator_buffers 0
//------------------------------------------------------------------
//
//------------------------------------------------------------------
int init()
{
return(0);
}
//------------------------------------------------------------------
//
//------------------------------------------------------------------
int start()
{
int total = 0;
int isCrossedTrigger= 0;
double shortStoc1Trigger = iStochastic(NULL,0,3,5,7,MODE_SMA,0,MODE_MAIN,1);
double longStoc1Trigger = iStochastic(NULL,0,3,5,7,MODE_SMA,0,MODE_SIGNAL,1) ;
double shortStoc2Trigger = iStochastic(NULL,0,3,5,7,MODE_SMA,0,MODE_MAIN,2);
double longStoc2Trigger = iStochastic(NULL,0,3,5,7,MODE_SMA,0,MODE_SIGNAL,2) ;
double diff1Trigger = shortStoc1Trigger-longStoc1Trigger;
double diff2Trigger = shortStoc2Trigger-longStoc2Trigger;
if ((diff1Trigger*diff2Trigger)<0)
{
if (shortStoc1Trigger>longStoc1Trigger)
isCrossedTrigger= 1;
else isCrossedTrigger= 2;
}
int isCrossedEquator = 0;
double shortStoc1Equator = iStochastic(NULL,0,10,100,20,MODE_SMA,0,MODE_MAIN, 1);
double longStoc1Equator = iStochastic(NULL,0,10,100,20,MODE_SMA,0,MODE_SIGNAL,1);
double shortStoc2Equator = iStochastic(NULL,0,10,100,20,MODE_SMA,0,MODE_MAIN, 2);
double longStoc2Equator = iStochastic(NULL,0,10,100,20,MODE_SMA,0,MODE_SIGNAL,2);
double diff1Equator = shortStoc1Equator-longStoc1Equator;
double diff2Equator = shortStoc2Equator-longStoc2Equator;
if ((diff1Equator*diff2Equator)<0)
{
if (shortStoc1Equator>longStoc1Equator)
isCrossedEquator = 1;
else isCrossedEquator = 2;
}
//
//
//
//
//
if(total < 2)
{
if(isCrossedTrigger== 1 && isCrossedEquator == 1)
{
Alert("Buy at : "+TimeToStr(Time[0],TIME_DATE|TIME_SECONDS));
}
if(isCrossedTrigger== 2 && isCrossedEquator == 2)
{
Alert("Sell at : "+TimeToStr(Time[0],TIME_DATE|TIME_SECONDS));
}
}
return(0);
}Merhaba mladen, vurgu için teşekkürler. Geri dönüp kodlarıma baktım ve "toplam" değişkeni ile ne demek istediğinizi anlayamadım. Hatamın nedeni ne olabilir?
Saygılarımızla
teras
//+------------------------------------------- -------------------+
//| My_First_EA.mq4 |
//| TK|
//| MetaTrader 4 İşlem Platformu / MetaQuotes Software Corp. |
//+------------------------------------------- -------------------+
#özellik telif hakkı "TK"
#özellik bağlantısı "http://www.metaquotes.net"
//--- giriş parametreleri
harici çift TakeProfit=500.0;
dış çift Lot = 0.1;
harici çift StopLoss=500.0;
//+------------------------------------------- -------------------+
//| uzman başlatma işlevi |
//+------------------------------------------- -------------------+
int init()
{
//----
//----
dönüş(0);
}
//+------------------------------------------- -------------------+
//| uzman sıfırlama işlevi |
//+------------------------------------------- -------------------+
int tanım()
{
//----
//----
dönüş(0);
}
//+------------------------------------------- -------------------+
//| uzman başlatma işlevi |
//+------------------------------------------- -------------------+
tarihsaat yeni çubuğu;
int başlangıç()
{
if(newbar==Zaman[0])dönüş(0);
başka newbar=Zaman[0];
int bilet, toplam;
if(Çubuklar<100)
{
Print("100'den küçük barlar");
dönüş(0);
}
if(Kâr Al<10)
{
Print("Kar Al 10'dan az");
dönüş(0);
}
//+------------------------------------------- -------------------+
//| uzman başlatma işlevi | Stokastik Tetikleyici
//+------------------------------------------- -------------------+
// shortStoc = iStochastic(NULL,0,7,15,17,MODE_LWMA,0,MODE_MAIN,0); //orijinal Stok hareketi
// longStoc = iStochastic(NULL,0,7,15,17,MODE_LWMA,0,MODE_SIGNAL,0); //orijinal Stok hareketi
//+------------------------------------------- ------------------------------------------+
//| uzman başlatma işlevi | Tetikleme ticaretini yalnızca çizgi aşıldığında ve mum kapandığında ayarlayın |//
//+------------------------------------------- ------------------------------------------+
int Çapraz = 0;
double shortStoc1 = iStochastic(NULL,0,3,5,7,MODE_SMA,0,MODE_MAIN,1);
double longStoc1 = iStochastic(NULL,0,3,5,7,MODE_SMA,0,MODE_SIGNAL,1);
double shortStoc2 = iStochastic(NULL,0,3,5,7,MODE_SMA,0,MODE_MAIN,2);
double longStoc2 = iStochastic(NULL,0,3,5,7,MODE_SMA,0,MODE_SIGNAL,2);
çift fark1 = kısaStoc1-uzunStoc1;
çift fark2 = kısaStoc2-uzunStoc2;
eğer ((fark1*fark2)<0)
{
eğer (kısaStoc1>uzunStoc1)
çapraz = 1;
yoksa Çapraz = 2;
}
// Ekvator Stok Başlangıç -------------------------------------
int isCrossedEquator = 0;
double shortStoc1Equator = iStochastic(NULL,0,10,100,20,MODE_SMA,0,MODE_MAIN,1);
double longStoc1Equator = iStochastic(NULL,0,10,100,20,MODE_SMA,0,MODE_SIGNAL,1);
double shortStoc2Equator = iStochastic(NULL,0,10,100,20,MODE_SMA,0,MODE_MAIN,2);
double longStoc2Equator = iStochastic(NULL,0,10,100,20,MODE_SMA,0,MODE_SIGNAL,2);
double diff1Equator = kısaStoc1Equator-uzunStoc1Equator;
double diff2Equator = kısaStoc2Equator-longStoc2Equator;
if ((diff1Equator*diff2Equator)<0)
{
if (kısaStoc1Equator>uzunStoc1Equator)
isCrossedEquator = 1;
başka isCrossedEquator = 2;
}
// Ekvator Stok Sonu -------------------------------------
//+------------------------------------------- -------------------------------------+
//| uzman son işlevi | Tetikleme ticaretini yalnızca çizgi aşıldığında ve mum kapandığında ayarlayın |//
//+------------------------------------------- -------------------------------------+
//+------------------------------------------- -------------------+
//| uzman son işlevi | Stokastik Tetikleyici
//+------------------------------------------- -------------------+
//| uzman başlatma işlevi | Tetik sırası
//+------------------------------------------- -------------------------------------------------- -----------+
toplam = SiparişlerToplam();
if(toplam < 2) //açılan işlem sayısını sınırla
{
if(isCrossed == 1 && isCrossedEquator == 1)
{
bilet=SiparişGönder(Symbol(),OP_BUY,Lots,Sor,1,Ask-StopLoss*Puan,Sor+TakeProfit*Puan,
"EA'm",12345,0,Yeşil);
if(bilet>0)
{
if(OrderSelect(bilet,SELECT_BY_TICKET,MODE_TRADES))
Print("Satın alma emri açıldı : ",OrderOpenPrice());
}
else Print("SATIN AL emri açılırken hata oluştu : ",GetLastError());
dönüş(0);
}
if(isCrossed == 2 && isCrossedEquator == 2)
{
bilet=SiparişGönder(Symbol(),OP_SELL,Lots,Bid,1,Teklif+StopLoss*Puan,Teklif-AlKar*Puan,
"EA'm",12345,0,Kırmızı);
if(bilet>0)
{
if(OrderSelect(bilet,SELECT_BY_TICKET,MODE_TRADES))
Print("SAT emri açıldı : ",OrderOpenPrice());
}
else Print("SATIŞ emrini açarken hata: ",GetLastError());
dönüş(0);
}
dönüş(0);
}
dönüş(0);
}
//+------------------------------------------- -------------------+
//| uzman son işlevi |
//+------------------------------------------- -------------------+
teras
Kontrol edemediğim tek şey "toplam" değişkeni
Toplam değişken doğru ayarlanmışsa kod çalışmalıdır. İşte koşullarınızla kullandığım bir test göstergesi ve geçerli al ve sat sinyalleri yükseltiyor (göstergeyi görsel modda çalıştırın ve uyarı verdiğinde göreceksiniz) yani hata başka bir yerde
#property indicator_buffers 0
//------------------------------------------------------------------
//
//------------------------------------------------------------------
int init()
{
return(0);
}
//------------------------------------------------------------------
//
//------------------------------------------------------------------
int start()
{
int total = 0;
int isCrossedTrigger= 0;
double shortStoc1Trigger = iStochastic(NULL,0,3,5,7,MODE_SMA,0,MODE_MAIN,1);
double longStoc1Trigger = iStochastic(NULL,0,3,5,7,MODE_SMA,0,MODE_SIGNAL,1) ;
double shortStoc2Trigger = iStochastic(NULL,0,3,5,7,MODE_SMA,0,MODE_MAIN,2);
double longStoc2Trigger = iStochastic(NULL,0,3,5,7,MODE_SMA,0,MODE_SIGNAL,2) ;
double diff1Trigger = shortStoc1Trigger-longStoc1Trigger;
double diff2Trigger = shortStoc2Trigger-longStoc2Trigger;
if ((diff1Trigger*diff2Trigger)<0)
{
if (shortStoc1Trigger>longStoc1Trigger)
isCrossedTrigger= 1;
else isCrossedTrigger= 2;
}
int isCrossedEquator = 0;
double shortStoc1Equator = iStochastic(NULL,0,10,100,20,MODE_SMA,0,MODE_MAIN, 1);
double longStoc1Equator = iStochastic(NULL,0,10,100,20,MODE_SMA,0,MODE_SIGNAL,1);
double shortStoc2Equator = iStochastic(NULL,0,10,100,20,MODE_SMA,0,MODE_MAIN, 2);
double longStoc2Equator = iStochastic(NULL,0,10,100,20,MODE_SMA,0,MODE_SIGNAL,2);
double diff1Equator = shortStoc1Equator-longStoc1Equator;
double diff2Equator = shortStoc2Equator-longStoc2Equator;
if ((diff1Equator*diff2Equator)<0)
{
if (shortStoc1Equator>longStoc1Equator)
isCrossedEquator = 1;
else isCrossedEquator = 2;
}
//
//
//
//
//
if(total < 2)
{
if(isCrossedTrigger== 1 && isCrossedEquator == 1)
{
Alert("Buy at : "+TimeToStr(Time[0],TIME_DATE|TIME_SECONDS));
}
if(isCrossedTrigger== 2 && isCrossedEquator == 2)
{
Alert("Sell at : "+TimeToStr(Time[0],TIME_DATE|TIME_SECONDS));
}
}
return(0);
}Merhaba mladen, vurgu için teşekkürler. Geri dönüp kodlarıma baktım ve "toplam" değişkeni ile ne demek istediğinizi anlayamadım. Hatamın nedeni ne olabilir?
Saygılarımızla
teras
//+------------------------------------------- -------------------+
//| My_First_EA.mq4 |
//| TK|
//| MetaTrader 4 İşlem Platformu / MetaQuotes Software Corp. |
//+------------------------------------------- -------------------+
#özellik telif hakkı "TK"
#özellik bağlantısı "http://www.metaquotes.net"
//--- giriş parametreleri
harici çift TakeProfit=500.0;
dış çift Lot = 0.1;
harici çift StopLoss=500.0;
//+------------------------------------------- -------------------+
//| uzman başlatma işlevi |
//+------------------------------------------- -------------------+
int init()
{
//----
//----
dönüş(0);
}
//+------------------------------------------- -------------------+
//| uzman sıfırlama işlevi |
//+------------------------------------------- -------------------+
int tanım()
{
//----
//----
dönüş(0);
}
//+------------------------------------------- -------------------+
//| uzman başlatma işlevi |
//+------------------------------------------- -------------------+
tarihsaat yeni çubuğu;
int başlangıç()
{
if(newbar==Zaman[0])dönüş(0);
başka newbar=Zaman[0];
int bilet, toplam;
if(Çubuklar<100)
{
Print("100'den küçük barlar");
dönüş(0);
}
if(Kâr Al<10)
{
Print("Kar Al 10'dan az");
dönüş(0);
}
//+------------------------------------------- -------------------+
//| uzman başlatma işlevi | Stokastik Tetikleyici
//+------------------------------------------- -------------------+
// shortStoc = iStochastic(NULL,0,7,15,17,MODE_LWMA,0,MODE_MAIN,0); //orijinal Stok hareketi
// longStoc = iStochastic(NULL,0,7,15,17,MODE_LWMA,0,MODE_SIGNAL,0); //orijinal Stok hareketi
//+------------------------------------------- ------------------------------------------+
//| uzman başlatma işlevi | Tetikleme ticaretini yalnızca çizgi aşıldığında ve mum kapandığında ayarlayın |//
//+------------------------------------------- ------------------------------------------+
int Çapraz = 0;
double shortStoc1 = iStochastic(NULL,0,3,5,7,MODE_SMA,0,MODE_MAIN,1);
double longStoc1 = iStochastic(NULL,0,3,5,7,MODE_SMA,0,MODE_SIGNAL,1);
double shortStoc2 = iStochastic(NULL,0,3,5,7,MODE_SMA,0,MODE_MAIN,2);
double longStoc2 = iStochastic(NULL,0,3,5,7,MODE_SMA,0,MODE_SIGNAL,2);
çift fark1 = kısaStoc1-uzunStoc1;
çift fark2 = kısaStoc2-uzunStoc2;
eğer ((fark1*fark2)<0)
{
eğer (kısaStoc1>uzunStoc1)
çapraz = 1;
yoksa Çapraz = 2;
}
// Ekvator Stok Başlangıç -------------------------------------
int isCrossedEquator = 0;
double shortStoc1Equator = iStochastic(NULL,0,10,100,20,MODE_SMA,0,MODE_MAIN,1);
double longStoc1Equator = iStochastic(NULL,0,10,100,20,MODE_SMA,0,MODE_SIGNAL,1);
double shortStoc2Equator = iStochastic(NULL,0,10,100,20,MODE_SMA,0,MODE_MAIN,2);
double longStoc2Equator = iStochastic(NULL,0,10,100,20,MODE_SMA,0,MODE_SIGNAL,2);
double diff1Equator = kısaStoc1Equator-uzunStoc1Equator;
double diff2Equator = kısaStoc2Equator-longStoc2Equator;
if ((diff1Equator*diff2Equator)<0)
{
if (kısaStoc1Equator>uzunStoc1Equator)
isCrossedEquator = 1;
başka isCrossedEquator = 2;
}
// Ekvator Stok Sonu -------------------------------------
//+------------------------------------------- -------------------------------------+
//| uzman son işlevi | Tetikleme ticaretini yalnızca çizgi aşıldığında ve mum kapandığında ayarlayın |//
//+------------------------------------------- -------------------------------------+
//+------------------------------------------- -------------------+
//| uzman son işlevi | Stokastik Tetikleyici
//+------------------------------------------- -------------------+
//| uzman başlatma işlevi | Tetik sırası
//+------------------------------------------- -------------------------------------------------- -----------+
toplam = SiparişlerToplam();
if(toplam < 2) //açılan işlem sayısını sınırla
{
if(isCrossed == 1 && isCrossedEquator == 1)
{
bilet=SiparişGönder(Symbol(),OP_BUY,Lots,Sor,1,Ask-StopLoss*Puan,Sor+TakeProfit*Puan,
"EA'm",12345,0,Yeşil);
if(bilet>0)
{
if(OrderSelect(bilet,SELECT_BY_TICKET,MODE_TRADES))
Print("Satın alma emri açıldı : ",OrderOpenPrice());
}
else Print("SATIN AL emri açılırken hata oluştu : ",GetLastError());
dönüş(0);
}
if(isCrossed == 2 && isCrossedEquator == 2)
{
bilet=SiparişGönder(Symbol(),OP_SELL,Lots,Bid,1,Teklif+StopLoss*Puan,Teklif-AlKar*Puan,
"EA'm",12345,0,Kırmızı);
if(bilet>0)
{
if(OrderSelect(bilet,SELECT_BY_TICKET,MODE_TRADES))
Print("SAT emri açıldı : ",OrderOpenPrice());
}
else Print("SATIŞ emrini açarken hata: ",GetLastError());
dönüş(0);
}
dönüş(0);
}
dönüş(0);
}
//+------------------------------------------- -------------------+
//| uzman son işlevi |
//+------------------------------------------- -------------------+teras
EA'nın çalıştığı testlerimde
İşte test sonucu artı geri test raporu. 1 dakikalık zaman diliminde test edildi
Herkese selam, lütfen birisi bana aşağıdaki kodla yardımcı olabilir mi,,,, sadece ticaret için gerekli koşullar tetiklendiğinde değil, her tıklamada bana sesli uyarı vermeye devam ediyor! Uyarının her tikte veya yeni mum çubuğu oluştuğunda ses çıkarmasını istemiyorum.
#özellik göstergesi_chart_window
#özellik göstergesi_tamponları 2
#özellik göstergesi_color1 Kireç
#özellik göstergesi_renk2 Kırmızı
//---- giriş parametreleri
harici int ADXbars=14;
harici int CountBars=350;
//---- arabellekler
çift val1[];
çift val2[];
çift b4plusdi,nowplusdi,b4minusdi,nowminusdi;
//+------------------------------------------- -------------------+
//| Özel gösterge sıfırlama işlevi |
//+------------------------------------------- -------------------+
int tanım()
{
//----
//----
dönüş(0);
}
//+------------------------------------------- -------------------+
//| Özel gösterge yineleme işlevi |
//+------------------------------------------- -------------------+
int init()
{
//-- gösterge kısa adı
GöstergeShortName("PipsdatorPro1("+Symbol()+")");
//---- gösterge çizgisi
Gösterge Tamponları(2);
SetIndexStyle(0,DRAW_ARROW);
SetIndexArrow(0,233);
SetIndexStyle(1,DRAW_ARROW);
SetIndexArrow(1,234);
SetIndexBuffer(0,val1);
SetIndexBuffer(1,val2);
//----
dönüş(0);
}
//+------------------------------------------- -------------------+
//| AltrTrend_Signal_v2_2 |
//+------------------------------------------- -------------------+
int başlangıç()
{
if (CountBars>=Barlar) CountBars=Barlar;
SetIndexDrawBegin(0,Bars-CountBars);
SetIndexDrawBegin(1,Bars-CountBars);
int i,shift,counted_bars=IndicatorCounted();
//---- olası hataları kontrol et
if(counted_bars<0) return(-1);
//---- ilk sıfır
if(sayılan_barlar<1)
{
for(i=1;i<=CountBars;i++) val1[CountBars-i]=0.0;
for(i=1;i<=CountBars;i++) val2[CountBars-i]=0.0;
}
for (shift = CountBars; shift>=0; shift--)
{
b4plusdi=iADX(NULL,0,ADXbars,PRICE_CLOSE,MODE_PLUSDI,shift-1);
nowplusdi=iADX(NULL,0,ADXbars,PRICE_CLOSE,MODE_PLUSDI,shift);
b4minusdi=iADX(NULL,0,ADXbars,PRICE_CLOSE,MODE_MINUSDI,shift-1);
şimdiminusdi=iADX(NULL,0,ADXbars,PRICE_CLOSE,MODE_MINUSDI,shift);
if (b4plusdi>b4minusdi && nowplusdi<nowminusdi && i!=1)
{
val1[shift]=Düşük[shift]-5*Nokta;
// Alert("Buy Arrow","\n","Geçerli saat ",TimeToStr(CurTime()),"\n",Symbol());
ben++;
}
if (b4plusdinowminusdi && i!=1)
{
val2[shift]=Yüksek[shift]+5*Nokta;
// Alert("Oku Sat",\n","Geçerli saat ",TimeToStr(CurTime()),"\n",Symbol());
ben++;
}
}
dönüş(0);
}
//+------------------------------------------- ----------------+
Herkese selam, lütfen birisi bana aşağıdaki kodla yardımcı olabilir mi,,,, sadece ticaret için gerekli koşullar tetiklendiğinde değil, her tıklamada bana sesli uyarı vermeye devam ediyor! Uyarının her tikte veya yeni mum çubuğu oluştuğunda ses çıkarmasını istemiyorum.
#özellik göstergesi_chart_window
#özellik göstergesi_tamponları 2
#özellik göstergesi_color1 Kireç
#özellik göstergesi_renk2 Kırmızı
//---- giriş parametreleri
harici int ADXbars=14;
harici int CountBars=350;
//---- arabellekler
çift val1[];
çift val2[];
çift b4plusdi,nowplusdi,b4minusdi,nowminusdi;
//+------------------------------------------- -------------------+
//| Özel gösterge sıfırlama işlevi |
//+------------------------------------------- -------------------+
int tanım()
{
//----
//----
dönüş(0);
}
//+------------------------------------------- -------------------+
//| Özel gösterge yineleme işlevi |
//+------------------------------------------- -------------------+
int init()
{
//-- gösterge kısa adı
GöstergeShortName("PipsdatorPro1("+Symbol()+")");
//---- gösterge çizgisi
Gösterge Tamponları(2);
SetIndexStyle(0,DRAW_ARROW);
SetIndexArrow(0,233);
SetIndexStyle(1,DRAW_ARROW);
SetIndexArrow(1,234);
SetIndexBuffer(0,val1);
SetIndexBuffer(1,val2);
//----
dönüş(0);
}
//+------------------------------------------- -------------------+
//| AltrTrend_Signal_v2_2 |
//+------------------------------------------- -------------------+
int başlangıç()
{
if (CountBars>=Barlar) CountBars=Barlar;
SetIndexDrawBegin(0,Bars-CountBars);
SetIndexDrawBegin(1,Bars-CountBars);
int i,shift,counted_bars=IndicatorCounted();
//---- olası hataları kontrol et
if(counted_bars<0) return(-1);
//---- ilk sıfır
if(sayılan_barlar<1)
{
for(i=1;i<=CountBars;i++) val1[CountBars-i]=0.0;
for(i=1;i<=CountBars;i++) val2[CountBars-i]=0.0;
}
for (shift = CountBars; shift>=0; shift--)
{
b4plusdi=iADX(NULL,0,ADXbars,PRICE_CLOSE,MODE_PLUSDI,shift-1);
nowplusdi=iADX(NULL,0,ADXbars,PRICE_CLOSE,MODE_PLUSDI,shift);
b4minusdi=iADX(NULL,0,ADXbars,PRICE_CLOSE,MODE_MINUSDI,shift-1);
şimdiminusdi=iADX(NULL,0,ADXbars,PRICE_CLOSE,MODE_MINUSDI,shift);
if (b4plusdi>b4minusdi && nowplusdi<nowminusdi && i!=1)
{
val1[shift]=Düşük[shift]-5*Nokta;
// Alert("Buy Arrow","\n","Geçerli saat ",TimeToStr(CurTime()),"\n",Symbol());
ben++;
}
if (b4plusdinowminusdi && i!=1)
{
val2[shift]=Yüksek[shift]+5*Nokta;
// Alert("Oku Sat",\n","Geçerli saat ",TimeToStr(CurTime()),"\n",Symbol());
ben++;
}
}
dönüş(0);
}
//+------------------------------------------- ----------------+Mastercash, burada bu göstergenin bir versiyonu var https://www.mql5.com/en/forum/173574/page320 belki yardımcı olabilir.
teras
EA'nın çalıştığı testlerimde
İşte test sonucu artı geri test raporu. 1 dakikalık zaman diliminde test edildiMerhaba mladen, yorumlarınıza göre kodu yeniden inceledim ve işlemin ancak stokastik çizgilerimin ikisi de aynı mumda yukarı veya aşağı tetiklendiğinde tetikleneceğini fark ettim.
Bununla birlikte, başarmaya çalıştığım şey, ekvator göstergesi yukarı trendi işaret ediyorsa, EA, hem ekvator hem de hızlı göstergenin aynı yönde tetiklenmesi yerine, hızlı gösterge yukarı tetiklendiğinde ve tam tersi olduğunda yalnızca uzun süre tetikleyecektir. aynı mum.
EA'yı bu kriterlere uyacak şekilde ayarlamaya çalıştım ama istenen sonuçları alamadım. Yanlış yaptığım bir şey mi var? Lütfen yardım et. Tekrar teşekkürler.
Saygılarımızla
teras
Merhaba mladen, yorumlarınıza göre kodu yeniden inceledim ve işlemin ancak stokastik çizgilerimin ikisi de aynı mumda yukarı veya aşağı tetiklendiğinde tetikleneceğini fark ettim.
Bununla birlikte, başarmaya çalıştığım şey, ekvator göstergesi yukarı trendi işaret ediyorsa, EA, hem ekvator hem de hızlı göstergenin aynı yönde tetiklenmesi yerine, hızlı gösterge yukarı tetiklendiğinde ve tam tersi olduğunda yalnızca uzun süre tetikleyecektir. aynı mum.
EA'yı bu kriterlere uyacak şekilde ayarlamaya çalıştım ama istenen sonuçları alamadım. Yanlış yaptığım bir şey mi var? Lütfen yardım et. Tekrar teşekkürler.
Saygılarımızla
terasteras
Bunu başarmak için muhtemelen özel bir gösterge yazmanız gerekecek (EA'larda bazı şeyleri yaptığınız gibi yapamazsınız göstergeler)
Terrance Bunu başarmak için muhtemelen özel bir gösterge yazmanız gerekecek (EA'larda bazı şeyleri yaptığınız gibi yapamazsınız göstergeler)
Merhaba mladen, anlamadığım 1 şey, aynı kriterler olmasına rağmen bunu neden iMA ile değil de MA ile yapabiliyorum? Bir çeşit gösterge ayarları olabilir mi?
Saygılarımızla
teras
Merhaba mladen, anlamadığım 1 şey, aynı kriterler olmasına rağmen bunu neden iMA ile değil de MA ile yapabiliyorum? Bir çeşit gösterge ayarları olabilir mi?
Saygılarımızla
terasçünkü özel gösterge ile iki işaret arasındaki durumları (eğilimleri) kaydedebilirsiniz ve iMA kullandığınızda yapamazsınız (sadece bir örnek)