Şimdi OrderClose'a OrderTicket() ve OrderLots() kullanmadan bilet ve Lot ekliyorum ama o da siparişi kapatmıyor. Lütfen yardım et.
Yanlış yaptığın birkaç şey var. Bu EA'nın M1 zaman diliminde JPY çiftleri üzerinde çalışmasını istediğinizi varsayıyorum. Yalnızca yeni çubukta sipariş vermek ve yalnızca yeni çubukta siparişleri kapatmak mı yoksa yeni çubuktan giriş yapıp koşullar sağlandığında çıkmak mı istiyorsunuz? İşte düşündüğüm şey:
Önce OrdersTotal() ile siparişleri sayarsınız.
Ardından değişkenlerinizi hesaplayın
Piyasada emirler varsa, kapatılmaları gerekip gerekmediğini kontrol edin .
Piyasada herhangi bir emir yoksa, giriş koşullarının karşılanıp karşılanmadığını kontrol edin.
Herhangi bir sorunuz olursa bana bildirin.
//+------------------------------------------------------------------+//| chuale_test1.mq4 |//| Copyright 2014, MetaQuotes Software Corp. |//| https://www.mql5.com |//+------------------------------------------------------------------+#property copyright"Copyright 2014, MetaQuotes Software Corp."#property link"http://www.abc.com"#property version"1.00"#property strictexterndouble TakeProfit= 500 ;
externdouble Lots= 0.1 ;
externdouble StopLoss= 300 ;
double bar1;
double bar2;
double bar3;
int total,ticket;
datetime previousTime;
//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+int init()
{
//---//---return ( 0 );
}
//+------------------------------------------------------------------+//| Expert deinitialization function |//+------------------------------------------------------------------+int deinit()
{
//---return ( 0 );
}
//+------------------------------------------------------------------+//| Expert tick function |//+------------------------------------------------------------------+int start()
{
total= OrdersTotal ();
/*
counted_bars=IndicatorCounted();
if(counted_bars>0) counted_bars--;
IndicatorCounted() is actually for indicators not EA
*/
bar1=( iClose ( Symbol (), PERIOD_M1 , 2 )- iClose ( Symbol (), PERIOD_M1 , 3 ))* 100 ;
bar2=( iClose ( Symbol (), PERIOD_M1 , 1 )- iClose ( Symbol (), PERIOD_M1 , 2 ))* 100 ;
bar3=( iClose ( Symbol (), PERIOD_M1 , 0 )- iClose ( Symbol (), PERIOD_M1 , 1 ))* 100 ;
/*
Comment("Bar1 = "+DoubleToString(bar1,Digits)+"\n"+
"Bar2 = "+DoubleToString(bar2,Digits)+"\n"+
"Bar3 = "+DoubleToString(bar3,Digits)+"\n"
);
*///Close any orders if conditions are metif (total> 0 )
{
if (bar3<- 1 ) OrderClose (ticket, OrderLots (), Bid , 3 ,Green);
if (bar3> 1 ) OrderClose (ticket, OrderLots (), Ask , 3 ,Red);
}
if ( Time [ 0 ]==previousTime) return ( 0 ); //EA will not go past this point unless it is a new bar
previousTime= Time [ 0 ]; // If it was a new bar , it's old now but continue to the end// if no order open and new barif (total< 1 )
{
if (bar2> 1 ) // if condition met
{
//place buy order
ticket= OrderSend ( Symbol (), OP_BUY ,Lots, Ask , 3 , Ask -StopLoss* Point , Ask +TakeProfit* Point , "Chua EA" , 12345 , 0 ,Green);
if (ticket< 0 ) Print ( "Error OP_BUY order failed. error : " +GetLastError()); // if returned ticket is -1 OrderSent failedreturn ( 0 );
}
// or if conditions for sell metif (bar2<- 1 )
{
ticket= OrderSend ( Symbol (), OP_SELL ,Lots, Bid , 3 , Bid +StopLoss* Point , Bid +-TakeProfit* Point , "Chua EA" , 12345 , 0 ,Red);
if (ticket< 0 ) Print ( "Error OP_SELL order failed. error : " +GetLastError());
return ( 0 ); //return to start
}
}
return ( 0 );
}
//+------------------------------------------------------------------+
evet şimdi kapanabilir teşekkürler GumRai. şimdi bilet numarasının tiklere göre değiştiğini biliyorum, peki açık siparişin bilet numarası nasıl elde edilir? OrderTicket()'i kullanmak zorundayım, değil mi?
chuale : evet şimdi kapanabilir teşekkürler GumRai. şimdi bilet numarasının tiklere göre değiştiğini biliyorum, peki açık siparişin bilet numarası nasıl elde edilir? OrderTicket()'i kullanmak zorundayım, değil mi?
OrderTicket() kullanıyorsanız, o zaman önce OrderSelect() kullandığınızdan emin olun ve ayrıca kapatmak istediğiniz işlem olduğundan emin olun.
chuale : evet şimdi kapanabilir teşekkürler GumRai. şimdi bilet numarasının tiklere göre değiştiğini biliyorum, peki açık siparişin bilet numarası nasıl elde edilir? OrderTicket()'i kullanmak zorundayım, değil mi?
Merhaba Chuale,
İşte siparişlerinizi seçmenin ve siparişleri sembole ve Sihirli numaraya göre kapatmanın kolay bir yolu:
//+------------------------------------------------------------------+//| chuale_test1.mq4 |//| Copyright 2014, MetaQuotes Software Corp. |//| https://www.mql5.com |//+------------------------------------------------------------------+#property copyright"Copyright 2014, MetaQuotes Software Corp."#property link"http://www.abc.com"#property version"1.00"#property strictexterndouble TakeProfit= 500 ;
externdouble Lots= 0.1 ;
externdouble StopLoss= 300 ;
externint MagicNumber = 12345 ;
externint Slip = 3 ;
double bar1;
double bar2;
double bar3;
int myTrades,ticket;
datetime previousTime;
//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+int init()
{
//---//---return ( 0 );
}
//+------------------------------------------------------------------+//| Expert deinitialization function |//+------------------------------------------------------------------+int deinit()
{
//---return ( 0 );
}
//+------------------------------------------------------------------+//| Expert tick function |//+------------------------------------------------------------------+int start()
{
myTrades = CountTrades(); //Count trades function counts this EA trades only//
bar1=( iClose ( Symbol (), PERIOD_M1 , 2 )- iClose ( Symbol (), PERIOD_M1 , 3 ))* 100 ;
bar2=( iClose ( Symbol (), PERIOD_M1 , 1 )- iClose ( Symbol (), PERIOD_M1 , 2 ))* 100 ;
bar3=( iClose ( Symbol (), PERIOD_M1 , 0 )- iClose ( Symbol (), PERIOD_M1 , 1 ))* 100 ;
//Close any orders if conditions are metif (myTrades> 0 )
{
if (bar3<- 1 ) CloseThisSymbolAll();
if (bar3> 1 ) CloseThisSymbolAll();
}
if ( Time [ 0 ]==previousTime) return ( 0 ); //EA will not go past this point unless it is a new bar
previousTime= Time [ 0 ]; // If it was a new bar , it's old now but continue to the end// if no order open and new barif (myTrades< 1 )
{
if (bar2> 1 ) // if condition met
{
//place buy order
ticket= OrderSend ( Symbol (), OP_BUY ,Lots, Ask , 3 , Ask -StopLoss* Point , Ask +TakeProfit* Point , "Chua EA" , MagicNumber , 0 ,Green);
if (ticket< 0 ) Print ( "Error OP_BUY order failed. error : " +GetLastError()); // if returned ticket is -1 OrderSent failedreturn ( 0 );
}
// or if conditions for sell metif (bar2<- 1 )
{
ticket= OrderSend ( Symbol (), OP_SELL ,Lots, Bid , 3 , Bid +StopLoss* Point , Bid +-TakeProfit* Point , "Chua EA" , MagicNumber , 0 ,Red);
if (ticket< 0 ) Print ( "Error OP_SELL order failed. error : " +GetLastError());
return ( 0 ); //return to start
}
}
return ( 0 );
}
//========================================================================int CountTrades()
{
int count= 0 ;
int trade;
for (trade= OrdersTotal ()- 1 ;trade>= 0 ;trade--)
{
OrderSelect (trade, SELECT_BY_POS , MODE_TRADES );
if ( OrderSymbol ()!= Symbol () || OrderMagicNumber () != MagicNumber)
continue ;
if ( OrderSymbol ()== Symbol () && OrderMagicNumber () == MagicNumber)
if ( OrderType ()== OP_SELL || OrderType ()== OP_BUY )
count++;
}
return (count);
}
//========================================================================void CloseThisSymbolAll()
{
int trade;
for (trade= OrdersTotal ();trade>= 0 ;trade--)
{
OrderSelect (trade, SELECT_BY_POS , MODE_TRADES );
if ( OrderSymbol ()!= Symbol ()) continue ;
if ( OrderSymbol ()== Symbol () && OrderMagicNumber ()==MagicNumber)
{
if ( OrderType ()== OP_BUY ) OrderClose ( OrderTicket (), OrderLots (), Bid ,Slip,Blue);
if ( OrderType ()== OP_SELL ) OrderClose ( OrderTicket (), OrderLots (), Ask ,Slip,Red);
}
//Sleep(1000);
}
}
//========================================================================
chuale : evet şimdi kapanabilir teşekkürler GumRai. şimdi bilet numarasının tiklere göre değiştiğini biliyorum, peki açık siparişin bilet numarası nasıl elde edilir? OrderTicket()'i kullanmak zorundayım, değil mi?
Tekrar merhaba Chuale,
USDJPY'de fikrinizle uğraşıyordum ve bazı değişiklikler olmadan olumlu sonuçlar alamadım. M1 grafiğinde USDJPY'deki sonuçlarımdan bir örnek:
Farklı bir çiftte kullanmayı düşündünüz mü?
bar3 < -1 veya bar3 > 1'de çıkış, olumlu sonuçlar döndürmedi.
hangi ticaretlere sahip olduğunuzu doğru bir şekilde kontrol edin
doğru sembolü ve doğru sihirli sayıyı arayın
bir orderloop ile kapatmak için doğru ticareti seçebilirsiniz
.
senin yönteminle
PC'nizi yeniden başlattığınız anda bilet değerini kaybedersiniz
başarısız .....
Bunun bir emri kapatmanın en iyi yolu olmadığını söylüyorsanız, katılıyorum, ancak adam OrderSelect'i kullanmak istemiyorsa (veya nasıl olduğunu bilmiyorsa) ve piyasada herhangi bir açık emir bırakmıyorsa çalışır.
Burada birbirimize yardım etmeye çalışıyoruz ve cevabınız biraz yardımcı olmadı, ona Order Select işlevini nasıl kullanacağını göstermediniz ve yorumunuz nedeniyle EA'sı şimdi daha iyi çalışmıyor.
Bir daha yardım etmek istediğinde, doğru şekilde yap, oraya doğru kodu koy ki başkaları gerçekten bir şeyler öğrenebilsin.
Yanlış yaptığın birkaç şey var. Bu EA'nın M1 zaman diliminde JPY çiftleri üzerinde çalışmasını istediğinizi varsayıyorum. Yalnızca yeni çubukta sipariş vermek ve yalnızca yeni çubukta siparişleri kapatmak mı yoksa yeni çubuktan giriş yapıp koşullar sağlandığında çıkmak mı istiyorsunuz? İşte düşündüğüm şey:
Önce OrdersTotal() ile siparişleri sayarsınız.
Ardından değişkenlerinizi hesaplayın
Piyasada emirler varsa, kapatılmaları gerekip gerekmediğini kontrol edin.
Piyasada emir yoksa, giriş koşullarının karşılanıp karşılanmadığını kontrol edin.
MQL5.com web sitesine giriş yapmak için çerezlerin kullanımına izin vermelisiniz.
Lütfen tarayıcınızda gerekli ayarı etkinleştirin, aksi takdirde giriş yapamazsınız.
Hesabınıza giriş yaptınız. İki faktörlü kimlik doğrulama devre dışı bırakıldı. Yeniden kurup yeni bir QR kodu tarayın veya iki faktörlü kimlik doğrulama devre dışıyken devam edin.
Herkese selam,
Şimdi OrderClose'a OrderTicket() ve OrderLots() kullanmadan bilet ve Lot ekliyorum ama o da siparişi kapatmıyor. Lütfen yardım et.
Yanlış yaptığın birkaç şey var. Bu EA'nın M1 zaman diliminde JPY çiftleri üzerinde çalışmasını istediğinizi varsayıyorum. Yalnızca yeni çubukta sipariş vermek ve yalnızca yeni çubukta siparişleri kapatmak mı yoksa yeni çubuktan giriş yapıp koşullar sağlandığında çıkmak mı istiyorsunuz? İşte düşündüğüm şey:
Önce OrdersTotal() ile siparişleri sayarsınız.
Ardından değişkenlerinizi hesaplayın
Piyasada emirler varsa, kapatılmaları gerekip gerekmediğini kontrol edin .
Piyasada herhangi bir emir yoksa, giriş koşullarının karşılanıp karşılanmadığını kontrol edin.
Herhangi bir sorunuz olursa bana bildirin.
bilet yerel bir değişkendir, bu nedenle bir sonraki onay işareti aynı değere sahip olmayacaktır.
Globalscope yapmak için işlevlerin dışına koyun
total= OrdersTotal ();?????? ..... Faydasız
hangi ticaretlere sahip olduğunuzu doğru bir şekilde kontrol edin
doğru sembolü ve doğru sihirli sayıyı arayın
bir orderloop ile kapatmak için doğru ticareti seçebilirsiniz
.
senin yönteminle
PC'nizi yeniden başlattığınız anda bilet değerini kaybedersiniz
başarısız .....
Neden benim mesajımdan alıntı yaptın ve sonra yorum yapmadın?
evet şimdi kapanabilir teşekkürler GumRai. şimdi bilet numarasının tiklere göre değiştiğini biliyorum, peki açık siparişin bilet numarası nasıl elde edilir? OrderTicket()'i kullanmak zorundayım, değil mi?
OrderTicket() kullanıyorsanız, o zaman önce OrderSelect() kullandığınızdan emin olun ve ayrıca kapatmak istediğiniz işlem olduğundan emin olun.
evet şimdi kapanabilir teşekkürler GumRai. şimdi bilet numarasının tiklere göre değiştiğini biliyorum, peki açık siparişin bilet numarası nasıl elde edilir? OrderTicket()'i kullanmak zorundayım, değil mi?
Merhaba Chuale,
İşte siparişlerinizi seçmenin ve siparişleri sembole ve Sihirli numaraya göre kapatmanın kolay bir yolu:
evet şimdi kapanabilir teşekkürler GumRai. şimdi bilet numarasının tiklere göre değiştiğini biliyorum, peki açık siparişin bilet numarası nasıl elde edilir? OrderTicket()'i kullanmak zorundayım, değil mi?
Tekrar merhaba Chuale,
USDJPY'de fikrinizle uğraşıyordum ve bazı değişiklikler olmadan olumlu sonuçlar alamadım. M1 grafiğinde USDJPY'deki sonuçlarımdan bir örnek:
Farklı bir çiftte kullanmayı düşündünüz mü?
bar3 < -1 veya bar3 > 1'de çıkış, olumlu sonuçlar döndürmedi.
?????? ..... Faydasız
hangi ticaretlere sahip olduğunuzu doğru bir şekilde kontrol edin
doğru sembolü ve doğru sihirli sayıyı arayın
bir orderloop ile kapatmak için doğru ticareti seçebilirsiniz
.
senin yönteminle
PC'nizi yeniden başlattığınız anda bilet değerini kaybedersiniz
başarısız .....
Bunun bir emri kapatmanın en iyi yolu olmadığını söylüyorsanız, katılıyorum, ancak adam OrderSelect'i kullanmak istemiyorsa (veya nasıl olduğunu bilmiyorsa) ve piyasada herhangi bir açık emir bırakmıyorsa çalışır.
Burada birbirimize yardım etmeye çalışıyoruz ve cevabınız biraz yardımcı olmadı, ona Order Select işlevini nasıl kullanacağını göstermediniz ve yorumunuz nedeniyle EA'sı şimdi daha iyi çalışmıyor.
Bir daha yardım etmek istediğinde, doğru şekilde yap, oraya doğru kodu koy ki başkaları gerçekten bir şeyler öğrenebilsin.
Yanlış yaptığın birkaç şey var. Bu EA'nın M1 zaman diliminde JPY çiftleri üzerinde çalışmasını istediğinizi varsayıyorum. Yalnızca yeni çubukta sipariş vermek ve yalnızca yeni çubukta siparişleri kapatmak mı yoksa yeni çubuktan giriş yapıp koşullar sağlandığında çıkmak mı istiyorsunuz? İşte düşündüğüm şey:
Önce OrdersTotal() ile siparişleri sayarsınız.
Ardından değişkenlerinizi hesaplayın
Piyasada emirler varsa, kapatılmaları gerekip gerekmediğini kontrol edin.
Piyasada emir yoksa, giriş koşullarının karşılanıp karşılanmadığını kontrol edin.
Herhangi bir sorunuz varsa bana bildirin.