Bir piyasa emri nasıl doğru bir şekilde açılır? - sayfa 8

 
Dmitry Fedoseev :
Bir molaya ihtiyacınız olduğunda durum böyle değilsiniz.
Bu kadar.
 
Genel olarak, IMHO, sonuç budur.

Küresel olarak 2 yol vardır:

1) ortamın analizi (işlemlerin geçmişini emmek, açık bir pozisyonu veya pozisyon hacmini kontrol etmek);

2) işlemlerin analizi.

Birincisi daha yavaş. Ama daha güvenilir. Uzlaşmaya ihtiyacımız var. Muhtemelen burada stratejiye bakmanız ve ondan dans etmeniz gerekiyor ...

Evet, FORTS'ta tam teşekküllü bir sipariş defteri var, bu yüzden kenelerle değil, BookEvent olayı ile çalışmanız gerekiyor.

Vasily Sokolov'un konuyla ilgili konuşmaması garip. İlginç bir bakış açısı...
 
Dennis Kirichenko :
Genel olarak, IMHO, sonuç budur.

Küresel olarak 2 yol vardır:

1) ortamın analizi (işlemlerin geçmişini emmek, açık bir pozisyonu veya pozisyon hacmini kontrol etmek);

2) işlemlerin analizi.

Birincisi daha yavaş. Ama daha güvenilir. Uzlaşmaya ihtiyacımız var. Muhtemelen burada stratejiye bakmanız ve ondan dans etmeniz gerekiyor ...

Evet, FORTS'ta tam teşekküllü bir sipariş defteri var, bu yüzden kenelerle değil, BookEvent olayı ile çalışmanız gerekiyor.

Vasily Sokolov'un konuyla ilgili konuşmaması garip. İlginç bir bakış açısı...
Belki yakında bir bardağa geçeceğim, ama şimdiye kadar .... eski moda yol.
 
Dennis Kirichenko :
Genel olarak, IMHO, sonuç budur.

Küresel olarak 2 yol vardır:

1) ortamın analizi (işlemlerin geçmişini emmek, açık bir pozisyonu veya pozisyon hacmini kontrol etmek);

2) işlemlerin analizi.

Birincisi daha yavaş. Ama daha güvenilir. Uzlaşmaya ihtiyacımız var. Muhtemelen burada stratejiye bakmanız ve ondan dans etmeniz gerekiyor ...

Evet, FORTS'ta tam teşekküllü bir sipariş defteri var, bu yüzden kenelerle değil, BookEvent olayı ile çalışmanız gerekiyor.

Vasily Sokolov'un konuyla ilgili konuşmaması garip. İlginç bir bakış açısı...
Ve bu arada, soru ortaya çıktı, BookEvent olayını bir Tick veya Timer ile aynı şekilde kullanabilir misiniz?
onlar. stratejinizi tamamen oraya taşımak mı?
 
Konuyla ilgili hatırlıyorum...

Bir keresinde bu sipariş üzerinde çalıştım, CiOnTrade sınıfını yazdım:
class CiOnTrade : public CTrade
İlginç bir görevdi. Müvekkil ve ben birbirimizin sinirlerini bozduk ve mızraklarımızı kırdık. Hatırladığım kadarıyla, oradaki asıl görev garantili bir hacim almak/satmaktı. Ve hacmin bir kısmı doldurulmadıysa, bu emirlerin silinmesi ve geri kalanının farklı bir fiyattan doldurulması gerekiyordu...

Yani, bulduğum en uygun çözüm durumları işlemekti. Ve çok fazla vardı:
enum ENUM_TRADE_STATE
  {
   TRADE_STATE_NONE= 0 ,       // "ничего"
   TRADE_STATE_ORDERS= 1 ,     // "только ордера"
   TRADE_STATE_POSITION= 2 ,   // "только позиция"
   TRADE_STATE_ALL= 3 ,       // "все"
  };
1) "Hiçbir şey", hiçbir şey yapılmadığında ilk durumdur.

2) "Yalnızca siparişler" - bu, siparişlerin verildiği durumdur.

3) "Yalnızca pozisyon", emirlerin tamamen doldurulduğu durumdur.

4) "Tümü" - bu, emirlerin tam olarak yerine getirilmediği ve piyasada zaten bir pozisyon olduğu durumdur.

Burada her bir durumun işlenmesi gerekiyordu... evet bu arada ara durumlar da olduğunu kabul ediyorum. Böylece sınıfım geliştirilebilir.
 
Gennady Mazur :
Ve bu arada, soru ortaya çıktı, BookEvent olayını bir Tick veya Timer ile aynı şekilde kullanabilir misiniz?
onlar. stratejinizi tamamen oraya taşımak mı?
Yani evet! Ancak sipariş defterinin olayları daha sık oluşturduğunu unutmayın. Bu nedenle, gereksizleri filtrelemek için bazı filtrelere ihtiyaç vardır. Örneğin fiyatlar değişmedi, sadece bazı uygulamaların hacimleri değişti...
 
Dennis Kirichenko :
Yani evet! Ancak sipariş defterinin olayları daha sık oluşturduğunu unutmayın. Bu nedenle, gereksiz olanları filtrelemek için bazı filtrelere ihtiyaç vardır. Örneğin fiyatlar değişmedi, sadece bazı uygulamaların hacimleri değişti...
Anladım, teşekkürler... ve bazı durumlarda hacim değişikliği , özellikle güçlü seviyelerin yakınında, fiyat değişikliğinden daha önemlidir.
 
Dennis Kirichenko :
Genel olarak, IMHO, sonuç budur.

Küresel olarak 2 yol vardır:

1) ortamın analizi (işlemlerin geçmişini emmek, açık bir pozisyonu veya pozisyon hacmini kontrol etmek);

2) işlemlerin analizi.

Birincisi daha yavaştır . Ama daha güvenilir. Uzlaşmaya ihtiyacımız var. Muhtemelen burada stratejiye bakmanız ve ondan dans etmeniz gerekiyor ...
OrderSend+Sleep (0) seçeneği OrderSend+OnTradeTransaction'dan daha yavaş değildir. Ölçülü. Bu nedenle, asenkron işlemler için değil ikinci seçeneği kullanmıyorum.
 
Dennis Kirichenko :
Anlaşmayla ilgili bilgilerin henüz ulaşmadığını varsayıyorum. Burada ( kırmızı ile vurgulanmıştır) Şansa güveniyorsunuz. Ve o kaprisli bir bayan :-))

bool OpenSellPosition( string symbol, double volume, string comment= "" , ulong deviation= 10 , ENUM_ORDER_TYPE_FILLING filling= ORDER_FILLING_FOK )
{
   MqlTradeRequest Request;
   MqlTradeResult Results;
   ZeroMemory (Request);
   ZeroMemory (Results);
  Request.price= SymbolInfoDouble ( _Symbol , SYMBOL_BID );
  Request.action= TRADE_ACTION_DEAL ;
  Request.type= ORDER_TYPE_SELL ;
  Request.symbol=symbol;
  Request.volume=volume;      
  Request.deviation=deviation;
  Request.comment=comment;  
  Request.type_filling=filling;
   bool res= false ;
  res= OrderSend (Request,Results);
   if (res)
  {
     if (Results.deal> 0 ) return ( true );
     else return ( false );

  }
   return ( false );
}

ORDER_STATE_FILLED ile bile, Results.order sorunlu olabilir - Results.deal null. FXOpen-MT5 sunucusunda bu durumun %100 yeniden üretilmesi sağlanır.

Farklı sunucularda bir çok demo açmanızı ve koddan tam performans almanızı tavsiye ederim. MT4 İncil için yaptığım şey buydu. Bu nedenle konu ile ilgili herhangi bir problem bulunmamaktadır.

 
fxsaber :
OrderSend+Sleep(0) seçeneği, OrderSend+OnTradeTransaction'dan daha yavaş değildir. Ölçülü. Bu nedenle, asenkron işlemler için değil ikinci seçeneği kullanmıyorum.

OrderSend+Sleep (0) seçeneği geçicidir, çünkü bu geliştiricilerin bir eksikliğidir (örnek olarak taklit etmeyin :)).

Kod düzeltilecek, sadece OrderSend kalacak

Neden: