Diziyi 3 öğeye genişletti. Mevcut fiyat ile içindekiler arasında bir tutarsızlık aldım. Büyük ihtimalle nedeni bu
Sonuçlar:
Hem Ask hem de Bid'in sıfırın maksimumundan ve ikinci çubuğun maksimumundan büyük olduğunu anlıyoruz
Kodunuzdaki dizilerin seriliğini hesaba katmazsınız. Böyle bir sonuçla, diyelim ki 2000 yılında 0 bar çıkmayacağını kimse garanti edemez.
Yukarıdaki kodu verdim, dizi seçeneği olan tüm TF'ler için uygundur.
Orada verilen bu kod boşuna değil
//Preparation of arrayArraySetAsSeries (bar_info, true );
Çubuğun yüksekliğini belirlemek için yalnızca günlük TF'ye (D1) ihtiyacınız varsa ve diziyle hiç oynamanıza gerek yoksa, işlevin ilk bölümünü buna değiştirin.
//Function BUY_pendingbool BUY_pending( string symbol, double volume, ulong magic = 0 )
{
//----------------------------------------------------------------------------////Work variablesdouble price = 0 , sl = 0 , tp = 0 ; //Prices: Open, Sell stop, Take profitdouble High = 0 ; //The maximum value of bid for the current dayint Dig = 0 ; //Digitsbool Result = true ; //Returned importance//----------------------------------------------------------------------------//ResetLastError ();
//Checking the signal to stopping the trading systemif ( IsStopped ()) return ( false );
//Preparation of structuresZeroMemory (TradeRequest);
ZeroMemory (TradeResult);
ZeroMemory (CheckResult);
//Calculations
High = SymbolInfoDouble (symbol, SYMBOL_BIDHIGH );
Dig = ( int ) SymbolInfoInteger (symbol, SYMBOL_DIGITS );
price = NormalizeDouble (High + 500 * _Point ,Dig);
sl = NormalizeDouble (price - 200 * _Point ,Dig);
tp = NormalizeDouble (price + 1000 * _Point ,Dig);
Dürüst olduğumu hatırlamıyorum. Ama yukarıda verdiğim kodun sonucu şu şekilde elde ettiğimiz şeyle örtüşüyor (Yahudi açısından açılış fiyatı 1.24516 Pound için 1.56721'dir)
High = SymbolInfoDouble (symbol, SYMBOL_BIDHIGH );
Evet olmasına rağmen, ArraySetAsSeries olmadan bu durumda iyi çalışıyor
//+------------------------------------------------------------------+//Function BUY_pendingbool BUY_pending( string symbol, ENUM_TIMEFRAMES period, double volume, ulong magic = 0 )
{
//----------------------------------------------------------------------------////Work variablesdouble price = 0 , sl = 0 , tp = 0 ; //Prices: Open, Sell stop, Take profitint ResCopy = - 1 ; //Result of copying the data into an arrayint Dig = 0 ; //Digitsdouble bar_info[ 1 ];
bool Result = true ; //Returned importance//----------------------------------------------------------------------------//ResetLastError ();
//Checking the signal to stopping the trading systemif ( IsStopped ()) return ( false );
//Preparation of structuresZeroMemory (TradeRequest);
ZeroMemory (TradeResult);
ZeroMemory (CheckResult);
//Copying the data into an array
ResCopy = CopyHigh (symbol,period, 0 , 1 ,bar_info);
if (ResCopy==- 1 ) return ( false );
//Calculations
Dig = ( int ) SymbolInfoInteger (symbol, SYMBOL_DIGITS );
price = NormalizeDouble (bar_info[ 0 ] + 500 * _Point ,Dig);
not
onlar. mevcut çubuğu almanız gerekiyorsa, bu satırdaki diziye üç çubuğu boşuna kopyalıyorsunuz
//Это не правильноint ResCopy = CopyHigh ( "EURUSD" , PERIOD_D1 , 0 , 3 ,bar_info);
//так правильноint ResCopy = CopyHigh ( "EURUSD" , PERIOD_D1 , 0 , 1 ,bar_info);
//если PERIOD_D1 не меняется вот идеальный вариант
High = SymbolInfoDouble (symbol, SYMBOL_BIDHIGH );
Onlar. sizin durumunuzda, birkaç çubuğu kopyalarken, mevcut çubuğu elde etmek için, bunun gibi bir şey düzenlemeniz gerekir (ancak diziye kopyalanan çubukların sayısı için ek kontrollere ihtiyacınız olabilir)
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.
ilunga :
PS (ve sizin) kodumda bar_info[1] geçerli çubuğun maksimumu olduğunu doğru anlıyor muyum?
Ve kimse şu anki hakkında konuşmadı. :)
Sadece örneğinizi değiştirdim. mevcut olana ihtiyacınız varsa, şunlara ihtiyacınız vardır:
1. Dizi serisinin yönünü belirleyin (0 bar - mevcut veya ilk).
Eğer bizde olduğu gibi dizi çıkarılırsa, bunu başlatma bloğunda bir kez yapabilirsiniz. Diziyi bir fonksiyonda saklarsak, onu yerinde tanımlarız.
2. Dizi bir dizi olarak bildirilirse, mevcut çubuk sıfır olur ve daha önce kapatılan çubuk 1 olur.
En azından hatırladığım kadarıyla.
Belki bir şeyi kaçırdım, ancak mevcut çubuğu açmak için (tüm eklemeleri dikkate alarak) bunu yapmanız gerekiyor.
Dizi bir işleve taşındı!
Ve kimse şu anki hakkında konuşmadı. :)
Sadece örneğinizi değiştirdim. mevcut olana ihtiyacınız varsa, o zaman şunlara ihtiyacınız vardır:
1. Dizi serisinin yönünü belirleyin (0 bar - mevcut veya ilk).
Eğer bizde olduğu gibi dizi çıkarılırsa, bunu başlatma bloğunda bir kez yapabilirsiniz. Diziyi bir fonksiyonda saklarsak, onu yerinde tanımlarız.
2. Dizi bir dizi olarak bildirilirse, mevcut çubuk sıfır olur ve daha önce kapatılan çubuk 1 olur.
En azından hatırladığım kadarıyla.
Diziyi 3 öğeye genişletti. Mevcut fiyat ile içindekiler arasında bir tutarsızlık aldım. Büyük ihtimalle nedeni bu
Sonuçlar (GBPUSD üzerinde test edilmiştir):
Hem Ask hem de Bid'in sıfırın maksimumundan ve ikinci çubuğun maksimumundan büyük olduğunu anlıyoruz
Test EURUSD üzerinde yapılırsa, her şey yolunda demektir:
Görünüşe göre "benim değil" çiftim testi sırasında, "çubuklarla ilgili bilgiler güncellendi, ancak henüz onay yok" durumu ortaya çıktı.
Diziyi 3 öğeye genişletti. Mevcut fiyat ile içindekiler arasında bir tutarsızlık aldım. Büyük ihtimalle nedeni bu
Sonuçlar:
Hem Ask hem de Bid'in sıfırın maksimumundan ve ikinci çubuğun maksimumundan büyük olduğunu anlıyoruz
Kodunuzdaki dizilerin seriliğini hesaba katmazsınız. Böyle bir sonuçla, diyelim ki 2000 yılında 0 bar çıkmayacağını kimse garanti edemez.
Yukarıdaki kodu verdim, dizi seçeneği olan tüm TF'ler için uygundur.
Orada verilen bu kod boşuna değil
Çubuğun yüksekliğini belirlemek için yalnızca günlük TF'ye (D1) ihtiyacınız varsa ve diziyle hiç oynamanıza gerek yoksa, işlevin ilk bölümünü buna değiştirin.
Kodunuzdaki dizilerin seriliğini hesaba katmazsınız. Böyle bir sonuçla, diyelim ki 2000 yılında 0 bar çıkmayacağını kimse garanti edemez.
Yukarıdaki kodu verdim, dizi seçeneği olan tüm TF'ler için uygundur.
Orada verilen bu kod boşuna değil
Kodunuzdaki dizilerin seriliğini hesaba katmazsınız. Böyle bir sonuçla, diyelim ki 2000 yılında 0 bar çıkmayacağını kimse garanti edemez.
Yukarıdaki kodu verdim, dizi seçeneği olan tüm TF'ler için uygundur.
Orada verilen bu kod boşuna değil
Tamam, diziyi dinamik yapalım.
xxx yerine doğru ve yanlışı sıralarız.
Sonuçlar:
ve
Dizideki sıra değişti, sonuç değişmedi. Teklif, dizinin [0]. çubuğunun maksimum değerinden büyük
ArraySetAsSeries sadece dinamik diziler için mi?
Dürüst olduğumu hatırlamıyorum. Ama yukarıda verdiğim kodun sonucu şu şekilde elde ettiğimiz şeyle örtüşüyor (Yahudi açısından açılış fiyatı 1.24516 Pound için 1.56721'dir)
Evet olmasına rağmen, ArraySetAsSeries olmadan bu durumda iyi çalışıyor
not
onlar. mevcut çubuğu almanız gerekiyorsa, bu satırdaki diziye üç çubuğu boşuna kopyalıyorsunuz
not
onlar. mevcut çubuğu almanız gerekiyorsa, bu satırdaki diziye üç çubuğu boşuna kopyalıyorsunuz
Teşekkür ederim! Bu seçenek hatasız gerçekleştirilir ve bu durumda tamamen yeterlidir.
Ancak, soru biraz daha yüksekte kaldı, Teklif nasıl maksimumdan daha büyük olabilir =(
ilunga :
Bununla birlikte, soru biraz daha yüksekte kaldı, Teklif nasıl maksimumdan daha büyük olabilir =(
Öncelikle bu maksimumun hangi süre için alındığını belirlemeniz gerekir.
Dizi double bar_info[n] olarak bildirilirse, içindeki mevcut çubuk en büyük dizin olacaktır.
n = 2 ile bu kod dünün günlük çubuğuyla çalışacaktır.
ve bu şimdikiyle
Onlar. sizin durumunuzda, birkaç çubuğu kopyalarken, mevcut çubuğu elde etmek için, bunun gibi bir şey düzenlemeniz gerekir (ancak diziye kopyalanan çubukların sayısı için ek kontrollere ihtiyacınız olabilir)
Öncelikle bu maksimumun hangi süre için alındığını belirlemeniz gerekir.
Dizi double bar_info[n] olarak bildirilirse, içindeki mevcut çubuk en büyük dizin olacaktır .