İşlem işleme OnTradeTransaction - sayfa 8

 
fxsaber :

Bu videoyu 01:35 ve 03:35 arasında izleyin.


Ev yapımı ürünlerinize neden ihtiyacım var? Beni şaşırtıyorsun. Böyle bir programlama bilgisi ile OnTradeTransaction işleyicisini çözemezsiniz.

 
Alexey Viktorov :

Ev yapımı ürünlerinize neden ihtiyacım var? Beni şaşırtıyorsun. Böyle bir programlama bilgisi ile OnTradeTransaction işleyicisini çözemezsiniz.

Görevi hayal bile etmeyen biriyle konuşmak zordur.

 
Alexey Viktorov :

Yani hiç pozisyon yok mu yoksa tırnak içinde mi?

Netleştirme açısından pozisyon olmadığında bu oldukça normal bir durumdur (yani toplam pozisyon == 0.0).

Ve iki danışmanın bakış açısından - her birinin kendi açık pozisyonu vardır.

Birkaç danışman tek bir sembol üzerinde işlem yapabilir. Ayrıca, bazı işlemler elden yapılabilir.

 
JRandomTrader :

Netleştirme açısından pozisyon olmadığında bu oldukça normal bir durumdur (yani toplam pozisyon == 0.0).

Ve iki danışmanın bakış açısından - her birinin kendi açık pozisyonu vardır.

Birkaç danışman tek bir sembol üzerinde işlem yapabilir. Ayrıca, bazı işlemler elden yapılabilir.

Karım komodinin üzerindeki parayı aldı, bir televizyon aldı. Kocası televizyonu aldı, sattı ve parayı komodinin üzerine koydu. Netleştirme açısından, TV yok. Ve senin mantığına göre, eşin komodinde bir televizyonu ve parası var. Otururlar ve başka bir televizyon almaya veya parayı içmeye karar verirler.

Yoksa her birinin TV'si var mı? Sonuçta, her biri onu elinde tuttu. abartıyorum.


Bir danışman bir pozisyon açar ve diğeri kapatırsa, o zaman gider... Unutun onları... Tek bir pozisyon yok.

 
Alexey Viktorov :

Karım komodinin üzerindeki parayı aldı, bir televizyon aldı. Kocası televizyonu aldı, sattı ve parayı komodinin üzerine koydu. Netleştirme açısından, TV yok. Ve senin mantığına göre, eşin komodinde bir televizyonu ve parası var. Otururlar ve başka bir televizyon almaya veya parayı içmeye karar verirler.

Yoksa her birinin TV'si var mı? Sonuçta, her biri onu elinde tuttu. abartıyorum.


Bir danışman bir pozisyon açar ve diğeri kapatırsa, o zaman gider... Unutun onları... Tek bir pozisyon yok.

Pozisyon yok.

Ancak mantığı çerçevesinde her danışman konumunu korur. Örneğin, biri - "uzun vadeli" kaybı ortadan kaldıracak ve diğeri - şu anda "scalper" karşı trende zarar verecek.

 
JRandomTrader :

Pozisyon yok.

Ancak mantığı çerçevesinde her danışman konumunu korur. Örneğin, biri - "uzun vadeli" kaybı ortadan kaldıracak ve diğeri - şu anda "scalper" karşı trende zarar verecek.

Görünüşe göre iki hedge stratejisinin mantığını ağa bağlamaya çalışıyorsunuz. Böyle bir sıralama daha mantıklı olur.

Karşı trenddeki yüzücü pozisyonu kapatır ve hayali pozisyonu için iddia edilen TP'nin fiyatına bir sınır koyar. Ve eğer bu limit çalışırsa, pozisyon tam olarak geri yüklenir AMA!!! zaten başka bir biletle. Dolayısıyla bunu o kapalı pozisyonun devamı olarak görmek kesinlikle yanlıştır ve uzun vadeli danışman bunu kendisininmiş gibi tanımlayamaz.

Başka bir şey, saç derisinin daha küçük bir hacimle çalışmasıdır. O zaman, açılış fiyatının değişmesine rağmen, en azından bilet aynı kalacak. Genel olarak, sadece hedge için netleştirme stratejilerine geçmeye çalışmayın, bundan iyi bir şey çıkmaz. Analoji işe yarayacaktır, ancak eylemler farklı olmalıdır. Ağın özelliklerini dikkate almak gerekir.

 
Alexey Viktorov :

Görünüşe göre iki hedge stratejisinin mantığını ağa bağlamaya çalışıyorsunuz. Böyle bir sıralama daha mantıklı görünecektir.

Karşı trenddeki yüzücü pozisyonu kapatır ve hayali pozisyonu için iddia edilen TP'nin fiyatına bir sınır koyar. Ve bu limit işe yararsa, pozisyon tam olarak geri yüklenir AMA!!! zaten başka bir biletle. Dolayısıyla bunu o kapalı pozisyonun devamı olarak görmek kesinlikle yanlıştır ve uzun vadeli danışman bunu kendisininmiş gibi tanımlayamaz.

Başka bir şey, saç derisinin daha küçük bir hacimle çalışmasıdır. O zaman açılış fiyatının değişmesine rağmen en azından bilet aynı kalacak. Genel olarak, sadece hedge için netleştirme stratejilerine geçmeye çalışmayın, bundan iyi bir şey çıkmaz. Analoji işe yarayacak, ancak eylemler farklı olmalı. Ağın özelliklerini dikkate almak gerekir.

Scalper ve uzun vadeli bir örnek sadece bir örnektir, bir sembol üzerinde birçok danışman olabilir, lotları farklı olabilir.

"Karşı trenddeki yüzücü, pozisyonu kapatır ve hayali pozisyonu için iddia edilen TP'nin fiyatına bir sınır koyar." - ama kafa derisi yüzücü kendi kendine "kendi hayali bir pozisyonu" olduğuna inanıyor.

Ve toplam pozisyonun biletinin değiştiği gerçeği - çok uzun vadede gereksiz, toplamla hiçbir şekilde bağlantılı olmayan kendi pozisyonuna sahip olduğunu zaten biliyor.

Sonuç olarak, her danışman, onunla bu sembol üzerinde kimin çalıştığına bakılmaksızın, onun hakkında hiçbir şey bilmeden ve bilmek istemeden çalışır.

Ve evet, hedge için stratejileri değiştirmeye çalışmıyorum çünkü hemen MT5, FORTS ve ağ ile başladım. Sadece birkaç robotun sembol üzerinde işlem yapabilmesini ve yine de onlara müdahale etmeden el alışverişi yapabilmesini istedim.

 

JRandomTrader :

ancak kafa derisi yüzücü kendi kendine "kendi hayali bir pozisyonu" olduğuna inanır.

Bundan bahsediyorum ve netleştirme için farklı bir mantık inşa etmek gerekiyor. Hayali pozisyonlar olmamalıdır. Sırf beni anlayacak başka bir kelime bulamadığım için böyle koydum. Dolum varsa toplam pozisyon hacmi ile yeni pozisyon açılış fiyatı, kısmi kapanış aynı ise toplam fiyat ve hacim dikkate alınır.

 
Alexey Viktorov :

Bundan bahsediyorum ve netleştirme için farklı bir mantık inşa etmek gerekiyor. Hayali pozisyonlar olmamalıdır. Sırf beni anlayacak başka bir kelime bulamadığım için böyle koydum. Dolum varsa toplam pozisyon hacmi ile yeni pozisyon açılış fiyatı, kısmi kapanış aynı ise toplam fiyat ve hacim dikkate alınır.

O zaman robotlar arasında bir tür etkileşimi çitle çevirmek ve bugün yalnız olan "komşuların" ve yarın, belki de başkalarının eylemlerini hesaba katmak zorunda kalacağız. Ve ne tür bir kazanç sağlayacağı belli değil.

Robotun algoritması açısından hayali bir pozisyona ihtiyaç vardır: eğer açtıysa, kapatması gerekir.

 
JRandomTrader :

O zaman robotlar arasında bir tür etkileşimi çitle çevirmek ve bugün yalnız olan "komşuların" ve yarın, belki de başkalarının eylemlerini hesaba katmak zorunda kalacağız. Ve ne tür bir kazanç sağlayacağı belli değil.

Robotun algoritması açısından hayali bir pozisyona ihtiyaç vardır: eğer açtıysa, kapatması gerekir.

Basitleştirmek için, muhtemelen evet. Kabul ediyorum.

Sonra "Ulaştırma departmanı başkanı" sorunu ve eylemlerini tam olarak dile getirmedi.

OnTradeTransaction prosedüründe işlemin işlemlerini yakalarım ve buna bağlı olarak bekleyen stop emirleri veririm.

İşlem işlem kodu aşağıdadır

 case TRADE_TRANSACTION_DEAL_ADD :
        {
         drop_info2( "TRADE_TRANSACTION_DEAL_ADD\r\n" +TransactionDescription(trans));
         if ((trans.deal_type== DEAL_TYPE_BUY || trans.deal_type== DEAL_TYPE_SELL ) && trans.order!= 0 )
           {
             if (getIsDealOfExpert(trans.deal)) //функция проверки принадлежности сделки к роботу
              {
               drop_info2( "Сделка наша" );
               analyzeFilledOrder(trans.order,trans.volume); //процедура по выставлению отложенных стоп ордеров
              }
           }
        }
       break ;

Bir anlaşmanın bir robota ait olup olmadığını kontrol etmek için fonksiyon kodu

 bool getIsDealOfExpert( ulong dealTicket)
     {
       if ( HistoryDealSelect (dealTicket) && HistoryDealGetInteger (dealTicket, DEAL_MAGIC )==magic_number && HistoryDealGetString (dealTicket, DEAL_SYMBOL )==symbol)
         return true ;
       else
         return false ;
     }

Bekleyen durdurma emirleri vermek için prosedür kodu

 void analyzeFilledOrder( ulong orderTicket, double volume)
  {
   bool isFindOrder= false ;
   string fullComment;
   ENUM_ORDER_TYPE orderType;
   if (getIsOrderOfExpert(orderTicket, true )) //Если ордер из сделки уже в истории
     {
      fullComment= HistoryOrderGetString (orderTicket, ORDER_COMMENT );
      orderType= ENUM_ORDER_TYPE ( HistoryOrderGetInteger (orderTicket, ORDER_TYPE ));
      isFindOrder= true ; //локальная переменная, если нашли в истории
     }
   if (!isFindOrder && getIsOrderOfExpert(orderTicket, false )) //Если не нашли ордер в истории и ордер есть не в истории
     {
      fullComment= OrderGetString ( ORDER_COMMENT ); 
      orderType= ENUM_ORDER_TYPE ( OrderGetInteger ( ORDER_TYPE ));
      isFindOrder= true ; //локальная переменная, если нашли не в истории
     }
   if (isFindOrder) //если хоть где-то нашли, то выставляем отложенные стоп ордера
     {
     //выставляем стоп ордера

Tarihte değil, geçmişte sipariş arama fonksiyonunun kodu

 bool getIsOrderOfExpert( ulong OrderTicket , bool isHistory)
     {
       bool is_expert= false ;
       //если ордер находится в истории
       if (isHistory)
        {
         if ( HistoryOrderSelect ( OrderTicket ) && HistoryOrderGetInteger ( OrderTicket , ORDER_MAGIC )==magic_number && HistoryOrderGetString ( OrderTicket , ORDER_SYMBOL )==symbol)
            is_expert= true ;
        }
       else
        {
         if ( OrderSelect ( OrderTicket ) && OrderGetInteger ( ORDER_MAGIC )==magic_number && OrderGetString ( ORDER_SYMBOL )==symbol)
            is_expert= true ;
        }
       return is_expert;
     }

İşlemlerin gelişiyle ilgili bilgileri, terminalde alındıkları sıraya göre günlükte gösteririm. Şimdi bir demo hesapta işlem yaparken karşılaştığım sorun:

Periyodik olarak, işlemler şu sırayla gelir: TRADE_TRANSACTION_ORDER_DELETE, ardından TRADE_TRANSACTION_DEAL_ADD, ardından TRADE_TRANSACTION_HISTORY_ADD. Genellikle bu durumda, işlem tamamlandıktan sonra stop emirleri verilmez. Bence bu, siparişin zaten silinmiş olması, ancak henüz tarihe girmemiş olmasından kaynaklanmaktadır. Yani ne tarihte ne de terminalde anlaşmadan bir emir bulamıyoruz. Şüpheli olsa da, gerçek şu ki - robot tüm boyutlarda bir sipariş aradıktan sonra bulamadığı için durdurma emirleri verilmez ( isFindOrder= false ). İşlemlerin sırası doğru olabilir, ancak sipariş hala hiçbir yerde bulunamadı. Her durumda, robot anlaşmayı doğru bir şekilde belirler, ancak siparişlerin verilmesine ulaşmaz. Aynı zamanda her şey zaman zaman düzgün çalışıyor ve siparişler veriliyor.

Farklı yaklaşımlar denedim, hiçbir şey yardımcı olmuyor. Şimdi bekleyen siparişler için prosedürün başlangıcına 1 saniyelik bir uyku eklemeyi düşünüyorum, belki yeterli zaman yoktur. Genel olarak, başka nerede kazacağımı bile bilmiyorum.

Lütfen deneyimlerinizi ve fikirlerinizi paylaşın.

Durdurma emirleri ne anlama geliyor? Genel bir pozisyon için mi yoksa sadece bu özel danışmanın çalıştığı bölüm için mi???