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
Merhaba Mladen,
Bunu MT5'te kodlamaya çalışıyorum, ancak doğru uygulamayı kullanmadığımı düşünüyorum.
benim fikrim daha fazla gösterge kullanmak, lütfen bana bir ışık verin... ;-)
this is a sample to understand I'm trying to do..
in this sample:
I put only 3 indicadors.
//global variables
bool m_buy = true;
bool m_sell = true;
enum Signal{
IN_OUT=0, //in & out
IN=1, //in
OUT=2, //out
};
I have a EA with indicators that I want to mix and optimize it in BackTest.
//some sample data for signal for In/Out states only for exemplification
iT_InOut = IN_OUT; //Itrend usage => In & Out
RSI_InOut = IN_; //RSI usage =>only IN
MFI_InOut = OUT_; //MFI usage =>only OUT
//
//this is the complete sequence IF I USE all signals in+out
//only to show the completly sequence (I will not use it)
m_buy=(m_it00[0]>m_it10[0] && m_it00[0]>m_it01[0] && m_rsi0[0]>m_rsi1[0] && m_mfi0[0]>m_mfi1[0]);
// The green is growing and more than red, RSI is growing, MFI is growing
m_sell=(m_it00[0]<m_it10[0] && m_it00[0]<m_it01[0] && m_rsi0[0]<m_rsi1[0] && m_mfi0[0]<m_mfi1[0]);
// The green falls and less than red, RSI falls, MFI falls
//now the skeleton that I'm trying to make work (in future I will use much more indicators)
if(!PositionSelect(Symbol())) ///No opened it's first entrance
{
if (!iT_InOut==OUT_) //Itrend (only options with IN)
{
m_buy= (m_buy && m_it00[0]>m_it10[0] && m_it00[0]>m_it01[0]);
m_sell=(m_sell && m_it00[0]<m_it10[0] && m_it00[0]<m_it01[0]);
}
if (!RSI_InOut==OUT_) //RSI (only options with IN)
{
m_buy =(m_buy && m_rsi0[0]>m_rsi1[0]);
m_sell=(m_sell && m_rsi0[0]<m_rsi1[0]);
}
if (!MFI_InOut==OUT_) //MFI (only options with IN)
{
m_buy =(m_buy && m_mfi0[0]>m_mfi1[0]);
m_sell=(m_sell && m_mfi0[0]<m_mfi1[0]);
}
}
///We have opened order it's EXIT
else
{
//Itrend (only options with EXIT)
if (!iT_InOut==IN_)
{
m_buy =(m_buy && m_it00[0]>m_it10[0] && m_it00[0]>m_it01[0]);
m_sell=(m_sell && m_it00[0]<m_it10[0] && m_it00[0]<m_it01[0]);
}
//RSI (only options with EXIT)
if (!RSI_InOut==IN_)
{
m_buy =(m_buy && m_rsi0[0]>m_rsi1[0]);
m_sell=(m_sell && m_rsi0[0]<m_rsi1[0]);
}
//MFI (only options with EXIT)
if (!MFI_InOut==IN_)
{
m_buy =(m_buy && m_mfi0[0]>m_mfi1[0]);
m_sell=(m_sell && m_mfi0[0]<m_mfi1[0]);
}
}
Merhaba Mladen,
Bunu MT5'te kodlamaya çalışıyorum, ancak doğru uygulamayı kullanmadığımı düşünüyorum.
benim fikrim daha fazla gösterge kullanmak, lütfen bana bir ışık verin... ;-)
this is a sample to understand I'm trying to do..
in this sample:
I put only 3 indicadors.
//global variables
bool m_buy = true;
bool m_sell = true;
enum Signal{
IN_OUT=0, //in & out
IN=1, //in
OUT=2, //out
};
I have a EA with indicators that I want to mix and optimize it in BackTest.
//some sample data for signal for In/Out states only for exemplification
iT_InOut = IN_OUT; //Itrend usage => In & Out
RSI_InOut = IN_; //RSI usage =>only IN
MFI_InOut = OUT_; //MFI usage =>only OUT
//
//this is the complete sequence IF I USE all signals in+out
//only to show the completly sequence (I will not use it)
m_buy=(m_it00[0]>m_it10[0] && m_it00[0]>m_it01[0] && m_rsi0[0]>m_rsi1[0] && m_mfi0[0]>m_mfi1[0]);
// The green is growing and more than red, RSI is growing, MFI is growing
m_sell=(m_it00[0]<m_it10[0] && m_it00[0]<m_it01[0] && m_rsi0[0]<m_rsi1[0] && m_mfi0[0]<m_mfi1[0]);
// The green falls and less than red, RSI falls, MFI falls
//now the skeleton that I'm trying to make work (in future I will use much more indicators)
if(!PositionSelect(Symbol())) ///No opened it's first entrance
{
if (!iT_InOut==OUT_) //Itrend (only options with IN)
{
m_buy= (m_buy && m_it00[0]>m_it10[0] && m_it00[0]>m_it01[0]);
m_sell=(m_sell && m_it00[0]<m_it10[0] && m_it00[0]<m_it01[0]);
}
if (!RSI_InOut==OUT_) //RSI (only options with IN)
{
m_buy =(m_buy && m_rsi0[0]>m_rsi1[0]);
m_sell=(m_sell && m_rsi0[0]<m_rsi1[0]);
}
if (!MFI_InOut==OUT_) //MFI (only options with IN)
{
m_buy =(m_buy && m_mfi0[0]>m_mfi1[0]);
m_sell=(m_sell && m_mfi0[0]<m_mfi1[0]);
}
}
///We have opened order it's EXIT
else
{
//Itrend (only options with EXIT)
if (!iT_InOut==IN_)
{
m_buy =(m_buy && m_it00[0]>m_it10[0] && m_it00[0]>m_it01[0]);
m_sell=(m_sell && m_it00[0]<m_it10[0] && m_it00[0]<m_it01[0]);
}
//RSI (only options with EXIT)
if (!RSI_InOut==IN_)
{
m_buy =(m_buy && m_rsi0[0]>m_rsi1[0]);
m_sell=(m_sell && m_rsi0[0]<m_rsi1[0]);
}
//MFI (only options with EXIT)
if (!MFI_InOut==IN_)
{
m_buy =(m_buy && m_mfi0[0]>m_mfi1[0]);
m_sell=(m_sell && m_mfi0[0]<m_mfi1[0]);
}
}
Selam beyler,
Gerçekten yardıma ihtiyacım var, waddah attar scalping göstergesi ile bir uzman yapıyorum, mantık çalışıyor, her şey yolunda.
Bir şey dışında, geriye dönük ekran görüntüsünde gördüğünüz gibi, her yeşil çubukta uzman, aynı kırmızı çubuklar için bir satın alma açar. Renk değişikliği başına sadece 1 takas istiyorum.
istediğim şey:
GÖSTERGE YEŞİLDİR ---> bir alış açar ---> alış kapanır ---> GÖSTERGE KIRMIZIYA DÖNÜŞÜR ---> bir satış açar ---> satış kapanır ---> tekrar
Renk değişikliği başına sadece 1 takas istiyorum.
İşte kodum: (kısaca aynı)
bool SendLong = false , SendShort = false ;
double clnowsell = iCustom ( Symbol (),WAScalpingTimeFrame, "Waddah_Attar_Scalping" ,IPeriod,P1,P2, 1 ,clbar);
double clpresell = iCustom ( Symbol (),WAScalpingTimeFrame, "Waddah_Attar_Scalping" ,IPeriod,P1,P2, 1 ,clbar+ 1 );
double clnowbuy = iCustom ( Symbol (),WAScalpingTimeFrame, "Waddah_Attar_Scalping" ,IPeriod,P1,P2, 0 ,clbar);
double clprebuy = iCustom ( Symbol (),WAScalpingTimeFrame, "Waddah_Attar_Scalping" ,IPeriod,P1,P2, 0 ,clbar+ 1 );
//Long trade
//Specific system filters
//if (some condition) SendLong = true;
if (clnowbuy > 0 ) SendLong = true ;
Birisi lütfen basit bir çözümle gelebilir mi, 1265 satırına bakın, mantık buraya geliyor.
Çok teşekkürler !
Selam beyler,
Gerçekten yardıma ihtiyacım var, waddah attar scalping göstergesi ile bir uzman yapıyorum, mantık çalışıyor, her şey yolunda.
Bir şey dışında, geriye dönük ekran görüntüsünde gördüğünüz gibi, her yeşil çubukta uzman, aynı kırmızı çubuklar için bir satın alma açar. Renk değişikliği başına sadece 1 takas istiyorum.
istediğim şey:
GÖSTERGE YEŞİLDİR ---> bir alış açar ---> alış kapanır ---> GÖSTERGE KIRMIZIYA DÖNÜŞÜR ---> bir satış açar ---> satış kapanır ---> tekrar
Renk değişikliği başına sadece 1 takas istiyorum.
İşte kodum: (kısaca aynı)
bool SendLong = false , SendShort = false ;
double clnowsell = iCustom ( Symbol (),WAScalpingTimeFrame, "Waddah_Attar_Scalping" ,IPeriod,P1,P2, 1 ,clbar);
double clpresell = iCustom ( Symbol (),WAScalpingTimeFrame, "Waddah_Attar_Scalping" ,IPeriod,P1,P2, 1 ,clbar+ 1 );
double clnowbuy = iCustom ( Symbol (),WAScalpingTimeFrame, "Waddah_Attar_Scalping" ,IPeriod,P1,P2, 0 ,clbar);
double clprebuy = iCustom ( Symbol (),WAScalpingTimeFrame, "Waddah_Attar_Scalping" ,IPeriod,P1,P2, 0 ,clbar+ 1 );
//Long trade
//Specific system filters
//if (some condition) SendLong = true;
if (clnowbuy > 0 ) SendLong = true ;
Birisi lütfen basit bir çözümle gelebilir mi, 1265 satırına bakın, mantık buraya geliyor.
Çok teşekkürler !
Koşul olarak değiştirin
aynı şey şort için
Teşekkürler Mladen!
Bazen takılıp kalıyoruz ve işimize yeni bir bakış atmamız gerekiyor.
Tekrar teşekkürler !
Teşekkürler Mladen!
Bazen takılıp kalıyoruz ve işimize yeni bir bakış atmamız gerekiyor.
Tekrar teşekkürler !
bonjour,
Ravi de voir une Française, tiens moi au courant des tes tes résultats avec waddah attar ;)
yeşil tırtıllar
Merhaba arkadaşlar, 4 ema cross gerçekleştiğinde ve rsi > veya < 50 olduğunda yukarı veya aşağı ok gösterebilen bir ema-rsi göstergesi düzenlemeye çalışıyorum.
Benim sorunum, bu okların ortaya çıktıklarında her kene için yenilenmemesi, koşulların ok göstermek için hala iyi olup olmadığını kontrol etmek istersem zaman dilimini değiştirmem gerekiyor. Bana sorunun nerede olduğunu söyleyebilir misin? kodu yayınlıyorum.
Teşekkür ederim
#property indicator_buffers 2
#property indicator_color1 Green
#property indicator_color2 Red
#property indicator_width1 4
#property indicator_width2 4
double CrossUp[];
double CrossDown[];
extern int FasterEMA1 = 6 ;
extern int SlowerEMA1 = 12 ;
extern int FasterEMA2 = 7 ;
extern int SlowerEMA2 = 14 ;
extern int RSInowPeriod = 6 ;
extern int barsBack = 2000 ;
extern bool AlertsMessage = true ;
extern bool AlertsSound = true ;
extern bool debug = false ;
extern double K = 1.0 ;
bool EMACrossedUp = false ;
bool RSICrossedUp = false ;
bool EMACrossedDown = false ;
bool RSICrossedDown = false ;
int SignalLabeled = 0 ; // 0: initial state; 1: up; 2: down.
int upalert= false ,downalert= false ;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
SetIndexStyle ( 0 , DRAW_ARROW , EMPTY );
SetIndexArrow ( 0 , 241 );
SetIndexBuffer ( 0 , CrossUp);
SetIndexStyle ( 1 , DRAW_ARROW , EMPTY );
SetIndexArrow ( 1 , 242 );
SetIndexBuffer ( 1 , CrossDown);
//----
return ( 0 );
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return ( 0 );
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start() {
int limit, i, counter;
double fasterEMA1now, slowerEMA1now, fasterEMA1previous, slowerEMA1previous, fasterEMA2now, slowerEMA2now, fasterEMA2previous, slowerEMA2previous;
double RSInow;
double Range, AvgRange;
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= MathMin ( Bars -counted_bars,barsBack);
for (i = limit; i>= 0 ; i--) {
counter=i;
Range= 0 ;
AvgRange= 0 ;
for (counter=i ;counter<=i+ 9 ;counter++)
{
AvgRange=AvgRange+ MathAbs ( High [counter]- Low [counter]);
}
Range=AvgRange/ 10 ;
fasterEMA1now = iMA ( NULL , 0 , FasterEMA1, 0 , MODE_EMA , PRICE_CLOSE , i);
fasterEMA1previous = iMA ( NULL , 0 , FasterEMA1, 0 , MODE_EMA , PRICE_CLOSE , i+ 1 );
fasterEMA2now = iMA ( NULL , 0 , FasterEMA2, 0 , MODE_EMA , PRICE_CLOSE , i);
fasterEMA2previous = iMA ( NULL , 0 , FasterEMA2, 0 , MODE_EMA , PRICE_CLOSE , i+ 1 );
slowerEMA1now = iMA ( NULL , 0 , SlowerEMA1, 0 , MODE_EMA , PRICE_CLOSE , i);
slowerEMA1previous = iMA ( NULL , 0 , SlowerEMA1, 0 , MODE_EMA , PRICE_CLOSE , i+ 1 );
slowerEMA2now = iMA ( NULL , 0 , SlowerEMA2, 0 , MODE_EMA , PRICE_CLOSE , i);
slowerEMA2previous = iMA ( NULL , 0 , SlowerEMA2, 0 , MODE_EMA , PRICE_CLOSE , i+ 1 );
RSInow= iRSI ( NULL , 0 ,RSInowPeriod, PRICE_CLOSE ,i);
if (RSInow > 50 ) {
if (debug) Print ( TimeToStr ( Time [i], TIME_DATE )+ TimeToStr ( Time [i], TIME_SECONDS )+ " RSI UP " );
RSICrossedUp = true ;
RSICrossedDown = false ;
}
if (RSInow < 50 ) {
if (debug) Print ( TimeToStr ( Time [i], TIME_DATE )+ TimeToStr ( Time [i], TIME_SECONDS )+ " RSI DOWN " );
RSICrossedUp = false ;
RSICrossedDown = true ;
}
if ((fasterEMA1now >= slowerEMA1now) && (fasterEMA1previous < slowerEMA1previous) && (fasterEMA2now >= slowerEMA2now) && (fasterEMA2previous < slowerEMA2previous) ) {
if (debug) Print ( TimeToStr ( Time [i], TIME_DATE )+ TimeToStr ( Time [i], TIME_SECONDS )+ " EMA UP " );
EMACrossedUp = true ;
EMACrossedDown = false ;
}
if ((fasterEMA1now <= slowerEMA1now) && (fasterEMA1previous > slowerEMA1previous) && (fasterEMA2now <= slowerEMA2now) && (fasterEMA2previous > slowerEMA2previous)) {
if (debug) Print ( TimeToStr ( Time [i], TIME_DATE )+ TimeToStr ( Time [i], TIME_SECONDS )+ " EMA DOWN " );
EMACrossedUp = false ;
EMACrossedDown = true ;
}
if ((EMACrossedUp == true ) && (RSICrossedUp == true ) && (SignalLabeled != 1 )) {
CrossUp[i] = Low [i] - K*Range;
if (debug) Print ( TimeToStr ( Time [i], TIME_DATE )+ TimeToStr ( Time [i], TIME_SECONDS )+ " SIGNAL UP " );
if (i<= 2 && AlertsMessage && !upalert)
{
Alert ( Symbol (), " " , Period (), "M BUY SIGNAL " );
//SendMail("EMA Cross Up on "+Symbol(),"");
upalert= true ;
downalert= false ;
}
if (i<= 2 && AlertsSound && !upalert)
{
PlaySound ( "alert.wav" );
upalert= true ;
downalert= false ;
}
SignalLabeled = 1 ;
}
else if ((EMACrossedDown == true ) && (RSICrossedDown == true ) && (SignalLabeled != 2 )) {
CrossDown[i] = High [i] + K*Range;
if (debug) Print ( TimeToStr ( Time [i], TIME_DATE )+ TimeToStr ( Time [i], TIME_SECONDS )+ " SIGNAL DOWN " );
if (i<= 2 && AlertsMessage && !downalert)
{
Alert ( Symbol (), " " , Period (), "M SELL SIGNAL " );
//SendMail("EMA Cross Down on "+Symbol(),"");
downalert= true ;
upalert= false ;
}
if (i<= 2 && AlertsSound && !downalert)
{
PlaySound ( "alert.wav" );
downalert= true ;
upalert= false ;
}
SignalLabeled = 2 ;
}
}
return ( 0 );
}
//end
Bu kodda gösterge kullanımını hiç görmüyorum (ve değerlerin karşılık gelen dizilere nasıl kopyalandığını)
Merhaba Mladen,
İşte içinde bazı kodlar bulunan "sample-ea-modular.mq5"... ve istediğim fikre sahip arayüz ile.
Modüler hale getirmeye çalışıyorum, fikir her göstergenin giriş/çıkışlarını ayrı ayrı optimize etmektir.
Bunu "sample-ea-modular.mq5" ile yapabilirsem, gerçek EA'yı değiştireceğim.
gerçek taban Ea-sample.mq5'tir. (sadece size gönderiyorum, tüm göstergeleri görüyorsunuz)
Sevgili @mladen,
Aşağıda belirtilen hatayı çözebilirseniz, lütfen çok memnun olun.
Teşekkür ederim...
"Soru: Grafiğe eklediğimde ve otomatik gmt ofsetini kullandığımda bir uyarı var.
oğuz
Her zamanki gibi (bunu zaten biliyorsunuz) ayrıştırılmış kod hakkında yorum yapmıyorum, ancak doğru yolda olduğunuzu görüyorum: işe yararsa (seçenek), kullanın. Eğer değilse, o zaman yapma. Gördüğüm kadarıyla bu sadece bir mesaj (hata değil) yani...
Sevgili @mladen,
Aşağıda belirtilen hatayı çözebilirseniz, lütfen çok memnun olun.
Teşekkür ederim...
"Soru: Grafiğe eklediğimde ve otomatik gmt ofsetini kullandığımda bir uyarı var.