[ARŞİV] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 5. - sayfa 125

 
hoz :



Yani bu dava için bir kontrolüm var:

Dur - yeni durak (kullanılan) sıfıra eşit değilse... o zaman değiştiririz... Değilse, değiştirmeyiz. Yani bu nasıl oluyor anlamıyorum. Sonuçta, geçmişin ve yeni durağın eşitliği için bir kontrole ihtiyacımız olduğunu anlıyorum ve yaptım.

Bir körfez için hatasız takip ederken üst ve alt kısımları şu şekilde kontrol ediyorum:

           if (OrderStopLoss() > OrderOpenPrice())
          {
             if ( NormalizeDouble (Bid-OrderStopLoss()-plus*tral, Digits ) > prev)
             if (Bid > NormalizeDouble (OrderStopLoss()+plus*tral+prev, Digits ))
            {
              SL = NormalizeDouble (OrderStopLoss()+plus*part*tral, Digits );
              ModifyOrder(OrderTicket(),OrderOpenPrice(),SL,OrderTakeProfit(), 0 ,Blue); return ( 0 );
          } }

Tüm emir ve pozisyon değişikliklerine uygun ModifyOrder() fonksiyonunu verebilirim.

 
Vinin :

Bu kodu, bir saldırı gibi görünmeyecek şekilde düzenleyin
Anlamıyorum
Nasıl düzenlenir? nasıl anlaşılır?
 
borilunad :
Sana barlar değil, çok pipler tavsiye ederim. Gerekirse, bunun için kaynaklar kullanılır. Ve zaten var olan bir değişikliğin fiyatı tekrarlandığında "hata değil" hatası ortaya çıkıyor. Bu nedenle, zaten size en başta tavsiye ettiğim gibi adım adım yapmanız gerekiyor.


BOO. ess-ama pip ile uzanır. Genel olarak B.U işlev çağrısını kastettim. örneğin her tikte veya bir barın açılışında yapmak... Ama bu zaten aptalca. Çünkü bir bar için fiyat çok sıçrayabilir. Yani arama her zamankiyle aynı olacak, tik adım olacak, değil mi? Sadece düşündüm, belki her tikte çağrılmaması için bir koşul ekleyin. Mevcut STOP ile kurulması planlanan STOP'u karşılaştırmanız gerektiğini düşünüyorum, bunun gibi bir şey ...

Genel olarak. Garip çıkıyor.

Başlamak için bir koşul ekledim, şöyle çıktı:

 if (priceBU != OrderStopLoss())
   {
       MovingStopLossToBU();
   }

Şimdi hiçbir hata yok.

Ancak açık olmayan şey, MovingStopLossToBU() işlevinin kendisinde, değişikliğin yalnızca B.U. Burada görebilirsin:

 if (ND(OrderStopLoss() - priceBU * pt) != 0.0 )
    if (!OrderModify(OrderTicket(), OrderOpenPrice(), priceBU, OrderTakeProfit(), 0 , CLR_NONE ))
    {
       Print ( "Ошибка модификации ордера " , OrderType(), " - " , GetLastError ());
    }
O zaman nasıl anlaşılır?
 
İyi akşamlar, lütfen bana ortalama MA'nın (10) üzerindeki mumları nasıl yeşil ve altındakileri kırmızı renklendireceğimi söyleyin?
 
hoz :


BOO. ess-ama pip ile uzanır. Genel olarak B.U işlev çağrısını kastettim. örneğin her tikte veya bir barın açılışında yapmak... Ama bu zaten aptalca. Çünkü bir bar için fiyat çok sıçrayabilir. Yani arama her zamanki gibi olacak, tek tek olacak, değil mi? Sadece, belki de her tikte çağrılmaması için eklenecek bir koşul düşündüm. Mevcut STOP ile kurulması planlanan STOP'u karşılaştırmanız gerektiğini düşünüyorum, bunun gibi bir şey ...

Genel olarak. Garip çıkıyor.

Başlamak için bir koşul ekledim, şöyle çıktı:

Şimdi hiçbir hata yok.

Ancak açık olmayan şey, MovingStopLossToBU() işlevinin kendisinde, değişikliğin yalnızca B.U. Burada görebilirsin:

O zaman nasıl anlaşılır?

Örneğinizde stop sıfır olduğunda, bu, bir pozisyonun stop olmadan yeni açıldığı anlamına gelir. Ve zaten başabaştayken sana bir dava verdim.

Yukarıya bakın, size kusursuz trolümü verdim! Ve sana bir fonksiyon verebilirim.

 
agat8430 :
Anlamıyorum
Nasıl düzenlenir? nasıl anlaşılır?
O zaman anlamadıysan yanlış yere geldin. Anlamadığını çalış, sor. Ve eğer bir şey anlamadıysan, ona ihtiyacın yok.
 
borilunad :
Yukarıya bakın, size kusursuz trolümü verdim! Ve sana bir fonksiyon verebilirim.


Valla ben yazdığımda cevabını göremedim Hemen izleyeceğim.

Ama genel olarak, değişiklik işlevinizi görmekten memnun olacağım, belki bir şey. Kendime yeni bir şey alacağım.

 
borilunad :

Örneğinizde stop sıfır olduğunda, bu, bir pozisyonun stop olmadan yeni açıldığı anlamına gelir. Ve zaten başabaştayken sana bir dava verdim.

Yukarıya bakın, size kusursuz trolümü verdim! Ve sana bir fonksiyon verebilirim.


Hayır, durmadan olmaz. Sadece bir parça yayınladım. İşte benim başabaş işlevim:

 //+-------------------------------------------------------------------------------------+
//| Перевод в б.у. рыночных ордеров                                                     |
//+-------------------------------------------------------------------------------------+
void MovingStopLossToBU()
{
    double priceBU;
    int type = OrderType();
    for ( int i= OrdersTotal () - 1 ; i>= 0 ; i--)
    {
        if (! OrderSelect (i,SELECT_BY_POS)) continue ;
        if (i_magic != - 1 ) if (OrderMagicNumber() != i_magic) continue ;
        if (OrderSymbol() != Symbol ()) continue ;
        if (OrderType() > 1 ) continue ;
        
        RefreshRates();
        
        if (type == 0 )
        {
           double price = Ask;
           int li_cmd = 1 ;
        }
        else
        {
           price = Bid;
           li_cmd = - 1 ;
        }

           if (li_cmd * (price - OrderOpenPrice()) >= i_triggerForBU * pt)
           {
             priceBU = ND(OrderOpenPrice() + li_cmd * (i_preservedProfit * pt));
             if (ND(OrderStopLoss() - priceBU * pt) != 0.0 )
             {

                 if (!OrderModify(OrderTicket(), OrderOpenPrice(), priceBU, OrderTakeProfit(), 0 , CLR_NONE ))
                 {
                     Print ( "Ошибка модификации ордера " , OrderType(), " - " , GetLastError ());
                 }
               
                     Comment ( "Ордер успешно переведён в безубыток" );
                     Print ( "Ордер успешно переведён в безубыток" );
             }
           }
    }
}

Çizgi açıkça gösteriyor ki, hesaplanan durdurma zaten var olana eşitse, o zaman hiçbir değişiklik olmayacak! Doğru? Yani test orijinal miydi? Ancak, değişiklik işlevinden önceki başlangıçta bir sonraki koşulu girene kadar, sürekli olarak hata 1 ortaya çıktı:

 if (priceBU != OrderStopLoss())
   {
       MovingStopLossToBU();
   }
İşte bu yüzden .... anlamak istediğim şey bu. Her şeyi ayrıntılı olarak anlattığım gibi.
 
hoz :
O zaman anlamadıysan yanlış yere geldin. Anlamadığını çalış, sor. Ve eğer bir şey anlamadıysan, ona ihtiyacın yok.


O zaman bana kodu nasıl düzenleyeceğimi söyle, böylece saldırıya uğramış bir ladin gibi görünmüyor, her şeyi anlıyorsun. Yeni başlayanlar için bir şubeye geldim. Ve forumda ilk defa. ve çok güzel bir cevabım var.

"Dahi insanların dahice bir cevabı var"

 
agat8430 :


O zaman bana kodu nasıl düzenleyeceğimi söyle, böylece saldırıya uğramış bir ladin gibi görünmüyor, her şeyi anlıyorsun. Yeni başlayanlar için bir şubeye geldim. Ve forumda ilk defa. ve çok güzel bir cevabım var.

"Dahi insanların dahice bir cevabı var"

İlk önce yeni başlayanlar için:

Forum gezgini ve sık sorulan soruların yanıtları. Şiddetle Tavsiye Edilen Okuma! (   1 2 3 4 5 6 ) 51 18.02.2011 SSS

Neden: