Çaydanlıktan gelen sorular - sayfa 137

 
alph :

Danışmanın pozisyonu 5-6 saat içinde kapatmasının kodunu söyler misiniz? Veya bir bağlantı gönderin.

Eğer ilgileniyorsanız, kendiniz deneyin. İlk olarak, PositionSelect() işlevini kullanarak açık bir pozisyon olup olmadığını kontrol edin. Başarılı olursa, PositionGetInteger( POSITION_TIME ) kullanarak pozisyonun açılış saatini öğrenin ve yaklaşık 5-6 saat durumunuzu kontrol edin. Bir pozisyonu kapatma zamanı geldiyse, pozisyon tipini ( ENUM_POSITION_TYPE ) PositionGetInteger( POSITION_TYPE ) ve onun hacmini PositionGetDouble( POSITION_VOLUME) öğrenin. Daha sonra aynı hacimde zıt yönlü bir sipariş verirsiniz. Pozisyon kapatma yönteminin bir örneği MQL5\Include\Trade\Trade.mqh\PositionClose(const string symbol,ulong sapma=ULONG_MAX) konumunda bulunabilir.

 
joo :
Teşekkürler, ihtiyacınız olan şey bu gibi görünüyor.

Tam olarak değil.

"Fare tıklaması" olayını almak için OnChartEvent() kullanmanız gerekir, ancak komut dosyalarında kullanılamaz, ne yapmalı? Bu, evrensel işlevin çalışmayacağı anlamına mı geliyor?

 
joo :

Tam olarak değil.

"Fare tıklaması" olayını almak için OnChartEvent() kullanmanız gerekir, ancak komut dosyalarında kullanılamaz, ne yapmalı? Bu, evrensel işlevin çalışmayacağı anlamına mı geliyor?

sonra GetKeyState + GetPosition + grafik nesnelerinin bilinen koordinatlarını kullanın.
 
sergeev :
sonra GetKeyState + GetPosition + grafik nesnelerinin bilinen koordinatlarını kullanın.

winApi?

işte bu, listeden bir dosyayı görüntülemek ve seçmek için evrensel bir işlev yapma isteğimi kaybettim (bir tür mini dosya yöneticisi). :(

 
joo :

winApi?

işte bu, listeden bir dosyayı görüntülemek ve seçmek için evrensel bir işlev yapma isteğimi kaybettim (bir tür mini dosya yöneticisi). :(

peki ve neden o zaman bir senaryo? bir tık değil kullanıcının seçimini beklerken işlevi nasıl yapacaktınız?
 
sergeev :
peki ve neden o zaman bir senaryo?
çünkü keneleri umursamıyor - keneler keneler ya da keneler değil.
 
Yedelkin :

Pozisyon kapatma yönteminin bir örneği MQL5\Include\Trade\Trade.mqh\PositionClose(const string symbol,ulong sapma=ULONG_MAX) konumunda bulunabilir.

Teşekkür ederim.

Ancak derslerde, genellikle bir yerde gördüğüm ve çözdüğüm gerçeğine rağmen, aldığım şey hala karşılıklı anlayışa sahip değilim.

 
joo :
çünkü keneleri umursamıyor - keneler keneler veya tikler değil.
ve uzman umursamıyor. neden senaryo?
 
alph :

Ancak derslerde, genellikle bir yerde gördüğüm ve çözdüğüm gerçeğine rağmen, aldığım şey hala karşılıklı anlayışa sahip değilim.

Eh, herhangi bir sınıf yöntemi normal koddur. Bu kodu ayrıştırmayı deneyin:

   MqlTradeRequest   m_request={0};         // request data
   MqlTradeResult    m_result={0};          // result data
   MqlTradeCheckResult m_check_result={0};  // result check data
   bool   partial_close=false;
   int    retry_count  =10;
   uint   retcode      =TRADE_RETCODE_REJECT;
  
     do
     {
       //--- checking
       if ( PositionSelect (symbol))
        {
         if (( ENUM_POSITION_TYPE ) PositionGetInteger ( POSITION_TYPE )== POSITION_TYPE_BUY )
           {
             //--- prepare request for close BUY position
            m_request.type = ORDER_TYPE_SELL ;
            m_request.price= SymbolInfoDouble (symbol, SYMBOL_BID );
           }
         else
           {
             //--- prepare request for close SELL position
            m_request.type = ORDER_TYPE_BUY ;
            m_request.price= SymbolInfoDouble (symbol, SYMBOL_ASK );
           }
        }
       else
        {
         //--- position not found
         m_result.retcode=retcode;
         return ( false );
        }
       //--- setting request
      m_request.action      = TRADE_ACTION_DEAL ;
      m_request.symbol      =symbol;
      m_request.deviation   =(deviation== ULONG_MAX ) ? m_deviation : deviation;
      m_request.type_filling=m_type_filling;
      m_request.volume      = PositionGetDouble ( POSITION_VOLUME );
       //--- check volume
       double max_volume= SymbolInfoDouble (symbol, SYMBOL_VOLUME_MAX );
       if (m_request.volume>max_volume)
        {
         m_request.volume=max_volume;
         partial_close= true ;
        }
       else
         partial_close= false ;
       //--- order check
       if (! OrderCheck (m_request,m_check_result))
        {
         //--- copy return code
         m_result.retcode=m_check_result.retcode;
         return ( false );
        }
       //--- order send
       if (! OrderSend (m_request,m_result))
        {
         if (--retry_count!= 0 ) continue ;
         if (retcode== TRADE_RETCODE_DONE_PARTIAL )
            m_result.retcode=retcode;
         return ( false );
        }
      retcode= TRADE_RETCODE_DONE_PARTIAL ;
       if (partial_close) Sleep ( 1000 );
     }
   while (partial_close);
 
sergeev :
ve uzman umursamıyor. neden senaryo?
Bir komut dosyası değilse, tüm mantığı OnChartEvent() 'e/dan çalıştır/çağır?