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

 
Alexey Viktorov #:

Pozisyonlar arasında neden bekleyen bir emir arıyorsunuz?

Teşekkürler, sanırım çözdüm. Mevcut fiyattan bir pozisyon açmam gerekiyordu, ancak bekleyen emirler veriyordum, bu yüzden mevcut fiyatı belirttiğim için yerleştirilmediler.

Ben kullandım

   ENUM_ORDER_TYPE order_type= position_buff[i].type==0 ? ORDER_TYPE_BUY : ORDER_TYPE_SELL;


ama yapmak zorundaydım

 ENUM_POSITION_TYPE order_type= position_buff[i].type==0 ? POSITION_TYPE_BUY : POSITION_TYPE_SELL;
 

PositionOpen'da neden ENUM_ORDER_TYPE değil de ENUM_POSITION_TYPE olduğunu anlamıyorum?

//+------------------------------------------------------------------+
//| Open position                                                    |
//+------------------------------------------------------------------+
bool CTrade::PositionOpen(const string symbol,const ENUM_ORDER_TYPE order_type,const double volume,
                          const double price,const double sl,const double tp,const string comment)
  {
//--- check stopped
   if(IsStopped(__FUNCTION__))
      return(false);
//--- clean
   ClearStructures();
//--- check
   if(order_type!=ORDER_TYPE_BUY && order_type!=ORDER_TYPE_SELL)
     {
      m_result.retcode=TRADE_RETCODE_INVALID;
      m_result.comment="Invalid order type";
      return(false);
     }
//--- setting request
   m_request.action   =TRADE_ACTION_DEAL;
   m_request.symbol   =symbol;
   m_request.magic    =m_magic;
   m_request.volume   =volume;
   m_request.type     =order_type;
   m_request.price    =price;
   m_request.sl       =sl;
   m_request.tp       =tp;
   m_request.deviation=m_deviation;
//--- check order type
   if(!OrderTypeCheck(symbol))
      return(false);
//--- check filling
   if(!FillingCheck(symbol))
      return(false);
   m_request.comment=comment;
//--- action and return the result
   return(OrderSend(m_request,m_result));
  }
 
Mikhail Toptunov ENUM_POSITION_TYPE olduğunu anlamıyorum?

Çünkü bir pozisyon açamazsınız.

Bir işlemi gerçekleştirmek için broker sunucusuna bir işlem emri gönderirsiniz.

Bir pozisyon yalnızca işlem gerçekleştirilmişse açılır.

Emrin başarıyla gönderilmiş olması(10008) bir işlemin gerçekleştirildiğini ve dolayısıyla bir pozisyonun açıldığını (10009) garanti etmez.


TRADE_ACTION_DEAL - yani mevcut piyasa fiyatından bir işlem gerçekleştirmek için bir işlem emri (emir) gönderirseniz, 10009 dışındaki herhangi bir dönüş kodu (m_result.retcode) işlemin gerçekleştirilmediğini gösterecektir.

Her ihtimale karşı, m_result.deal biletini de kontrol edin.

Документация по MQL5: Константы, перечисления и структуры / Коды ошибок и предупреждений / Коды возврата торгового сервера
Документация по MQL5: Константы, перечисления и структуры / Коды ошибок и предупреждений / Коды возврата торгового сервера
  • www.mql5.com
Коды возврата торгового сервера - Коды ошибок и предупреждений - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Aleksandr Slavskii #:

TRADE_ACTION_DEAL işlemi yapmak için, yani mevcut piyasa fiyatından işlem yapmak için bir işlem emri (emir) gönderirseniz, 10009 dışındaki herhangi bir dönüş kodu (m_result.retcode) işlemin gerçekleşmediğini gösterecektir.

Ne yazık ki, tam olarak öyle değil. Burada 10012 kodunu nasıl aldığımı zaten gösterdim, sıfır sipariş bileti, ancak sipariş gerçekleştirildi. MQ'lar bu konuda sessiz.

Bunun için bir koltuk değneği yazdım, ancak bunu ancak 10012'yi tekrar aldıktan sonra kontrol etmek mümkün olacak).

 
JRandomTrader #:

Ne yazık ki tam olarak öyle değil. Burada 10012 kodunu nasıl aldığımı zaten gösterdim, sıfır sipariş bileti, ancak sipariş gerçekleştirildi. MQ bu konuda sessiz kalıyor.

Bunun için bir koltuk değneği yazdım, ancak ancak 10012'yi tekrar aldıktan sonra kontrol etmek mümkün olacak).

Askeri iş. emredildi, anlaşıldığı gibi bir cevap aldı. uygulandığı gibi bir cevap aldı, emredildiği gibi uygulandığına dair onay aldı))))) Her şey insan))))))

 
Valeriy Yastremskiy #:

askeri iş. emredildi, anlaşıldığı gibi bir cevap aldı. uygulandığı gibi bir cevap aldı, emredildiği gibi uygulandığına dair onay aldı))))) Her şey insan)))))))))))))))))))))))))))))

Ve bir sonraki sipariş ancak yarın verilebilir. Böyle bir ticarete kimin ihtiyacı var?

 

beyler, bakanlar!)

Verilmiş veya gerçekleştirilmiş bir emir veya pozisyonun kontrolünü nasıl organize edebilirim?

10008 kodu alınırsa, emrin emirler veya pozisyonlar listesine yerleştirildiğini nasıl takip edebilirim?

Kodun geldiği, ancak pozisyonun veya emrin orada olmadığı seçeneğini hariç tutmak için.

//-------------------------------------------------------------------+
void OnTrade()
  {
//--- Фиксируем если позиция открыта
   for(int i=0; i<ArraySize(position_buff); i++)
      if(position_buff[i].timeOp>1)
         if(!match_open_orders(position_buff[i].MagicNumber,position_buff[i].type,position_buff[i].comment)) // проверяю есть ли позиция
           {
            position_buff[i].timeOp= 0;     // Фиксировать время
            Print("Метод OnTrade() по рынку не выполнен. Код возврата=",m_trade.ResultRetcode(),
                  " (",m_trade.ResultRetcodeDescription(),")"+position_buff[i].comment+" lot "+DoubleToString(position_buff[i].lot));//
           }
         else
            Print("Метод OnTrade() по рынку выполнен успешно. Код возврата=",m_trade.ResultRetcode(),
                  " (",m_trade.ResultRetcodeDescription(),")"+position_buff[i].comment+" lot "+DoubleToString(position_buff[i].lot));//

  }
//--- Соответствие открытых ордеров ---------------------------------+
bool match_open_orders(long magic,int type,string comment)
  {
//---
   for(int i=PositionsTotal()-1; i>=0; i--)
      if(m_position.SelectByIndex(i))
        {
         long f= m_position.Magic();
         if(m_position.Comment()==comment)
            if(m_position.Type()==type)
               if(m_position.Magic()==magic)
                  return(true);
        }
   for(int i=OrdersTotal()-1; i>=0; i--)
      if(m_position.SelectByIndex(i))
        {
         long f= m_position.Magic();
         if(m_position.Comment()==comment)
            if(m_position.Type()==type)
               if(m_position.Magic()==magic)
                  return(true);
        }
   return(false);
  }
 
Mikhail Toptunov gerçekleştirilmiş bir emir veya pozisyon üzerinde bir kontrol nasıl organize edilir.

10008 kodu alınırsa, tam olarak bu emrin emir veya pozisyon listesine yerleştirildiğini nasıl izleyebilirim?

Kodun geldiği ancak pozisyonun veya emrin orada olmadığı seçeneğini hariç tutmak için

OnTrade() yerine OnTradeTransaction () kullanmayı deneyin.

 

MetaTrader 5 Windows 7,8 üzerinde çalışıyor mu?

 
pivomoe #:

MetaTrader 5 Windows 7,8 üzerinde çalışıyor mu?

Çalışır, ancak 64 bit işletim sistemine sahip olmak daha iyidir