Özel semboller. Hatalar, hatalar, sorular, öneriler. - sayfa 20

 

Terminali yeniden başlattıktan sonra özel bir sembolün para birimlerini otomatik olarak değiştirme sorununu çözme.

 // Сервис корректирует валюты всех кастомных символов.
#property service

bool CorrectCurrency( const string Symb, const string Currency )
{  
   return ( SymbolInfoInteger (Symb, SYMBOL_CUSTOM ) && 
         CustomSymbolSetString (Symb, SYMBOL_CURRENCY_BASE , Currency) &&
         CustomSymbolSetString (Symb, SYMBOL_CURRENCY_MARGIN , Currency) &&
         CustomSymbolSetString (Symb, SYMBOL_CURRENCY_PROFIT , Currency));
}

void CorrectSymbols( void )
{
   const string Currency = AccountInfoString ( ACCOUNT_CURRENCY );
  
   for ( int i = SymbolsTotal ( false ) - 1 ; i >= 0 ; i--)
    CorrectCurrency( SymbolName (i, false ), Currency);
    
   return ;
}

void OnStart ()
{
  CorrectSymbols();
}
 
Söyle bana, özel bir sembolü test ederken, onun için modellenen bir kene fiyatı mı?
 
Irek Gilmutdinov :
Söyle bana, özel bir sembolü test ederken, onun için modellenmiş bir kene fiyatı mı?

Modellenmelidir. Daha hızlı kontrol edin.

 
Evet, modellemedim, o yüzden soruyorum.
 
Bahsettiğim konu hakkında kimse bir şey söyleyebilir mi?
 
jaffer wilson :
Bahsettiğim konu hakkında kimse bir şey söyleyebilir mi?

2145 yapı üzerinde test ettiniz mi?

 

Onay fiyatı, test cihazında özel bir sembol üzerinde modellenmez.

MT5 yapı 2145.

Özel GBPCAD_'ler oluşturuyorum, tüm alanlar GBPCAD'den devralındı:

Dakikaların kullanıcı geçmişini içine yüklüyorum.

Ardından, 100.000 USD'lik bir depozito, açık fiyatlar üzerinde bir geriye dönük test.

En basit Uzman Danışman, bir onay fiyatını inceler ve bir pozisyon açar:

 void OnTick ()
  {
//---
   static bool bOnce = true ;
   datetime dtTime[ 1 ];
   if (bOnce && CopyTime ( NULL , 0 , 0 , 1 , dtTime) == 1 && dtTime[ 0 ] % 86400 == 0 )
    {
     MqlTick stcTick;
     MqlTradeRequest stcRequest;
     MqlTradeResult   stcResult;
     ZeroMemory (stcRequest);
     ZeroMemory (stcResult);
     SymbolInfoTick ( _Symbol , stcTick);
    stcRequest.symbol = _Symbol ;
    stcRequest.type = ORDER_TYPE_BUY ;
    stcRequest.action = TRADE_ACTION_DEAL ;
    stcRequest.price = stcTick.ask;
    stcRequest.volume = 1 ;
     bool bSent = OrderSend (stcRequest, stcResult);
    
    bOnce = false ;
    }
  
   PrintFormat ( "tv=%.5f, USDCAD=%.5f" , SymbolInfoDouble ( _Symbol , SYMBOL_TRADE_TICK_VALUE ), 1 / SymbolInfoDouble ( _Symbol , SYMBOL_TRADE_TICK_VALUE ));
  }

Tick fiyatı hiç değişmez ve o andaki USDCAD döviz kuruna karşılık gelmez.

GBPUSD ve USDCAD geçmişi, yalnızca bir pozisyon açıldıktan sonra yüklenir, ancak bu, tick fiyatını etkilemez.

Ekran görüntüsünde, işaret fiyatı USDCAD = 1.3300'e karşılık gelir, ancak = 1.0230 olmalıdır:


 
Irek Gilmutdinov :

Onay fiyatı, test cihazında özel bir sembol üzerinde modellenmez.

MT5 yapı 2145.

Özel GBPCAD_'ler oluşturuyorum, tüm alanlar GBPCAD'den devralındı:

Dakikaların kullanıcı geçmişini içine yüklüyorum.

Ardından, 100.000 USD'lik bir depozito için bir geriye dönük test, açık fiyatlar.

En basit Uzman Danışman, bir onay fiyatını inceler ve bir pozisyon açar:

Tick fiyatı hiç değişmez ve o andaki USDCAD döviz kuruna karşılık gelmez.

GBPUSD ve USDCAD geçmişi, yalnızca bir pozisyon açıldıktan sonra yüklenir, ancak bu, tick fiyatını etkilemez.

Ekran görüntüsünde, işaret fiyatı USDCAD = 1.3300'e karşılık gelir, ancak = 1.0230 olmalıdır:


Büyük olasılıkla, mesele, keneler değil , dakikaların geçmişini yüklemekte .
tiki'yi indirin!

 
Kene yoktur, test açılış fiyatından yapılır.
 
fxsaber :

Terminali yeniden başlattıktan sonra özel bir sembolün para birimlerini otomatik olarak değiştirme sorununu çözme.

Terminalin sunucuya bağlanmasını kontrol etmek ve beklemek gerekli değil mi? Mevduat para biriminin bağlantı olmadan bilinmediği durumlar olduğunu hatırlıyorum.

Kendi kendine olduğu yerde neden sonunda bir dönüş yaparsınız? Anlamsız ve kötü değil.