포럼을 어지럽히 지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 6. - 페이지 328

 
더블 GetLastUpperFractalPrice()
{
for (int i = 3; i<=막대; i++)
if (iFractals(Symbol(),PERIOD_M5,MODE_UPPER,i) != 0) return (i);
이중 LastUpperFractalPrice = 높음[i]; 반환(LastUpperFractalPrice);

}

그래서 그렇지? 이 함수는 마지막 위로 프랙탈 ?

 
Trader7777 :

그래서 그렇지? 이 함수는 마지막 위로 프랙탈의 가격을 반환합니까?


도형 찾기의 예 ...
 
더블 GetLastUpperFractalPrice()
{
for (int i = 3; i<=막대; i++)
{
if (iFractals(Symbol(), PERIOD_M5 ,MODE_UPPER,i) != 0) return (i);
{
이중 LastUpperFractalPrice = 높음[i];
}
}
반환(LastUpperFractalPrice);

}

그래서, 효과가 있을지 없을까?

 
Trader7777 :
더블 GetLastUpperFractalPrice()
{
for (int i = 3; i<=막대; i++)
{
if (iFractals(Symbol(),PERIOD_M5,MODE_UPPER,i) != 0) return (i);
{
이중 LastUpperFractalPrice = 높음[i];
}
}
반환(LastUpperFractalPrice);

}

그래서, 효과가 있을지 없을까?


예를 들어 다음과 같습니다.

 double GetLastUpperFractalPrice()
{
   for ( int i = 3 ; i<= Bars ; i++)
   {
       if ( iFractals ( Symbol (), PERIOD_M5 ,MODE_UPPER,i) != 0 )
      {
         return (High [i]);
      }
   }
   return ( EMPTY_VALUE );
}

당신처럼, 그것은하지 않습니다.

 
Trader7777 :
더블 GetLastUpperFractalPrice()
{
for (int i = 3; i<=막대; i++)
{
if (iFractals(Symbol(),PERIOD_M5,MODE_UPPER,i) != 0) return (i);
{
이중 LastUpperFractalPrice = 높음[i];
}
}
반환(LastUpperFractalPrice);

}

그래서, 효과가 있을지 없을까?


아니요. 패널의 SRC 를 통해 코드를 붙여넣습니다.

return(XXX)은 사용자 함수에서 빠져 나옵니다. 거기에서 구동되고 함수에 의해 반환되는 것 - XXX 값 또는 일부 계산 함수의 결과입니다.

따라서 i번째 막대 수익률(High [i]) 의 최대 가격 을 표시하기 위해 프랙탈을 찾을 때 입력하십시오. 추가로 발명할 필요가 없습니다.

앞으로))

 

다음은 기본 f-tion 설정 otlozh입니다. 주문, 매개변수는 중요하지 않지만 "새로운 가격"을 받은 후 고문(주문 반복 주기를 사용할 수 있음)이 열거하거나 다른 방식으로 주문을 설정하지 않도록 파악하는 것이 중요합니다. 같은 가격. 동시에 주문 주기가 멈추지 않아야 합니다.

이중 거리=10000.0;
문자열 SMB;
두 배 NewPrice;
정수 나;
정수 시작()
{
새로 고침();
SMB=기호();
{UstanOtlozh();}
}
리턴(0);
무효 UstanOtlozh()
{
이중 OldPrice=WindowPriceOnDropped(); // 여기에 던진 스크립트
새로 고침();
SMB=기호();
{
정수 i=1;
동안(i<=주문 총계())
{
if (OrderSelect(i-1,SELECT_BY_POS)==true) // 다음이 있는 경우
{ // 주문 분석:
if (OrderSymbol()!= SMB) 계속 // 우리의 금융 상품이 아닙니다.
int Tip=주문 유형(); // 주문 유형
(팁<2) 계속하면; // 시장가 주문
더블 NewPrice=OrderOpenPrice(); // 주문 가격
{
while(NewPrice<=Ask+200*Point||NewPrice>=Ask+50*Point)
{
NewPrice=NewPrice+50*포인트;
OrderSend(SMB,OP_BUYSTOP,0.01,NewPrice,3,0,0,NULL,0, CLR_NONE );
if(NewPrice>Ask+200*Point||NewPrice<Ask+50*Point)
부서지다;
}}}}}}

 
ALXIMIKS :
컴파일하도록 수정하고 555 빌드 mt4 편집기를 사용하면 문제를 빠르게 찾는 데 정말 도움이 됩니다. 설치하기 전에 지침을 읽으십시오 - 처음 15페이지.

이런 단순함에 대해 묻게 될 줄은 꿈에도 몰랐습니다. 컴파일할 때 BU() 함수가 관련되어 있지 않다는 메시지가 발행됩니다. 이제 모든 것이 컴파일되지만 손익분기점 함수는 작동하지 않습니다. 다른 Expert Advisors에서는 정확히 동일한 손익분기점 기능이 작동합니다.

 int start()
  {
   if (Volume[ 0 ]> 1 ) return ; 
  
   if (CountTrades()== 0 && Open[ 1 ]>Close[ 1 ] && Open[ 2 ]<Close[ 2 ] && High[ 1 ]>High[ 2 ] && Low[ 1 ]<Low[ 2 ])   // продажа
   {
      ticket= OrderSend ( Symbol (),OP_SELL,Lots,Bid,Slippage, 0 , 0 , "Pattern_1" , 111 , 0 ,Red);
       if ( OrderSelect (ticket, SELECT_BY_TICKET,MODE_TRADES))
      {
         TP= NormalizeDouble (Bid - TakeProfit * Point , Digits );
         OrderModify(ticket, OrderOpenPrice(), 0 ,TP, 0 );
      }
   }
   else
   if (CountTrades()== 0 && Open[ 1 ]<Close[ 1 ] && Open[ 2 ]>Close[ 2 ] && High[ 1 ]>High[ 2 ] && Low[ 1 ]<Low[ 2 ]) // покупка
    {
      ticket= OrderSend ( Symbol (),OP_BUY,Lots,Ask,Slippage, 0 , 0 , "Pattern_1" , 111 , 0 ,Blue);   
       if ( OrderSelect (ticket, SELECT_BY_TICKET,MODE_TRADES))
      {
         TP= NormalizeDouble (Ask + TakeProfit * Point , Digits );
         OrderModify(ticket, OrderOpenPrice(), 0 ,TP, 0 );
      }
    }
   if (CountTrades()> 0 )
      {
      otype = FindLastOrderType();
       if (otype == OP_BUY)
         { // ценапоследнего ордера на покупку
         price = FindLastBayPrice();
         
         if ((Bid - price) / Point >= Step)
            {
               ticket= OrderSend ( Symbol (),OP_SELLSTOP,Lots,Bid,Slippage, 0 , 0 , "Pattern_1" , 111 , 0 ,Red);  
            }
         }
       else if (otype == OP_SELL)
         { // цена последнего ордера на продажу
         price = FindLastSellPrice();
         
           if ((price - Ask) / Point >= Step)
            {
               ticket= OrderSend ( Symbol (),OP_BUYSTOP,Lots,Ask,Slippage, 0 , 0 , "Pattern_1" , 111 , 0 ,Blue);  
            }
         }
      }
    BU();  
     return ( 0 );
  }
 
alexey1979621 :

이런 단순함에 대해 묻게 될 줄은 꿈에도 몰랐습니다. 컴파일할 때 BU() 함수가 관련되어 있지 않다는 메시지가 발행됩니다. 이제 모든 것이 컴파일되지만 손익분기점 함수는 작동하지 않습니다. 다른 Expert Advisors에서는 정확히 동일한 손익분기점 기능이 작동합니다.




유일한 이유는 잘못된 if(...) return 문입니다. 프로그램 시작 부분에 하나가 있는 것 같습니다.
 

주님!!! 왜 여기 사람들을 혼란스럽게합니까?

iFractals() 는 프랙탈 막대 번호가 아닌 가격을 반환합니다 .

 
tara :

유일한 이유는 잘못된 if(...) return 문입니다. 프로그램 시작 부분에 하나가 있는 것 같습니다.
이것을 제거했습니다. 그러나 문제는 정규화의 다른 곳에 있습니다. 어떤 이유로 고문은 소수점 이하 5자리가 아닌 4자리를 봅니다.
 extern double   Lots             = 0.1 ;
extern string Сomment           = "Pattern_1" ;
extern int TakeProfit           = 10 ;     
extern int StopLoss             = 0 ;   
extern int Step                 = 2 ;   

extern int BULevel              = 2 ;
extern int    NotBULevel         = 2 ;         // Уровень безубытка в пунктах

extern int Slippage             = 2 ; // проскальзывание 
extern int Magic                = 111 ;



//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
{
       if ( Digits == 5 ) // для пятизначного брокера
         {
            TakeProfit *= 10 ;
            StopLoss *= 10 ;
            Slippage *= 10 ;
            Step *= 10 ;
            BULevel *= 10 ;
            NotBULevel *= 10 ;
         }
       return ( 0 );
}
그리고 그것을 고치는 방법?