[경고, 주제 닫힘!] 포럼을 어지럽히지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 당신 없이는 어디에도 없습니다. - 페이지 240

 
어떤 페이지를 찾을 수 없습니다.
 
1Rakso писал(а) >>
어떤 페이지를 찾을 수 없습니다.

그것도 찾지 못했다. 그래서 그것은 중요하지 않습니다.

시가로 작업을 하고 있다면 새로운 바 오픈을 확인하는 것으로 충분합니다.

 int start ( ) {
   if ( ! NevBar ( ) ) return ( 0 ) ;
  
   //.......
  
   return ( 0 ) ;
}

bool NevBar ( ) {
   static int prevtime = 0 ;
   if ( prevtime = = Time [ 0 ] ) return ( false ) ;
  prevtime = Time [ 0 ] ;
   return ( true ) ;
}

다소 이렇습니다. 그리고 다른 가격으로 개봉이 가능한 경우. 다른 메커니즘을 사용해야 합니다.

하나의 심볼과 기간에 대해 하나의 포지션만 열 수 있는 경우, 열려 있는 포지션의 수를 제어해야 합니다.

 int CountOrder [ 6 ] ;

// Функция формирует массив с количеством открытых позиций по каждому виду ордеров.
//===============================================================================
int Order_Count_Calculate ( string _Symbol , int _Magic , int _OP = - 1 ) {
   ArrayInitialize ( Order_Count , 0 ) ;
   for ( int i = OrdersTotal ( ) - 1 ;   i > = 0 ;   i - - ) {
       if ( ! OrderSelect ( i , SELECT_BY_POS , MODE_TRADES ) )    continue ;
       if ( OrderSymbol ( ) ! = _Symbol )                      continue ;
       if ( OrderMagicNumber ( ) ! = _Magic )                    continue ;
      Order_Count [ OrderType ( ) ] + + ;
   }
   if ( _OP > = 0 ) return ( Order_Count [ _OP ] ) ;
   return ( 0 ) ;
}

이제 원하는 배열 요소의 값을 확인하여 이 유형의 위치가 몇 개나 열려 있는지 알 수 있습니다.

 
rid >> :

예를 들어(구매 정지 설정의 예):

(지연을 설정하기 위해 설치 가격이 견적 흐름에 있을 필요는 전혀 없습니다.

현재 가격에서 춤을 추거나 아무 가격이나 취할 수 있으므로 이 DC에서 허용되는 정지 수준만 현재 가격에서 지연 설정 가격까지 관찰됩니다)

( 'EURUSD - 동향, 예측 및 시사점' )

대신에

두 배 가격BUY = ..... ....

당신의 공식을 입력

EH ... 특히 첨부된 코드에 대해 대단히 감사합니다! 의사가 지시한 대로! ))))

 
Vinin >> :

그것도 찾지 못했다. 그래서 그것은 중요하지 않습니다.

시가로 작업을 하고 있다면 새로운 바 오픈을 확인하는 것으로 충분합니다.

다소 이렇습니다. 그리고 다른 가격으로 개봉이 가능한 경우. 다른 메커니즘을 사용해야 합니다.

하나의 심볼과 기간에 대해 하나의 포지션만 열 수 있는 경우, 열려 있는 포지션의 수를 제어해야 합니다.

이제 원하는 배열 요소의 값을 확인하여 이 유형의 위치가 몇 개나 열려 있는지 알 수 있습니다.

비닌! 고맙습니다!
 
total = OrdersTotal ( ) ;
short = TRUE ;
long = TRUE ;
                      for ( int cnt = 0 ; cnt < total ; cnt + + ) {
                       OrderSelect ( cnt , SELECT_BY_POS , MODE_TRADES ) ;
                       if ( OrderSymbol ( ) = = Symbol ( ) & & OrderMagicNumber ( ) = = MagicNumber ) {
                       if ( OrderType ( ) = = OP_SELL ) short = FALSE ;
                       if ( OrderType ( ) = = OP_BUY ) long = FALSE ;
                       }
                       }
                    
                     

이제 이 코드로 작성했습니다. 이 배열로 알 수 없습니다. 이 막대에 이미 주문이 있었고 닫혔는지, 그리고 새 막대 를 기다릴 것인지 어떻게 결정할 수 있을까요?

어떻게 설명해야할지 제가 제대로 표현을 못했거나 기능을 이해를 못해서 ....

1) 제로 바에서 주문을 열고 닫았다고 가정하면, 열라는 신호가 있더라도 이 바에서 이미 거래가 있었고 마감되었으므로 더 이상 이 바에서 주문을 열지 않습니다. 다음 바를 기다립니다.

각 바에 하나의 거래만 허용됩니다. 이 바에 거래가 있었다면 주문을 열지 않습니다. 어떻게 합니까 ???

사람들을 도와주세요 .....))) 이미 지붕이 있습니다 \\\\\\\\>>>>

 
1Rakso писал(а) >>

지금 코드에 이렇게 작성했습니다. 이 배열로는 알 수 없습니다. 이 바에 이미 주문이 있었고 닫혔는지, 그리고 우리가 새 바를 기다릴 것인지 어떻게 결정할 수 있을까요?

어떻게 설명해야할지 제가 제대로 표현을 못했거나 기능을 이해를 못해서 ....

1) 제로 바에서 주문을 열고 닫았다고 가정하면, 열라는 신호가 있더라도 이 바에서 이미 거래가 있었고 마감되었으므로 더 이상 이 바에서 주문을 열지 않습니다. 다음 바를 기다립니다.

각 바에 하나의 거래만 허용됩니다. 이 바에 거래가 있었다면 주문을 열지 않습니다. 어떻게 합니까 ???

사람들을 도와주세요 .....))) 이미 지붕이 있습니다 \\\\\\\\>>>>

Igor KIM 의 스레드 'KimIV의 유용한 기능'을 참조하십시오. 기능 중 하나가 귀하의 질문에 답할 것입니다

 

Expert Advisor를 작성하려고 합니다... 이제 막 배우기 시작했습니다... 테스터에 오류 4062 가 나타납니다...(ERR_STRING_PARAMETER_EXPECTED - 4062 - 문자열 매개변수가 필요합니다)

어디서 수정해야할지 모르겠네요. 아마 현지 에서 누군가가 코드를 볼 것입니까? :)

 extern double Lots = 0.9 ;        //лот
extern double StopLoss = 70 ;
extern double DecreaseFactor = 80 ;
extern double MaximumRisk    = 0.014 ;
extern double MaximumLots    = 100 ;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double GetSizeLot ( ) //оптимизация лотов
  {
   double Lot = Lots ;
   int cycle ;
   int prof = 0 ;
   int orders = HistoryTotal ( ) ;     // history orders total
   int losses = 0 ;                  // number of losses orders without a break
   int vinn = 0 ;
   int i = orders ;
//---- select lot size
  Lot = NormalizeDouble ( AccountFreeMargin ( ) * MaximumRisk / 100 , 1 ) ;
//----
   if ( AccountFreeMargin ( ) < = 14 ) 
       DecreaseFactor = 14 ;
//----
   if ( AccountFreeMargin ( ) > 10000 ) 
       DecreaseFactor = 60 ;
//----
   if ( DecreaseFactor > 0 & & orders > DecreaseFactor )
     {
       //----
       for ( cycle = 1 ; cycle < DecreaseFactor ; cycle + + )
         {
           i - - ;
           //----
           if ( OrderSelect ( i , SELECT_BY_TICKET , MODE_HISTORY ) = = false ) 
             { 
               Print ( "Error in history!" ) ; 
               break ; 
             } 
           //----
           if ( OrderCloseTime ( ) > 0 )
             {
               prof = prof + OrderProfit ( ) ; 
               if ( OrderProfit ( ) < = 0 ) 
                   losses + + ;
               else 
                   vinn + + ;
             }
         }  
       if ( prof < = 0 & & losses > vinn ) 
           Lot = 0.1 ;
       if ( prof < = 0 & & vinn > losses ) 
           Lot = Lot - ( 0.1 * losses ) ;
       if ( prof > 0 & & losses > vinn ) 
         {
           Lot = Lot + ( 0.1 * NormalizeDouble ( vinn / 4 , 0.1 ) ) ;
         }
       if ( prof > 0 & & losses < = vinn )
         {
           Lot = Lot + ( 0.1 * NormalizeDouble ( vinn / 2 , 0.1 ) ) ;
         }
     } 
   if ( AccountFreeMargin ( ) < 300 | | Lot < 0.1 ) 
       Lot = 0.1 ;
   if ( Lot * 1275 > = AccountFreeMargin ( ) ) 
       Lot = NormalizeDouble ( AccountFreeMargin ( ) * MaximumRisk / 100 , 1 ) ;
   if ( MaximumLots ! = 0 & & Lot > MaximumLots ) 
       Lot = MaximumLots ;
   if ( DecreaseFactor > orders ) 
       Lot = Lots ;
   return ( Lot ) ;
  }  
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+  
int start ( )
  {
  double glav1 , sig1 , glav2 , sig2 ;
  int cnt , ticket , total ;
glav1 = iCustom ( NULL , 0 , "i_Trend" , 0 , 1 ) ;
sig1 = iCustom ( NULL , 0 , "i_Trend" , 1 , 1 ) ; 
glav2 = iCustom ( NULL , 0 , "i_Trend" , 0 , 2 ) ;
sig2 = iCustom ( NULL , 0 , "i_Trend" , 1 , 2 ) ; 
   total = OrdersTotal ( ) ;  // проверяем есть ли открытые позиции
   if ( total < 1 ) 
     {
       if ( AccountFreeMargin ( ) < ( 500 * Lots ) )  // проверяем денежки на счету
         {
           Print ( "Денег почти нет, осталось всего: " , AccountFreeMargin ( ) ) ;
           return ( 0 ) ;  
         }
                  }
       // проверяем открытие позиции на покупку
       if ( ( glav2 < sig2 )  & &
          ( glav1 > sig1 ) )
         {
         OrderSend ( Symbol ( ) , OP_BUY , GetSizeLot ( ) , Ask , 3 , Ask - StopLoss * Point , "AlanMod expert" , 16384 , 0 , Green ) ;
          return ( 0 ) ; 
          }
           // проверяем возможность открытия на продажу
           if ( ( glav2 > sig2 )  & &
          ( glav1 < sig1 ) )
             {
             OrderSend ( Symbol ( ) , OP_SELL , GetSizeLot ( ) , Bid , 3 , Bid + StopLoss * Point , "AlanMod expert" , 16384 , 0 , Red ) ;
               return ( 0 ) ; 
             }
          for ( cnt = 0 ; cnt < total ; cnt + + )
     {
           OrderSelect ( cnt , SELECT_BY_POS , MODE_TRADES ) ;
       if ( OrderType ( ) < = OP_SELL & &   // проверка открытой позиции 
          OrderSymbol ( ) = = Symbol ( ) )  // проверка с нашего ли она графика
         {
           if ( OrderType ( ) = = OP_BUY )    // если открыта позиция на покупку
             {
                            if ( glav1 < sig1 ) // проверяем закрывать или нет?
                 {
                                    OrderClose ( OrderTicket ( ) , OrderLots ( ) , Bid , 3 , Violet ) ; // закрыли
                   return ( 0 ) ;  // сваливаем
                 }
                              }
           else // если эта позиция на продажу
             {
             if ( glav1 > sig1 ) //проверяем закрывать иль нет?
         {
         OrderClose ( OrderTicket ( ) , OrderLots ( ) , Ask , 3 , Violet ) ; // закрыли
        return ( 0 ) ; // сваливаем
        }
      }
    }
  }
}
 
Reys >> :

Expert Advisor를 작성하려고 합니다... 막 배우기 시작했습니다... 테스터에 오류 4062 가 나타납니다...(ERR_STRING_PARAMETER_EXPECTED - 4062 - 문자열 유형 매개변수가 필요합니다)

어디에서 수정해야 할지 모르겠습니다. 아마 현지 에서 누군가가 코드를 볼 것입니까? :)

1) 이중 NormalizeDouble (이중 값, 정수 숫자) 및 (vinn/2, 0.1)

2) OrderSend ( Symbol ( ) , OP_BUY , GetSizeLot ( ) , Ask , 3 , Ask - StopLoss * Point , MISSING PARAMETER take_profit , "AlanMod 전문가 " , 16384 , 0 , 녹색 ) ;

 
고마워, 난 그냥 당신을 생각
 

사용자 지정 표시기 에서 버퍼에 이름을 지정하는 방법을 알려주십시오.