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

 
fxsaber :
Sapıklık olmadan sordun. Ve eğer onlarla
Yani böyle
double GetPositionCommission( void )
{
   double Commission = :: PositionGetDouble ( POSITION_COMMISSION );

   // На случай, если POSITION_COMMISSION не работает
   if (Commission == 0 )
  {
     const ulong Ticket = MT4ORDERS::GetPositionDealIn();

     if (Ticket > 0 )
    {
       const double LotsIn = :: HistoryDealGetDouble (Ticket, DEAL_VOLUME );

       if (LotsIn > 0 )
        Commission = :: HistoryDealGetDouble (Ticket, DEAL_COMMISSION ) * :: PositionGetDouble ( POSITION_VOLUME ) / LotsIn;
    }
  }

   return (Commission);
}
Veya

Bunun eski bir gönderi olduğunu biliyorum, ama az önce bir şarapnel bana çarptı.

Bu parça doğru değil, forex komisyonu sıfır olabilir

 // На случай, если POSITION_COMMISSION не работает
   if (Commission == 0 )
 
Artyom Trishkin :
ObjectGetValueByShift() (yalnızca MT4) , ObjectGetValueByTime() (MT4, MT5)

teşekkürler
 
Alexey Volchanskiy :

Bunun eski bir gönderi olduğunu biliyorum, ama az önce bir şarapnel bana çarptı.

Bu parça doğru değil, forex komisyonu sıfır olabilir


yanlış olan nedir?
 


MQL5'te kopya oluşturucu ile ilgili sorun

Kopya oluşturucudaki this.arr dinamik dizisi , hata ayıklayıcıda tek boyutlu görünüyor.

Sonuç olarak ob2.arr boyutu çıktıda 0'dır.

Niye ya?

Aynı parça MQL4'te de düzgün çalışıyor.

MT5 düzenleyici

Meta Düzenleyici 5.0 1578

MT4 düzenleyici

Meta Düzenleyici 5.0 1562

 class obj
  {
public :
   double             arr[][ 2 ];
                     obj(){}
                     obj(obj &o)
     {
       ArrayCopy ( this .arr,o.arr);
     }
   obj operator =(obj &o)
     {
       ArrayCopy ( this .arr,o.arr);
       return & this ;
     }
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
obj Copy(obj &o)
  {
   return o;
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnStart ()
  {
//---
   obj ob1,ob2;
   ArrayResize (ob1.arr, 3 );
   ob2=Copy(ob1);
   bool stop= true ;
  }


 
Klimenko_a_e :

Sonuç olarak, ob2.arr boyutu çıktıda 0'dır.

Niye ya?

obj * Copy(obj &o)
  {
   return & o;
  };

Aksi takdirde, yeni bir nesne oluşturursunuz.


   void operator =(obj &o)
     {
       ArrayCopy ( this .arr,o.arr);
       return ; // &this;
     }

Aksi takdirde, çok fazla var.


Kodunuzun MQL4'te doğru çalıştığından şüpheliyim.

 
İyi günler Lütfen bekleyen bir siparişi nasıl açacağımı söyleyin ???
Açık satın alma ile bekleyen bir sipariş açmam gerekirse döngü nasıl durdurulur???

Depozito bitene kadar paketi benim için açıyor!

Şimdiden teşekkürler!!!

 
Akinak :
İyi günler Lütfen bekleyen bir siparişi nasıl açacağımı söyleyin ???
Açık bir satın alma ile bekleyen bir sipariş açmam gerekirse döngü nasıl durdurulur???

Depozito bitene kadar paketi benim için açıyor!

Şimdiden teşekkürler!!!


İlk önce "kim olduğunu" bulmalısın.

 
Vladislav Andruschenko :


İlk önce "kim olduğunu" bulmalısın.


Vladislav Andruschenko :


İlk önce "kim olduğunu" bulmalısın.


for(int i=0; i<OrdersTotal();i++)
{
if( OrderSelect (i,SELECT_BY_POS))
if(OrderSymbol()==Symbol())
if(OrderMagicNumber()==Büyü)
eğer(b>0)
{
int tak=OrderSend(Symbol(),OP_SELLSTOP,Lots_work,SOPRase,Slip,0,0,"",Magic,0,clrRed);
eğer(al>0)
Print("SELLSTOP Tamam");
başka
Print("SELLSTOP Hatası");
}
eğer(ler>0)
{
OrderSend(Symbol(),OP_BUYSTOP,Lots_work,BOPrase,Slip,0,0,"",Magic,0,clrBlue);
if(tik>0)
Print("SATIN AL Tamam");
başka
Print("SATIN ALMA Hatası");
}

}


 

peki, bir döngüde şunu yapın:

pozisyon aç - bir emir aç, pozisyon sayısı eklenir, döngü tekrar eder - sonsuza kadar.

 int OrderSTotal= OrdersTotal ();
for ( int i= 0 ; i<OrderSTotal;i++)
  {
   if ( OrderSelect (i, SELECT_BY_POS ))
       if ( OrderSymbol ()== Symbol ())
         if ( OrderMagicNumber ()==Magic)

           {
             if (b> 0 )
              {
               int tak= OrderSend ( Symbol (), OP_SELLSTOP ,Lots_work,SOPrase,Slip, 0 , 0 , "" ,Magic, 0 , clrRed );
               if (tak> 0 )
                   Print ( "SELLSTOP  Ok" );
               else
                   Print ( "SELLSTOP  Error" );
              }

             if (s> 0 )
              {
                 int tik= OrderSend ( Symbol (), OP_BUYSTOP ,Lots_work,BOPrase,Slip, 0 , 0 , "" ,Magic, 0 , clrBlue );
               if (tik> 0 )
                   Print ( "BUYSTOP  Ok" );
               else
                   Print ( "BUYSTOP  Error" );
              }
           }
  }
//+------------------------------------------------------------------+


b ve s'nin ne olduğunu bilmek gerekiyor

 
fxsaber :

Aksi takdirde, yeni bir nesne oluşturursunuz.


Aksi takdirde, çok fazla var.


Kodunuzun MQL4'te doğru çalıştığından şüpheliyim.

Gerçek kodda, bir işlev bir nesne döndürür.

Bence kopya oluşturucu bu durumda geçici bir kopya oluşturmalıdır.

Kod, MQL5 build 1545'te de düzgün çalışıyor.

Yeni yapıda, kopya oluşturucu tek boyutlu bir diziyi bile yeniden boyutlandıramaz: hata 4007.

Bana göre bu doğru değil.