Çaydanlıktan gelen sorular - sayfa 216

 
2 Yedelkin, danışmanın sadece uyuyakaldığını, çalışmayı bıraktığını söyledim. Sadece terminali yeniden başlatarak onu uyandırdığı ortaya çıkıyor ve işe yarıyor.

2 sergeev, MQL5'te saat durduğunda uykuya dalmışsınız demektir.

 
Yedelkin : düşünce , açık bir olay gecikmesinin en basit örneği olarak sonsuz döngüye geri döner.

Burada bir soru ortaya çıktı: ticaret isteklerini göndermek için hangi işlevi kullanıyorsunuz?

G001 : 2 Yedelkin, danışmanın uykuya daldığını, çalışmayı bıraktığını söylemiştim. Sadece terminali yeniden başlatarak onu uyandırdığı ortaya çıkıyor ve işe yarıyor.

Her şeyin bir nedeni ve açıklaması olmalı. Şimdiye kadar "çalışmayı durdurur" gibi görünen fenomen dahil.

 
G001 :
2 Yedelkin, danışmanın sadece uyuyakaldığını, çalışmayı bıraktığını söyledim. Sadece terminali yeniden başlatarak onu uyandırdığı ortaya çıkıyor ve işe yarıyor.

2 sergeev, MQL5'te saat durduğunda uykuya dalmışsınız demektir.

Hangi MQL olayında (EA'nızda hangi fonksiyonda) "uykuya daldığında onu yakalarsınız" ??
 
Yedelkin :

Burada bir soru ortaya çıktı: ticaret isteklerini göndermek için hangi işlevi kullanıyorsunuz?

Her şeyin bir nedeni ve açıklaması olmalı. Şimdiye kadar "çalışmayı durdurur" gibi görünen fenomen dahil.

 //+------------------------------------------------------------------+
//| Open Orders                                                      |
//+------------------------------------------------------------------+
// Perform analysis and open orders on new candle/bar 
   if ((TradeNewBar != true )||(IsNewBar() == true ))
  {
//----- Open BUY_STOP
     if (TrendDetection() == BULL && TotalBullStopOrders() < 1 && TotalBullPositions() < 1 )
    {
      request.action = TRADE_ACTION_PENDING ;
      request.magic = Magic;
      request.symbol = Symbol ();
      request.volume = Volume();
      request.price= NormalizeDouble (Ask+OrderDrive* _Point , _Digits );
      request.sl = NormalizeDouble (request.price - StopLoss* _Point , _Digits );
      request.tp = NormalizeDouble (request.price + TakeProfit* _Point , _Digits );
      request.type= ORDER_TYPE_BUY_STOP ;
      request.type_filling= ORDER_FILLING_RETURN ;
      request.comment=Coments;
       int ResBull = - 1 ;
       while (ResBull < 1 )
      {
         if ( OrderCheck (request,check))
        {
          ResBull = OrderSend (request,result);
        }
         if (( MQL5InfoInteger ( MQL5_TESTING )|| MQL5InfoInteger ( MQL5_OPTIMIZATION ))) break ;
      }
       Print ( "BuyStop Order Set " );
       if (UseSound == true ){ PlaySound (OrderSound);}
       Print (ResultRetcodeDescription(result.retcode));
    }
//----- Open SELL_STOP
     if (TrendDetection() == BEAR && TotalBearStopOrders() < 1 && TotalBearPositions() < 1 )
    {
      request.action = TRADE_ACTION_PENDING ;
      request.magic = Magic;
      request.symbol = Symbol ();
      request.volume = Volume();
      request.price= NormalizeDouble (Bid-OrderDrive* _Point , _Digits );
      request.sl = NormalizeDouble (request.price + StopLoss* _Point , _Digits );
      request.tp = NormalizeDouble (request.price - TakeProfit* _Point , _Digits );
      request.type= ORDER_TYPE_SELL_STOP ;
      request.type_filling= ORDER_FILLING_RETURN ;
      request.comment=Coments;
       int ResBear = - 1 ;
       while (ResBear < 1 )
      {
         if ( OrderCheck (request,check))
        {
          ResBear = OrderSend (request,result);
        }
         if (( MQL5InfoInteger ( MQL5_TESTING )|| MQL5InfoInteger ( MQL5_OPTIMIZATION ))) break ;
      }
       Print ( "SellStop Order Set " );
       if (UseSound == true ){ PlaySound (OrderSound);}
       Print (ResultRetcodeDescription(result.retcode));                             
    }
  }
 
sergeev :
Hangi MQL olayında (EA'nızda hangi işlevde) "uykuya daldığında onu yakalarsınız" ??

Üzgünüm, ne sorduğunu gerçekten anlamıyorum.

Saat, geçersiz OnTick ()'den hemen sonra

 void OnTick ()
{
   Comment ( "Local Time: " + TimeToString ( TimeLocal (),TIME_MINUTES|TIME_SECONDS));
 
sergeev :
Hangi MQL olayında (EA'nızda hangi işlevde) "uykuya daldığında onu yakalarsınız" ??
Evet, uzmanın "uyuyakaldığını" görsel olarak belirler. Tablodaki yorumlardaki saat ile bilgisayarınızın saatini karşılaştırır. Herhangi bir olay kullanmaz.
 

Danışmanın durumu konusunda yardımcı olabilecek var mı?

Pozisyonu kapattıktan sonra danışmanı hemen aynı pozisyonu zıt pozisyonla açmaya zorlamak istiyorum.

Örneğin 1 Satış ve 1 Alış sadece 2 pozisyon açılmıştır. bunlardan biri kapandı, örneğin, TP veya SL ile Satın Al, danışmanın yeni bir Alış pozisyonu açmasını ve onunla yeni bir Satış yapmasını istiyorum

2 Satış pozisyonu çıkıyor 1 Alış pozisyonu

Belki birisi, karşı tarafla kapalı bir anlaşmanın açılacağı bir tür formül bulur.

ya da başka bir şekilde .. Bildiğim her şeyi denedim ((((işe yaramıyor :, (

Dosyalar:
SellBuY.mq4  3 kb
 
Yedelkin :
Evet, uzmanın "uyuyakaldığını" görsel olarak belirler. Tablodaki yorumlardaki saat ile bilgisayarınızın saatini karşılaştırır. Herhangi bir olay kullanmaz.
Doğru şekilde. Bu benim isteğimdi, danışmanın ne zaman çalışmayı bıraktığını programlı olarak nasıl öğreneceğim.
 

G001ResBear = OrderSend (request,result);

Açık. OrderSend() işlevini kullanın. Bu sürüm, OnTick() işlevi tarafından NewTick olayının işlenmesindeki gecikmenin, OrderSend () işlevinin bu yanıtı beklemesi gerektiğinden, sunucu yanıtının olmamasından kaynaklanabileceği ortaya çıktı. İlgileniyorsanız, sunucudan yanıt beklemeyen OrderSend() işlevi yerine eşzamansız kopyasını kullanmayı deneyin. Bu durumda da Uzman Danışmanın işi donar mı?
 
Yedelkin :
Açık. OrderSend() işlevini kullanın. Bu sürüm, OrderSend () işlevinin bu yanıtı beklemesi gerektiğinden, gecikmenin sunucu yanıtının olmamasından kaynaklanabileceği ortaya çıktı. İlgileniyorsanız, sunucudan yanıt beklemeyen zaman uyumsuz kopyasını kullanmak için OrderSend() işlevi yerine deneyin. Bu durumda da Uzman Danışmanın işi donar mı?

Teşekkür ederim. Ben de asenkron seçeneği kullanmayı düşündüm ama komisyoncu işlemleri saymıyor mu bilmiyorum. Ama deneyeceğim.