Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz, hiçbir yerde - 6. - sayfa 102

 
Dozol :


Anlayamıyorum!

Grafiğe yatay bir çizgi attılar, fiyatını düzelttiler, çizgiyi sildiler - artık gerekli değil. Bu fiyata hemen sipariş verin.

Hata nerede? Ve neden satış stopu açılmıyor?

Sadece yatay çizginin fiyatının değerine ihtiyacım varsa neden fiyatı takip etmeye devam edeyim?

Açıklamak!!! Yardım! Daha fazla detay lütfen!

Bir satış durdurucu ile - heyecanlandı, açılacak.

Şimdi çizgiler hakkında. Canlı alım satım ile ortaya çıkıyor - grafiğe bakıyorsunuz, yatay bir çizgi atıyorsunuz, koşullar uygun - satır siliniyor, emir açılıyor, koşullar uygun değil - satır siliniyor, emir açılmıyor . Bu, basit bir kısayol tuşu komut dosyasından nasıl daha iyi? Test cihazında bir çizgi atmak için görselleştirmeyi açmanız ve tekrar grafiği izlemeniz gerekir. Optimizasyon yapılamaz.Genel olarak, bunun neden test cihazına sokulması gerektiğini bile anlamıyorum.

 
borilunad :
Afedersiniz! Sonra hızla lazımlığa ve uyu! Günaydın! ;)
TAMAM. Sanırım bu çözülemeyecek bir gizem değil. Ancak şimdiye kadar sadece koltuk değnekleri kafaya tırmanıyor. Koltuk değneği yöntemi bağırsak yöntemi değildir...
 
İyi insanlar, bana neyin yanlış olduğunu söyleyin. 0 çubuğunun ilk tikinde açılan bir satış işlemi için, zararı durdur , ilk mumun Yüksek değerinin 30 pip (5 işaret) üzerine yerleştirilmelidir. Böyle yazdım, ama hiç stoploss koymuyorum.
     Price = NormalizeDouble (Bid, Digits ); // округляем до нужного нам числа цифр после запятой
     if (StopLoss > 0 )
     if (Bid < iHigh( Symbol (), 0 , 1 )) 
     {
       StopLoss = iHigh( Symbol (), 0 , 1 )+ 30 * Point ;
       SL= Price + StopLoss* Point ;
       SL = NormalizeDouble (SL, Digits ); // округляем до нужного нам числа цифр после запятой
      }
 
artmedia70 :

Peki ya parmaklarında? Zaman ve fiyat, bir alım-kapanış kapanışını nasıl gösterebilir? Elbette kendim düşünebilirim ama saat sabahın 7,43'ü ve ben henüz yatmadım.


7.43 ve yatağa gitmediyse .. Bu, kâsenin yazıldığını varsayacağım demektir!
 
alexey1979621 :
İyi insanlar, bana neyin yanlış olduğunu söyleyin. 0 çubuğunun ilk tikinde açılan bir satış işlemi için, zararı durdur, ilk mumun Yüksek değerinin 30 pip (5 işaret) üzerine yerleştirilmelidir. Ben böyle yazdım ama stop loss koymuyorum.

StopLoss = iHigh( Symbol (), 0 , 1 )+ 30 * Point ;

Bu zaten ihtiyacınız olan zararı durdurma seviyesidir, örneğin, 1.5000+30*0.00001 = 1.5003


SL= Price + StopLoss* Point ; 
Neden Fiyata StopLoss* Noktası ekleyelim ( 1.5003*0.00001=0.000015). SL, Fiyat'a neredeyse eşit hale gelir ve bu nedenle, stoploss uygulanmaz.
 
Zararı durdur hala ayarlanmadı, ancak taik kârı çalışıyor. Zararı durdur ve kar al kodu ektedir
Price = NormalizeDouble (Bid, Digits );  
     if (StopLoss > 0 )
     if (Bid < iHigh( Symbol (), 0 , 1 )) 
      {
       StopLoss = iHigh( Symbol (), 0 , 1 )+ 30 * Point ;
       SL = NormalizeDouble (SL, Digits ); 
      }
       else SL = 0 ;
       if (TakeProfit > 0 )
      {
       TP = Price - TakeProfit* Point ;
       TP = NormalizeDouble (TP, Digits ); 
      }
       else TP = 0 ;
      { 
      ticket= OrderSend ( Symbol (),OP_SELL,Lots,Bid,Slippage,SL,TP, "Pattern_1" ,Magic, 0 ,Red);
       return ;
      }
 
artmedia70 :
1. Son kapatılan pozisyonu (MODE_HISTORY) arıyoruz.
2. Alımla kapandıysa (veya ona yakınsa) --> Açılış saatini hatırla -->
3. Tüm açık pozisyonları tekrar edin (MODE_TRADES) ve bunların açılış zamanını hafızaya alınmış olanla karşılaştırın (2. adımdan itibaren) --> Alım ile kapatılan bir pozisyonu açmak için kaydedilen süre (2. adımdan itibaren) en büyükse diğer açık pozisyonların açılış saatleri --> Bu, son açık pozisyonun alım ile kapatıldığı anlamına gelir -->
4. Diğer her şeyi kesiyoruz / siliyoruz.


hm. Yazmış gibi görünüyor. Ama sonuç aynı değil..

İşte bana ne oldu:

 //+-------------------------------------------------------------------------------------+
//| Получаем состояние последней позиции (Открыта или закрыта)                          |
//+-------------------------------------------------------------------------------------+
datetime GetLastOrderState()
{
   datetime lastOrderCloseTime = - 1 ,               // Время закрытия последнего открытого ордера
            lastOOTMarket = - 1 ,           // Время открытия последнего открытого ордера рыночного
            lastOOTHist = - 1 ;             // Время открытия последнего открытого ордера из истории
   
   for ( int i=OrdersHistoryTotal()- 1 ; i>= 0 ; i--)
   {
       if (! OrderSelect (i, SELECT_BY_POS, MODE_HISTORY)) continue ;
       if (OrderMagicNumber() != i_magic) continue ;
       if (OrderSymbol() != Symbol ()) continue ;
       if (OrderType() > 1 ) continue ;               // Все удалённые отложки нас не интересуют..
  
       if (lastOrderCloseTime < OrderCloseTime())   // Находим время закрытия..
          lastOrderCloseTime = OrderCloseTime();   // ..последней закрытой позиции в истории
      
       if ( MathAbs (OrderTakeProfit() - OrderOpenPrice()) < i_tp * pt) return ( 0 );
      
      lastOOTHist = OrderOpenTime();   // Тогда время открытия последней закрытой позиции из истории
   }
   
   Comment ( "Время открытия последнего открытого ордера = " , lastOOTHist);
  
   for ( int h= OrdersTotal ()- 1 ; i>= 0 ; i--)
   {   
       if (! OrderSelect (h, SELECT_BY_POS, MODE_TRADES)) continue ;
       if (OrderMagicNumber() != i_magic) continue ;
       if (OrderSymbol() != Symbol ()) continue ;
      {
         if (lastOOTMarket < OrderOpenTime())
             lastOOTMarket = OrderOpenTime();
  
         if (lastOOTMarket < lastOOTHist)       // Если время открытия последнего открытого ордера (рыночного) ниже последнего открытого ордера из истории..
             lastOrderCloseTime = OrderCloseTime(); // Значит это искомый ордер
      }
   }

   Comment ( "Время закрытия последнего открытого ордера = " , lastOrderCloseTime);
   return (lastOrderCloseTime);
}
 
alexey1979621 :
İyi insanlar, bana neyin yanlış olduğunu söyleyin. 0 çubuğunun ilk tikinde açılan bir satış işlemi için, zararı durdur, ilk mumun Yüksek değerinin 30 pip (5 işaret) üzerine yerleştirilmelidir. Böyle yazdım, ama hiç stoploss koymuyorum.

Ne de olsa burada bir şey var. Kısa bir kapanışın BID'de değil, her zaman ASK'da olduğu gerçeğiyle başlayalım.
 
alexey1979621 :
Zararı durdur hala ayarlanmadı, ancak taik kârı çalışıyor. Zararı durdur ve kar al kodu ektedir

Price = NormalizeDouble (Bid, Digits );  
     if (StopLoss > 0 )
     if (Bid < iHigh( Symbol (), 0 , 1 ))               // Здесь еще STOPLEVEL нужно проверять, иначе частые ошибки будут
      {
       StopLoss = iHigh( Symbol (), 0 , 1 )+ 30 * Point ;   // Здесь вместо переменной StopLoss попробуйте поставить SL
       SL = NormalizeDouble (SL, Digits ); 
      }
       else SL = 0 ;
       if (TakeProfit > 0 )
      {
       TP = Price - TakeProfit* Point ;
       TP = NormalizeDouble (TP, Digits ); 
      }
       else TP = 0 ;
      { 
      ticket= OrderSend ( Symbol (),OP_SELL,Lots,Bid,Slippage,SL,TP, "Pattern_1" ,Magic, 0 ,Red);
       return ;
      }
 
hoz :


hm. Yazmış gibi görünüyor. Ama sonuç aynı değil..

İşte bana ne oldu:

Son kapatılanı ararken, ilk önce en son kapatılanı bulmanız gerekir, ancak alım yoluyla kapanışı kontrol etmek döngünün dışına çıkarılmalıdır, aksi takdirde her bir kapalı siparişi alımla kapatma için kontrol eder ve, eğer öyleyse, döngüye yakalanan ilkinin zamanını hatırlar, en geç değil, alarak kapatılır.