[UYARI, KONU KAPALI!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde. - sayfa 622

 
Rossi :

Ekranın altındaki sekmelerdeki araçları sıralamanın bir yolu var mı? aksi takdirde 4 zaman diliminde 8 enstrüman düzensizlik içinde dağılır....

hayır
 
DDFedor :

grafiğin adını içeren sekmeye tıklayın ve istediğiniz konuma sürükleyin

Aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa teşekkürler...
 
artmedia70 :
:) Şimdi hata 130 ortaya çıktı. En anlaşılmaz olan şey, yanlış duraklarla (130), yine de doğru vuruşları (ATR tarafından hesaplanan) yapıyor ve duraklarım başlangıçta ayarlanmadı…
Bu bir şekilde anlaşılabilir mi?
Hata 130 - yanlış bir zararı durdur veya yanlış bir kâr al olabilir.
 
ToLik_SRGV :


Limit emirleri eklendi (önceki kodda unutmuşum :))) + hata işleme #1 (değişiklikten önce, yeni fiyat mevcut fiyatla karşılaştırılır, eğer aynılarsa hiçbir şey yapmayın):

Görünüşe göre, treyler tarafından piyasaya daha yakın taşınan değiştirilmiş siparişler TakeProfit mirasını kaybediyor... Bir kez tetiklendiğinde, grafikte pozisyonlarla asılı kalıyorlar ve aptalca marjı yiyorlar. Artı veya eksi olarak kapanmıyorlar ve alma satırı yok... Gerçi doğrulama için ATR tarafından hesaplanan tp değerini koda özellikle ekledim:

 void trailingOrder( int magic, int trailing){
   int index = 0 , tp=TakeProfitATR ( 5 );
   while (trailing > 0 && OrdersTotal () != 0 && OrderSelect (index, SELECT_BY_POS)){
       if (OrderMagicNumber() == magic){
         if (OrderType() == OP_BUYSTOP){
             if (OrderOpenPrice() - Ask > Point *trailing){
               if ((Ask+ Point *trailing) - Ask >= MarketInfo( Symbol (), MODE_STOPLEVEL)* Point &&
                 (Ask+ Point *trailing) - Ask > MarketInfo( Symbol (), MODE_FREEZELEVEL)* Point &&
                 (Ask+ Point *trailing) != OrderOpenPrice()){
                   if (!OrderModify(OrderTicket(),Ask+ Point *trailing,OrderStopLoss(),
                   /*OrderTakeProfit()*/ tp , 0 , MediumSpringGreen )) Print ( ">>> ERROR " , GetLastError ());
               } else {
                   Print ( ">>> Слишком близко к рынку или передано неизмененное значение!" );
               }
            }
             return ;
         }
// ..... Далее по тексту функции также добавлены изменения...

Değişiklik yapmadan önce ve sonra, değiştirilen siparişin pozisyona dönüştürülmesinden önce veya sonra hala bir alımı yok...

Nedeni ne olabilir?

 
artmedia70 :

Görünüşe göre, treyler tarafından piyasaya daha yakın taşınan değiştirilmiş siparişler TakeProfit mirasını kaybediyor... Bir kez tetiklendiğinde, grafikte pozisyonlarla asılı kalıyorlar ve aptalca marjı yiyorlar. Artı veya eksi olarak kapanmıyorlar ve alma satırı yok... Gerçi doğrulama için ATR tarafından hesaplanan tp değerini koda özellikle ekledim:

Değişiklik yapmadan önce ve sonra, değiştirilen siparişin pozisyona dönüştürülmesinden önce veya sonra hala bir alımı yok...

Nedeni ne olabilir?

Bekleyen bir emrin fiyatını değiştirirken, zararı durdur ve kar al seçeneğini de değiştirmelisiniz.
 
khorosh :
Hata 130 - yanlış bir zararı durdur veya yanlış bir kâr al olabilir.
Teşekkür ederim. Bunu zaten biliyordum... Konu bu değildi. Trol bir hata verdi - kapattım ve her şey yolunda. Onunla uğraşacak zaman yok.
 
khorosh :
Bekleyen bir emrin fiyatını değiştirirken, zararı durdur ve kar al seçeneğini de değiştirmelisiniz.

ATR hesaplama işlevini nasıl alır? Siparişi değiştirmeden önce onu çağırıyorum, TakeProfitATR() işlevi tarafından hesaplanan mevcut alma değerini alıyorum ve sipariş değişikliğine ekliyorum... Aynısı yukarıdaki örneğimde:

 int index = 0 , tp=TakeProfitATR ( 5 ); // Рассчёт нового тейка по значению ATR. Ф-ция возвращает размер тейка в пунктах

....

 if (!OrderModify(OrderTicket(),Ask+ Point *trailing,OrderStopLoss(),
   /*OrderTakeProfit()*/ tp , 0 , MediumSpringGreen )) Print ( ">>> ERROR " , GetLastError ()); // здесь вместо OrderTakeProfit() подставляю tp
Görünüşe göre yazarken bir hata buldum... ATR ile alma hesaplama işlevi TakeProfit'in değerini puan olarak döndürüyor, ancak fiyatı değiştirmeniz gerekiyor.
Ama o zaman, yukarıdaki değişiklikleri yapmadan önce, değiştirilen siparişin neden yine de almayı kaybettiği açık değil...
Ve sonra tekrar soru - her seferinde ne için değiştirmeliyim (almalıyım), örneğin, eğer piyasa ondan uzaklaştıysa ve bekleyen emri , alımı değiştirmeden piyasaya daha yakın hale getirmem gerekirse. tersine çevirmeye veya düzeltmeye hazır... ? ??
 
artmedia70 :

ATR hesaplama işlevini nasıl alır? Siparişi değiştirmeden önce onu çağırıyorum, TakeProfitATR() işlevi tarafından hesaplanan mevcut alma değerini alıyorum ve sipariş değişikliğine ekliyorum... Aynısı yukarıdaki örneğimde:

....

Görünüşe göre yazarken bir hata buldum... ATR ile alma hesaplama işlevi TakeProfit'in değerini puan olarak döndürüyor, ancak fiyatı değiştirmeniz gerekiyor.
Ama o zaman, yukarıdaki değişiklikleri yapmadan önce, değiştirilen siparişin neden yine de almayı kaybettiği açık değil...
Ve sonra tekrar soru - her seferinde ne için değiştirmeliyim (almalıyım), örneğin, eğer piyasa ondan uzaklaştıysa ve bekleyen emri, alımı değiştirmeden piyasaya daha yakın hale getirmem gerekirse. tersine çevirmeye veya düzeltmeye hazır... ? ??




Durakların otomatik aktarımını ekledim ve yönteme aldım, gecikmeyi ayarlarken sınırlayıcıları bir kez ayarladınız ve ardından yöntemin kendisi her şeyi ihtiyaç duyduğu yere sürükledi :))

 //+------------------------------------------------------------------+
void trailingOrder( int magic, int trailing){
   int index = 0 ;
   double takeprofit, stoploss;
   while (trailing > 0 && OrdersTotal () != 0 && OrderSelect (index, SELECT_BY_POS)){
      if (OrderMagicNumber() == magic){
         if (OrderType() == OP_BUYSTOP){
            if (OrderOpenPrice() - Ask > Point *trailing){
               if ((Ask+ Point *trailing) - Ask >= MarketInfo( Symbol (), MODE_STOPLEVEL)* Point &&
                 (Ask+ Point *trailing) - Ask > MarketInfo( Symbol (), MODE_FREEZELEVEL)* Point &&
                 (Ask+ Point *trailing) != OrderOpenPrice()){
                  if (!OrderModify(OrderTicket(),Ask+ Point *trailing, Ask+ Point *trailing-(OrderOpenPrice()-OrderStopLoss()), Ask+ Point *trailing+(OrderTakeProfit()-OrderOpenPrice()), 0 )) Print ( ">>> ERROR " , GetLastError ());
               } else {
                  Print ( ">>> Слишком близко к рынку или передано неизмененное значение!" );
               }
            }
            return ;
         }
         if (OrderType() == OP_SELLSTOP){
            if (Bid - OrderOpenPrice() > Point *trailing){
               if (Bid - (Bid- Point *trailing) >= MarketInfo( Symbol (), MODE_STOPLEVEL)* Point &&
                 Bid - (Bid- Point *trailing) > MarketInfo( Symbol (), MODE_FREEZELEVEL)* Point &&
                 (Bid- Point *trailing) != OrderOpenPrice()){
                  if (!OrderModify(OrderTicket(),Bid- Point *trailing,Bid- Point *trailing+(OrderStopLoss()-OrderOpenPrice()),Bid- Point *trailing-(OrderOpenPrice()-OrderTakeProfit()), 0 )) Print ( ">>> ERROR " , GetLastError ());
               } else {
                  Print ( ">>> Слишком близко к рынку или передано неизмененное значение!" );
               }
            }
            return ;
         }
         if (OrderType() == OP_SELLLIMIT){
            if (OrderOpenPrice() - Bid > Point *trailing){
               if ((Bid+ Point *trailing) - Bid >= MarketInfo( Symbol (), MODE_STOPLEVEL)* Point &&
                 (Bid+ Point *trailing) - Bid > MarketInfo( Symbol (), MODE_FREEZELEVEL)* Point &&
                 (Bid+ Point *trailing) != OrderOpenPrice()){
                  if (!OrderModify(OrderTicket(),Bid+ Point *trailing,Bid+ Point *trailing+(OrderStopLoss()-OrderOpenPrice()),Bid+ Point *trailing-(OrderOpenPrice()-OrderTakeProfit()), 0 )) Print ( ">>> ERROR " , GetLastError ());
               } else {
                  Print ( ">>> Слишком близко к рынку или передано неизмененное значение!" );
               }
            }
            return ;
         }
         if (OrderType() == OP_BUYLIMIT){
            if (Ask - OrderOpenPrice() > Point *trailing){
               if (Ask - (Ask- Point *trailing) >= MarketInfo( Symbol (), MODE_STOPLEVEL)* Point &&
                 Ask - (Ask- Point *trailing) > MarketInfo( Symbol (), MODE_FREEZELEVEL)* Point &&
                 (Ask- Point *trailing) != OrderOpenPrice()){
                  if (!OrderModify(OrderTicket(),Ask- Point *trailing,Ask- Point *trailing-(OrderOpenPrice()-OrderStopLoss()),Ask- Point *trailing+(OrderTakeProfit()-OrderOpenPrice()), 0 )) Print ( ">>> ERROR " , GetLastError ());
               } else {
                  Print ( ">>> Слишком близко к рынку или передано неизмененное значение!" );
               }
            }
            return ;
         }
      }
      index++;
   }
}
//+------------------------------------------------------------------+
 
ToLik_SRGV :


Durakların otomatik aktarımını ekledim ve yönteme aldım, gecikmeyi ayarlarken sınırlayıcıları bir kez ayarladınız ve ardından yöntemin kendisi her şeyi ihtiyaç duyduğu yere sürükledi :))

Ah, çok faydalı! Ama optimal değil. Çekimde dinamik bir değişiklik yapmak gerekli olacaktır. Sonuçta, neden emirleri piyasanın arkasına sürüklüyoruz? Geciktirirseniz ve fiyat düşerse - örneğin bir düzeltme... Ne yaparız? Fiyatın geri gelmesini mi bekliyorsunuz? Yoksa siparişi silmek mi? Böyle yapsan daha iyi olmaz mı...

Piyasanın düşük oynaklığa sahip olduğu ancak istikrarlı bir yükseliş trendinin olduğu bir durum hayal edelim. Fiyat, bekleyen SELLSTOP siparişinden yavaşça yükseldi. Açık bir SATIN AL pozisyonu, kendi başına çalıştı, kârla kapandı. Piyasa oynaklığında bir artış bekliyoruz ve bizim belirlediğimiz bir eşiği aştığı anda, limit limitini hemen fiyata kaydırıyoruz. Böylece başlayan düzeltmeyi yakalarız ve limit tüccarı kilitleme pozisyonu olarak değil, ek bir gelir kaynağı olarak çalışır. Onu hareket ettirmeseydik, ıslah ona ulaşabilir, dokunabilir ve sona erebilirdi. İşte o zaman yükseliş trendinde bir Zarar Satış pozisyonumuz olacak...

Trend için bir safariye böyle bir gezi ...

Dinamik alımlarımız varsa, bekleyenleri piyasaya taşıyarak ve alımları güçlü oynaklığı hesaba katarak değiştirerek (burada zayıftan daha yüksek olacaktır), düzeltmeden statik alımlardan daha fazlasını çıkarmamız daha olasıdır. Her halükarda, eğer alımı kapatmadıysak, iz işini yapacak ve sadece kayıp karı kaybedeceğiz...

Phew ... Uzun zamandır klaveye bu kadar tıklamamıştım ...

Teklifin geldiği yer burasıdır. TimeFrame'i işlevin geçirilen parametrelerinde yapın. Buna dayanarak, ATR değerlerinden almayı hesaplayın.

Bir süre denemeler yaptım ve M5 TF için yaptığım araştırmalar, ATR ile hesaplarken, hesaplamalarım için yaptığım ATR * 45000 formülü kullanılarak optimal alma değerinin hesaplandığı sonucuna yol açtı. Bu tür değerlerle, piyasa neredeyse her zaman tam zamanında “yakalar”:

 //+------------------------------------------------------------------+
//|                  Take from ATR                                   |
//+------------------------------------------------------------------+
double TakeProfitATR ( int tf)
  {
   double    atr   = iATR ( NULL ,tf, 14 , 0 );
   double    mltp  = 15000 ;
   if (tf== 1 ) mltp= 15000 ;
   if (tf== 5 ) mltp= 45000 ;
   double    tp    = MathRound (atr*mltp);
   return   (tp);
  }

Tabii fonksiyon henüz bitmedi ama test etmem için yeterli (M5'i test ederken)... Bu arada giriş değeri = 1 ile geciktirici ayarı için iyi bir mesafe veriyor.

Bunu fonksiyonunuzda görmek güzel olurdu ... :)

Ama yine de, teşekkürler - iyileştirmelerimi dikkate alarak, sadece yukarıdakileri elde etmek için bana oldukça uygun ...
Not ... değişiklik simgelerine renk eklemek güzel olurdu ... (zaten eklemiş olmama rağmen) ...

 

Burada şu soru ortaya çıktı: DC çok sayıda işlemle nasıl ilişkilidir? Danışmanım her 29 dakikada bir pozisyon açar (beş stratejiden sadece biri). Herkes TakeProfit'i kapatır, ama sonra öz sermayede yüzde beşlik bir artışla hepsi bir kalabalığın içinde kapanır, hangisi kârlı, hangisi geyikli, önemli değil. Ana şey, her üç ila beş günde bir, bakiyenin yüzde beş artmasıdır.

DC'nin böyle bir ticaret iddiasında bulunup bulunmadığını merak ediyorum.

Neden: