Birden fazla çift kullanırken EA çatışıyor... - sayfa 3

 
Ah anladım!

"If(IsNewCandle())" de çağrıldığında "int start()" işlevinden sipariş değişikliğini çağırmam gerekiyordu. Bu nedenle, HER saat kapanışında, emirdurdurma kaybı > iMA-ATR ise PENDING emrini değiştiren "Void OrderModify" buna göre değiştirilecek ve kalibre edilecektir.

Demek artık işini hakkıyla yapıyor :) Şimdi gözlerim kanayana kadar okuyayım... :)
 
RaptorUK :

Sorun bu. . . (OP_SELL için benzer)

. . . ve bir hata 1 aldığınızda bunun nedeni OrderStopLoss() == BuyStopPrice yani siparişi aynı StopLoss değerine sahip olacak şekilde değiştiriyorsunuz, dolayısıyla hata 1 yani şimdi bir yandan OrderStopLoss() == BuyStopPrice'ın nasıl olduğunu merak ediyorsunuz. diğer yandan OrderStopLoss() < BuyStopPrice

Yazıdaki bağlantıyı takip edip gözleriniz kanayana kadar okudunuz mu? Bahse girerim yapmadın. . . https://www.mql5.com/en/forum/146380 bu konuyu görmezden gelmeye devam ederseniz sizi yakalamaya devam edecek ve zaman kaybetmeye devam edeceksiniz. . . onunla başa çık, anla, daha fazla acı çekme, mutlu ol


sıfır dışında asla eşitlik için çiftleri karşılaştırma < WHRoeder tarafından aradığım şey bu olabilir mi?
 if (a > b)
 if (a - b > Point / 2 .)
 if (a >= b)
 if (a - b > - Point )
 if (a != b)
 if ( MathAbs (a - b) > Point / 2 .)
 
DomGilberto :

sıfır dışında asla eşitlik için çiftleri karşılaştırma < WHRoeder tarafından aradığım şey bu olabilir mi?
Bu kesinlikle işe yarayacaktır, nedenini ve sorunun ne olduğunu anlıyor musunuz?
 
Dürüst olmak gerekirse, hayır anlamıyorum... Yazmayı ve karşılaştırmaları yazdırmayı denedim ama yine de...
 
DomGilberto :
Dürüst olmak gerekirse, hayır anlamıyorum... Yazmayı ve karşılaştırmaları yazdırmayı denedim ama yine de...

1.51234000001, 1.51234000002 ile aynı değildir, ancak bir fiyat açısından bakıldığında, ikisi de 1.51234 yani aynıdır. . . yani aynılar ama biri diğerinden daha büyük. Her şey kayan noktalı sayıların ikili olarak temsil edilme şekliyle ilgilidir, tam değildir, bu nedenle genellikle burada ve orada küçük bir hata vardır. . .

Şuna bir bakın: kayan nokta sayıları

 

Ama neden NormalizedDouble, Digits bunu çözmedi? Fazladan gereksiz ondalık basamaklar neden dahil edildi? NormalizeDouble'ı önceden tanımlanmış değişkenler üzerinde kullanmanıza gerek olmadığı gerçeğini takdir ediyorum, ancak NormalizeDouble'ı önceden tanımlanmamış değişkenler üzerinde kullanmanın ve sonra asla eşleşmeyecekleri zaman onları karşılaştırmaya çalışmanın anlamı nedir :s?

Yabancı!

"If(Bid > OrderOpenPrice())" yapmak isteseydim bu işe yaramaz mıydı? Her karşılaştırma ifadesinde yukarıda belirtilen kuralları uygulamam gerekir mi? yani "If(Bid - OrderOpenPrice() > Point / 2.)?


Peki ya If(Bid == OrderOpenPrice()), bu ifadeyle yapmam gereken bir şey var mı?

 
DomGilberto :

Ama neden NormalizedDouble, Digits bunu çözmedi? Fazladan gereksiz ondalık basamaklar neden dahil edildi? NormalizeDouble'ı önceden tanımlanmış değişkenler üzerinde kullanmanıza gerek olmadığı gerçeğini takdir ediyorum, ancak NormalizeDouble'ı önceden tanımlanmamış değişkenler üzerinde kullanmanın ve sonra asla eşleşmeyecekleri zaman onları karşılaştırmaya çalışmanın anlamı nedir :s?

NormalizeDouble sorunu çözmez, 1.51234000001'i 1.51234'e çevirmez, sadece onunla farklı bir şekilde "karar". . . bu yüzden onu kullanarak, tüm değerlerinizle aynı şekilde bulaşmasını umuyorsunuz.

DomGilberto :


"If(Bid > OrderOpenPrice())" yapmak isteseydim bu işe yaramaz mıydı? Her karşılaştırma ifadesinde yukarıda belirtilen kuralları uygulamam gerekir mi? yani "If(Bid - OrderOpenPrice() > Point / 2.)?

Evet, karşılaştırmanızın size doğru bir sonuç verdiğinden emin olmak istiyorsanız, evet.

DomGilberto :

Peki ya If(Bid == OrderOpenPrice()), bu ifadeyle yapmam gereken bir şey var mı?

Evet, tam olarak aynı sorundan muzdarip olacak. . .
 
Tamam teşekkürler - OrderModify 1 hatasını önemli ölçüde azalttım - ancak yine de ara sıra biraz hata alıyorum? MA_trail void gibi görünüyor? Ayrıca, "If(Bid == OrderOpenPrice())'yi nasıl doğru yazardım?
 //+----------------------------------------------------------------------------------------------------------------------------------------+  
//Moving Average Trailing Stop Function
//+----------------------------------------------------------------------------------------------------------------------------------------+   
void MA_Trail()

{

   double ATR = iATR ( NULL , 60 , 14 , 1 );
   double MA = iMA ( NULL , 60 ,MA_Period, 0 , 1 , 0 , 1 );
   
   double BuyStopPriceMath = MA - ATR;
   double SellStopPriceMath = MA + ATR;
   
   double BuyStopPrice = NormalizeDouble (BuyStopPriceMath, 5 );
   double SellStopPrice = NormalizeDouble (SellStopPriceMath, 5 );

   for ( int b= OrdersTotal ()- 1 ; b>= 0 ; b--)
     {
       if ( OrderSelect (b,SELECT_BY_POS,MODE_TRADES))
         if (OrderMagicNumber()==MagicNumber)
             if (OrderSymbol()== Symbol ())
               {

               if (OrderType()==OP_BUY)
                  {
                   if (OrderStopLoss() - BuyStopPrice > Point / 2 .) continue ;
                   if (BuyStopPrice - OrderStopLoss() > Point / 2 .)
                     bool BuyModify = OrderModify(OrderTicket(),OrderOpenPrice(),BuyStopPrice,OrderTakeProfit(), 0 , CLR_NONE );
                   if (!BuyModify) Print ( " Buy Trailing Stop Failed: " , GetLastError ());
                   }     

    
               if (OrderType()==OP_SELL)
                  {
                   if (SellStopPrice - OrderStopLoss() > Point / 2 . ) continue ;
                   if (OrderStopLoss() - SellStopPrice > Point / 2 . )
                     bool SellModify = OrderModify(OrderTicket(),OrderOpenPrice(),SellStopPrice,OrderTakeProfit(), 0 , CLR_NONE );
                   if (!SellModify) Print ( " Sell Trailing Stop Failed: " , GetLastError ());
                  }
              }   
      }
} 
 
DomGilberto :
Tamam teşekkürler - OrderModify 1 hatasını önemli ölçüde azalttım - ancak yine de ara sıra biraz hata alıyorum? MA_trail void gibi görünüyor? Ayrıca, "If(Bid == OrderOpenPrice())'yi nasıl doğru yazardım?

Gözlerin yeterince kanmıyor. . .

Bunun gibi bir şey yapabilirsin:

!( MathAbs (FirstPrice - SecondPrice) > HalfAPoint )

konusunda dikkatli olun !

Buradan: https://www.mql5.com/en/forum/136997/page4#781986

 
Bunu yukarıdaki kodla bağlantılı olarak mı yoksa "If(Bid == OrderOpenPrice())" ile ilgili olarak mı öneriyorsunuz?