Yeni başlayanlardan sorular MQL4 MT4 MetaTrader 4 - sayfa 91

 
Jenya77769 :

Merhaba! İki eksi s x sayı q ve w yanlış karşılaştırılır, eşit olduklarında if operatörü birinin diğerinden büyük olduğunu düşünür.Hata nedir? q = -0.0002 ve w de -0.0002 olduğunda, res12=yanlış, neden?

çünkü bu bir çift ve tam olarak eşit değiller

EĞRİ YÖNTEM: normalleştirilmiş değerleri karşılaştırın

 
Jenya77769 :

Merhaba! İki eksi s x sayı q ve w yanlış karşılaştırılır, eşit olduklarında if operatörü birinin diğerinden büyük olduğunu düşünür.Hata nedir? q = -0.0002 ve w de -0.0002 olduğunda, res12=yanlış, neden?


Farklarını sıfırla karşılaştırın, bu daha doğrudur ve her türden sayı için geçerlidir.

 

Millet, böyle bir soru var -

yatay bir çizgi var, bir gün uzunluğunda.

Bir metin etiketine, bir etiket nesnesine sahiptir.

Bu metin etiketinin herhangi bir grafik yakınlaştırmasıyla her zaman satırın ortasında (günün ortasında) olması için nasıl yapılır?

 
John Smith :

Millet, böyle bir soru var -

yatay bir çizgi var, bir gün uzunluğunda.

Bir metin etiketine, bir etiket nesnesine sahiptir.

Bu metin etiketinin herhangi bir grafik yakınlaştırmasıyla her zaman satırın ortasında (günün ortasında) olması için nasıl yapılır?

Etiketin koordinatını X ekseni boyunca değiştirin, yani. çizginin orta noktası olarak hesapla
 
Renat Akhtyamov :
Etiketin koordinatını X ekseni boyunca değiştirin, yani. çizginin orta noktası olarak hesapla

Peki, bu anlaşılabilir, ama nasıl yapılır?


İkinci bir seçeneğim de vardı - günün başlangıcına bağlı bir etiketle, grafik yakınlaştırmasına bağlı olarak etiket değerinden önce boşluk eklemek için bir metin değişkeni kullanarak.

Aslında, yakın bir yakınlaştırma ile etiketin solda olması ve uzaklaştırma ile etiketin ortaya kaydırılması gerekir. MT4'teki yakınlaştırma seviyeleri standart olduğundan, her yakınlaştırma seviyesi için gerekli olan boşluk sayısını seçmek o kadar da zor değil. Ama soru şu - mql4'ün mevcut grafik yakınlaştırma seviyesini belirlemek için böyle bir işlevi var mı?

O zaman her şey basit olacak, bunun gibi bir şey: "eğer chartzoom = %50 ise boşluk sayısı = 10" vb.

Spacenumber, etiket metninden önceki boşluk sayısını belirten bir dize değişkeni olduğunda, örneğin __________1.23456 - _ işaretli 10 boşluk vardır

 
John Smith :

Peki, bu anlaşılabilir, ama nasıl yapılır?


İkinci bir seçeneğim de vardı - günün başlangıcına bağlı bir etiketle, grafik yakınlaştırmasına bağlı olarak etiket değerinden önce boşluk eklemek için bir metin değişkeni kullanarak.

Aslında, yakın bir yakınlaştırma ile etiketin solda olması ve uzaklaştırma ile etiketin ortaya kaydırılması gerekir. MT4'teki yakınlaştırma seviyeleri standart olduğundan, her yakınlaştırma seviyesi için gerekli olan boşluk sayısını seçmek o kadar da zor değil. Ama soru şu - mql4'ün mevcut grafik yakınlaştırma seviyesini belirlemek için böyle bir işlevi var mı?

O zaman her şey basit olacak, bunun gibi bir şey: "eğer chartzoom = %50 ise boşluk sayısı = 10" vb.

Spacenumber, etiket metninden önceki boşluk sayısını belirten bir dize değişkeni olduğunda, örneğin __________1.23456 - _ işaretli 10 boşluk vardır

buradaki yorumlarımı oku
 

Merhaba! Tekrar yardım gerekiyor. Neyin yanlış olduğunu anlayamıyorum. Tekrar trol. MA üzerinde trol. Birkaç siparişi takip etmeniz gerekiyor. Lokmalar olabilir. Tek bir açık düzen olduğu sürece her şey kusursuz çalışır. Bir tane daha yerleştirilir yerleştirilmez, bir alem başlar - birinci dereceden sabit bir değişiklik (aynı parametreyle) (1. hata yazmaz). Aynı zamanda, ikinci sıra olması gerektiği gibi değiştirilir - uygun koşullar altında (birincisi, koşullar değiştiğinde, parametreleri değiştirir ve yeni parametrelerle sürekli modifikasyona devam eder). nedenini de bulamıyorum. Kim söyleyecek?

 void TrailingStop()
{
   int i;
   int k          = OrdersTotal (); 
   double Ma      = iAlligator ( NULL , 0 , 13 , 8 , 8 , 5 , 5 , 3 , MODE_SMMA , PRICE_MEDIAN , MODE_GATORLIPS , 1 ); 
   int MinDistans = int ( MarketInfo ( Symbol (), MODE_STOPLEVEL ));
   
   double lips1  = iAlligator ( NULL , 0 , 13 , 8 , 8 , 5 , 5 , 3 , MODE_SMMA , PRICE_MEDIAN , MODE_GATORLIPS , 1 ); 
   double lips2  = iAlligator ( NULL , 0 , 13 , 8 , 8 , 5 , 5 , 3 , MODE_SMMA , PRICE_MEDIAN , MODE_GATORLIPS , 2 );
   double teeth1 = iAlligator ( NULL , 0 , 13 , 8 , 8 , 5 , 5 , 3 , MODE_SMMA , PRICE_MEDIAN , MODE_GATORTEETH , 1 );
   double teeth2 = iAlligator ( NULL , 0 , 13 , 8 , 8 , 5 , 5 , 3 , MODE_SMMA , PRICE_MEDIAN , MODE_GATORTEETH , 2 );
   double jaw1   = iAlligator ( NULL , 0 , 13 , 8 , 8 , 5 , 5 , 3 , MODE_SMMA , PRICE_MEDIAN , MODE_GATORJAW , 1 );
   double jaw2   = iAlligator ( NULL , 0 , 13 , 8 , 8 , 5 , 5 , 3 , MODE_SMMA , PRICE_MEDIAN , MODE_GATORJAW , 2 );
   
   for (i = 0 ; i < k; i++)
   {
       if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ))
      {
         if ( OrderSymbol () == Symbol () && OrderMagicNumber () == Magic)
         {
             if ( OrderType () == OP_BUY )
            {
               if (lips2 < teeth2 && teeth2 < jaw2 && lips1 < teeth1 && teeth1 < jaw1)
                   break ;
               
               if (lips2 > teeth2 && teeth2 > jaw2 && lips1 > teeth1 && teeth1 > jaw1)
               {   
                   if (( OrderStopLoss () + TrailingStep* Point ) < Ma)
                  {
                     double Sl = NormalizeDouble (Ma, Digits );                 
                     
                     if (( Bid - MinDistans) > Sl && ( OrderStopLoss () + TrailingStep* Point ) < Sl)
                     { 
                        OrderModifyX( OrderTicket (), OrderOpenPrice (), Sl, OrderTakeProfit (), OrderExpiration (), 0 );
                     }
                  }
               }
            }
         }
      }     
 
       if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ))  
      {
         if ( OrderSymbol () == Symbol () && OrderMagicNumber () == Magic)
         {
             if ( OrderType () == OP_SELL )
            {
               if (lips2 > teeth2 && teeth2 > jaw2 && lips1 > teeth1 && teeth1 > jaw1)
                   break ;
                  
               if (lips2 < teeth2 && teeth2 < jaw2 && lips1 < teeth1 && teeth1 < jaw1)
               {
                   if ( MathAbs ( OrderStopLoss () - TrailingOpen* Point ) > Ma)
                  {
                     double Sl = NormalizeDouble (Ma, Digits );
                 
                     if (( Ask + MinDistans) < Sl && ( OrderStopLoss () - TrailingStep* Point ) > Sl)
                     {
                        OrderModifyX( OrderTicket (), OrderOpenPrice (), Sl, OrderTakeProfit (), OrderExpiration (), 0 );
                     }
                  }
               }
            }
         }
      }
   }
}



 
Youri Lazurenko :

Merhaba! Tekrar yardım gerekiyor. Neyin yanlış olduğunu anlayamıyorum. Tekrar trol. MA üzerinde trol. Birkaç siparişi takip etmeniz gerekiyor. Lokmalar olabilir. Tek bir açık düzen olduğu sürece her şey kusursuz çalışır. Bir tane daha yerleştirilir yerleştirilmez, bir alem başlar - birinci dereceden sabit bir değişiklik (aynı parametreyle) (1. hata yazmaz). Aynı zamanda, ikinci sıra olması gerektiği gibi değiştirilir - uygun koşullar altında (birincisi, koşullar değiştiğinde, parametreleri değiştirir ve yeni parametrelerle sürekli modifikasyona devam eder). nedenini de bulamıyorum. Kim söyleyecek?


1. Döngü tersine çevrilmelidir.

2. Neden kırılır?

 
Artyom Trishkin :

1. Döngü tersine çevrilmelidir.

2. Neden kırılır?


Merhaba.

1 - "Döngü tersine çevrilmelidir" - for(i = k; i > 0; i--)'yi mi kastediyorsunuz?

2. "Neden kırmak?" - ayrılmak. Genel olarak, başlangıçta, emir tipini seçtikten sonra ve trende aykırıysa kırın. Ardından, sipariş türünü tekrar seçin ve trendi takip ediyorsa değiştirin.

Mola ile bu seçenek bundan önce bana yardımcı oldu. MA takip hesabı için çözüm istendiğinde. Örneğin, bir satın almada, durağın MA'nın üzerinde olduğu ortaya çıkarsa, MA, durağın üzerine gelene kadar 1 hatası verir ve ardından hata ortadan kalkar. Durma MA'nın üzerindeyse, sonra kırılma koşulunu getirdiğimde, her şey normale döndü.

 
Youri Lazurenko :

Merhaba.

1 - "Döngü tersine çevrilmelidir" - for(i = k; i > 0; i--)'yi mi kastediyorsunuz?

2. "Neden kırmak?" - ayrılmak. Genel olarak, başlangıçta, emir tipini seçtikten sonra ve trende aykırıysa kırın. Ardından, sipariş türünü tekrar seçin ve trendi takip ediyorsa değiştirin.

Mola ile bu seçenek bundan önce bana yardımcı oldu. MA takip hesabı için çözüm istendiğinde. Örneğin, bir satın almada, durağın MA'nın üzerinde olduğu ortaya çıkarsa, MA, durağın üzerine gelene kadar 1 hatası verir ve ardından hata ortadan kalkar. Durma MA'nın üzerindeyse, sonra kırılma koşulunu getirdiğimde, her şey normale döndü.

break döngüyü tamamen sonlandırır. Peki ya diğer pozisyonlar?
Durağın yeni seviyesine göre nerede olduğunu kontrol edin.
OrdersTotal()-1'den >=0'a ters döngü