MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 608

 
for ( int h = OrdersTotal ()- 1 ; h >= 0 ; h--) // Начинаем цикл перебора ордеров
    {
     if ( OrderSelect (h, SELECT_BY_POS )) //Выбираем ордер с индексом h
      {
       if ((cnt_OO >= 2 ))//Если cnt_OO больше либоравно 2 выполняем блок иначе переходим к Метке 1
        {
       if (( OrderMagicNumber () == Magic)&&( OrderLots () <= Lots/Prikup - Dplus))//Если мейджик выбраного ордера совпадает и лотность совпадает с Lots/Prikup - Dplus
//(если переменные типа double необходимо обязательно нормализовать) выполняем блок иначе переходим к Метке 1
        {
         Nextstep  = NextStep;
         BaseNext  = OrderOpenPrice ();
         LotsNext  = NormalizeDouble ( OrderLots ()*K,lotDigit);
         if (NewPB > 0 )
          PBcloseON = true ;
         Alert ( "Pospedny Order NEXT  " , OrderTicket ());
         Alert ( "Otkritih orderov  " ,cnt_OO);
         break ; //Прерываем цикл
        }}
//Метка 1
         LotsNext    = NormalizeDouble (Lots*Prikup,lotDigit); 
         Alert ( "Otkritih orderov NEXT net " );
         Alert ( "Otkritih orderov  " ,cnt_OO);
         break ;// Прерываем цикл 
     
        }}

Lot/Prikup'ın ilk sorunu, Dplus'ın normalleştirilmesi gerektiğidir, bunu dikkatlice okuyun, değişkenler double türündeyse, 4/2'nin beklenen 2'yi değil, 1.9999999999'u ürettiğini fark ettiğinizde şaşıracaksınız. bu sorun henüz

Bu nedenle, if (( OrderMagicNumber () == Magic)&&( OrderLots () <= Lots/Prikup - Dplus)) yanlışsa ve yüksek bir olasılıkla bunun yanlış olduğunu söyleyebilirim, o zaman 1'den fazla cnt_OO varsa, Mark 1'den sonra bloğa gelmeniz garantilidir. Yani her şey sizin için hatasız çalışıyor, sorun veri işleme mantığında.

İkinci sorun, listedeki yalnızca son sırayı işlemenizin garanti edilmesidir, o zaman neden for döngüsüyle uğraşıyorsunuz?

Bunu yalnızca test cihazı için yaparsanız, listeden son siparişi seçerek, aslında doğru sırayı alırsınız ve o zaman bile her zaman değil. Gerçek piyasada ve birkaç danışman çalışıyor olsa bile, beklediğinizden tamamen farklı bir şey elde etmeniz garanti edilir ve break komutu ile ilk geçişten sonra döngünüzün kesintiye uğraması garanti edilir.

 
Vitaly Gorbunov :

İlk problem Lot/Prikup - Dplus'ın normalleştirilmesi gerekiyor, bunu dikkatlice okuyun, eğer değişkenler double type ise, 4/2'nin beklenen 2'yi verdiğini fark ettiğinizde şaşıracaksınız ama 1.9999999999, görünüşe göre karşılaşmadınız. bu sorun henüz

Bu nedenle, if (( OrderMagicNumber () == Magic)&&( OrderLots () <= Lots/Prikup - Dplus)) yanlışsa ve yüksek bir olasılıkla bunun yanlış olduğunu söyleyebilirim, o zaman 1'den fazla cnt_OO varsa, Mark 1'den sonra bloğa gelmeniz garantilidir. Yani her şey sizin için hatasız çalışıyor, sorun veri işleme mantığında.

İkinci sorun, listedeki yalnızca son sırayı işlemenizin garanti edilmesidir, o zaman neden for döngüsüyle uğraşıyorsunuz?

Bunu yalnızca test cihazı için yaparsanız, listeden son siparişi seçerek, aslında doğru sırayı alırsınız ve o zaman bile her zaman değil. Gerçek piyasada ve birkaç danışman çalışıyor olsa bile, beklediğinizden tamamen farklı bir şey elde etmeniz garanti edilir ve ilk geçiş komutundan sonra döngünün kesintiye uğraması garanti edilir.

Vitali Gorbunov :

İlk problem Lot/Prikup - Dplus'ın normalleştirilmesi gerekiyor, bunu dikkatlice okuyun, eğer değişkenler double type ise, 4/2'nin beklenen 2'yi verdiğini fark ettiğinizde şaşıracaksınız ama 1.9999999999, görünüşe göre karşılaşmadınız. bu sorun henüz

Bu nedenle, if (( OrderMagicNumber () == Magic)&&( OrderLots () <= Lots/Prikup - Dplus)) yanlışsa ve yüksek bir olasılıkla bunun yanlış olduğunu söyleyebilirim, o zaman 1'den fazla cnt_OO varsa, Mark 1'den sonra bloğa gelmeniz garantilidir. Yani her şey sizin için hatasız çalışıyor, sorun veri işleme mantığında.

İkinci sorun, listedeki yalnızca son sırayı işlemenizin garanti edilmesidir, o zaman neden for döngüsüyle uğraşıyorsunuz?

Bunu yalnızca test cihazı için yaparsanız, listeden son siparişi seçerek, aslında doğru sırayı alırsınız ve o zaman bile her zaman değil. Gerçek piyasada ve birkaç danışman çalışıyor olsa bile, beklediğinizden tamamen farklı bir şey elde etmeniz garanti edilir ve break komutu ile ilk geçişten sonra döngünün kesintiye uğraması garanti edilir.

normalleşme hakkında - teşekkürler, olmadığını fark etmedim. Sadece göz bulanıktı.

for döngüsü hakkında: Arşivde farklı büyüler ve farklı çiftlerden farklı siparişler var. Doğru olanı bulana kadar sondan tekrar ediyorum. Bu, danışmanın çalışmaya başlamadığı ve ihtiyacım olan yeni siparişlerin listede görünmediği anda olur. Döngü ilk geçişte değil, ihtiyacım olan sipariş bulunduğunda kesintiye uğrar.

Onlinit ve OnDeinit işlevlerine gelince, onu doğru bir şekilde anlamanız gerekir. Onlara olan ihtiyaç açıktır.

 

Bu uygulamada döngü çalışmaz. Kodunuzu çeşitli varyasyonlarda çalıştırdım, her zaman bir geçiş.

Ve şimdi nerede yanlış yaptığınız açık!

 for ( int h = OrdersTotal ()- 1 ; h >= 0 ; h--) // Начинаем цикл перебора ордеров
    {
     if ( OrderSelect (h, SELECT_BY_POS )) //Выбираем ордер с индексом h
      {
       if ((cnt_OO >= 2 )) //Если cnt_OO больше либоравно 2 выполняем блок иначе переходим к Метке 1
        {
       if (( OrderMagicNumber () == Magic)&&( OrderLots () <= Lots/Prikup - Dplus)) //Если мейджик выбраного ордера совпадает и лотность совпадает с Lots/Prikup - Dplus
//(если переменные типа double необходимо обязательно нормализовать) выполняем блок иначе переходим к команде continue
        {
         Nextstep  = NextStep;
         BaseNext  = OrderOpenPrice ();
         LotsNext  = NormalizeDouble ( OrderLots ()*K,lotDigit);
         if (NewPB > 0 )
          PBcloseON = true ;
         Alert ( "Pospedny Order NEXT  " , OrderTicket ());
         Alert ( "Otkritih orderov  " ,cnt_OO);
         break ; //Прерываем цикл
        }

         continue ; //Вернёмся в цикл за следующим ордером если предыдущий не прошёл проверку
       }
//Метка 1
         LotsNext    = NormalizeDouble (Lots*Prikup,lotDigit); 
         Alert ( "Otkritih orderov NEXT net " );
         Alert ( "Otkritih orderov  " ,cnt_OO);
         break ; // Прерываем цикл 
     
        }}

En çok her şeye yorum yapıldı! Denemek!

 
Vitaly Gorbunov :

Bu uygulamada döngü çalışmaz. Kodunuzu çeşitli varyasyonlarda çalıştırdım, her zaman bir geçiş.

Ve şimdi nerede yanlış yaptığınız açık!

En çok her şeye yorum yapıldı! Denemek!

Teşekkürler, anladım. Burada, normalleştirmenin olmamasıyla bağlantılı hatanın bir baypas edilmesi söz konusudur. Kurtarma algoritmasının daha kapsamlı bir çalışmasıyla, Koşul &&( OrderLots () <= Lots/Prikup - Dplus) gereksiz olduğu ortaya çıktı.

iyi tavsiye için herkese teşekkürler



işte test sonucu. Gerçekte, aşağı yukarı aynı, hatta daha iyi. Sizi önceden uyarıyorum - bu bir martingale değil. Düşündüğünden daha da kötü :=). Düşüş %1.3 kâr 507$

 
İyi sonuç! Daha fazla sorun olacak, lütfen iletişime geçin, ancak sorunu tespit etmek için gerekli bilgileri sizden almak çok zor. İsterseniz kaybolmamak için arkadaş olarak ekleyebilirsiniz.
 
Vitaly Muzichenko :

İşe yararsa ve sonucu paylaşmak üzücü değilse - soruna bir çözüm yazın

İşe yaramadı (php openssl kütüphanesini kullandım). Sorunu farklı bir şekilde çözdü.

 
Juer :

İşe yaramadı (php openssl kütüphanesini kullandım). Sorunu farklı bir şekilde çözdü.

Yani, sonuç olarak, MT'de şifrelemeyi ve .php'de şifreyi çözmeyi başardınız mı? Hangi yöntem kullanıldı?

 
Vitaly Muzichenko :

Yani, sonuç olarak, MT'de şifrelemeyi ve .php'de şifreyi çözmeyi başardınız mı? Hangi yöntem kullanıldı?

Hayır, iyi yazmadım. Bu konuda puan verdim. Görevim için bir karma yeterliydi. Bir hash gönderip aldım ve onay olarak başka bir hash gönderdim.

Ve PHP'de şifrenin çözülmediği ortaya çıktı. Birisi bu konuya biraz ışık tutabilirse iyi olur. Belki geliştiriciler veya başka bir şey.

 
Juer :

Hayır, iyi yazmadım. Bu konuda puan verdim. Görevim için bir karma yeterliydi. Bir hash gönderip aldım ve onay olarak başka bir hash gönderdim.

Ve PHP'de şifrenin çözülmediği ortaya çıktı. Birisi bu konuya biraz ışık tutabilirse iyi olur. Belki geliştiriciler veya başka bir şey.

Şifreleme işlevinizi puf olarak yazın ve mq'ye taşıyın. Bu yüzden kesin olarak deşifre etmeyecekler ve herhangi bir senaryoda %100 çalışacak.

 
Vitaly Muzichenko :

İşe yararsa ve sonucu paylaşmak üzücü değilse - soruna bir çözüm yazın

google "PKCS#7 doldurma biçimi"