Ayarlarda sembol seçin - sayfa 2

 
Alexey Viktorov :

Farklı bir şeyden bahsediyoruz.

Evet. Programın gövdesinde bu kolaydır.

Ve test parametreleri sekmesinde optimizasyon için parametre seçiminden bahsediyorum...

 input  ... это показывает)

Burada "piyasa saatinden" bir sembol listesine sahip olmak çok uygun olacaktır.

Hiçbir şeyi dönüştürmeye gerek yoktur. Sadece halka açık bir listeye koyun, hazır bir dahili liste...

 

daha fazla eklendi, çiftler

 enum Enum_Symbol {EURUSD,GBPUSD,USDCHF,USDJPY,USDCAD,AUDUSD,AUDNZD,AUDCAD,AUDCHF,AUDJPY,
                  CHFJPY,EURGBP,EURAUD,EURCHF,EURJPY,EURNZD,EURCAD,GBPCHF,GBPJPY,CADCHF
                 };
//--- Входящие параметры
input   Enum_Symbol     SIMBOL_1                 = EURUSD;         // Пара
input   Enum_Symbol     SIMBOL_2                 = EURUSD;         // Пара
input   Enum_Symbol     SIMBOL_3                 = EURUSD;         // Пара
 
Aleksandr Klapatyuk :

daha fazla eklendi, çiftler

Evet, birisi işe yarayacak)

Şimdi, "Piyasa İzleme" penceresini bu listeyle senkronize etmeye devam ediyor ... yanılmıyorsam böyle bir fırsat bir yerde parladı.

Ama hazır bir listeye sahip olmak daha kolay olurdu!

 
Alexey Viktorov :

Farklı bir şeyden bahsediyoruz.

kodunuzu girin - tüm açık çiftleri saymak ve doğru lotu çıkarmak için. sadece burada aptal görünüyorum - muhtemelen bu kod buraya uymuyor mu?

ama, sergi değişiklikleri

 //+------------------------------------------------------------------+
//| Calculate optimal lot size                                       |
//+------------------------------------------------------------------+
double TradeSizeOptimized( void )
  {
   double price= 0.0 ;
   double margin= 0.0 ;
   string arr[];
   int resize = 0 , syTotal = SymbolsTotal ( true );
   for ( int i = 0 ; i < syTotal; i++)
     {
       string name = SymbolName (i, true );
       if ( SymbolInfoInteger (name, SYMBOL_VISIBLE ))
        {
         resize = ArrayResize (arr, i+ 1 );
         arr[i] = name;
        }
       //--- select lot size

       if (! SymbolInfoDouble (arr[i], SYMBOL_ASK ,price))
         return ( 0.0 );
       if (! OrderCalcMargin ( ORDER_TYPE_BUY ,arr[i], 1.0 ,price,margin))
         return ( 0.0 );
       if (margin<= 0.0 )
         return ( 0.0 );
     }
   double lot= NormalizeDouble ( AccountInfoDouble ( ACCOUNT_MARGIN_FREE )*MaximumRisk/margin, 2 );
//--- calculate number of losses orders without a break
   if (DecreaseFactor> 0 )
     {
       //--- select history for access
       HistorySelect ( 0 , TimeCurrent ());
       //---
       int     orders= HistoryDealsTotal ();   // total history deals
       int     losses= 0 ;                     // number of losses orders without a break

       for ( int y=orders- 1 ; y>= 0 ; y--)
        {
         ulong ticket= HistoryDealGetTicket (y);
         if (ticket== 0 )
           {
             Print ( "HistoryDealGetTicket failed, no trade history" );
             break ;
           }
         for ( int i = 0 ; i < syTotal; i++)
           {
             string name = SymbolName (i, true );
             if ( SymbolInfoInteger (name, SYMBOL_VISIBLE ))
              {
               resize = ArrayResize (arr, i+ 1 );
               arr[i] = name;
              }
             //--- check symbol
             if ( HistoryDealGetString (ticket, DEAL_SYMBOL )!=arr[i])
               continue ;
             //--- check Expert Magic number
             if ( HistoryDealGetInteger (ticket, DEAL_MAGIC )!=MA_MAGIC)
               continue ;
             //--- check profit
             double profit= HistoryDealGetDouble (ticket, DEAL_PROFIT );
             if (profit> 0.0 )
               break ;
             if (profit< 0.0 )
               losses++;
           }
        }
       //---
       if (losses> 1 )
         lot= NormalizeDouble (lot-lot*losses/DecreaseFactor, 1 );
     }
   for ( int i = 0 ; i < syTotal; i++)
     {
       string name = SymbolName (i, true );
       if ( SymbolInfoInteger (name, SYMBOL_VISIBLE ))
        {
         resize = ArrayResize (arr, i+ 1 );
         arr[i] = name;
        }
       //--- normalize and check limits
       double stepvol= SymbolInfoDouble (arr[i], SYMBOL_VOLUME_STEP );
      lot=stepvol* NormalizeDouble (lot/stepvol, 0 );
       double minvol= SymbolInfoDouble (arr[i], SYMBOL_VOLUME_MIN );
       if (lot<minvol)
         lot=minvol;
       double maxvol= SymbolInfoDouble (arr[i], SYMBOL_VOLUME_MAX );
       if (lot>maxvol)
         lot=maxvol;
     }
//--- return trading volume
   return (lot);
  }
//+------------------------------------------------------------------+

Bilmiyorum - kodunuz bunu yaptıysa

anlık görüntü222

 
Михаил :

Evet, birisi işe yarayacak)

Şimdi, "Piyasa İzleme" penceresini bu listeyle senkronize etmeye devam ediyor ... yanılmıyorsam böyle bir fırsat bir yerde parladı.

Ama hazır bir listeye sahip olmak daha kolay olurdu!

bu bir testçi için iyidir. bir EA oluşturun ve birden çok çiftle test edin

 
Aleksandr Klapatyuk :

kodunuzu girin - tüm açık çiftleri saymak ve doğru lotu çıkarmak için. sadece burada aptal görünüyorum - muhtemelen bu kod buraya uymuyor mu?

ama, sergi değişiklikleri

Bilmiyorum - kodunuz bunu yaptıysa



Ama anlaşmaları kapatarak kârı sabitlerseniz? )) Yeşil olan mavi olandan ne zaman uzaklaştı? n. değer için? sonu daha eğlenceli olabilir mi?

 
Alexey Viktorov :

Farklı bir şeyden bahsediyoruz.

nasıl doğru kullanılır?

kullanmak için - böyle.

 enum Enum_Symbol {EURUSD,GBPUSD,USDCHF,USDJPY,USDCAD,AUDUSD,AUDNZD,AUDCAD,AUDCHF,AUDJPY,
                  CHFJPY,EURGBP,EURAUD,EURCHF,EURJPY,EURNZD,EURCAD,GBPCHF,GBPJPY,CADCHF
                 };
//--- Входящие параметры
input Enum_Symbol     SIMBOL_1                 = EURUSD;   // Пара
input Enum_Symbol     SIMBOL_2                 = EURUSD;   // Пара
input Enum_Symbol     SIMBOL_3                 = EURUSD;   // Пара

çalışması için başka bir şey yapılması gerekiyor.

kodunuz nasıl kullanılır?

 //+------------------------------------------------------------------+
//| function                                                         |
//+------------------------------------------------------------------+
void XXXXXX()
  {
   string arr[];
   int resize = 0 , syTotal = SymbolsTotal ( true );
   for ( int i = 0 ; i < syTotal; i++)
     {
       string name = SymbolName (i, true );
       if ( SymbolInfoInteger (name, SYMBOL_VISIBLE ))
        {
         resize = ArrayResize (arr, i+ 1 );
         arr[i] = name;
        }
     };
  };
//+------------------------------------------------------------------+
 
Aleksandr Klapatyuk :

nasıl doğru kullanılır?

kullanmak için - böyle.

çalışması için başka bir şey yapılması gerekiyor.

kodunuz nasıl kullanılır?


Bir dizi karakter doldurun ve bu diziyle çalışın.

İşte verilen kod parçasını kullanan ücretsiz bir danışman ***


not; kuzum, linki silmemeliydin. Piyasadaki ürünlerimden sadece İKİ ücretli ürün var. Bunlardan biri 2017'den 4 kez kiralandı ve 2014'ten ikincisi asla 10 dolara satın alınmadı. Yani burada reklam yok.

 
Alexey Viktorov :

... kuzum, bağlantıyı silmemeliydin ....

Moderatörler forumu okuduğu için, böyle bir listenin görünümüne yeterince sahip olabilirsiniz!

 
Alexey Viktorov :

Bir dizi karakter doldurun ve bu diziyle çalışın.

İşte verilen kod parçasını kullanan ücretsiz bir danışman ***


not; kuzum, linki silmemeliydin. Piyasadaki ürünlerimden sadece İKİ ücretli ürün var. Bunlardan biri 2017'den 4 kez kiralandı ve 2014'ten ikincisi asla 10 dolara satın alınmadı. Yani burada reklam yok.

Ne yazık ki, forumda Market'ten hiçbir şeyi tartışamazsınız - ne ücretli ne de ücretsiz. Yüz kere söylendi. Zaman olacak - aramayı kendiniz bulabilirsiniz.