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

 

Hata 21.


2085

Sunucu yeniden bağlandıktan sonra, oluşturulan tüm özel semboller kendi başlarına pazar genel bakışına eklenir.
Bu , pazar hafta sonları kapalı olduğunda iyi çalışır.
Sunucu bazen periyodik olarak veya bağlantı kurulduğu sırada terminali yeniden başlattıktan sonra yeniden bağlanır,
standart sembol tablosu yeniden yüklenebilir ve bir işaret yapabilir, bu anda oluşturulan tüm özel semboller market saatine kendi başlarına eklenir.

 

Teklif.

Lütfen SYMBOL_VOLUME_INITIAL tanımlayıcısını ekleyin   sembol özellikleri için ve belirtimdeki değerini görüntülemek için.
Ve değerini çağırmak için uygun kimliği ekleyin.

 CustomSymbolSetDouble (SName, SYMBOL_VOLUME_INITIAL, 0.00000000 );           Результат: Initial volume == 0.00000000
 
Roman :

Hata 20.

2085
Özel sembol özelliklerinin yanlış ayarlanması.



Çoğaltılacak kod nerede?

 
Slava :

Çoğaltılacak kod nerede?

Hata 20 içeren mesajda tanımlayıcılar belirtilir. Yazınızda görünmüyorlar mı?

 

Hata 22.

Bir kene atmak fiyatları 10 kat değiştirir.

 #define PRINT(A) Print ( #A + " = " + ( string )(A))

void OnStart ()
{
   MathSrand (( int ) TimeLocal ());  
   const string Name = "CUSTOM_" + _Symbol + ( string ) MathRand (); // Создали символ    
  
  PRINT( CustomSymbolCreate (Name)); // Создали символ по-умолчанию.
  
   // Если удалить любую из двух строк ниже, то результат будет нормальным.
  PRINT( CustomTicksDelete (Name, 0 , LONG_MAX )); // Удалили тиковую историю (ее на самом деле нет).
  PRINT( CustomSymbolDelete (Name)); // Удалили символ
  
  PRINT( CustomSymbolCreate (Name, NULL , _Symbol )); // Создали символ на основе главного.
    
  PRINT( SymbolSelect (Name, true )); // Добавили в Обзор рынка.

   MqlTick Tick[ 1 ];
  PRINT( SymbolInfoTick ( _Symbol , Tick[ 0 ])); // Взяли свежий тик для проброса.
   ArrayPrint (Tick); // Показали тик.
  
  PRINT( CustomTicksAdd (Name, Tick)); // Пробросили тик.
  
   MqlTick NewTicks[];
  PRINT( CopyTicksRange (Name, NewTicks));  
   ArrayPrint (NewTicks); // Показали, что на самом деле пробросили.
}


Sonuç

 CustomSymbolCreate (Name) = true
CustomTicksDelete (Name, 0 , LONG_MAX ) = 0
CustomSymbolDelete (Name) = true
CustomSymbolCreate (Name, NULL , _Symbol ) = true
SymbolSelect (Name, true ) = true
SymbolInfoTick ( _Symbol ,Tick[ 0 ]) = true
                 [time]   [bid]   [ask] [last] [volume]    [time_msc] [flags] [volume_real]
[ 0 ] 2019.06 . 17 02 : 08 : 35 1.12152 1.12157 0.0000          0 1560737315178        2        0.00000
CustomTicksAdd (Name,Tick) = 1
CopyTicksRange (Name,NewTicks) = 1
                 [time]    [bid]    [ask] [last] [volume]    [time_msc] [flags] [volume_real]
[ 0 ] 2019.06 . 17 02 : 08 : 35 11.21520 11.21570 0.0000          0 1560737315178        6        0.00000
 

herkese selam

mt'yi ilk kez başlattım, veri analizi ve çizim için buna ihtiyacım var

bir sembol oluşturdu , csv'den yüklenen çubuklar, anlık dizinde kalın bir veri dosyası görüyorum

sembol etkinleştirildi, piyasaya genel bakışta

grafik gösterilmiyor - "Güncelleme bekleniyor"


Bir şey mi kaçırdım?

Hem MT4 hem de MT5'te denedim - her şey aynı

demo grafikler - zıplamayı çalıştır

 
Roman :

Hata 20 içeren mesajda tanımlayıcılar belirtilir. Yazınızda görünmüyorlar mı?

Tekrar. Tekrarlanabilir kod nerede?

Kimlikler görüntülenir. Bu bağlamda soru şudur: ORDER_FILLING_XXX'in bununla ne ilgisi var? Belgeleri dikkatlice okudunuz mu?

 
Slava :

Tekrar. Tekrarlanabilir kod nerede?

Kimlikler görüntülenir. Bu bağlamda soru şudur: ORDER_FILLING_XXX'in bununla ne ilgisi var? Belgeleri dikkatlice okudunuz mu?

Doldurma modunu SYMBOL_FILLING_MODE olarak ayarladık
Ancak tanımlayıcıların kendisinde çıktı sonucunda bir kayma var.
Sonuca bakın.
FOK, Yok belirtimine ayarlanıyor
IOC, FOK spesifikasyonuna ayarlandı
RETURN, IOC spesifikasyonuna ayarlanıyor

 ORDER_FILLING_FOK      Результат: Filling == None
или
ORDER_FILLING_IOC      Результат: Filling == Fill or Kill
или
ORDER_FILLING_RETURN   Результат: Filling == Immediate or Cancel

Yine de başka bir ENUM'den başka tanımlayıcılar kullanmanız gerekiyorsa, örneğin SYMBOL_FILLING_XXX

O zaman bu ENUM'da sadece iki tanımlayıcı var
SYMBOL_FILLING_FOK
SYMBOL_FILLING_IOC

Ve stok modu için kimlik yok!
O halde, bir tanımlayıcı veya değeri olmadan değişim modu nasıl ayarlanır?
Belgelere kendiniz bir göz atın.
Ve SYMBOL_FILLING_RETURN için kimlik olmadığından emin olun

 
Roman :

O halde, bir tanımlayıcı veya değeri olmadan değişim modu nasıl ayarlanır?

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

Kütüphaneler: Sembol

fxsaber , 2018.04.06 09:21

Symb.SetProperty( SYMBOL_TRADE_EXEMODE , SYMBOL_TRADE_EXECUTION_EXCHANGE );
Symb.SetProperty( SYMBOL_TRADE_CALC_MODE , SYMBOL_CALC_MODE_EXCH_FUTURES );

Geliştiricilere ek olarak, mesajlarınız benim için hiç net değil. Bir sorunu yapıcı bir şekilde nasıl bildirebileceğinizi görün .

 
Peki, burada net olmayan şey, #20 numaralı hata mesajında tanımlayıcının ayarını belirttim ve uygunsuzluğun nedenini belirttim.
SYMBOL_TRADE_EXEMODE
SYMBOL_TRADE_CALC_MODE
Bunlar tamamen farklı modlardır ve soruna uygulanmaz.

Bu muhtemelen daha net olacaktır.

 void OnStart ()
{
   string SName = "SYMBOL" ;
   
   if ( CustomSymbolCreate (SName))
       CustomSymbolSetInteger (SName, SYMBOL_FILLING_MODE , ORDER_FILLING_RETURN );
       //CustomSymbolSetInteger(SName, SYMBOL_FILLING_MODE, ORDER_FILLING_FOK);  
       //CustomSymbolSetInteger(SName, SYMBOL_FILLING_MODE, ORDER_FILLING_IOC);
   
}

Ve yine de ENUM SYMBOL_ FILLING_XXX'ten başka bir tanımlayıcı kullanmanız gerekiyorsa
O zaman
SYMBOL_ FILLING_RETURN için tanımlayıcı yok!

Neden: