FORTS Lütfen yardım edin - sayfa 30

 
demonsn :
Teşekkür ederim. Seçeneğiniz paralel kontrol olarak eklendi. Şimdi doğru anı yakalamak için.

İşe yarayacağından %100 eminim!

Çünkü yapıyı doğru doldurmadınız (yalnızca alanları değil, değerleri de).

Derleyicinin "yemin etmemesi" garip.

Sen:

 MqlTradeRequest .action = TRADE_ACTION_DEAL ;

ama ihtiyacın var:

MtRequest.action = TRADE_ACTION_DEAL ;
 

Numara! Mesajımdaki kod danışmandan değil, örneğin, danışmandan gelen hata ayıklama bilgilerinin yazıldığı günlüklerden düzeltilmiş bir parça. Suçlu, çıldırmış)

EA'nın kendisinde, yapı gerektiği gibi doldurulur, ancak kontrolün sonucu farklıdır. Ya marjı doğru hesaplıyor ya da örnekte olduğu gibi bazı saçmalıklar veriyor.

İşte yaşayan bir yerden bir parça

   MqlTradeRequest MtRequest = { 0 }; 

   switch (OrderType)
   {
       case ORDER_TYPE_BUY :         
         MtRequest.price     = CurrentTick.ask;         
         break ;

       case ORDER_TYPE_SELL :         
         MtRequest.price     = CurrentTick.bid;
         break ;

       default :
         LogFile.Log(LOG_PRINT, __FUNCTION__ , " error: Invalid OrderType" );
         return ( false );
   }

   MtRequest.tp        = 0.0 ;
   MtRequest.sl        = 0.0 ;
   MtRequest.action    = TRADE_ACTION_DEAL ;
   MtRequest.magic     = 0 ;
   MtRequest.symbol    = strSymbol;
   MtRequest.volume    = dblLots;
   MtRequest.deviation = Config.Deviation;
   MtRequest.type      = OrderType;
   MtRequest.type_filling = Config.OrdersFillingType;
 

Bunu yap:

   MqlTradeRequest MtRequest = { 0 }; 
   MqlTradeRequest MtResult = { 0 }; 

   switch (OrderType)
   {
       case ORDER_TYPE_BUY :         
         MtRequest.price     = CurrentTick.ask;         
         break ;

       case ORDER_TYPE_SELL :         
         MtRequest.price     = CurrentTick.bid;
         break ;

       default :
         LogFile.Log(LOG_PRINT, __FUNCTION__ , " error: Invalid OrderType" );
         return ( false );
   }

   MtRequest.action    = TRADE_ACTION_DEAL ;
   MtRequest.magic     = 77777777777777 ;
   MtRequest.symbol    = strSymbol;
   MtRequest.volume    = dblLots;
   MtRequest.type      = OrderType;
   MtRequest.type_filling = Config.OrdersFillingType;
   MtRequest.type_time = ORDER_TIME_DAY ;
 

İşte yine günlükte bir anım var:

 MqlTradeRequest structure:
   action: Action Deal
   magic: 0
   order: 0
   symbol: Si- 12.15
   volume: 2.00
   price: 63365
   stoplimit: 0
   sl: 0
   tp: 0
   deviation: 50
   type: ORDER_TYPE_SELL
   type_filling: ORDER_FILLING_FOK
   type_time: gtc
   expiration: 1970.01 . 01 00 : 00
   comment: (null)

 MqlTradeCheckResult structure:
   retcode: 10019 (There is not enough money to complete the request)
   balance: 133921.71
   equity: 132772.57
   profit: 0.00
   margin: 172148.68
   margin_free: - 39376.11
   margin_level: 77.13
   comment: No money

Aynı zamanda aynı yapıyı OrderSend() 'e de geçiyorum ve her şey mükemmel açılıyor!

Bu arada, 1194'ü inşa et.

Si-12.15, 2 lot satıyorum. 1 sözleşme 5090 ruble için GO. İşleme göre GO 5090 * 2 = 10180 ruble olmalıdır. Ve işlev, 172148.68 / 5090 = 33.82 sözleşmeye karşılık gelen 172148.68 ruble döndürür!

Ne mucizeler...

 
demonsn :

İşte yine günlükte bir anım var:

Aynı zamanda aynı yapıyı OrderSend()'e de geçiyorum ve her şey mükemmel açılıyor!

Bu arada, 1194'ü inşa et.

Si-12.15, 2 lot satıyorum. 1 sözleşme 5090 ruble için GO. İşleme göre GO 5090 * 2 = 10180 ruble olmalıdır. Ve işlev, 172148.68 / 5090 = 33.82 sözleşmeye karşılık gelen 172148.68 ruble döndürür!

Ne mucizeler...

1. Size yapıyı nasıl doğru bir şekilde dolduracağınıza dair bir örnek verdim ve bu ipuçlarını görmezden geliyorsunuz.

O zaman neden soruyorsun?

2. Yapı 1194 mevcut sunucularla uyumlu değil (Renat bundan bahsetti. Şimdilik yapı 1159'u kullanın).

3. OrderCheck() işlevini hiç kullanmıyorum, ancak araçları kendim kontrol ediyorum.

 //+------------------------------------------------------------------+
//| Expert Check money function                                      |
//+------------------------------------------------------------------+ 
bool CheckMoney( const string a_symbol, const long volume )
{
   if ( volume <= 0 )
  {
     Print ( "Check Money: Объём лота указан не правильно!" );
    retutn ( false );
  } 
//---
   double a_go = SymbolInfoDouble ( a_symbol, SYMBOL_MARGIN_INITIAL ) * double( volume);
   double free_margin = ( AccountInfoDouble ( ACCOUNT_FREEMARGIN ) / 100 ) * 90 ; //90% от свободных средств
//---  
   if ( a_go <= free_margin )
  {
     return ( true );
  }
   Print ( "Check Money: Не достаточно средств!" );
   return ( false );
}
 
Михаил :

1. Size yapıyı nasıl doğru dolduracağınıza dair bir örnek verdim ve bu ipuçlarını görmezden geliyorsunuz.

O zaman neden soruyorsun?

2. Yapı 1194 mevcut sunucularla uyumlu değil (Renat bundan bahsetti. Şimdilik yapı 1159'u kullanın).

3. OrderCheck() işlevini hiç kullanmıyorum, ancak araçları kendim kontrol ediyorum.


1. Peki, neden görmezden geliyorum. Ben hiç görmezden gelmiyorum. Örneğinizi koda ekledim, şimdi izliyorum.

2. Lanet olsun! Bilmiyordum.

3. Aynısını yaptı. Ve işlev neredeyse bire bir, %90 hariç (bu arada iyi fikir)

Bu sorunu gündeme getirdim çünkü işlevim (sizinkine benzer) GO'yu kontrol ediyor ve bir pozisyon açılmasına izin veriyor ve standart OrderCheck() bazen başarısız oluyor.


Muhtemelen 2. maddeye atıfta bulunur.

Terminalde, günlük aşağıdaki gibi mesajlarla doludur:

 2015.10 . 22 21 : 28 : 13.966 Ticks   old tick @RTS (tick: 2015.10 . 22 18 : 28 : 21 , last: 2015.10 . 22 18 : 28 : 22 ) 0 / 0
2015.10 . 22 21 : 28 : 13.966 Ticks   old tick RTS- 12.15 (tick: 2015.10 . 22 18 : 28 : 21 , last: 2015.10 . 22 18 : 28 : 22 ) 0 / 0
2015.10 . 22 21 : 28 : 13.966 Ticks   old tick @RTS (tick: 2015.10 . 22 18 : 28 : 21 , last: 2015.10 . 22 18 : 28 : 22 ) 0 / 0
2015.10 . 22 21 : 28 : 13.966 Ticks   old tick RTS- 12.15 (tick: 2015.10 . 22 18 : 28 : 21 , last: 2015.10 . 22 18 : 28 : 22 ) 0 / 0
2015.10 . 22 21 : 28 : 13.966 Ticks   old tick @RTS (tick: 2015.10 . 22 18 : 28 : 21 , last: 2015.10 . 22 18 : 28 : 22 ) 0 / 0
2015.10 . 22 21 : 28 : 13.966 Ticks   old tick RTS- 12.15 (tick: 2015.10 . 22 18 : 28 : 21 , last: 2015.10 . 22 18 : 28 : 22 ) 0 / 0
2015.10 . 22 21 : 27 : 40.995 Ticks   old tick @LKOH (tick: 2015.10 . 22 18 : 27 : 48 , last: 2015.10 . 22 18 : 27 : 49 ) 0 / 0
2015.10 . 22 21 : 27 : 40.995 Ticks   old tick LKOH- 12.15 (tick: 2015.10 . 22 18 : 27 : 48 , last: 2015.10 . 22 18 : 27 : 49 ) 0 / 0
2015.10 . 22 21 : 26 : 38.952 Ticks   old tick @Si (tick: 2015.10 . 22 18 : 26 : 46 , last: 2015.10 . 22 18 : 26 : 47 ) 0 / 0
2015.10 . 22 21 : 26 : 38.952 Ticks   old tick Si- 12.15 (tick: 2015.10 . 22 18 : 26 : 46 , last: 2015.10 . 22 18 : 26 : 47 ) 0 / 0
2015.10 . 22 21 : 26 : 38.952 Ticks   old tick @Si (tick: 2015.10 . 22 18 : 26 : 46 , last: 2015.10 . 22 18 : 26 : 47 ) 0 / 0
2015.10 . 22 21 : 26 : 38.952 Ticks   old tick Si- 12.15 (tick: 2015.10 . 22 18 : 26 : 46 , last: 2015.10 . 22 18 : 26 : 47 ) 0 / 0
2015.10 . 22 21 : 26 : 38.952 Ticks   old tick @Si (tick: 2015.10 . 22 18 : 26 : 46 , last: 2015.10 . 22 18 : 26 : 47 ) 0 / 0
2015.10 . 22 21 : 26 : 38.952 Ticks   old tick Si- 12.15 (tick: 2015.10 . 22 18 : 26 : 46 , last: 2015.10 . 22 18 : 26 : 47 ) 0 / 0
2015.10 . 22 21 : 26 : 38.952 Ticks   old tick @Si (tick: 2015.10 . 22 18 : 26 : 46 , last: 2015.10 . 22 18 : 26 : 47 ) 0 / 0
2015.10 . 22 21 : 26 : 38.952 Ticks   old tick Si- 12.15 (tick: 2015.10 . 22 18 : 26 : 46 , last: 2015.10 . 22 18 : 26 : 47 ) 0 / 0
2015.10 . 22 21 : 26 : 38.952 Ticks   old tick @Si (tick: 2015.10 . 22 18 : 26 : 46 , last: 2015.10 . 22 18 : 26 : 47 ) 0 / 0
 
demonsn :


1. Peki, neden görmezden geliyorum. Ben hiç görmezden gelmiyorum. Örneğinizi koda ekledim, şimdi izliyorum.

2. Lanet olsun! Bilmiyordum.

3. Aynısını yaptı. Ve işlev neredeyse bire bir, %90 hariç (bu arada iyi fikir)

Bu soruyu gündeme getirdim çünkü işlevim (sizinkine benzer) GO'yu kontrol ediyor ve bir pozisyon açılmasına izin veriyor ve standart OrderCheck() bazen başarısız oluyor.

Peki, sahip olduğunuz her şeyi FORTS'ta kullanın - bu çok daha doğru :)
 
Михаил :
Peki, sahip olduğunuz her şeyi FORTS'ta kullanın - bu çok daha doğru :)

Yani sonunda yapmak zorundasın! Bir "bisiklet" yazarken zamandan tasarruf etmek veya bir fikri test etmek için başka birinin kodunu veya kitaplığını bir yerde kullanmaya cazip olacaksınız.

Ve diğer insanların hatalarını ve eksikliklerini yakalamanın bir hafta sürdüğü ortaya çıktı. Sonuç olarak, her şey kendisi için yeniden yazılır, böylece başka birinin kodundan iz kalmaz.

 

Merhaba!

Test penceresinde, kendi içinde çok sevindirici olan yapıştırma vadeli işlemleri belirdi, ancak, yapıştırmayı sözleşmeyle karşılaştırmaya çalışırken, yapıştırmada hiçbir işlem olmadığını öğrendim - sözleşmelerde her şey yolunda - oldukça var bir sürü işlem. Si, RTS, GAZR, SBRF ve 01/01/2015 - 10/24/2015 döneminde dört cihazda kontrol ettim.

 
Andrey Kotrin :

Merhaba!

Test penceresinde, kendi içinde çok sevindirici olan yapıştırma vadeli işlemleri belirdi, ancak, yapıştırmayı sözleşmeyle karşılaştırmaya çalışırken, yapıştırmada hiçbir işlem olmadığını öğrendim - sözleşmelerde her şey yolunda - oldukça var bir sürü işlem. Si, RTS, GAZR, SBRF ve 01/01/2015 - 10/24/2015 döneminde dört cihazda kontrol ettim.

Futures test cihazı düzgün çalışmıyor.