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

 
alsu :

지표의 논리를 완전히 분석하십시오.

시작하려면 교체

게다가,

else가 없으면 첫 번째 블록이 먼저 실행된 다음 두 번째 블록이 실행됩니다. else - 첫 번째 또는 두 번째.



주식회사! 논리로 보아도 부족합니다!) 곧 바꾸겠습니다! 예, 그리고 또한 즉시: 4번째가 아니라 3번째에서 모든 곳에서 다음과 같이 텍스트를 쓴다면:
 iFractals ( Symbol (), PERIOD_H1 ,MODE_UPPER, 3 );

3일까지의 막대가 모든 것이 작동하기에 충분한 것처럼 보이지만 여기서 문제가 무엇입니까?

그리고 지표의 논리는 과제의 본질을 잘 이해하지 못했습니다. 나는 표시기가 어떻게 작동하는지 알고 있습니다. 알고리즘이 필요하므로 ifractals가 0과 같지 않고 이 조건을 제거하도록 제안합니다. 불필요한가요? 보다 나는 그것을 두 번 처방합니까? 왜 제거해야합니까?

 
alsu :

지표의 논리를 완전히 분석하십시오.

시작하려면 교체

게다가,

else가 없으면 첫 번째 블록이 먼저 실행된 다음 두 번째 블록이 실행됩니다. else - 첫 번째 또는 두 번째.



일반적으로 모든 것을 교체했지만 어떤 이유로 여전히 같은 방식으로 건너뜁니다 ... ((((((
 
Vinin :

당신은 싸울 수 있으며 고문의 작업은 중단 될 수 있습니다. 접근 방식을 변경하기만 하면 됩니다.


어떻게?

코드 시작 부분에서 모든 미결 주문을 반복하고 주문 티켓 의 값을 찾아 할당 하거나 다른 방법으로 가능합니까?

 
Cruc :


코드 시작 부분에서 모든 미결 주문을 반복하고 주문 티켓의 값을 찾아 할당하거나 다른 방법으로 가능합니까?


물론 고문이 하나 또는 두 개의 직위를 열지 않는 한 가능합니다.
 
Expert Advisor가 테스터에서 작동하지 않는 이유를 누가 압니까?
 
Vinin :

물론 고문이 하나 또는 두 개의 직위를 열지 않는 한 가능합니다.

Expert Advisor는 다중 통화이므로 겉보기에 간단한 작업이 항상 즉시 해결되는 것은 아닙니다((. 그리고 경험이 없습니다.
 
Cruc :

Expert Advisor는 다중 통화이므로 겉보기에 간단한 작업이 항상 즉시 해결되는 것은 아닙니다((. 그리고 경험이 없습니다.


주문을 올바르게 계산하기만 하면 됩니다. 많은 예.

그리고 경험. 경험은 이득이며 올 것입니다. 아무데도 가지 않을거야

 
Vinin :


주문을 올바르게 계산하기만 하면 됩니다. 많은 예.

그리고 경험. 경험은 이득이며 올 것입니다. 아무데도 가지 않을거야


답변 감사합니다. 아카이브를 파헤쳐 보겠습니다.
 
skyjet :

좋은 저녁이에요! 다중 통화 MACD Expert Advisor에 대한 도움이 필요합니다. EA는 포지션 개설 기준을 정확하게 따르지만 "조건별" 청산은 작동하지 않습니다. 물론 나는 후행 정지를 사용하기 시작했지만 정확한 종가로는 마음의 평화를 얻지 못합니다.

메인 부분은 이렇게 생겼어요

그리고 이것은 닫는 블록입니다. 오류를 찾는 데 도움을 주세요!


제 자신을 되풀이해서 죄송합니다만, 아무리 노력해도 오류를 찾을 수 없습니다!

 //+------------------------------------------------------------------+
string lSymbol;
int init ()
{ 
 lSymbol = Symbol ();
 return ( 0 );
}
int deinit()
{ return ( 0 );}
int start()
  {
   double MacdCurrent, MacdPrevious, SignalCurrent;
   double SignalPrevious, MaCurrent, MaPrevious;
   double bid, ask, point, digits;
   int cnt, ticket, total;
   
  total = SymbolOrdersTotal (lSymbol);
  
   if (total< 1 );
  {
    bid   = MarketInfo (lSymbol,MODE_BID);
    ask   = MarketInfo (lSymbol,MODE_ASK);
    point = MarketInfo (lSymbol,MODE_POINT);
    digits= MarketInfo (lSymbol,MODE_DIGITS);



Так выглядит оснавная часть, а это злопалучный блок закрытия



 for (cnt= 0 ;cnt<total;cnt++)
     {
       OrderSelect (cnt, SELECT_BY_POS, MODE_TRADES);
       if ( OrderType ()<=OP_SELL &&   // check for opened position 
         OrderSymbol ()==lSymbol())   // check for symbol
        {
         if ( OrderType ()==OP_BUY)   // long position is opened
           {
             // should it be closed?
             if (MacdCurrent> 0 && MacdCurrent<SignalCurrent && MacdPrevious>SignalPrevious &&
               MacdCurrent>(MACDCloseLevel*point))
                {
                 OrderClose ( OrderTicket (), OrderLots (),bid, 3 , Violet ); // close position
                 return ( 0 ); // exit
                }
             // check for trailing stop
             if (TrailingStop> 0 )  
              {                 
               if (bid- OrderOpenPrice ()>point*TrailingStop)
                 {
                   if ( OrderStopLoss ()<bid-point*TrailingStop)
                    {
                     OrderModify ( OrderTicket (), OrderOpenPrice (),bid-point*TrailingStop, OrderTakeProfit (), 0 , Green );
                     return ( 0 );
                    }
                 }
              }
           }
         else // go to short position
           {
             // should it be closed?
             if (MacdCurrent< 0 && MacdCurrent>SignalCurrent &&
               MacdPrevious<SignalPrevious && MathAbs (MacdCurrent)>(MACDCloseLevel*point))
              {
               OrderClose ( OrderTicket (), OrderLots (),ask, 3 , Violet ); // close position
               return ( 0 ); // exit
              }
             // check for trailing stop
             if (TrailingStop> 0 )  
              {                 
               if (( OrderOpenPrice ()-ask)>(point*TrailingStop))
                 {
                   if (( OrderStopLoss ()>(ask+point*TrailingStop)) || ( OrderStopLoss ()== 0 ))
                    {
                     OrderModify ( OrderTicket (), OrderOpenPrice (),ask+point*TrailingStop, OrderTakeProfit (), 0 , Red );
                     return ( 0 );
                    }
                }
              }
           }
        }
     }
   return ( 0 );
  }
  
   
   int SymbolOrdersTotal( string lSymbol)
{
   int Res= 0 ;
   int total= OrdersTotal ();
   for ( int i= 0 ;i<total;i++) 
   {
       if ( OrderSelect (i, SELECT_BY_POS))
      {
         if ( OrderSymbol ()==lSymbol)
         {
            Res++;
         }
      }
   }
   return (Res);
}
// the end.
 
Qwertee :
일반적으로 모든 것을 교체했지만 어떤 이유로 든 정확히 동일하게 건너 뜁니다 ... ((((((
무슨 일이 일어났는지, 그리고 당신이 로그에 어떤 메시지를 인쇄했는지 쓰십시오