EA'm çift giriş yapıyor - sayfa 3

 
doshur :
Aman tanrım. Yani uyku yardımcı olmuyor mu?

Bundan kaçınmak için ne yapabiliriz?

Benim için yardımcı oldu. Snelle_modas ipucu artı uyku kullandım. Bu işe yaradı.

Ancak o zamandan beri işlemlerin açılma şeklini yeniledim. Şimdi bu çözümlerin hiçbirine ihtiyacım yok. İşte dün angevoyageur'a yazdıklarım. Umut ediyorum bu yardım eder:

Merhaba,

En son çözdüğümde, ticaretten sonra uyku işlevini kullanıyordum. Ama yeni botumla artık buna gerek yok. Belki de bunun nedeni, bir ticaret açmanın artık farklı şekilde ele alınmasıdır. Bu sorunu yaşadığım ilk bot (belki diğer EA'lar da bu şekilde bir ticaret açma yoluna sahipti ve bu yüzden sorun da vardı (örneğin metaquant)) bu yöntemi kullandı:

 void SetOrder( ENUM_ORDER_TYPE type, double lot)
{
   int ticket = - 1 ;
   ResetLastError ();
   double price = 0 ;
   double ask, bid;
   ask = SymbolInfoDouble ( Symbol (), SYMBOL_ASK );
   bid = SymbolInfoDouble ( Symbol (), SYMBOL_BID );
   if (maxSpread != 0 && NormalizeDouble (ask - bid, _Digits ) >= NormalizeDouble (maxSpread * point, _Digits )) return ; 
   if (type == ORDER_TYPE_BUY ) price = ask;
   if (type == ORDER_TYPE_SELL ) price = bid;
   trade.PositionOpen( Symbol (), type, lot, price, 0 , 0 , "" );
   Sleep ( 1000 );
   int err = GetLastError ();
   if (err > 0 ) Print (ErrorDescription(err));
}


Şimdi belgelerden öğrendiğim gibi siparişleri açıyorum ve artık bu sorunu yaşamıyorum:

 void open_sell( double xlot, int xTP)
{
         MqlTradeRequest mrequest;
         MqlTick latest_price;      
         MqlTradeResult mresult;   
             if (! SymbolInfoTick ( Symbol (),latest_price))
              {
               Alert ( "Error getting the latest price quote - error:" , GetLastError (), "!!" );
               return ;
              }
         ZeroMemory (mrequest);
         mrequest.action= TRADE_ACTION_DEAL ;                                 // immediate order execution
         mrequest.price = NormalizeDouble (latest_price.bid, Digits ());           // latest Bid price
         if (StopLoss!= 0 ) mrequest.sl = NormalizeDouble (latest_price.bid + StopLoss*point, Digits ()); // Stop Loss
         if (xTP!= 0 ) mrequest.tp = NormalizeDouble (latest_price.bid - xTP*point, Digits ()); // Take Profit
         mrequest.symbol = Symbol ();                                           // currency pair
         mrequest.volume = xlot;                                               // number of lots to trade
         mrequest.magic = EA_Magic;                                           // Order Magic Number
         mrequest.type= ORDER_TYPE_SELL ;                                     // Sell Order
         mrequest.type_filling = ORDER_FILLING_FOK ;                           // Order execution type
         mrequest.deviation= 100 ;                                             // Deviation from current price
         //--- send order
         OrderSend (mrequest,mresult);
         // get the result code
         if (mresult.retcode== 10009 || mresult.retcode== 10008 ) //Request is completed or order placed
           {
          // Print("A Sell order has been successfully placed with Ticket#:",mresult.order,"!!");
           }
         else
           {
             Print ( "The Sell order request could not be completed -error:" , GetLastError ());
             ResetLastError ();
             return ;
           }
}


Belki bu yardımcı olur. Görüyorum ki doshur, bu davranışa neden olduğu zaman yaptığım gibi üst açık alım satımları benzer bir şekilde kullanıyor.

Saygılarımla
 
Yani ctrade sınıfında bir sorun mu var?

Kodumu değiştirmeden önce kimse bunu onaylayabilir mi?
 
doshur :
Yani ctrade sınıfında bir sorun mu var?

Kodumu değiştirmeden önce kimse bunu onaylayabilir mi?

Sadece ctrade sınıfını kaldırdıktan sonra artık bu sorunu yaşamadığımı söyleyebilirim.

Bir ticaret açmanın "eski moda" yolunu kullanan EA'nın ikinci bir sürümünü oluşturmak ve yardımcı olup olmadığına bakmak isteyebilirsiniz.


Öte yandan, uyku işlevi benim için de sorunu çözdü.

Documentation on MQL5: Common Functions / Sleep
Documentation on MQL5: Common Functions / Sleep
  • www.mql5.com
Common Functions / Sleep - Documentation on MQL5
 
doshur :
Yani ctrade sınıfında bir sorun mu var?

Kodumu değiştirmeden önce kimse bunu onaylayabilir mi?
Lütfen sabırlı olun, size en kısa sürede cevap vereceğim. Market açıldığında sorunu yeniden oluşturmaya çalışacağım.
 
Komisyoncu burada ayrı mı oynuyor bilmiyorum ama komisyoncumuz aynı görünüyor. Alpari.

Lütfen gerekirse komisyoncu adını kaldırın .
 
Klammeraffe :

Sadece ctrade sınıfını kaldırdıktan sonra artık bu sorunu yaşamadığımı söyleyebilirim.

Bir ticaret açmanın "eski moda" yolunu kullanan EA'nın ikinci bir sürümünü oluşturmak ve yardımcı olup olmadığına bakmak isteyebilirsiniz.


Öte yandan, uyku işlevi benim için de sorunu çözdü.

Bu ilginç bir nokta.

Stoploss değerini ayarlamak için ctrade sınıfını kullanıyorum.

      
My_Trade.PositionModify( Symbol (), 
                         NormalizeDouble (dPositionStoploss,   Digits ()), 
                         NormalizeDouble (dPositionTakeProfit, Digits ())
                        ); 


Pozisyonun açılması "eski moda" yöntemle yapılır.

mrequest.action         = TRADE_ACTION_DEAL ;                             // immediate order execution stoploss en takeprofit worden aangepast mrequest.price          = NormalizeDouble (Latest_Price.ask, Digits ());   // latest ask price mrequest.symbol         = Symbol ();                                     // currency pair mrequest.volume         = dTradePosition_Size;                           // number of lots to trade mrequest.magic          = EA_Magic_Number;                               // Order Magic Number mrequest.type           = ORDER_TYPE_BUY ;                               // Buy Order mrequest.type_filling   = ORDER_FILLING_RETURN ;                         // Order execution type mrequest.deviation      = 1000 ;                                         // Max prijs afwijking                                                                                                        OrderSend (mrequest,mresult); //--- send order

Stoploss sırasını ayarlarken ctrade sınıfının yeni bir çift sipariş göndermesi mümkün mü? Garip görünüyor.

 
Klammeraffe :

Sadece ctrade sınıfını kaldırdıktan sonra artık bu sorunu yaşamadığımı söyleyebilirim.

Bir ticaret açmanın "eski moda" yolunu kullanan EA'nın ikinci bir sürümünü oluşturmak ve yardımcı olup olmadığına bakmak isteyebilirsiniz.


Öte yandan, uyku işlevi benim için de sorunu çözdü.

Ctrade sınıfına bakarsanız. mqltraderequest yolu ile bu sınıfı kullanmanın herhangi bir farkı var mı?
 
snelle_moda :

İyi bir noktaya değindin. Belki de sadece BID fiyatındaki değişikliği kullanmalıyım.

Grafikteki bir BAR, aynı zamanda BID fiyatına mı dayanıyor?


EA'mın tetikleme sinyali için sadece 1 dakikalık BAR'ın dayandığı fiyat değişikliği ile ilgileniyorum.

Snelle_moda, sipariş göndermek için mqltraderequest kullanarak hala çift giriş alıyor musunuz?
Documentation on MQL5: Standard Constants, Enumerations and Structures / Data Structures / Trade Request Structure
Documentation on MQL5: Standard Constants, Enumerations and Structures / Data Structures / Trade Request Structure
  • www.mql5.com
Standard Constants, Enumerations and Structures / Data Structures / Trade Request Structure - Documentation on MQL5
 

PositionSelect()'in istemci tarafını mı yoksa sunucu tarafını mı kontrol ettiğini sorabilir miyim?

Sorunun, sunucunun (aracı tarafının) isteği işlediği ve istemci tarafını güncellemediği gecikmeden kaynaklandığına dair güçlü bir his var, bu yüzden PositionSelect() yeniden çalışıyor

CTrade vs MqlTradeRequest yöntemini kullandığımızda hiçbir fark olmadığını ve Sleep işlevinin, PositionSelect() tekrar çift girişe neden olarak tekrar çalışmadan önce müşteri tarafımızın "güncellenmesi" için her şeyi geciktirmeye yardımcı olması gerektiğini kuvvetle hissediyorum. Günlük sekmesinden kontrol ediyorum, > 2013.12.20 08:35:00 ticaret '800****': 313 ms'de yürütme için yerleştirilen piyasada 0,01 EURUSD döviz alışı <

400'den fazla uyumak güvenli olmalı ???

Ne düşünüyorsun?

Documentation on MQL5: Standard Constants, Enumerations and Structures / Data Structures / Trade Request Structure
Documentation on MQL5: Standard Constants, Enumerations and Structures / Data Structures / Trade Request Structure
  • www.mql5.com
Standard Constants, Enumerations and Structures / Data Structures / Trade Request Structure - Documentation on MQL5
 
doshur :
Snelle_moda, sipariş göndermek için mqltraderequest kullanarak hala çift giriş alıyor musunuz?


03-10-2013'ten beri 1 çift girişim daha oldu. Siparişimi göndermek için her iki yöntemi de kullanıyorum. Bir önceki paylaşımıma bakın.