Çoklu para birimi danışmanı hakkında soru

 

İyi akşamlar!

İki çifti tek bir danışmanda birleştirmeye karar verdim. Bunu yaptı.

Ama birdenbire şüpheye düştü. Ve şunu yaptı:

 extern bool    GBP = true ;
extern bool    EUR = true ;
- - - - - - - - - - - - - - - - - - - -
int start ()
  {
double A = iRSI ( " GBPUSD " , 0 , ..... ) ;
double B = iRSI ( " GBPUSD " , 0 , ..... ) ;
 
double C = iRSI ( " EURUSD " , 0 , ..... ) ;
double D = iRSI ( " EURUSD " , 0 , ..... ) ;
//------------------------------------------------------
if ( GBP ) { //если есть разрешение true
if ( A < B )
{
double   BID = MarketInfo ( " GBPUSD " , MODE_BID ) ;
 double   ASK = MarketInfo ( " GBPUSD " , MODE_ASK ) ;
 double POINT = MarketInfo ( " GBPUSD " , MODE_POINT ) ;
( ticket = OrderSend .... //ПОКУПАЕМ/ПРОДАЕМ...)     }}}
//----------------------------------------------------------  
if ( EUR ) { //если есть разрешение true
if ( C > D )
{
double   BID = MarketInfo ( " EURUSD " , MODE____BID ) ;
 double   ASK = MarketInfo ( " EURUSD " , MODE____ASK ) ;
 double POINT = MarketInfo ( " EURUSD " , MODE____POINT ) ;
( ticket = OrderSend .... //ПОКУПАЕМ/ПРОДАЕМ...)      }}}
//------------------------------------------------------------
return ( 0 ) ;  
  }

Her şey çevrimiçi ve test cihazında çalışıyor! Belki doğru yapılmadı? ve bunu şöyle yapmalısın:

 extern bool    GBP = true ;
extern bool    EUR = true ;
- - - - - - - - - - - - - - - - - - - -
int start ()
  {
//------------------------------------------------------
if ( GBP ) //если есть разрешение true{
 
double C = iRSI ( " GBPUSD " , 0 , ..... ) ;
double D = iRSI ( " GBPUSD " , 0 , ..... ) ; 
 if ( A < B )
{
double   BID = MarketInfo ( " GBPUSD " , MODE_BID ) ;
 double   ASK = MarketInfo ( " GBPUSD " , MODE_ASK ) ;
 double POINT = MarketInfo ( " GBPUSD " , MODE_POINT ) ;
( ticket = OrderSend .... //ПОКУПАЕМ/ПРОДАЕМ...)     }}}
//----------------------------------------------------------  
if ( EUR ) { //если есть разрешение true
 
double C = iRSI ( " EURUSD " , 0 , ..... ) ;
double D = iRSI ( " EURUSD " , 0 , ..... ) ;
 if ( C > D )
{
double   BID = MarketInfo ( " EURUSD " , MODE____BID ) ;
 double   ASK = MarketInfo ( " EURUSD " , MODE____ASK ) ;
 double POINT = MarketInfo ( " EURUSD " , MODE____POINT ) ;
( ticket = OrderSend .... //ПОКУПАЕМ/ПРОДАЕМ...)      }}}
//------------------------------------------------------------
return ( 0 ) ;  
  }
İkinci seçenek de test cihazında çalışıyor gibi görünüyor.

Ama bunu yapmanın en iyi yolu ne olurdu?

 
rid :

İyi akşamlar!


İki çifti tek bir danışmanda birleştirmeye karar verdim. Bunu yaptı.


Ama birdenbire şüpheye düştü. Ve şunu yaptı:

 extern bool    GBP = true ;
extern bool    EUR = true ;
- - - - - - - - - - - - - - - - - - - -
int start ()
  {
double A = iRSI ( " GBPUSD " , 0 , ..... ) ;
double B = iRSI ( " GBPUSD " , 0 , ..... ) ;
 
double C = iRSI ( " EURUSD " , 0 , ..... ) ;
double D = iRSI ( " EURUSD " , 0 , ..... ) ;
//------------------------------------------------------
if ( GBP ) { //если есть разрешение true
if ( A < B )
{
double   BID = MarketInfo ( " GBPUSD " , MODE_BID ) ;
 double   ASK = MarketInfo ( " GBPUSD " , MODE_ASK ) ;
 double POINT = MarketInfo ( " GBPUSD " , MODE_POINT ) ;
( ticket = OrderSend .... //ПОКУПАЕМ/ПРОДАЕМ...)     }}}
//----------------------------------------------------------  
if ( EUR ) { //если есть разрешение true
if ( C > D )
{
double   BID = MarketInfo ( " EURUSD " , MODE____BID ) ;
 double   ASK = MarketInfo ( " EURUSD " , MODE____ASK ) ;
 double POINT = MarketInfo ( " EURUSD " , MODE____POINT ) ;
( ticket = OrderSend .... //ПОКУПАЕМ/ПРОДАЕМ...)      }}}
//------------------------------------------------------------
return ( 0 ) ;  
  }

Her şey çevrimiçi ve test cihazında çalışıyor! Belki doğru yapılmadı? ve bunu şöyle yapmalısın:

 extern bool    GBP = true ;
extern bool    EUR = true ;
- - - - - - - - - - - - - - - - - - - -
int start ()
  {
//------------------------------------------------------
if ( GBP ) //если есть разрешение true{
 
double C = iRSI ( " GBPUSD " , 0 , ..... ) ;
double D = iRSI ( " GBPUSD " , 0 , ..... ) ; 
 if ( A < B )
{
double   BID = MarketInfo ( " GBPUSD " , MODE_BID ) ;
 double   ASK = MarketInfo ( " GBPUSD " , MODE_ASK ) ;
 double POINT = MarketInfo ( " GBPUSD " , MODE_POINT ) ;
( ticket = OrderSend .... //ПОКУПАЕМ/ПРОДАЕМ...)     }}}
//----------------------------------------------------------  
if ( EUR ) { //если есть разрешение true
 
double C = iRSI ( " EURUSD " , 0 , ..... ) ;
double D = iRSI ( " EURUSD " , 0 , ..... ) ;
 if ( C > D )
{
double   BID = MarketInfo ( " EURUSD " , MODE____BID ) ;
 double   ASK = MarketInfo ( " EURUSD " , MODE____ASK ) ;
 double POINT = MarketInfo ( " EURUSD " , MODE____POINT ) ;
( ticket = OrderSend .... //ПОКУПАЕМ/ПРОДАЕМ...)      }}}
//------------------------------------------------------------
return ( 0 ) ;  
  }
İkinci seçenek de test cihazında çalışıyor gibi görünüyor.

Ama bunu yapmanın en iyi yolu ne olurdu?




Genelde tüm gösterge değerlerini başlangıçta hesaplarım yani 1. seçenek daha kolay kafanız karışmaz ve kod daha yapılandırılmıştır.
 

Teşekkür ederim! Cevap için. Ve başka bir soru. İzleyen duraklar hiç çalışmak istemiyor. Test cihazında ayrı çalışırlar!

Ve çevrimiçi, bir çift çalışıyor. Ancak bir diğerine göre, danışman açıldığında hemen bir hata yazdırır.

Ancak anlaşmalar devam ediyor - sadece ikinci çifti takip etmeden.

SL değiştirilirken hata 130

 int start ()
  {
РАСЧЁТ  ИНДИКАТОРОВ 
{
ПОКУПКА/ПРОДАЖА
  }
 
for ( int j = 0 ; j < OrdersTotal () ; j ++ )                                    {
    if ( OrderSelect ( j , SELECT_BY_POS , MODE_TRADES ))                     {
     if ( OrderSymbol () == " GBPUSD " && OrderMagicNumber () == Magic1 )          {
ИДЕТ КОД 1 ТРЕЙЛИНГА.
   }
 
for ( int r = 0 ; r < OrdersTotal () ; r ++ )                                    {
    if ( OrderSelect ( r , SELECT_BY_POS , MODE_TRADES ))                     {
     if ( OrderSymbol () == " EURUSD " && OrderMagicNumber () == Magic2 )          {
ИДЕТ КОД 2 ТРЕЙЛИНГА
}
 
return ( 0 ) ;  
  }
Sondaki kodlar aynıdır, ancak harici ve dahili. değişkenler farklı sembollerle verilir.

Neyin yanlış olduğunu anlayamıyorum. Kim söyleyebilir?

 
böyle dene
 int start ()
{
//РАСЧЁТ  ИНДИКАТОРОВ 
 
//ПОКУПКА/ПРОДАЖА
  
 
for ( int j = 0 ; j < OrdersTotal () ; j ++ )
  {
    if ( OrderSelect ( j , SELECT_BY_POS , MODE_TRADES ))
       {
          if ( OrderSymbol () == " GBPUSD " && OrderMagicNumber () == Magic1 )         
              {
                  ИДЕТ КОД 1 ТРЕЙЛИНГА.
              }
          if ( OrderSymbol () == " EURUSD " && OrderMagicNumber () == Magic2 )   
              {
                  ИДЕТ КОД 2 ТРЕЙЛИНГА
              }
        }
   }
 
 
  return ( 0 ) ;  
}
 
kodu yapılandırın, hem insanlar hem de sizin anlamanız daha kolay olacaktır.
 

Deneyeceğim, teşekkürler.

 

İşe yaradı gibi görünüyor!

Henüz bir hata yazdırmıyor. Trolü kontrol etmek için kar bekliyorum.

Daha fazla soru var. Zor değilse.

Herhangi bir yerde çoklu para birimi deneylerinin pratikte en basit örnekleri yoktur. Ve olduğu yerde - zayıf zihin yoktur. Hepsi yığıldı - anlamamak.

kodumda var:

 double   BID = MarketInfo ( " GBPUSD " , MODE_BID ) ;
 double   ASK = MarketInfo ( " GBPUSD " , MODE_ASK ) ;
 double POINT = MarketInfo ( " GBPUSD " , MODE_POINT ) ;
//-------Проверяем условие на покупку-------------
if  (

Ancak, bu sitedeki nadir örneklerde, benzer bir blokla bir satır var:

 RefreshRates () ;
 double BID = MarketInfo ( " GBPUSD " , MODE_BID ) ;
 double ASK = MarketInfo ( " GBPUSD " , MODE_ASK ) ;
 double POINT = MarketInfo ( " GBPUSD " , MODE_POINT ) ;

Ben de bu satırı yapıştırdım. Derlenmiş. Ama işimde bir değişiklik görmüyorum.

Burada ne kadar gerekli? Belki de Uzman Danışmanımda bırakılmalıdır? Tüm kenelerde çalışır. Ve bir dizi değer kullanır -

 //------заполняем массив значениями RSI GBPUSD -----------
 double RSI_array [ 30 ] ;
int    i = 0 ;
while ( i < 31 )
 {
RSI_array [ i ] = iRSI ( " GBPUSD " , 0 , GBPUSD_period , 3 , 3 , MODE_SMA , 0 , MODE_MAIN , i ) ;
i ++;

 
Çoklu para birimi Uzman Danışman ilkesi yaklaşık olarak şu şekildedir:
1. göstergeleri hesaplarken, belirli para birimlerini ve zaman aralıklarını belirtin, örneğin: iRSI ("GBPUSD", 60 ,GBPUSD_period,3,3,MODE_SMA,0,MODE_MAIN,i); // bu arada hata burada
2. MarketInfo'yu kullanarak fiyatları, puanları vb. alın.
3. örneğin Low[0] yerine iLow(...) kullanın
ve en azından tüm döviz çiftleri için yazın.
İyi şanlar.
 

Hatayı aldım! "0" yerine - danışmanın üzerinde çalıştığı para birimleri - tf göstergelerinin değişkenlerini yazın.

Uzmanım gibi hatasız çalışır. Ve troller işe yarıyor.

Ve umarım, son bir soru. Bir tane daha eklendi. Üçüncü çift. Ama yerleşik değil, özel bir gösterge aradım. Bu çift test cihazında çalışır. Ama çevrimiçi - istemiyor! Anlaşılmaz bir şey yazdırıyor: Bu hindi neredeyse her saniye takılıp çıkarılıyor. ..... - ne tavsiye edebilirsiniz?

//******************************************************* ******************

katip! Hafta boyunca hazır bulunan tüm uzmanlar arasında sadece siz soruma cevap verdiniz. Ve çoğunlukla tatmin olduğum cevaplar aldım. ( RefreshRates ( ) ile ilgili soru hariç )

Lütfen e-posta adresinizi buraya girin. posta.

Minnettarlığın bir göstergesi olarak, size basit bir ticaret "Kase" - Expert Advisor!, cat göndereceğim. iyi arkadaşım tarafından düşünüldü (kabul edildi). Onunla manuel onay ile çalışıyorum. Sadece iki yerleşik hindi kullanılır.

İroni olmadan, bunun gerçekten neredeyse "Kase" olduğu (onunla çalışma konusunda biraz beceri ile), - birkaçını ikna edeceksiniz. aldıktan sonra dakika! Her neyse, hep birlikte bir göz atalım:

Sembol ---------

Periyot 30 Dakika (M30) 2007.01.02 11:00 - 2007.08.15 00:00

Model Tüm keneler (her kenenin fraktal enterpolasyonu ile mevcut en küçük tüm periyotlara dayalı olarak)

Simülasyon kalitesi %67,35

İlk para yatırma 10000.00

Net kar 409,24

Toplam kâr 6335.06 Toplam zarar -235.82

Karlılık 2,72 Beklenen kazanç 21,44

Maksimum düşüş 245,63 (%2,18) Göreceli düşüş %2,18 (245,63)

Toplam anlaşma 187

Kısa pozisyonlar (% kazandı) 71 (%80.28)

Uzun pozisyonlar (% kazandı) 116 (%68.10)

Karlı işlemler (tümünün yüzdesi) 136 (%72,73)

İşlemleri kaybetme (tümünün yüzdesi) 51 (%27,27)

En karlı ticaret 145.02, kaybeden ticaret -47'dir. 77

Ortalama kazanan ticaret 46.58, ticaret kaybeden -45.60

Maksimum ardışık kazanç (kar) 9 (586.96)

sürekli kayıplar (kayıp) 4 (-189.99

Ve işte temsilci dışındaki testin grafiği. Kasım/Aralık örnekleri öncesi 2006:

 
rid :

Ben, bir şükran ifadesi olarak, size basit bir ticaret " Kâse " - danışman göndereceğim!, ...

Tebrikler, kâtip, topun başına geçtiniz!
 
<<Anlaşılmaz bir şey yazdırıyor: Bu hindi neredeyse her saniye yerleştirilip kaldırılıyor ...... - bir şey tavsiye edebilir misiniz?>>

Büyük olasılıkla, özel göstergenin çağrıldığı gerçek parametreler, listede harici anahtarla listelenen resmi parametrelere karşılık gelmez (sayı, sıra, tür, ...). Oldukça yaygın bir hata.