[ARCHIVE] 포럼을 어지럽히 지 않도록 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 3. - 페이지 236

 
Roman. :

터미널에서 칠면조의 회색을 마우스 오른쪽 버튼으로 클릭한 다음 메뉴에서 "변경"을 클릭하여 이미 사자를 클릭합니다. 마우스를 클릭한 다음 메타에디터에서 컴파일하고 터미널을 다시 시작하고 인생을 즐기세요... :-)


도움이되지 않았습니다. 나는 모든 것을했고 터미널이 재부팅되었습니다.

소스 코드는 그것과 전혀 관련이 없는 것 같습니다. 프로그램은 제 것입니다.

어떤 이유에서인지 모든 것이 이름과 연결되어 있고 모든 텍스트를 삭제했습니다. 대신 작동하는 간단한 넌센스를 로드하고 다시 컴파일했는데 결과는 동일합니다.

일반적으로 아무도 이것을 발견하지 못하면 지옥에 떨어집니다. 그 이름은 잊어도 문제 없습니다.

 
ramses :


//+----------------------------------------------- ------ --------------------+
//| 전문가 시작 기능 |
//+----------------------------------------------- ------ --------------------+
정수 시작()
{

if (OrdersTotal()>0)
{ <-- 이 대괄호는 불필요합니다.

 
DhP :

1 로트 주문의 마진은 다음과 같습니다.

다음에 알아보십시오.

그리고 여전히 충분한 여유 자금이 있는지 확인해야 합니다.

AccountFreeMarginMode()의 값은 어디에 있습니까? 0, 1, 2, 3, 4와 같을 수 있습니다.


다음은 로트 크기를 결정하는 기능이지만 이해 하기로는 AccountFreeMarginMode() 를 고려하지 않았습니다.

 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 루프에 다른 for 루프를 삽입할 수 있는지 알려주실 수 있습니까?

가능하면 작은 예를 들어라

 
CLAIN :

for 루프에 다른 for 루프를 삽입할 수 있는지 알려주실 수 있습니까?

가능하면 작은 예를 들어라

~할 수 있다

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

for 루프에 다른 for 루프를 삽입할 수 있는지 알려주실 수 있습니까?

가능하면 작은 예를 들어라

할 수 있다.

         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 ;
            }
 
안녕하세요, 작은 도움이 필요합니다

프로그램 코드의 빈에 그런 전문가가 있을 수 있습니다.

특정 시간 간격(예: 15분마다)으로 열려 있는 모든 차트 (업데이트 시 첨부됨(중요! 그리고 Expert Advisor가 시작된 시점이 아님))에 대한 템플릿을 업데이트해야 합니다. .

미리 도움을 주셔서 감사합니다)
 
이런.. 어쩐지 이걸 12개 차트에 올려놨는데 어떻게 빼야할지 몰랐네요 :))
 

글쎄, 나는 4 개의 차트 만 가지고 있으며 10 분마다 Excel에서 템플릿을 만든 다음 수동으로 붙입니다. 그러나 수동으로 증기가 발생합니다))

그 전문가의 이름을 말씀해 주시겠습니까?

 
w-knot :

글쎄, 나는 4 개의 차트 만 가지고 있으며 10 분마다 Excel에서 템플릿을 만든 다음 수동으로 붙입니다. 그러나 수동으로 증기가 발생합니다))

그 전문가의 이름을 말씀해 주시겠습니까?

서투른 자기소개서입니다. 프로그래머가 아니라면 누군가에게 주문하십시오.