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
EA'nızın birden fazla döviz çifti veya zaman diliminde kullanımıyla ilgili çok önemli bir not daha.
Kodunuz, "Sihirli Numara" seçimini kullanmaz ve Geçmiş'teki açık siparişleri kontrol ederken kullanılan Sembolü (veya "Sihirli numara") kontrol etmez. Yani özünde EA'nız ne kendisiyle ne de diğer EA'larla düzgün çalışmayacaktır.
Olduğu gibi, bu EA'yı başka hiçbir EA çalışmadan, hatta başka bir grafikte bile kendi başına kullanabilirsiniz!
bool ans;
//You do not select an order
if(OrderType()==OP_BUY){
while(fastma < slowma) //Use if not while
{
ans = OrderClose(OrderTicket(),Lots,Bid,10,clrNONE);
if(ticket < 1) //ticket is a local variable and has not been assigned a value
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
Print("Buy order closed : ", OrderClosePrice());
}
else
Print("Error closing order : ", GetLastError());
return(0);
}
}
Şimdiye kadar kodumla bana yardımcı olduğunuz ve zaman ayırdığınız için çok teşekkür ederim, gerekli ayarlamaları yapmaya çalışacağım.
EA'nızda çok fazla mantık probleminiz olduğu için, MetaQuotes'un örnek koduna, yani " Moving Average.mq4" ve/veya "MACD Sample.mq4"e bir göz atmanızı ve bunu anlayana kadar bunun üzerine inşa etmenizi öneririm. Bir EA'nın nasıl çalıştığının temel ilkeleri.
Dosyaları ekledim, ancak onları "MQL4\Experts" klasörünüzde bulacaksınız.
EDIT: Kodla ilgili olarak, OrderSelect kullanıyorsunuz, ancak her zaman her zaman çalıştığını varsayıyorsunuz. Ve çalışmadığında, kapanışınızda OrderTicket() gibi Sipariş ayrıntıları işlevlerini kullanmaya devam edersiniz; bu, ilk OrderSelect() de başarısız olursa başarısız olabilir.
Düzenlemenizi fark ettikten sonra .....
Her zaman yeni bir onay işareti olduğunda OrderSelect() öğesinin kaybolacağını varsaymıştım.
Bu yüzden kontrol ettim ve bir sipariş seçildiğinde sonraki yeni onaylarda bile seçili kaldığını gördüm.
Her gün yeni bir şey öğrenin :)
Her zaman yeni bir onay işareti olduğunda OrderSelect() öğesinin kaybolacağını varsaymıştım.
Bu yüzden kontrol ettim ve bir sipariş seçildiğinde sonraki yeni onaylarda bile seçili kaldığını gördüm.
Her gün yeni bir şey öğrenin :)
EA'nızın birden fazla döviz çifti veya zaman diliminde kullanımıyla ilgili çok önemli bir not daha.
Kodunuz, "Sihirli Numara" seçimini kullanmaz ve Geçmiş'teki açık siparişleri kontrol ederken kullanılan Sembolü (veya "Sihirli numara") kontrol etmez. Yani özünde EA'nız ne kendisiyle ne de diğer EA'larla düzgün çalışmayacaktır.
Olduğu gibi, bu EA'yı başka hiçbir EA çalışmadan, hatta başka bir grafikte bile kendi başına kullanabilirsiniz!
for ( int i= 0 ;i< OrdersTotal ();i++)
{
if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES )== false ) break ;
if ( OrderMagicNumber ()==MagicNumber && OrderSymbol ()== Symbol ()) continue ;
//---Check Order Type
if ( OrderType ()== OP_BUY )
{
if (fastma < slowma)
{
if ( OrderClose ( OrderTicket (),Lots, Bid , 10 , clrNONE ))
Print ( "Order Closed : " , OrderClosePrice ());
return ( 0 );
}
else
Print ( "Error : " , GetLastError ());
return ( 0 );
break ;
}
if ( OrderType ()== OP_SELL )
{
if (fastma > slowma)
{
if ( OrderClose ( OrderTicket (),Lots, Ask , 10 , clrNONE ))
Print ( "Order Closed : " , OrderClosePrice ());
return ( 0 );
}
else
Print ( "Error : " , GetLastError ());
return ( 0 );
break ;
}
}
İşte OrderClose bölümü, artık geçersiz bilet hatası almıyorum, ancak şimdi geçersiz fiyat alıyorum
İşte doğrudan günlükten
2016.12.09 10:47:10.243 Basit Hareketli Ortalama Geçiş Stratejisi EURUSDi,H1: OrderClose işlevi için geçersiz fiyat 1.05454000
{
if ( OrderClose ( OrderTicket (),Lots, Bid , 10 , clrNONE ))
Print ( "Order Closed : " , OrderClosePrice ());
return ( 0 );
}
...
{
if ( OrderClose ( OrderTicket (),Lots, Ask , 10 , clrNONE ))
Print ( "Order Closed : " , OrderClosePrice ());
return ( 0 );
İşte OrderClose bölümü, artık geçersiz bilet hatası almıyorum, ancak şimdi geçersiz fiyat alıyorum
İşte doğrudan günlükten
2016.12.09 10:47:10.243 Basit Hareketli Ortalama Geçiş Stratejisi EURUSDi,H1: OrderClose işlevi için geçersiz fiyat 1.05454000
Kapatırken Bid/Ask kullanmayın, OrderClosePrice() kullanın. Otomatik olarak iyi fiyat olacaktır.
Bunu OrderClose işlevinde değiştirmeli miyim? ve öyleyse, altındaki yazdırma işlevindeki OrderClosePrice öğesini kaldırmalı mıyım?
Düzenlemek:
Bunu az önce yaptım, ama şimdi hiçbir pozisyonu açık tutmayacak. Sadece pozisyonları açar ve kapatır, ancak şu anda birden fazla çift üzerinde çalışırken herhangi bir sorun yaşamamaktadır.
if ( OrderType ()== OP_BUY )
{
if (fastma < slowma)
{
if ( OrderClose ( OrderTicket (),Lots, Bid , 10 , clrNONE ))
Print ( "Order Closed : " , OrderClosePrice ());
return ( 0 );
}
else
Print ( "Error : " , GetLastError ());
return ( 0 );
break ;
}
Döngüyü tamamlamanız gerektiğinden, dönüşler veya molalar için herhangi bir işlem yoktur.
Ayrıca, hata yazdırmanız şunlara bağlıdır:
if (fastma < slowma)
yanlış olmak, OrderClose() işlevinin başarısız olup olmamasıyla ilgili değildir
if(OrderType()==OP_BUY)
{
if(fastma<slowma)
{
if(OrderClose(OrderTicket(),Lots, OrderClosePrice(),10,clrNONE))
Print("Order Closed : ",OrderClosePrice());
else
Print("Error : ",GetLastError())
}
}