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

 
TG >> :

함수가 작동하지 않지만 처음에는 작동하는 이유는 무엇입니까?

사실, 이것은 함수입니다. if (Close_) { - then start 내부에서 사용하고, if void Close_() { 시작 외부의 함수로 사용하는 경우에만 비용이 얼마인지에 따라 다릅니다.


 void Close_ ( ) {
for ( int trade = OrdersTotal ( ) - 1 ; trade > = 0 ; trade - - ) {
OrderSelect ( trade , SELECT_BY_POS , MODE_TRADES ) ;
if ( OrderSymbol ( ) = = Symbol ( ) ) {
if ( OrderSymbol ( ) = = Symbol ( ) & & OrderMagicNumber ( ) = = MagicNumber ) {
if ( OrderType ( ) = = OP_BUY ) OrderClose ( OrderTicket ( ) , OrderLots ( ) , Bid , slip , Blue ) ;
if ( OrderType ( ) = = OP_SELL ) OrderClose ( OrderTicket ( ) , OrderLots ( ) , Ask , slip , Red ) ;
}
Sleep ( 1000 ) ;
}
}
}
 
sergeev >> :


당신의 알고리즘이 맞습니다. 가능한 오류를 출력하고 일반적으로 이 코드를 실행할 때 전문가가 어디에서 오는지 알아내십시오.

+ 계산된 rsi 값을 인쇄합니다.

)))) 내 생각에는 그 사람이 코드에 실수가 있습니다 ..... 비록 초보자이지만 틀릴 수 있습니다.

 
오차가 없는 것 같고, 작은 관절만 있고, 여기에 Sleep 은 필요하지 않습니다 :)
 
gince >> :

//во внешние перменные
extern bool Close_ =true; //использовать закрытие по РСИ вкл выкл. 
// в старт закиньте
if ( Close_ ) {
for ( int trade = OrdersTotal ( ) - 1 ; trade > = 0 ; trade - - ) {
OrderSelect ( trade , SELECT_BY_POS , MODE_TRADES ) ;
if ( OrderSymbol ( ) = = Symbol ( ) ) {
if ( OrderSymbol ( ) = = Symbol ( ) & & OrderMagicNumber ( ) = = MagicNumber ) {
if ( ( OrderType ( ) = = OP_BUY ) & & ( rsi_1 > Level_2 & & rsi_0 < Level_2 ) ) OrderClose ( OrderTicket ( ) , OrderLots ( ) , Bid , slip , Blue ) ;
if ( ( OrderType ( ) = = OP_SELL ) & & ( rsi_1 < Level_1 & & rsi_0 > Level_1 ) ) OrderClose ( OrderTicket ( ) , OrderLots ( ) , Ask , slip , Red ) ;
}
Sleep ( 1000 ) ;
}
}
}
 

이것은 표준 MASimple입니다. 왜 제대로 닫히지 않는지 알아내려고 합니다. 거래를 마감하기 위해 논리를 시도합니다. 한 부분은 RSI로 구성되어 있으므로 작동하지 않습니다.


 //if(Open[1]>ma_2 && Close[1]<ma_2) OrderClose(OrderTicket(),OrderLots(),Bid,3,White);
         if ( rsi_1 > Level_2 & & rsi_0 < Level_2 ) { OrderClose ( OrderTicket ( ) , OrderLots ( ) , Bid , 3 , White ) ;
         Print ( rsi_0 , "     " , rsi_1 ) ; }
         break ;
        }
      if ( OrderType ( ) = = OP_SELL )
        {
         //if(Open[1]<ma_2 && Close[1]>ma_2) OrderClose(OrderTicket(),OrderLots(),Ask,3,White);
         if ( rsi_1 < Level_1 & & rsi_0 > Level_1 ) { OrderClose ( OrderTicket ( ) , OrderLots ( ) , Ask , 3 , White ) ;
          Print ( rsi_0 , "     " , rsi_1 ) ; }
         break ;

인쇄 후 교대 변경

rsi_0 = iRSI ( NULL , 0 , 4 , PRICE_CLOSE , 1 ) ; 
rsi_1 = iRSI ( NULL , 0 , 4 , PRICE_CLOSE , 2 ) ;
 
친애하는 전문가!
무시하지 마십시오.

OS 64비트가 사전 설치된 Windows Vista 가 설치된 HP 노트북을 구입했습니다.
문제는 고문의 작업에서 시작되었습니다. 처음에는 어떻게든 거래가 열렸습니다. 그러나 일주일 후, 고문의 거래는 전혀 열리지 않았습니다. 꼬이고 꼬이고 결국 그들은 문제가 64비트에 있다고 결정했습니다. 재설치, 32비트 및 7 Windows를 넣습니다. 하루 동안 잘 작동하고 다시 작동하지 않습니다. 영향을 미치는 Windows 업데이트가 있습니까?

다른 컴퓨터(동료)에서는 고문이 중단 없이 작동합니다. 내 오래된 노트북은 더 이상 거기에 없으며 이제 무언가를 살 방법이 없습니다.

그건 그렇고, 나는 Instagram 플랫폼에서 일합니다.

누군가가 이 문제를 해결하는 방법을 제안했거나 제안이 있으면 알려주세요.

 

간단한 Expert Advisor를 리메이크할 수 있게 도와주세요, 저는 일주일 동안 싸워왔습니다!!!! 아니면 다시 쓰세요. 그렇지 않으면 모든 어드바이저가 너무 복잡해서 제가 직접 조정할 수 없습니다!!

결론은 다음과 같습니다. 이 EA(교차점에서 거래)에 다른 MACD 지표 를 추가하고 싶습니다. 이 지표는 매도 및 매수 신호를 제공하며 EA는 이를 병렬로 실행해야 합니다. 3개의 공개 BUY 주문과 3개의 SELL 주문이 있습니다. 모든 주문은 손절매와 이익실현에 의해서만 마감되어야 하며 고문에 의해 강제되어서는 안 됩니다.

 //--------------------------------------------------------------------
extern int     period_EMA           = 28 ,
               period_WMA           = 8 ,
               stoploss             = 50 ,
               takeprofit           = 50 ,
               risk                 = 10 ;
double  LOT ;
//--------------------------------------------------------------------
double SL , TP ;
int TimeBar ; //глобальная переменная
//--------------------------------------------------------------------
int start ( )
{
   if ( TimeBar = = Time [ 0 ] ) return ( 0 ) ;
   if ( TimeBar = = 0 ) { TimeBar = Time [ 0 ] ; return ( 0 ) ; } //первый запуск программы
   double EMA0 = iMA ( NULL , 0 , period_EMA , 0 , MODE_EMA , PRICE_OPEN , 0 ) ;
   double WMA0 = iMA ( NULL , 0 , period_WMA , 0 , MODE_LWMA , PRICE_OPEN , 0 ) ;
   double EMA1 = iMA ( NULL , 0 , period_EMA , 0 , MODE_EMA , PRICE_OPEN , 1 ) ;
   double WMA1 = iMA ( NULL , 0 , period_WMA , 0 , MODE_LWMA , PRICE_OPEN , 1 ) ;
   if ( EMA0 < WMA0 & & EMA1 > WMA1 ) //Buy
   {
      TimeBar = Time [ 0 ] ;                            
      TP  = Ask + takeprofit * Point ;
      SL  = Ask - stoploss * Point ;     
      LOT = LOT ( risk , 1 ) ;
      CLOSEORDER ( "Sell" ) ;
      OPENORDER ( "Buy" ) ;
   }
   if ( EMA0 > WMA0 & & EMA1 < WMA1 ) //Sell
   {
      TimeBar = Time [ 0 ] ;                            
      TP = Bid - takeprofit * Point ;
      SL = Bid + stoploss * Point ;            
      LOT = LOT ( risk , 1 ) ;
      CLOSEORDER ( "Buy" ) ;
      OPENORDER ( "Sell" ) ;
   }
return ( 0 ) ;
}
//--------------------------------------------------------------------
void CLOSEORDER ( string ord )
{
   for ( int i = OrdersTotal ( ) - 1 ; i > = 0 ; i - - )
   {                                               
      if ( OrderSelect ( i , SELECT_BY_POS , MODE_TRADES ) = = true )
      {
         if ( OrderSymbol ( ) ! = Symbol ( ) ) continue ;
         if ( OrderType ( ) = = OP_BUY & & ord = = "Buy" )
            OrderClose ( OrderTicket ( ) , OrderLots ( ) , Bid , 3 , CLR_NONE ) ; // Close Buy
         if ( OrderType ( ) = = OP_SELL & & ord = = "Sell" )
            OrderClose ( OrderTicket ( ) , OrderLots ( ) , Ask , 3 , CLR_NONE ) ; // Close Sell
      }   
   }
}
//--------------------------------------------------------------------
void OPENORDER ( string ord )
{
   int error ;
   if ( ord = = "Buy" ) error = OrderSend ( Symbol ( ) , OP_BUY , LOT , Ask , 2 , SL , TP , "" , 1 , 3 ) ;
   if ( ord = = "Sell" ) error = OrderSend ( Symbol ( ) , OP_SELL , LOT , Bid , 2 , SL , TP , "" , - 1 , 3 ) ;
   if ( error = = - 1 ) //неудачная покупка OK
   {  
      ShowERROR ( error , 0 , 0 ) ;
   }
return ;
}                  
//--------------------------------------------------------------------
void ShowERROR ( int Ticket , double SL , double TP )
{
   int err = GetLastError ( ) ;
   switch ( err )
   {                  
      case 1 :                                                                               return ;
      case 2 :   Alert ( "Нет связи с торговым сервером   "              , Ticket , " " , Symbol ( ) ) ; return ;
      case 3 :   Alert ( "Error  неправильные параметры   Ticket " ,       Ticket , " " , Symbol ( ) ) ; return ;
      case 130 : Alert ( "Error близкие стопы   Ticket " ,                 Ticket , " " , Symbol ( ) ) ; return ;
      case 134 : Alert ( "Недостаточно денег   " ,                         Ticket , " " , Symbol ( ) ) ; return ;
      case 146 : Alert ( "Error Подсистема торговли занята " ,             Ticket , " " , Symbol ( ) ) ; return ;
      case 129 : Alert ( "Error Неправильная цена " ,                      Ticket , " " , Symbol ( ) ) ; return ;
      case 131 : Alert ( "Error Неправильный объем " ,                     Ticket , " " , Symbol ( ) ) ; return ;
      case 4051 : Alert ( "Error Недопустимое значение параметра функции " , Ticket , " " , Symbol ( ) ) ; return ;
      case 4105 : Alert ( "Error Ни один ордер не выбран " ,                Ticket , " " , Symbol ( ) ) ; return ;
      case 4063 : Alert ( "Error Ожидается параметр типа integer " ,        Ticket , " " , Symbol ( ) ) ; return ;
      case 4200 : Alert ( "Error Объект уже существует " ,                  Ticket , " " , Symbol ( ) ) ; return ;
      default :  Alert ( "Error  " , err , "   Ticket " ,                     Ticket , " " , Symbol ( ) ) ; return ;
   }
}
//--------------------------------------------------------------------
double LOT ( int risk , int ord )
{
   double MINLOT = MarketInfo ( Symbol ( ) , MODE_MINLOT ) ;
   LOT = AccountFreeMargin ( ) * risk / 100 / MarketInfo ( Symbol ( ) , MODE_MARGINREQUIRED ) / ord ;
   if ( LOT > MarketInfo ( Symbol ( ) , MODE_MAXLOT ) ) LOT = MarketInfo ( Symbol ( ) , MODE_MAXLOT ) ;
   if ( LOT < MINLOT ) LOT = MINLOT ;
   if ( MINLOT < 0.1 ) LOT = NormalizeDouble ( LOT , 2 ) ; else LOT = NormalizeDouble ( LOT , 1 ) ;
   return ( LOT ) ;
}
//--------------------------------------------------------------------

 
Serg-sn >> :

간단한 Expert Advisor를 리메이크할 수 있게 도와주세요, 저는 일주일 동안 싸워왔습니다!!!! 아니면 다시 쓰세요. 그렇지 않으면 모든 어드바이저가 너무 복잡해서 제가 직접 조정할 수 없습니다!!

결론은 다음과 같습니다. 이 EA(교차점에서 거래)에 다른 MACD 지표를 추가하고 싶습니다. 이 지표는 매도 및 매수 신호를 제공하며 EA는 이를 병렬로 실행해야 합니다. 3개의 공개 BUY 주문과 3개의 SELL 주문이 있습니다. 모든 주문은 손절매와 이익실현에 의해서만 마감되어야 하며 고문에 의해 강제되어서는 안 됩니다.

 이중 MacdMain0 = iMACD ( NULL , 0 , period_fast, period_slow , period_signal, 0 , MODE_MAIN , PRICE_OPEN , 0 ) ;
이중 MacdSignal0 = iMACD ( NULL , 0 , period_fast, period_slow , 기간_시그널, 0 , 모드_시그널 , PRICE_OPEN , 0 ) ;
이중 MacdMain1 = iMACD ( NULL , 0 , period_fast, period_slow , period_signal, 0 , MODE_MAIN , PRICE_OPEN , 1 ) ;
이중 MacdSignal1 = iMACD ( NULL , 0 , period_fast, period_slow , 기간_시그널, 0 , 모드_시그널 , PRICE_OPEN , 1 ) ;
if ( EMA0 < WMA0 && EMA1 > WMA1 && MacdMain0 >MacdSignal0 && MacdMain1 < MacdSignal1 )

음, 이동과 유사하게 mcd를 추가합니다.
 
이것으로 모든 것이 명확하지만 주문하는 방법은 무엇입니까? 원본에서 매수가 설정되어 있고 매도 - 매수 신호가 있으면 닫히고 매도합니다! 그리고 마감할 필요가 없습니다. Expert Advisor는 중지가 포함된 주문을 해야 합니다. 그게 전부입니다!
 

동일한 고문 EMA _ WMA 에 대해 질문 또는 요청이 있습니다. mq4 또한 폐쇄를 위해. Take 로 닫는 대신 가능합니까? 이익 을 얻 거나 이에 더하여 MA의 최대/최소 값으로 주문을 마감하는 기능을 추가합니다. 이것이 시장을 빠져나가기 위한 최선의 선택이 될 것 같습니다(물론 제가 틀릴 수도 있지만). 어렵지 않으신 분들은 이 어드바이저에 그런 기능을 추가해주세요.

또 다른 작은 질문. 설정에서 손실이 50포인트( MasterForex ) 이지만 " 오류 . 중지를 닫 습니다 " 라는 메시지가 나타납니다 . 무슨 뜻인가요?