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

 
Vladimir Karputov :

Bir işlem emrinin yürütülmesinden sonra bir POZİSYON belirir! SİPARİŞ DEĞİL!

Bu durumu çoğaltabileceğiniz sunucular var

 PositionGetTicket ( 0 ) = 73401069 
PositionSelect ( _Symbol ) = true 
OrderGetTicket ( 0 ) = 73401069 
PositionsTotal () = 1
OrdersTotal () = 1 , ORDER_STATE_STARTED


Onlar. aynı anda Terminalde böyle bir siparişimiz var

 # 73401069 2019.06 . 08 21 : 42 : 42 buy 1.00 BO Volatility 100 Index 0.5150 0.0000 0.0000 0.5150 0.00 0.00 0.00 Hello! 0


ve ondan aynı pozisyon

 # 73401069 2019.06 . 08 21 : 42 : 42 buy 1.00 BO Volatility 100 Index 0.5150 0.0000 0.0000 0.5150 0.00 0.00 0.00 Hello! 0
 
Vladimir Karputov :

Bu nedenle, önce ne yaptığınızı ve ne almak istediğinizi kelimelerle tanımlayın. SİPARİŞ yerine "SATIN ticari emri" ve "SATIŞ ticari emri" kullanın. Sonuç olarak, bir "ALMA pozisyonu" veya "SATIŞ pozisyonu" elde ederiz.

Tamam, konuşmamızı koddaki örneklerle basitleştirelim, kodu MQL4'te yazdım - Test cihazının sürümüyle ilgileniyorum, yani minimum kontroller, vb.:

 //+------------------------------------------------------------------+
//|                                                        tst__.mq4 |
//|                        Copyright 2018, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.00"
#property strict

int ticket1=- 1 ;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
   ticket1=- 1 ;
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
   if (ticket1< 0 ) ticket1= OrderSend ( _Symbol ,OP_BUY, 0.1 ,Ask, 30 , NormalizeDouble (Ask- 100 * _Point , _Digits ), NormalizeDouble (Ask+ 100 * _Point , _Digits ));

   if ( OrderSelect (ticket1,SELECT_BY_TICKET))
     {
       if (OrderCloseTime()> 0 )
        {
         int cmd=OrderType()==OP_BUY ? OP_SELL : OP_BUY;
         double tp = cmd==OP_BUY ? NormalizeDouble (Ask+ 100 * _Point , _Digits ) : NormalizeDouble (Bid- 100 * _Point , _Digits );
         double sl = cmd==OP_BUY ? NormalizeDouble (Ask- 100 * _Point , _Digits ) : NormalizeDouble (Bid+ 100 * _Point , _Digits );
         ticket1= OrderSend ( _Symbol ,cmd, 0.1 ,Ask, 30 ,sl,tp);
        }
     }
  }
//+------------------------------------------------------------------+

TS'nin anlamı: İlk lansmanda bir Satın Alma emri açarız ve sipariş biletini hatırlarız (bilet üzerinde çalışırız), ardından siparişin kapalı olup olmadığını kontrol ederiz - siparişin ne tür olduğuna bakarız ve tersi emri veririz ve bir daire içinde bileti ve benzerlerini hatırlayın

SB CTrade kullanarak MQL5 üzerinde çoğaltmak için benzer bir örneğe ihtiyacım var

 
Igor Makanu :

Tamam, konuşmamızı koddaki örneklerle basitleştirelim, kodu MQL4'te yazdım - Test cihazının sürümüyle ilgileniyorum, yani minimum kontrol, vb.:

TS'nin anlamı: İlk lansmanda bir Satın Alma emri açarız ve sipariş biletini hatırlarız (bilet üzerinde çalışırız), ardından siparişin kapalı olup olmadığını kontrol ederiz - siparişin ne tür olduğuna bakarız ve tersi emri veririz ve bir daire içinde bileti ve benzerlerini hatırlayın

SB CTrade kullanarak MQL5 üzerinde çoğaltmak için benzer bir örneğe ihtiyacım var

Şimdi kuzu senin hakkında düşündüğü her şeyi söyleyecek))))
 
Alexey Viktorov :
Şimdi kuzu senin hakkında düşündüğü her şeyi söyleyecek))))

bırakın konuşsun ama bilet numarasından pozisyonun açık mı kapalı mı olduğunu, kapalıysa kapalı pozisyonun ne tür bir işlem emri olduğunu öğrenmeniz gerekiyor.

(kalın harflerle - bu hala bir emir! - çünkü TC'nin hedge hesabında)

 
Igor Makanu :

Tamam, konuşmamızı koddaki örneklerle basitleştirelim, kodu MQL4'te yazdım - Test cihazının sürümüyle ilgileniyorum, yani minimum kontrol, vb.:

İkinci OrderSend bir hata içeriyor. Ve normalizasyon gerekli değildir. Forumda (ve sadece değil) kodun daha kısa olduğu zaman okunması daha kolaydır.
 void OnTick ()
  {
   static int ticket1 = - 1 ;
   
   if (ticket1< 0 ) ticket1= OrderSend ( _Symbol ,OP_BUY, 0.1 ,Ask, 30 ,Ask- 100 * _Point ,Ask+ 100 * _Point );

   if ( OrderSelect (ticket1,SELECT_BY_TICKET) && OrderCloseTime())
    {
     int cmd= 1 -OrderType();
     double open = cmd ? Bid : Ask;
     double tp = open - (cmd ? 1 : - 1 ) * 100 * _Point ;
     double sl = open + (cmd ? 1 : - 1 ) * 100 * _Point ;
     ticket1= OrderSend ( _Symbol ,cmd, 0.1 ,open, 30 ,sl,tp);
    }
  }

SB CTrade kullanarak MQL5 üzerinde çoğaltmak için benzer bir örneğe ihtiyacım var

Burada denemek zorunda kalacaksın.

 

Bu nedenle, temel bilgilerin temeli Pozisyon Kimliğidir ( POSITION_IDENTIFIER ), ancak pozisyon bileti değil. Bu sadece ağ nedeniyle önemlidir :

POSITION_IDENTIFIER

Pozisyon Kimliği, her yeni açılan pozisyona atanan ve ömrü boyunca değişmeyen benzersiz bir numaradır. Pozisyonu açan sipariş biletine karşılık gelir.

 

Pozisyon kimliği, onu açan, değiştiren veya kapatan her siparişte (ORDER_POSITION_ID) ve anlaşmada (DEAL_POSITION_ID) belirtilir. Bir pozisyonla ilişkili siparişleri ve anlaşmaları aramak için bu özelliği kullanın.

 

Netleştirme modunda bir pozisyon tersine çevrildiğinde (tek bir giriş/çıkış anlaşması ile), pozisyon kimliği POSITION_IDENTIFIER değişmez. Ancak aynı zamanda POSITION_TICKET, iptalle sonuçlanan siparişin bileti olarak değiştirilir. Riskten korunma modunda pozisyonun tersine çevrilmesi sağlanmaz.

uzun


Bu nedenle konum tanımlayıcısını (POSITION_IDENTIFIER) hatırlamanız ve izlemeniz gerekir.


Şimdi görev iyileştirildi: ilk başlatmada, bir SATIN ALMA POZİSYONU açın ve bunu hatırlayın (DİKKAT: pozisyon tanımlayıcısını hatırlamanız gerekir, bileti değil). Pozisyon kapandıysa karşı pozisyonu açıyoruz: örneğin bir AL pozisyonu vardı, sonra kapandı, yani SATIŞ pozisyonu hemen açıldı.


Şimdi sorunu çözmek çok daha kolay olacak.

 
Vladimir Karputov :

Şimdi sorunu çözmek çok daha kolay olacak.

Örnek yazarken biraz ileriye bakın.

 
fxsaber :
İkinci OrderSend bir hata içeriyor. Ve normalizasyon gerekli değildir. Forumda (ve sadece değil) kodun daha kısa olduğu zaman okunması daha kolaydır.

evet, görüyorum, kodu anında yazdım - test cihazında başlattım - çalışıyor, foruma kopyaladım


fxsaber :

Burada denemek zorunda kalacaksın.

Bu yüzden yardım için foruma döndüm! - SB CTrade'in olanaklarını değerlendirmeye karar verdim - Örnek olarak basit bir görev aldım ve şu ana kadar sonuç olumsuz!


Vladimir Karputov :

Şimdi sorunu çözmek çok daha kolay olacak.

Sizi forumun aktif bir üyesi olarak tanıyorum, MQL5 altında CTrade SB kullanarak fxsaber kodumu veya daha doğrusu düzeltilmiş fxsaber kodumu çoğaltabilir misiniz?

 
Igor Makanu :

evet, görüyorum, kodu anında yazdım - test cihazında başlattım - çalışıyor, foruma kopyaladım

Uzman Danışman yazmaya başladığımda her zaman sıfırdan başlarım (tavsiye ederim). Muhtemelen, çoğu zaman On-fonksiyonları olan bir başlıkla başlarlar.

 
Igor Makanu :

Bu yüzden yardım için foruma döndüm! - SB CTrade'in olanaklarını değerlendirmeye karar verdim - Örnek olarak basit bir görev aldım ve şu ana kadar sonuç olumsuz!

Daha da kısa bir örnek var.

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

Mql5 dilinin özellikleri, incelikleri ve çalışma yöntemleri

fxsaber , 2018.02.15 11:48

 OrderCloseBy ( OrderSend ( _Symbol , OP_BUY , 1 , Ask , 0 , 0 , 0 ), OrderSend ( _Symbol , OP_SELL , 1 , Bid , 0 , 0 , 0 ));

Test cihazında değilse, MT5'te onunla zor.