Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 58

 
teetrinker :

Myexpert.Time(10), grafikteki onuncu çubuğun zamanını döndürmeli mi? Ve nasıl doğru yazılır?

teşekkürler

Teoride, evet, olmalı...

Documentation'a göre Time yöntemi , belirtilen dizinde Time timeseries öğesinin değerini alır. Ayrıca, bu, sırayla CExpert sınıfı ve tüm yardımcı ticaret stratejileri sınıfları için temel sınıf olan CExpertBase sınıfının bir yöntemidir.

Sayın sergeev Uzman Danışmanınızın hayatında Time() yönteminin rolünü belirlemek için Hata Ayıklayıcı'yı kullanmak en iyisidir...

 

Teşekkürler Yedelkin !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Ve EnumToString(zaman çerçevesi), harika fonksiyon!! Ve ben bir RAM'im!!!!!!

 
Lütfen bana bir işlev olduğunu söyle
 bool   PositionModify( ulong   PositionTicket, double price, double stoploss, double takeprofit, datetime expiration, color arrow_color= CLR_NONE )
      {   MqlTradeRequest request  = { 0 };
         MqlTradeResult result = { 0 };
        request.action= TRADE_ACTION_SLTP ; 
        request.order= PositionTicket; 
        request.price= price;
        request.symbol= Symbol ();
        request.sl= stoploss;
        request.tp= takeprofit;
         return ( OrderSend ( request,   result    ));   
      }

Görünüşe göre fonksiyonda bir ,,side,,- request.symbol= Symbol (); Symbol() neden burada? TP ve SL ayarladığımız sembol buraya aktarılmalıdır. Yani request.symbol= Symbol (); satırını kaldırmak mümkün mü? , o aptal gibi mi değil mi?

 

Lütfen bana açılan ana emrin stop seviyesinde nasıl bir ters emir ayarlayacağımı ve ardından ana emir TP tarafından kapatılmışsa onu nasıl sileceğimi söyleyin?

Kodda, hemen her iki emri de belirledim:

        
 // основной ордер +++++++++++++++++++++++++++++++++++++++      
        {
         request.action = TRADE_ACTION_PENDING ;
         request.magic=magic_number;                   // ORDER_MAGIC
         request.symbol = "EURUSD" ;
         request.volume = NormalizeDouble (volume()/ 1 , 2 );
         request.price= NormalizeDouble (Ask+StopLevel* _Point , _Digits );
         request.sl = NormalizeDouble (request.price - SL* _Point , _Digits );
         request.tp = NormalizeDouble (request.price + TP* _Point , _Digits );
         request.deviation= 0 ;
         request.type= ORDER_TYPE_BUY_STOP ;
         request.type_filling= ORDER_FILLING_FOK ;
         
           {
             OrderSend (request,result);
             if (result.retcode== 10009 || result.retcode== 10008 )
               Print ( "Установлен ордер BuyStop" );
             else
              {
               Print (ResultRetcodeDescription(result.retcode));
                           
              }
           }      
 // переворотный ордер +++++++++++++++++++++++++++++++++++++++
        
         request.action = TRADE_ACTION_PENDING ;
         request.magic=magic_number1;                   // ORDER_MAGIC
         request.symbol = "EURUSD" ;
         request.volume = NormalizeDouble (volume()/ 2 , 2 );
         request.price= NormalizeDouble (Bid-(SL- 45 ) * _Point , _Digits );
         request.sl = NormalizeDouble (request.price + SL* _Point , _Digits );
         request.tp = NormalizeDouble (request.price - (TP- 900 )* _Point , _Digits );
         request.deviation= 0 ;
         request.type= ORDER_TYPE_SELL_STOP ;
         request.type_filling= ORDER_FILLING_FOK ;
         
           {
             OrderSend (request,result);
             if (result.retcode== 10009 || result.retcode== 10008 )
               Print ( "Установлен ордер SellStop" );
             else
              {
               Print (ResultRetcodeDescription(result.retcode));
               return ;
              }
           }        
       } } 
}

Ana sipariş TP tarafından açılır ve kapatılırken, flip sipariş asılıdır. Ana durakta kapanırsa, sorun olmaz))). Kapatmak için kullanılacak en iyi işlev nedir?

Hata ayıklayıcılar üzerinde yineleyin ve bu şekilde silinsin mi?:

      {
         request.action = TRADE_ACTION_REMOVE ;
         request.magic=magic_number1;                   // ORDER_MAGIC
         request.symbol = "EURUSD" ;
         request.volume = 0 ;
         request.price= 0 ;
         request.sl = 0 ;
         request.tp = 0 ;
         request.deviation= 0 ;
         request.type= 0 ;
         request.type_filling= 0 ;
         
           {
             OrderSend (request,result);
Ya da belki daha hızlı bir şey?


	          
 
Crucian : Ana sipariş TP tarafından açılıp kapatılır ve geri dönüş askıdadır. Ana durakta kapanırsa, sorun olmaz))). Kapatmak için kullanılacak en iyi işlev nedir? Suçluları sıralayıp bu şekilde ortadan kaldırmak mı? Ya da belki daha hızlı bir şey?

Sorunun, belirli olaylar meydana geldiğinde (özellikle, bir TP emri açık bir pozisyonda tetiklendiğinde) bir SL veya TP emri olmayan bekleyen bir emrin tam olarak nasıl silineceği ile ilgili olduğu ortaya çıktı.

Şu anda, böyle bir bekleyen emir, ancak ilgili "Bekleyen Emri Sil" talebi gönderilerek zorla silinebilir. Onlar. terminal tarafında ilgili olayların oluşumunu izlemeniz ve bir istek göndermeniz gerekir. Ancak, sürümünüzün aksine, istekte yalnızca biri istek olan iki alan gereklidir. sipariş .

Belirttiğiniz durumda, OCO emirleri ("Biri Diğer(ler)i İptal Eder" - "biri diğerini iptal eder") yardımcı olabilir: TP seviyesinde, hacmi sipariş hacmine eşit olan bekleyen bir emir verilir. açık pozisyon ve bekleyen bir emir, yazarın niyetine göre pozisyonu "tersine çevirmek" için gereken hacimde bir emir SL düzeyinde yerleştirilecektir. Bu OCO emirlerinden biri tetiklendiğinde, ikincisi sunucu tarafında otomatik olarak silinecektir. Bununla birlikte, bu forumun varlığı boyunca, platform geliştiricileri, OCO siparişleri de dahil olmak üzere herhangi bir ek sipariş türü sunmayı kategorik olarak kabul etmezler.

 
Yedelkin :

Bununla birlikte, bu forumun varlığı boyunca, platform geliştiricileri, OCO siparişleri de dahil olmak üzere herhangi bir ek sipariş türü sunmayı kategorik olarak kabul etmezler.

Ve programlı olarak uygulanabiliyorsa neden onları tanıtalım?
 
A100 : Programlı olarak uygulanabiliyorsa neden bunları tanıtalım?
Forum arama kısmına 'OCO' kelimesini Latince ve Kirilce yazmayı deneyin ve okuyun.
 
Yedelkin :
Forum arama kısmına 'OCO' kelimesini Latince ve Kirilce yazmayı deneyin ve okuyun.
OSO bağımsız bir sipariş değildir ve girmeye gerek yoktur.
 
A100 : OSO ayrı bir sipariş değildir ve girilmesine gerek yoktur
Açık. Onlar. Hiçbir şey okumadın. Ama biz görüşümüzü paylaşmaya hazırız. Tamam, fikriniz kabul edildi: Bu tür siparişlere ihtiyacınız yok.
 
Yedelkin :
Bu tür siparişlere ihtiyacınız yok.
Bazı platformlar 1 (bazen 2) OCO siparişini bağlama yeteneğine sahiptir. MT4/5'te, programlı olarak ilgili siparişler zincirini uygularım (bazen oldukça karmaşıktır) ve bunun daha uygun bir seçenek olduğunu düşünüyorum