Üzgünüm ama dün internette sorun oldu (mql4.com çalışmayı durdurdu). Bir şeyi düzeltmeye çalışıyordum ve ... çöküyordu
//+------------------------------------------------------------------+//+------------------------------------------------------------------+#define MAGICMA1 2000// blue starategy#define MAGICMA2 2001// red strategy//+------------------------------------------------------------------+//| Check NEW BAR |//+------------------------------------------------------------------+bool New_Bar = false ;
bool Fun_New_Bar() // bool
{
staticdatetime New_Time= 0 ;
New_Bar= false ;
if (New_Time!=Time[ 0 ])
{
New_Time=Time[ 0 ];
New_Bar= true ;
}
}
//+------------------------------------------------------------------+//| Calculate open positions HOW MEANY OF THIS is open |//+------------------------------------------------------------------+//--- FOR BLUE---------------------------------------------------------int OpenOrders_BULL4( string symbol)
{
int buys= 0 ;
for ( int i= 0 ;i< OrdersTotal ();i++)
{
if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES)== false ) break ;
if (OrderSymbol()== Symbol () && OrderMagicNumber()==MAGICMA1) // magic ma 1 ( is ==)
{
if (OrderType()==OP_BUY) buys++;
}
}
return (buys);
}
//--- FOR RED--------------------------------------------------------------int OpenOrders_BULL6( string symbol)
{
int buys= 0 ;
for ( int i= 0 ;i< OrdersTotal ();i++)
{
if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES)== false ) break ;
if (OrderSymbol()== Symbol () && OrderMagicNumber()==MAGICMA2) // magic ma 2 ( is ==)
{
if (OrderType()==OP_BUY) buys++;
}
}
return (buys);
}
//+------------------------------------------------------------------+//| Condition candle |//+------------------------------------------------------------------+bool BULL4()
{
if (Close[ 1 ]-Open[ 1 ]>= 4 * Point && Close[ 1 ]-Open[ 1 ]<= 5 * Point )
return ( true );
}
bool BULL6()
{
if (Close[ 1 ]-Open[ 1 ]>= 6 * Point && Close[ 1 ]-Open[ 1 ]<= 7 * Point )
return ( true );
}
//+------------------------------------------------------------------+//| Check for open order conditions |//+------------------------------------------------------------------+//--------------------------- blue bull4 magicma1 void OpenBULL41()
{
int result;
if (Bid==Close[ 1 ]+ 3 * Point )
{
result= OrderSend ( Symbol (),OP_BUY, 0.41 ,Ask, 0 ,Close[ 1 ]- 25 * Point , 0 , "" ,MAGICMA1, 0 ,Blue);
return ( true );
}
if (result == - 1 )
{
int e = GetLastError ();
Print (e);
}
}
void OpenBULL42()
{
int result;
for ( int i= 1 ;i<= OrdersTotal ();i++)
{
if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES)== false ) break ;
if (OrderSymbol()== Symbol () && OrderMagicNumber()==MAGICMA1) // magic ma 1 ( is ==)
{
if (Ask>OrderOpenPrice()+ 2 * Point )
{
result= OrderSend ( Symbol (),OP_BUY, 0.42 ,Ask, 0 ,Close[ 1 ]- 25 * Point , 0 , "" ,MAGICMA1, 0 ,Blue);
return ;
}
if (result == - 1 )
{
int e = GetLastError ();
Print (e);
}
}
}
}
//--------------------------- red bull6 magicma2 void OpenBULL61()
{
int result;
if (Bid==Close[ 1 ]+ 3 * Point )
{
result= OrderSend ( Symbol (),OP_BUY, 0.61 ,Ask, 0 ,Close[ 1 ]- 25 * Point , 0 , "" ,MAGICMA2, 0 ,Red);
return ;
}
if (result == - 1 )
{
int e = GetLastError ();
Print (e);
}
}
void OpenBULL62()
{
int result;
if (Ask>OrderOpenPrice()+ 2 * Point )
{
result= OrderSend ( Symbol (),OP_BUY, 0.62 ,Ask, 0 ,Close[ 1 ]- 25 * Point , 0 , "" ,MAGICMA2, 0 ,Red);
return ;
}
if (result == - 1 )
{
int e = GetLastError ();
Print (e);
}
}
void OpenBULL63()
{
int result;
if (Ask>OrderOpenPrice()+ 2 * Point )
{
result= OrderSend ( Symbol (),OP_BUY, 0.63 ,Ask, 0 ,Close[ 1 ]- 25 * Point , 0 , "" ,MAGICMA2, 0 ,Red);
return ;
}
if (result == - 1 )
{
int e = GetLastError ();
Print (e);
}
}
//+------------------------------------------------------------------+//| Check for close order conditions |//+------------------------------------------------------------------+void CheckForClose_BULL4()
{
if (OrderOpenPrice()+ 4 * Point < Ask)
for ( int i = OrdersTotal ()- 1 ; i >= 0 ;i--) // add: -1
{
OrderSelect (i,SELECT_BY_POS,MODE_TRADES);
if (OrderSymbol() == Symbol ()&& OrderMagicNumber()==MAGICMA1)
{
bool ticket = true ;
if (OrderType() == OP_BUY) ticket = OrderClose(OrderTicket(),OrderLots(),Bid, 1 ,Blue);
}
}
}
void CheckForClose_BULL6()
{
if (OrderOpenPrice()+ 8 * Point < Ask)
for ( int i = OrdersTotal ()- 1 ; i >= 0 ;i--)
{
OrderSelect (i,SELECT_BY_POS,MODE_TRADES);
if (OrderSymbol() == Symbol ()&& OrderMagicNumber()==MAGICMA2)
{
bool ticket = true ;
if (OrderType() == OP_BUY) ticket = OrderClose(OrderTicket(),OrderLots(),Bid, 1 ,Red);
}
}
}
//+------------------------------------------------------------------+//| flag |//+------------------------------------------------------------------+
Fun_New_Bar();
if (New_Bar== false );
bool SignalBULL41Executed= false ;
bool SignalBULL42Executed= false ;
bool SignalBULL61Executed= false ;
bool SignalBULL62Executed= false ;
bool SignalBULL63Executed= false ;
if (Fun_New_Bar())
{
SignalBULL41Executed= true ;
return (SignalBULL41Executed);
}
//+------------------------------------------------------------------+//| Start function |//+------------------------------------------------------------------+void start()
{
// ----------------bull4if (BULL4())
if (!SignalBULL41Executed && OpenOrders_BULL4( Symbol ())== 0 )
{
OpenBULL41(); //do open buy position
SignalBULL41Executed= true ;
if ( SignalBULL41Executed) CheckForClose_BULL4(); // I don't know it is the right place to close
}
if (!SignalBULL42Executed && OpenOrders_BULL4( Symbol ())== 1 )
{
OpenBULL42(); //do open buy position
SignalBULL42Executed= true ;
if ( SignalBULL42Executed) CheckForClose_BULL4(); // I don't know it is the right place to close
}
// ----------------bull6 if (BULL6())
if (!SignalBULL61Executed && OpenOrders_BULL6( Symbol ())== 0 )
{
OpenBULL61(); //do open buy position
SignalBULL61Executed= true ;
if ( SignalBULL61Executed) CheckForClose_BULL6(); // I don't know it is the right place to close
}
if (!SignalBULL62Executed && OpenOrders_BULL6( Symbol ())== 1 )
{
OpenBULL62(); //do open buy position
SignalBULL62Executed= true ;
if ( SignalBULL62Executed) CheckForClose_BULL6(); // I don't know it is the right place to close
}
if (!SignalBULL63Executed && OpenOrders_BULL6( Symbol ())== 2 )
{
OpenBULL63(); //do open buy position
SignalBULL42Executed= true ;
if ( SignalBULL62Executed) CheckForClose_BULL6(); // I don't know it is the right place to close
}
}
//+------------------------------------------------------------------+
Sana yardım etmek kolay değil. Neden şimdilik sadece bir strateji uygulamaya çalışmıyorsunuz, ancak uygun bir Open(), Close(), Count(), NewBar(), Signal() işleviyle .
Aşağıdaki blok, başlatma fonksiyonunun dışındadır. Bunun istendiğinden emin değilim.
Fun_New_Bar();
if (New_Bar== false ); // <-- ???bool SignalBULL41Executed= false ; // <-- This could be correct, but I am not sure you know why and
bool SignalBULL42Executed= false ; // its not more an accident that you initalize it here.
bool SignalBULL61Executed= false ;
bool SignalBULL62Executed= false ;
bool SignalBULL63Executed= false ;
if (Fun_New_Bar()) // <-- Your Fun_New_Bar() function doesn't return anything,
{ // you set the global New_Bar variable with the function.
SignalBULL41Executed= true ; // <-- You should set it to false on a new bar. return (SignalBULL41Executed); // <-- ???
}
Evet, küçük adımlar, yani hatalar yönetilebilir... Kod tabanı EA'dan belirli bir şeyi vurgulamak ister misiniz?
Bunu bir daha görmeyeceğim - Düzeltme adımlarını daha fazla görmezden gelirseniz size artık yardım etmeyeceğim, ben - veya bir başkası - yapmanızı tavsiye ettim:
if ( Bid==Close[ 1 ]+ 3 * Point )
Kayma 0 mı? Muhtemelen bir hata alırsınız. Ancak sabit hata işleme onu yakalayacaktır :-)
Bu yanlış değil, ideal değil ve en kötü durumda döngü içinde istediğinizi yapmıyor. En iyisi, 0'dan OrdersTotal'a kadar olan döngüleri kullanmaya bile başlama. Bunu okuyun: Döngüler ve Emirleri Kapatma veya Silme
for ( int i= 0 ;i< OrdersTotal ();i++)
Brokerlerinizin yayılımı nedir ve ticaret yapmak istediğiniz sembol için kaç haneniz var? Point'i doğru kullandığınızdan emin değilim (Konunuzun ilk sayfasını okuyun).
Evet, küçük adımlar, yani hatalar yönetilebilir... Kod tabanı EA'dan belirli bir şeyi vurgulamak ister misiniz?
Bence hayır, aydınlatacak bir şey yok, ne yazdığımı anlıyorum.
Bunu bir daha görmeyeceğim - Düzeltme adımlarını daha fazla görmezden gelirseniz size artık yardım etmeyeceğim, ben - veya bir başkası - yapmanızı tavsiye ettim:
Evet. NormalizeDouble'ın ne olduğunu biliyorum, anladığım kadarıyla (eğer varsa: euro/usd = 1.2390022129.....09..... Ve ihtiyacımız olan: 1.29893 bit! sonsuz değil) ama bunları yazamıyorum, olabilir mi? bunlar mı
if ( NormalizeDouble ( abc(),0 ) )
bool abc()
{
bool z,y,z;
x=Teklif;
y=Kapat[1]
z=x-y+3*Nokta
dönüş(z);
}
veya ?
If ( NormalizeDouble ((Close[1]-Bid) +3*point),0 ) ;
Kayma 0 mı? Muhtemelen bir hata alırsınız. Ancak sabit hata işleme onu yakalayacaktır :-)
+1 problemim yok sonuç= OrderSend ( Symbol (),OP_BUY, 0.41 ,Ask, 1 ,Close[ 1 ]- 25 * Point , 0 , "" ,MAGICMA1, 0 ,Blue);
hata halledilecek, güzel, sonra ne olacağını göreceğiz
Bu yanlış değil, ideal değil ve en kötü durumda döngü içinde istediğinizi yapmıyor. En iyisi, 0'dan OrdersTotal'a kadar olan döngüleri kullanmaya bile başlama. Bunu okuyun: Döngüler ve Emirleri Kapatma veya Silme
ÇOK İYİ BİR YAZI! Bunları en başında okumalıyım :)
Brokerlerinizin yayılımı nedir ve ticaret yapmak istediğiniz sembol için kaç haneniz var? Point'i doğru kullandığınızdan emin değilim (Konunuzun ilk sayfasını okuyun).
Bunları hatırlıyorum. Amiral Market Bid=1,29000 Ask = 1,29001 var. Bunlar benim bildiğim bir problem ama şu anda bir çözümüm yok iyi örneğini bulamadım.
Evet. NormalizeDouble'ın ne olduğunu biliyorum, anladığım kadarıyla (eğer varsa: euro/usd = 1.2390022129.....09..... Ve ihtiyacımız olan: 1.29893 bit! sonsuz değil) ama bunları yazamıyorum, olabilir mi? bunlar mı
if ( NormalizeDouble ( abc(),0 ) )
bool abc()
{
Bir bool NormalizeDouble() yapamazsınız, ipucu işlev adında ve belgelerde de bulunur. . .
Bir bool NormalizeDouble() yapamazsınız, ipucu işlev adında ve belgelerde de bulunur. . .
Doğruyu çok doğru olarak normalleştiremememiz üzücü :-(
Wodzuuu : Evet. NormalizeDouble'ın ne olduğunu biliyorum, anladığım kadarıyla (eğer varsa: euro/usd = 1.2390022129.....09..... Ve ihtiyacımız olan: 1.29893 bit! sonsuz değil) ama bunları yazamıyorum, olabilir mi? bunlar mı
Hayır, Teklifi veya Kapat[1]'ı normalleştirmeniz gerekmez. Demek istediğim, sadece eşitlik için karşılaştırmamalısın.
Düşünmek: Kapat[1] = 1.31933 Yeni_Bar Kene1, Teklif = 1.31935 Tik2, Teklif = 1.31934 Tik3, Teklif = 1.31937 Tick4, Teklif = 1.31937 Kene5, Teklif = 1.31942
Kodunuz, Teklifin 1.31936 olduğu bir Onay işareti arar
if ( Bid==Close[ 1 ]+ 3 * Point )
Sinyalini kaçıracaksın. > kullanırsanız bu olmaz.
Wodzuuu : +1 problemim yok sonuç= OrderSend ( Symbol (),OP_BUY, 0.41 ,Ask, 1 ,Close[ 1 ]- 25 * Point , 0 , "" ,MAGICMA1, 0 ,Blue);
Bu onu daha iyi yapmaz. Puan cinsinden yaptığınız tüm hesaplamalar, anladığım kadarıyla Pip olmalıdır. Ancak, ECN brokerleriyle deneyimim yok, bu yüzden işe yarayabilir.
Wodzuuu :
Bu yanlış değil, ideal değil ve en kötü durumda döngü içinde istediğinizi yapmıyor. En iyisi, 0'dan OrdersTotal'a kadar olan döngüleri kullanmaya bile başlama. Bunu okuyun: Döngüler ve Emirleri Kapatma veya Silme
ÇOK İYİ BİR YAZI! Bunları en başında okumalıyım :)
Katılıyorum ve aynı yazar tarafından yazılmış daha birçok çok iyi makale var. Ayrıca kitap başlamak için fena bir yer değil.
Wodzuuu :
Amiral Market Bid=1,29000 Ask = 1,29001 var. Bunlar benim bildiğim bir problem ama şu anda bir çözümüm yok iyi örneğini bulamadım.
Broker web sitenizde EURUSD için minimum spreadin 0,1 olduğu belirtilmiştir. Ortalama yayılma 0,5'tir. <-- Bu pip cinsinden ifade edilmektedir! Yani 0,1 1 Noktadır. 0,5, 5 Puandır. Yani sizin durumunuzda bir Pip 10*Puandır. Yayılma, bir fiyata yalnızca 3 puan eklediğiniz tüm mini hesaplamalarınızı karıştıracaktır. '5 haneli komisyoncu için ayarla' araması yapın ve birçok örnek bulmalısınız.
Sinyalleri ilettiğimiçinbukodkötüyse,düzelmiştir.Sorununtamamenfarklı bir yerdeolduğunudüşündüm, eşitlik işareti'=='......... '>=' elbette daha iyi bir fikir
if ( Bid==Close[ 1 ]+ 3 * Point )
if ( Bid>=Close[ 1 ]+MyPips* 3 )
Soru 1. MyPips'i bu işlevlerde mum içinde kullanabilir miyim? bool BULL4()
Uzmanolduğun içinbirşey söylemeliydim,önemli olabilir. ŞimdiMT4platformunukullanıyorum ve ondalık noktadan sonra4 rakamgörüyorum(Bid- Ask = genellikle 0.0001) . MQL4'teprogramladığımızşu andaolsun. MT5'teondalık noktadan sonra5basamakgörüyorum . MQL4 ve MQL5arasında fark vardır . Şu andabuhızbenim içinönemlideğil . EAiçinönemliolaniyi çalıştı. Şu andabunun hakkında konuşmak istemiyorum(gerekmedikçe)
VE PROGRAM YAZDIM benim için güzel :) Peki ya Sen?
//+------------------------------------------------------------------+//+------------------------------------------------------------------+#define MAGICMA1 2000// blue starategy//+------------------------------------------------------------------+//| Check NEW BAR |//+------------------------------------------------------------------+// nothing yet, one moment//+------------------------------------------------------------------+//| These are adjusted for 5/4 digit brokers |//+------------------------------------------------------------------+double MyPips; // slippage and othersint init()
{
if ( Digits == 5 ) // Adjust for five (5)
{
MyPips= Point * 10 ;
}
else// Adjust for four (4, and ..)
{
MyPips= Point * 1 ;
}
}
//+------------------------------------------------------------------+//| Calculate open positions HOW MEANY OF THIS is open |//+------------------------------------------------------------------+int OpenOrders_BULL4( string symbol)
{
int buys= 0 ;
for ( int i= 0 ;i< OrdersTotal ();i++)
{
if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES)== false ) break ;
if (OrderSymbol()== Symbol () && OrderMagicNumber()==MAGICMA1)
{
if (OrderType()==OP_BUY) buys++;
}
}
return (buys);
}
//+------------------------------------------------------------------+//| Condition candle |//+------------------------------------------------------------------+bool BULL4()
{
if (Close[ 1 ]-Open[ 1 ]>= 4 * Point && Close[ 1 ]-Open[ 1 ]<= 5 * Point )
{
return ( true );
}
else
{
return ( false );
}
}
//+------------------------------------------------------------------+//| Condition send buy |//+------------------------------------------------------------------+bool BULL4send()
{
if ( Bid>=Close[ 1 ]+MyPips* 3 )
{
return ( true );
}
else
{
return ( false );
}
}
//+------------------------------------------------------------------+//| Check for open order conditions |//+------------------------------------------------------------------+bool OpenBULL41()
{
int result;
result= OrderSend ( Symbol (),OP_BUY, 0.41 ,Ask,MyPips,Close[ 1 ]- 25 *MyPips, 0 , "" ,MAGICMA1, 0 ,Blue);
if (result> 0 )
{
if ( OrderSelect (result,SELECT_BY_TICKET,MODE_TRADES)) Print ( "BUY order opened : " ,OrderOpenPrice());
}
else
{
Print ( "Error opening BUY order : " , GetLastError ());
return ( false );
}
return ( true );
}
//+------------------------------------------------------------------+//| Check for close order conditions |//+------------------------------------------------------------------+bool CheckForCloseBULL4()
{
int i;
for (i= OrdersTotal ()- 1 ;i>= 0 ;i--)
if ( ! OrderSelect (i, SELECT_BY_POS, MODE_TRADES) ) continue ;
if ( OrderMagicNumber() == MAGICMA1 && OrderSymbol() == Symbol () && OrderType() == OP_BUY )
if (OrderOpenPrice()+ 8 *MyPips < Ask) return ( true );
elsereturn ( false );
}
//+------------------------------------------------------------------+//| close |//+------------------------------------------------------------------+void CloseBULL4()
{
int i;
for (i= OrdersTotal ()- 1 ;i>= 0 ;i--)
{
if ( ! OrderSelect (i, SELECT_BY_POS, MODE_TRADES) ) continue ;
if ( OrderMagicNumber() == MAGICMA1 && OrderSymbol() == Symbol () && OrderType() == OP_BUY )
if ( ! OrderClose( OrderTicket(), OrderLots(), OrderClosePrice(), MyPips* 1 ,Black ) )
Print ( "Order Close failed, order number: " , OrderTicket(), " Error: " , GetLastError () );
}
}
//+------------------------------------------------------------------+//| Start function |//+------------------------------------------------------------------+void start()
{
// ----------------bull4if (BULL4() && BULL4send() && OpenOrders_BULL4( Symbol ())== 0 )
{
OpenBULL41(); //do open buy position
}
if (CheckForCloseBULL4()== true && OpenOrders_BULL4( Symbol ())== 1 ) CloseBULL4();
}
//+------------------------------------------------------------------+
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.
Kod üzerinde biraz kontrolümüzü kaybettiğimize dair bir his var....
Hayır, burası kesinlikle doğru yer değil.
Bu 'hata işleme' hiçbir şeyi daha iyi yapmaz. Tekrar kontrol et.
Bu eğlence için yaratılmamıştır! Yürütülen bayrakları yeni bir çubukta sıfırlamak için kullanılmalıdır.
Çiftleri karşılaştırmak hakkında ne öğrendik ve bunun burada bir anlamı var mı?
Demek bahsettiğim gönderisini silmeye karar verdin... Aferin, bu çok yardımcı oldu!
Üzgünüm ama dün internette sorun oldu (mql4.com çalışmayı durdurdu). Bir şeyi düzeltmeye çalışıyordum ve ... çöküyordu
Sana yardım etmek kolay değil. Neden şimdilik sadece bir strateji uygulamaya çalışmıyorsunuz, ancak uygun bir Open(), Close(), Count(), NewBar(), Signal() işleviyle .
Aşağıdaki blok, başlatma fonksiyonunun dışındadır. Bunun istendiğinden emin değilim.
Ben de senin gibi düşünüyorum , küçük adımlar . Sadece bir seçeneği ele alalım BULL4
Bazen kod tabanımda Ea gibi görünüyor
https://www.mql5.com/en/code/9156 - ilginç
Bunları anlıyorum (ama hissetmiyorum), ben bir bayrak ve amacını anlıyorum
ne düşünüyorsun? küçük adımlar hakkında
Evet, küçük adımlar, yani hatalar yönetilebilir...
Kod tabanı EA'dan belirli bir şeyi vurgulamak ister misiniz?
Bunu bir daha görmeyeceğim - Düzeltme adımlarını daha fazla görmezden gelirseniz size artık yardım etmeyeceğim, ben - veya bir başkası - yapmanızı tavsiye ettim:
Kayma 0 mı? Muhtemelen bir hata alırsınız. Ancak sabit hata işleme onu yakalayacaktır :-)
Bu yanlış değil, ideal değil ve en kötü durumda döngü içinde istediğinizi yapmıyor. En iyisi, 0'dan OrdersTotal'a kadar olan döngüleri kullanmaya bile başlama. Bunu okuyun: Döngüler ve Emirleri Kapatma veya Silme
Brokerlerinizin yayılımı nedir ve ticaret yapmak istediğiniz sembol için kaç haneniz var? Point'i doğru kullandığınızdan emin değilim (Konunuzun ilk sayfasını okuyun).
Evet, küçük adımlar, yani hatalar yönetilebilir...
Kod tabanı EA'dan belirli bir şeyi vurgulamak ister misiniz?
Bence hayır, aydınlatacak bir şey yok, ne yazdığımı anlıyorum.
Bunu bir daha görmeyeceğim - Düzeltme adımlarını daha fazla görmezden gelirseniz size artık yardım etmeyeceğim, ben - veya bir başkası - yapmanızı tavsiye ettim:
Evet. NormalizeDouble'ın ne olduğunu biliyorum, anladığım kadarıyla (eğer varsa: euro/usd = 1.2390022129.....09..... Ve ihtiyacımız olan: 1.29893 bit! sonsuz değil) ama bunları yazamıyorum, olabilir mi? bunlar mı
if ( NormalizeDouble ( abc(),0 ) )
If ( NormalizeDouble ((Close[1]-Bid) +3*point),0 ) ;
Kayma 0 mı? Muhtemelen bir hata alırsınız. Ancak sabit hata işleme onu yakalayacaktır :-)
+1 problemim yok sonuç= OrderSend ( Symbol (),OP_BUY, 0.41 ,Ask, 1 ,Close[ 1 ]- 25 * Point , 0 , "" ,MAGICMA1, 0 ,Blue);
hata halledilecek, güzel, sonra ne olacağını göreceğiz
Bu yanlış değil, ideal değil ve en kötü durumda döngü içinde istediğinizi yapmıyor. En iyisi, 0'dan OrdersTotal'a kadar olan döngüleri kullanmaya bile başlama. Bunu okuyun: Döngüler ve Emirleri Kapatma veya Silme
ÇOK İYİ BİR YAZI! Bunları en başında okumalıyım :)
Brokerlerinizin yayılımı nedir ve ticaret yapmak istediğiniz sembol için kaç haneniz var? Point'i doğru kullandığınızdan emin değilim (Konunuzun ilk sayfasını okuyun).
Bunları hatırlıyorum. Amiral Market Bid=1,29000 Ask = 1,29001 var. Bunlar benim bildiğim bir problem ama şu anda bir çözümüm yok iyi örneğini bulamadım.
kod yazıyorum...
Evet. NormalizeDouble'ın ne olduğunu biliyorum, anladığım kadarıyla (eğer varsa: euro/usd = 1.2390022129.....09..... Ve ihtiyacımız olan: 1.29893 bit! sonsuz değil) ama bunları yazamıyorum, olabilir mi? bunlar mı
if ( NormalizeDouble ( abc(),0 ) )
Bir bool NormalizeDouble() yapamazsınız, ipucu işlev adında ve belgelerde de bulunur. . .
Bir bool NormalizeDouble() yapamazsınız, ipucu işlev adında ve belgelerde de bulunur. . .
Doğruyu çok doğru olarak normalleştiremememiz üzücü :-(
Evet. NormalizeDouble'ın ne olduğunu biliyorum, anladığım kadarıyla (eğer varsa: euro/usd = 1.2390022129.....09..... Ve ihtiyacımız olan: 1.29893 bit! sonsuz değil) ama bunları yazamıyorum, olabilir mi? bunlar mı
Hayır, Teklifi veya Kapat[1]'ı normalleştirmeniz gerekmez. Demek istediğim, sadece eşitlik için karşılaştırmamalısın.
Düşünmek:
Kapat[1] = 1.31933
Yeni_Bar
Kene1, Teklif = 1.31935
Tik2, Teklif = 1.31934
Tik3, Teklif = 1.31937
Tick4, Teklif = 1.31937
Kene5, Teklif = 1.31942
Kodunuz, Teklifin 1.31936 olduğu bir Onay işareti arar
Sinyalini kaçıracaksın. > kullanırsanız bu olmaz.
+1 problemim yok sonuç= OrderSend ( Symbol (),OP_BUY, 0.41 ,Ask, 1 ,Close[ 1 ]- 25 * Point , 0 , "" ,MAGICMA1, 0 ,Blue);
Bu onu daha iyi yapmaz. Puan cinsinden yaptığınız tüm hesaplamalar, anladığım kadarıyla Pip olmalıdır. Ancak, ECN brokerleriyle deneyimim yok, bu yüzden işe yarayabilir.
Bu yanlış değil, ideal değil ve en kötü durumda döngü içinde istediğinizi yapmıyor. En iyisi, 0'dan OrdersTotal'a kadar olan döngüleri kullanmaya bile başlama. Bunu okuyun: Döngüler ve Emirleri Kapatma veya Silme
ÇOK İYİ BİR YAZI! Bunları en başında okumalıyım :)
Katılıyorum ve aynı yazar tarafından yazılmış daha birçok çok iyi makale var. Ayrıca kitap başlamak için fena bir yer değil.
Amiral Market Bid=1,29000 Ask = 1,29001 var. Bunlar benim bildiğim bir problem ama şu anda bir çözümüm yok iyi örneğini bulamadım.
Broker web sitenizde EURUSD için minimum spreadin 0,1 olduğu belirtilmiştir. Ortalama yayılma 0,5'tir. <-- Bu pip cinsinden ifade edilmektedir! Yani 0,1 1 Noktadır. 0,5, 5 Puandır.
Yani sizin durumunuzda bir Pip 10*Puandır. Yayılma, bir fiyata yalnızca 3 puan eklediğiniz tüm mini hesaplamalarınızı karıştıracaktır.
'5 haneli komisyoncu için ayarla' araması yapın ve birçok örnek bulmalısınız.
SELAM :)
Sinyalleri ilettiğim için bu kod kötüyse , düzelmiştir . Sorunun tamamen farklı bir yerde olduğunu düşündüm , eşitlik işareti '=='......... '>=' elbette daha iyi bir fikir
Soru 1. MyPips'i bu işlevlerde mum içinde kullanabilir miyim? bool BULL4()
SAYI sorunu.
bunları buldum
https://www.mql5.com/en/forum/140097 WHRoeder tarafından
https://www.mql5.com/en/forum/123736 tarafından WHRoeder
Sayı nedir? https://docs.mql4.com/predefined/variables/digits ve https://docs.mql4.com/convert/doubletostr içinde
Uzman olduğun için bir şey söylemeliydim, önemli olabilir.
Şimdi MT4 platformunu kullanıyorum ve ondalık noktadan sonra 4 rakam görüyorum (Bid - Ask = genellikle 0.0001) . MQL4'te programladığımız şu anda olsun .
MT5'te ondalık noktadan sonra 5 basamak görüyorum . MQL4 ve MQL5 arasında fark vardır . Şu anda bu hız benim için önemli değil . EA için önemli olan iyi çalıştı.
Şu anda bunun hakkında konuşmak istemiyorum ( gerekmedikçe )
VE PROGRAM YAZDIM benim için güzel :) Peki ya Sen?