[ARŞİV] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 3. - sayfa 236

 
Roman. :

Terminalde hindinin gri rengine sağ tıklayın, ardından menüde - "değiştir" zaten aslana tıklayın. fare, ardından meta düzenleyicide derleyin, ardından terminali yeniden başlatın ve hayatın tadını çıkarın... :-)


Yardım etmedi. Her şeyi yaptım, terminal yeniden başlatıldı, ne yazık ki.

Kaynak kodun bununla hiçbir ilgisi yok gibi görünüyor, program benim.

Nedense her şey isimle bağlantılı, tüm metni sildim, bunun yerine çalışan basit bir saçmalık yükledim, yeniden derledim, sonuç aynı.

Genel olarak, kimse buna rastlamadıysa, o zaman cehenneme. Bu ismi unut ve sorun değil.

 
ramses :


//+------------------------------------------- ------ ----------------------+
//| uzman başlatma işlevi |
//+------------------------------------------- ------ ----------------------+
int başlangıç()
{

if (Sipariş Toplamı()>0)
{ <- bu parantez gereksiz.

 
DhP :

1 lotluk sipariş için marj:

Sonraki öğrenin.

Ve yine de yeterli ücretsiz fon olup olmadığını kontrol etmeniz gerekiyor:

AccountFreeMarginMode()'daki değerler nerede? Hangisi 0, 1, 2, 3, 4'e eşit olabilir (görünüşe göre).


Parti boyutunu belirleme işlevim burada, ancak anladığım kadarıyla AccountFreeMarginMode() 'u hesaba katmadım.

 double GetLots() {
   double lot;
   double Step   = MarketInfo ( Symbol (),MODE_LOTSTEP);
   if (MoneyManagement) {
       RefreshRates ();                               // Обновление данных
       double
         TickValue = MarketInfo ( Symbol (),MODE_TICKVALUE),
         Min_Lot= MarketInfo ( Symbol (),MODE_MINLOT),           // Миним. колич. лотов 
         Max_Lot= MathFloor ( MarketInfo ( Symbol (),MODE_MAXLOT)), // Макс. колич. лотов 
         Free   =GetFreeMargin()-NotUsedPart,                 // Свободн средства
         One_Lot= MarketInfo ( Symbol (),MODE_MARGINREQUIRED);   // Стоимость 1 лота
       //Print("Step=",Step);
       //GetFreeMargin();
      stimul = LossPercent* 0.01 ;
       if (Free > MaxUsedPart) Free = MaxUsedPart;
       double free = AccountBalance () - AccountMargin ();
       Print ( "free = " ,free);
       if (Free > free) Free = free;
      lot = stimul*Free/(StopLoss*Cor*TickValue);
       if (lot >= 0 ) {
         if (stimul == 3 *LossPercent* 0.01 ) {
             Print ( "После убытка ЛОТ в пределах % утроенного риска от SL и равен " , MathFloor (lot/Step)*Step, " или " , 100 *stimul, "% баланса" );
         } else {
             if (stimul != LossPercent* 0.01 ) {
               Print ( "После убытка ЛОТ в пределах % максимального риска от SL и равен " , MathFloor (lot/Step)*Step, " или " , 100 *stimul, "% баланса" );
             } else {
               Print ( "ЛОТ в пределах заданного % риска от SL и равен " , MathFloor (lot/Step)*Step, " или " , 100 *stimul, "% баланса" );
             }
         }

      }
       if (lot > Max_Lot && lot >= 0 ) {
         lot = Max_Lot;
         Print ( "ЛОТ ограничен максимумом и равен " , MathFloor (lot/Step)*Step);
      }
       //Print(lot,"*",One_Lot,"=",lot*One_Lot," > ",Free);
       //Print("AccountFreeMarginMode=",AccountFreeMarginMode()," AccountFreeMargin=",AccountFreeMargin()," Free=",Free);
       if (lot*One_Lot > stimul*Free && lot >= 0 ) {
         lot =stimul*Free/One_Lot;
         Print ( "ЛОТ ограничен свободными средствами и равен " , MathFloor (lot/Step)*Step);
      }
       int level= AccountStopoutLevel (); ///// ТОЛЬКО ЕСЛИ ВЫРАЖЕН В ПРОЦЕНТАХ!!!
       if ( AccountStopoutMode () == 0 && lot >= 0 ) {
         if (lot > Free/(level*One_Lot/ 100.0 + StopLoss*Cor*TickValue)) {
            lot = Free/(level*One_Lot/ 100.0 + StopLoss*Cor*TickValue);
             Print ( "ЛОТ ограничен уровнем StopOut и равен " , MathFloor (lot/Step)*Step, " или " , MathRound ( 100 *lot*StopLoss*Cor*TickValue/Free), "% баланса" );
         }
      }   
       if (lot < Min_Lot && lot >= 0 ) {
         if ( 2 *lot > Min_Lot) {
            lot=Min_Lot;               // Не меньше минимальн
             Print ( "ЛОТ ограничен минимумом и равен " , MathFloor (lot/Step)*Step);
         } else lot= 0 ;
      }
   } else lot=Lots;

   //if (Variant == 2)lot=0.5*lot;
   //if (Variant == 0)lot=0.2*lot;

   if (Accuracy == 0 ) 
      lot = MathFloor (lot/Step)*Step;
   else lot = NormalizeDouble (lot,Accuracy); 
   //Alert("lot=",lot);
   if (lot < 0 ) lot = 0 ;
   return (lot);
}
 

for döngüsüne başka bir for döngüsü eklemenin mümkün olup olmadığını söyleyebilir misiniz?

mümkünse küçük bir örnek verin

 
CLAIN :

for döngüsüne başka bir for döngüsü eklemenin mümkün olup olmadığını söyleyebilir misiniz?

mümkünse küçük bir örnek verin

olabilmek

 for ( int i = 0 ; i < 10 ; i++)
{
   for ( int j = 0 ; j < 10 ; j++)
   {
       Print ( "i = " + i + ", j = " + j);
   }
}
 
CLAIN :

for döngüsüne başka bir for döngüsü eklemenin mümkün olup olmadığını söyleyebilir misiniz?

mümkünse küçük bir örnek verin

olabilmek.

         for ( int j = i- 1 ; j >= i-trend_bars; j--)
             if (Close[j] - Open[i] > ternd_level*body) {
               ObjectDelete ( "TrendUp" );
               ObjectCreate ( "TrendUp" , OBJ_ARROW , 0 ,Time[i],Low[i]- 50 * Point );
               ObjectSet ( "TrendUp" , OBJPROP_ARROWCODE ,SYMBOL_ARROWUP);
               ObjectSet ( "TrendUp" , OBJPROP_COLOR , Red );
               if (!Is_Pattern(i)) {
                   ObjectSet ( "TrendUp" , OBJPROP_COLOR , Green );
                   //========процедура сдвига всего 2-x мерного массива buf на 1 индекс========
                   ArraySetAsSeries (Pattern,true); //"переворачиваем" массив
                   ArrayCopy (Pattern, Pattern, ArrayRange (Pattern, 1 ), 0 );
                   ArraySetAsSeries (Pattern,false); //возвращаем в исходное значение
                   for ( int k = 0 ; k < pattern_bars; k++) {
                     Pattern[ 0 ][k] = pattern[k];
                  }
                   for ( int m = 0 ; m <= size; m++) {
                     if (Pattern[m][ 0 ] == 0 && Pattern[m][ 1 ] == 0 && Pattern[m][ 2 ] == 0 && Pattern[m][ 3 ] == 0 ) {
                         break ;
                     }   
                  }
                  pattern_count = m;
                   if (prn) 
                     if ( MathMod (m, 100 ) == 0 ) Print ( "В работе " ,m, " паттернов на " , Bars , " барах" );
                   if (m > 0.1 * Bars ) {
                     for ( int l = MathRound ( 0.1 * Bars ); l <= size; l++) {
                         for ( int n = 0 ; n < 4 ; n++) {
                           Pattern[l][n] = 0 ;
                        }
                     }
                  }
               }
               lst_patt = i;
               break ;
            }
 
Merhaba, biraz yardıma ihtiyacım var

Belki program kodunun kutularında böyle bir uzmanınız vardır:

tüm açık çizelgeler için şablonları (güncelleme sırasında (önemli! ve Uzman Danışman başlatıldığında değil) bunlara eklenir) belirli bir zaman aralığında (örneğin, her 15 dakikada bir) güncellemesi gerekir. .

Şimdiden herhangi bir yardım için teşekkürler)
 
Vay... Nedense bunu bir düzine çizelgeye koydum, ondan nasıl kurtulacağımı bilemedim :))
 

Eh, sadece 4 grafiğim var, her 10 dakikada bir Excel'den şablonlar oluşturuluyor, sonra onları elle yapıştırıyorum. ama o zaman manuel olarak buharlaşır))

Bu uzmanın adını söyler misiniz lütfen?

 
w-knot :

Eh, sadece 4 grafiğim var, her 10 dakikada bir Excel'den şablonlar oluşturuluyor, sonra onları elle yapıştırıyorum. ama o zaman manuel olarak buharlaşır))

Bu uzmanın adını söyler misiniz lütfen?

Bu onun kendi beceriksizce kendi kendine yazması. Programcı değilseniz, birini sipariş edin.