Çoklu para birimi danışmanı hakkında soru - sayfa 4

 

Tamam, VassaV, anladım!

Burada başka bir soru ortaya çıktı. Bir pozisyon açarken normal kodda şöyle diyor:

 //---------проверяем условие на покупку----------------------------
  if   ( бла-бла-бла  )
   {
  Lots = GetSizeLot () ; 
  ticket = OrderSend ( " GBPUSD " , 0 , Lots , Ask , Slippage , Bid - SL_long * Point , Ask + TP_long * Point ,
                                                         " мульти " , MagicNum , 0 , CLR_NONE ) ;
  if    ( ticket < 0 ) { Print ( " Ошибка открытия ордера BUY # " , GetLastError ()) ; return ( 0 ) ; }  
 ... ... ...

Burada bir "bilet" değeri var. Çoklu danışmanda biraz farklı bir planım var - bunun gibi:

 if ( GBP ) {     //если  "выключатель" включен
if ( ! ExpertOrder ( MagicGBP )) { //если ордеров по паре GBPUSD нет
 
//-------Проверяем условие на покупку-------------
if  (    бла-бла-бла     )
    {  
  //---- Цикл открытия ордера  -------------------------------------------                      
int Cnt = 1 ;
  while ( Cnt <= 5 ) 
  { //-----покупаем--------------
    Lots = GetSizeLot () ;
   if ( OrderSend ( " GBPUSD " , OP_BUY , Lots , ask_GBP , 3 , bid_GBP - sl_GBPUSD_long * point_GBP ,
           ask_GBP + tp_GBPUSD_long * point_GBP , " M_1 " , MagicGBP , 0 , Blue ) > 0 )  break ;    
    else 
{ Print ( " Ошибка открытия Buy # " , ErrorDescription ( GetLastError () ) ,
                                                  " попытка " , Cnt ) ;
                               
        if ( Cnt == 5 ) return ( 0 ) ;  //если за 5 попыток не закрыли - выходим
        Cnt ++;
        Sleep ( 15000 ) ; // ждём 15 секунд
      }   
    }
  }

Ama aynı zamanda "bilet" değerini de becermem gerekiyor! Bu çift için. Bütün sabah yapamam! Kim bilir lütfen. söyle bana nasıl?

 

Anlatmak isteyen ama cevap vermeye vakti olmayan herkese - teşekkürler!

Bunu çözmüş gibi görünüyor (öğle yemeğinden sonra). Böyle mi yaptı:

 //---- Цикл открытия ордера  -------------------------------------------                      
int Cnt = 1 ;
  while ( Cnt <= 5 ) 
  { //-----покупаем--------------
    Lots = GetSizeLot () ;
   ticketGBP = OrderSend ( " GBPUSD " , OP_BUY , Lots , ask_GBP , 3 , bid_GBP - sl_GBPUSD_long * point_GBP ,
           ask_GBP + tp_GBPUSD_long * point_GBP , " M_1 " , MagicGBP , 0 , Blue ) ;
         if ( ticketGBP > 0 )  break ;    
    else 
{ Print ( " Ошибка открытия Buy # " , ErrorDescription ( GetLastError () ) ,
                                                  " попытка " , Cnt ) ;
                               
        if ( Cnt == 5 ) return ( 0 ) ;  //если за 5 попыток не закрыли - выходим
        Cnt ++;
        Sleep ( 15000 ) ; // ждём 15 секунд
      }
 

Danışmanın şampiyonada 5 dakikalık ve hatta dönem bitimine sadece 3 hafta kala test edilmesi durumu herkes için neredeyse AŞAĞIDA çıktı!

Bireysel olarak, Uzman Danışmanım bir çift için 12 aylık geçmiş üzerinde test edilir - en fazla 3-4 dakika. Tüm kenelerde çalışır.

Ancak birkaç uzmanı tek bir çoklu para biriminde birleştirdiğimde, test süresi 7-10 dakikaya çıkıyor!

Ve özelliklerde, biri hariç tüm çiftleri kapatıyorum - kedi. uzaklaşırım.

Uzmanlara talep (ve sadece değil) - pl. test süresini azaltmak için ipuçlarını ve püf noktalarını paylaşın.

Uzman yapısı aşağıdaki gibidir:

 
//---- input parameters---------
 
ЗАДАЕМ ВНЕШНИЕ ПАРАМЕТРЫ ПО КАЖДОЙ ПАРЕ
 
int init ()
  {
   return ( 0 ) ;
  }
int deinit ()
  {
   return ( 0 ) ;
  }
 
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start ()
  { 
 
//*********************************************************************
 
double ЗАДАЕМ ПЕРЕМЕННЫЕ ПО ПЕРВОЙ ПАРЕ 
double ЗАДАЕМ ПЕРЕМЕННЫЕ ПО ВТОРОЙ ПАРЕ
... ... ... ...
double ЗАДАЕМ ПЕРЕМЕННЫЕ ПО ПОСЛЕДНЕЙ ПАРЕ
 
 =========================================================
 
int Orders = OrdersTotal () ;     //получаем кол-во открытых ордеров
if ( Orders < 3 )                 //если  открытых ордеров <3
  { 
if ( выключатель 1 вкл ) { ОТКРЫВАЕМ ПЕРВУЮ ПАРУ } 
if ( выключатель 2 вкл ) { ОТКРЫВАЕМ ВТОРУЮ ПАРУ } 
... ... ... 
if ( выключатель N вкл ) { ОТКРЫВАЕМ ПОСЛЕДНЮЮ ПАРУ }  
  }
//========================================================================
for ( int x = 0 ; x < OrdersTotal () ; x ++ )                                             {
    if ( OrderSelect ( x , SELECT_BY_POS , MODE_TRADES )) 
{       
if ( UseTrailing 1 ) - ТРЕЙЛИНГ ПЕРВОЙ ПАРЫ
... ... ...
if ( UseTrailing N ) - Трейлинг последней пары
}
//======================================================================
   return ( 0 ) ;
  }
 
rid :

Danışmanın şampiyonada 5 dakikalık ve hatta dönemin bitimine sadece 3 hafta kala test yapma durumu herkes için neredeyse AŞAĞIDA çıktı!

Bireysel olarak, Uzman Danışmanım bir çift için 12 aylık geçmiş üzerinde test edilir - en fazla 3-4 dakika. Tüm kenelerde çalışır.

Ancak birkaç uzmanı tek bir çoklu para biriminde birleştirdiğimde, test süresi 7-10 dakikaya çıkıyor!

Ve özelliklerde, biri hariç tüm çiftleri kapatıyorum - kedi. uzaklaşırım.

Uzmanlara talep (ve sadece değil) - pl. test süresini kısaltmanın püf noktalarını ve yollarını paylaşın.

Uzman yapısı aşağıdaki gibidir:

 
//---- input parameters---------
 
ЗАДАЕМ ВНЕШНИЕ ПАРАМЕТРЫ ПО КАЖДОЙ ПАРЕ
 
int init ()
  {
   return ( 0 ) ;
  }
int deinit ()
  {
   return ( 0 ) ;
  }
 
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start ()
  { 
 
//*********************************************************************
 
double ЗАДАЕМ ПЕРЕМЕННЫЕ ПО ПЕРВОЙ ПАРЕ 
double ЗАДАЕМ ПЕРЕМЕННЫЕ ПО ВТОРОЙ ПАРЕ
... ... ... ...
double ЗАДАЕМ ПЕРЕМЕННЫЕ ПО ПОСЛЕДНЕЙ ПАРЕ
 
 =========================================================
 
int Orders = OrdersTotal () ;     //получаем кол-во открытых ордеров
if ( Orders < 3 )                 //если  открытых ордеров <3
  { 
if ( выключатель 1 вкл ) { ОТКРЫВАЕМ ПЕРВУЮ ПАРУ } 
if ( выключатель 2 вкл ) { ОТКРЫВАЕМ ВТОРУЮ ПАРУ } 
... ... ... 
if ( выключатель N вкл ) { ОТКРЫВАЕМ ПОСЛЕДНЮЮ ПАРУ }  
  }
//========================================================================
for ( int x = 0 ; x < OrdersTotal () ; x ++ )                                             {
    if ( OrderSelect ( x , SELECT_BY_POS , MODE_TRADES )) 
{       
if ( UseTrailing 1 ) - ТРЕЙЛИНГ ПЕРВОЙ ПАРЫ
... ... ...
if ( UseTrailing N ) - Трейлинг последней пары
}
//======================================================================
   return ( 0 ) ;
  }

esas olarak göstergeler nedeniyle test etmek için yavaş

bu yapıda görünmezler, ancak büyük olasılıkla onlara sahipsiniz, aksi takdirde test ederken dakika başına maksimum yatırım yapardınız.

göstergelerin değiştirilmesi veya danışmandaki koda aktarılması gerekir.

 

loky,

Seni doğru anladım mı?

Değişkenleri belirlediğim göstergelerim var. Ve onları görüyoruz

 double ЗАДАЕМ ПЕРЕМЕННЫЕ (индикаторов) ПО ПЕРВОЙ ПАРЕ

görünüşe göre içeriye taşınması gerekiyor

 if ( выключатель 1 вкл ) { ОТКРЫВАЕМ ПЕРВУЮ ПАРУ }

sırasıyla her çift için?

 
Bunun nasıl bir örnek olduğunu görün - Prototip-IX. Çok para birimli danışman örneği

12 döviz çiftinden herhangi birinde ve birkaç zaman diliminde test yapmanızı sağlar.
15:18:05 ProtoType-IX girişleri: EMN=10000; kayma=3; RiskDelta=5; DönemWPR=8; KriterWPR=25; ATRPeriyot=40; kATR=0.5; SıfırBar=8; MinTargetInSpread=5; TP_SL_Kriter=2; MaxOpenedOrders=3; MaxOrderSize=5;
15:18:05 2006.10.17 09:38 ProtoType-IX EURUSD,M15: indexPeriod=2 PeriodTesting=15 Symbol index=3 SymbolTesting=EURUSD
15:18:05 2006.10.17 09:38 NRTR_GATOR EURUSD,M15: başarıyla yüklendi
15:18:09 2006.10.17 09:38 NRTR_GATOR EURUSD,M30: başarıyla yüklendi
15:18:09 2006.10.17 09:38 NRTR_GATOR EURUSD,H1: başarıyla yüklendi
15:18:09 2006.10.17 09:38 NRTR_GATOR EURUSD,H4: başarıyla yüklendi
15:18:09 2006.10.17 09:38 NRTR_GATOR EURUSD,Günlük: başarıyla yüklendi
15:18:09 2007.01.02 00:00 NRTR_GATOR EURUSD,M30: Dikkat! Eğilim tanımlanmadı, bu olamaz. Bar kapalı son 4
15:18:09 2007.01.02 00:00 NRTR_GATOR EURUSD,M30: Dikkat! Trend tanımlanmadı, bu olamaz
15:18:09 2007.01.02 00:00 NRTR_GATOR EURUSD,H1: Dikkat! Eğilim tanımlanmadı, bu olamaz. Bar kapalı son 1
15:18:09 2007.01.02 00:00 NRTR_GATOR EURUSD,H1: Dikkat! Trend tanımlanmadı, bu olamaz
................................................

15:18:23 2007.08.17 22:17 Test eden: kaybı durdur #242, 1.3483 (1.3483 / 1.3485)
15:18:23 2007.08.17 22:59 NRTR_GATOR EURUSD,Günlük: kaldırıldı
15:18:23 2007.08.17 22:59 NRTR_GATOR EURUSD,H4: kaldırıldı
15:18:23 2007.08.17 22:59 NRTR_GATOR EURUSD,H1: kaldırıldı
15:18:23 2007.08.17 22:59 NRTR_GATOR EURUSD,M30: kaldırıldı
15:18:23 2007.08.17 22:59 ProtoType-IX EURUSD,M15: Test tamamlandı


"Her tik" modelinde 15 dakikadaki test 18 saniye sürdü.
 

Soruya cevap verenlere teşekkürler. Konu yavaş yavaş aydınlanıyor. Hindileri içine sakla. Ve şimdi sınır eşleşiyor.

Rosh, - Bahsettiğin uzmana onlarca kez ulaşmaya çalıştım. Ama..., her geri çekildiğimde... Mütevazı bilgimle, kodu ve yapısını incelemek henüz mümkün değil. Ve gözler genişliyor ve nereden başlayacağı ve araştırmasını nasıl inşa edeceği tamamen açık değil. Birçok belirsizlik var, ancak eller her şeye aynı anda ulaşmıyor. Anlamaya başlıyorum ve yakında düşünmeyi bırakıyorum - ama nereden başladım ve neden ...

Ancak bu fırsatı değerlendirerek, "Uzman Danışman oluşturma örneği" makalesinde bir soru var ^

 
klerk :
Ç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.
Tek rahatsızlık, kullanılan zaman dilimleri ile işlem gören tüm enstrümanların tablolarının açık olması gerektiğidir.

Çizelgeler açık değilse veya kullanılanlardan farklı zaman dilimlerinde açılıyorsa, sürekli olarak

her hapşırmayı kontrol eder - iRSI bile başarısız olabilir... terminal bir çağrı yapana kadar...

Saygılarımla, S.D.
 

Çevrimiçi, tüm çiftler için danışmanı (hindilerde) tf = 1 dk (işe yarayıp yaramadığını kontrol etmek için) ayarladım.

Ve ilk çiftin grafiğini tf = 1 dakikada koydum. Ancak grafik danışmanının diğer çiftlerinde genellikle başka TF'lerim var. Yine de danışman, kodda olduğu gibi tüm çiftler için tam olarak tf-dakika ile çalışır!

Yoksa seni tam anlayamadım mı?

 
klerk :
Ç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.


Lütfen formun yapısını değiştirmenin doğru olup olmayacağını söyleyin:

 H = High [ iHighest ( " USDJPY " , PERIOD_H4 , MODE_HIGH , 50 , 1 )] ;

aşağıdaki üzerinde başka birinin sembolüyle çalışırken çok para birimli bir Uzman Danışman kodunda:

 double H_current , H_previous ;
H_current = 0 ; H_previous = 0 ;
 
for ( int n = 1 ; n < 51 ; n ++ )
  {
    H_previous = H_current ;
    H_current = iHigh ( " USDJPY " , PERIOD_H4 , n ) ;
    H = MathMax ( H_previous , H_current ) ;
  }

Değilse, lütfen bana neyin yanlış olduğunu ve nasıl doğru yapılacağını söyleyin?

Şimdiden teşekkürler.