지표 질문 - 페이지 8

 
heelflip43 :

문제는 val1 및 val2를 재설정하지 않은 것입니다. 따라서 최고점과 최저점을 찾았으면 재설정해야 합니다.

도움이 되기를 바랍니다.
앗 오늘 이따 윈도우 부팅해서 해봐야겠네요 감사합니다

첫 번째 if(statement)가 true이면 start()를 다시 시작하고 코드 상단에서 재설정하여 val1 및 val2를 다시 재설정할 것이라고 생각했습니다.

글쎄, 내가 그것에 대해 생각한 방식은 - if(첫 번째 문) true 다음 인쇄하고 텍스트로 이동합니다. 다음 if(second) false 가능성이 있는 다음 다시 시작 부분으로 돌아가서 val1 및 val2를 재설정합니다.

올바른 인쇄물과 값을 얻고 있지만 계속해서 인쇄합니다.

지금 생각해보면 가장 단순한 EMA 십자가도 연속 인쇄를 생성하는 if(문)에 대해 이것을 결코 알아내지 못했습니다.

게시한 코드를 테스트해 보겠습니다. 하지만 해당 변수를 인쇄하기 위해 인쇄 문을 추가 했는데 계속 인쇄되지 않았다면 놀랄 것입니다.

오늘 나중에 해봐야겠습니다

감사해요
 
예, val1과 val2를 재설정하면 A high가 반환되지만 여전히 이전만큼 많지는 않고 계속해서 모든 것을 인쇄합니다.
이 문제를 해결하려면 currentTime 및 iTime을 사용하여 작업을 수행해야 합니다. 좀 더 검토해야 합니다.

배울 코드 베이스에 이미 ABCD 체계가 있어야 하는 것 같지만 이것은 내가 지금 검토하고 있는 ZigZag 기반 외에는 사용할 수 없는 것으로 보입니다. 그러나 이것은 또한 지표입니다

어쨌든 && macd 또는 무언가를 추가하면 한 번만 인쇄하므로 정말 짜증납니다.
 
나는 그것을 가지고 있다고 생각합니다. 그것에 대해 더 생각하고 조금 더 노력한 후에

이건 어때요:

 //+------------------------------------------------------------------+
//|                                                  Agent86_5min.mq4 |
//|                                                    Unfinished POS |
//|                                    
//+------------------------------------------------------------------+
#property copyright "Unfinished POS by Agent86"


//---- input parameters
extern double     TakeProfit= 20.0 ;
extern double     Lots= 0.1 ;
extern double     StopLoss= 10.0 ;
extern int MagicNumber= 123486 ;

double val1;
double val2;
bool traded = false;
bool A = false;

//++++ These are adjusted for 5 digit brokers.

int      pips2points;     // slippage  3 pips    3=points    30=points
double   pips2dbl;       // Stoploss 15 pips    0.0015      0.00150
int      Digits .pips;     // DoubleToStr(dbl/pips2dbl, Digits.pips)

     // OrderSend(... Slippage.Pips * pips2points, Bid - StopLossPips * pips2dbl
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
   if ( Digits == 5 || Digits == 3 )
   {     // Adjust for five (5) digit brokers.
      pips2dbl    = Point * 10 ; pips2points = 10 ;   Digits .pips = 1 ;
   } 
   else 
    {    
      pips2dbl    = Point ;    pips2points =   1 ;   Digits .pips = 0 ; 
    }
     // OrderSend(... Slippage.Pips * pips2points, Bid - StopLossPips * pips2dbl
     
   
    
//---- 

//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//---- 
   
//----
   return ( 0 );
  }
    
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
   
        
   int i= 0 ;
   int ticket,total,result;
   total = OrdersTotal ();                 
   val1= iFractals ( NULL , 0 , MODE_UPPER, 3 );
   val2= iFractals ( NULL , 0 , MODE_LOWER, 3 ); 


     
     if (val1 > 0 && traded == false && val2== 0 )
      { 
       // in the absence of an && indicator above I get continous print statements
       // also does not print A high this is not desired
       // with indicator added && indicator above, then it prints A and B once as it should ???
       // I need to work this out so it won't print all the time aka trade all the time
       // A and B first values seems to initialize the whole block
       // just a reminder that they time stamps coordinate after this FYI
       // now work on C retrace and possibly signals
       // add options for user to select some candle patterns
       // add options to select indicators
       // add bells and whistles to make things fun
       // alerts,sounds,maybe poppup video animation or something
      
       double B = val1;
       Print (B, " B high" );
         if (val2== 0 )
            {
             for (i= 0 ; val2== 0 ; i++)
               {
               val2= iFractals ( NULL , 0 , MODE_LOWER, i);
               double A = val2;
                   if (A!= 0 )
                     {
                     Print (A, " A low" );
                     }
               }
             }  
      traded=true;
      }
     
     val1= iFractals ( NULL , 0 , MODE_UPPER, 3 );
     val2= iFractals ( NULL , 0 , MODE_LOWER, 3 ); 
     
     if (val2 > 0 && traded == true && val1 == 0 )
      {
      B = val2;
       Print (B, " B low" );
         if (val1== 0 )
            {
             for (i= 0 ; val1== 0 ; i++)
               {
               val1= iFractals ( NULL , 0 , MODE_UPPER, i);
               A = val1;
                   if (A!= 0 )
                     {
                     Print (A, " A high" );
                     }
               }
             }  
      traded=false;
      }
     
                    
                
   return ( 0 );
  }    

//+------------------------------------------------------------------+


      

추가할 때 한 번만 인쇄됩니다.

 if (val1 > 0 && traded == false && val2== 0 )

그리고

 if (val2 > 0 && traded == true && val1 == 0 )


그래서 좀 더 평가할 수 있게 되면서 조금 더 가까워지고 있습니다.

모든 도움에 감사드립니다. 이 문제를 해결하기 위한 아이디어를 얻었고 재설정에 대한 지식도 조금 더 확장했기 때문에 큰 도움이 되었습니다.
뒷주머니에 넣어둬야겠어요

감사해요

 

나는 대부분의 시간에 문제가 발생하지 않습니다. 불확실한 시장에서 때때로 발생하는 동일한 막대에 상위 및 하위 프랙탈 이 있을 때만 발생하는 것 같습니다. 이 문제를 해결하는 유일한 방법은 다음과 같이 막대를 한 번만 계산을 실행하는 것입니다.

 static datetime currTime;
if (Time[ 0 ]!=currTime){
currTime = Time[ 0 ];
// Rest of code
}

이는 양방향으로 가는 프랙탈에서 거짓 거래가 되지 않는다는 것을 의미해야 합니다.

 
이제 나머지 작업을 시작할 수 있습니다. iCustom 표시기 를 EA로 변환하는 것을 이해할 만큼 충분히 경험이 있었으면 합니다. 그러면 아마도 이미 오래전에 해결되었을 것입니다.

지금 하고 있는 방법은 코드 논리와 함께 iCustom 표시기를 추가해야 하기 때문에 더 복잡할 것입니다. 이미 작동하는 iCustomer 표시기를 내 코드 논리로 사용하는 대신 모든 종소리와 휘파람

어쨌든 오늘의 좋은 소식에 다시 한 번 감사드립니다.
 
아니면 귀하의 솔루션도 효과가 있을 것입니다. 저는 제 이론을 테스트하는 동안 귀하의 게시물을 보지 못했습니다.
 
heelflip43 :

나는 대부분의 시간에 문제가 발생하지 않습니다. 불확실한 시장에서 때때로 발생하는 동일한 막대에 상위 및 하위 프랙탈이 있을 때만 발생하는 것 같습니다. 이 문제를 해결하는 유일한 방법은 다음과 같이 막대를 한 번만 계산을 실행하는 것입니다.

이는 양방향으로 가는 프랙탈에서 거짓 거래가 되지 않는다는 것을 의미해야 합니다.

나는 이 부분이 어떻게 더 잘 작동하는지 배울 필요가 있다 나는 전에 그것을 보았고 다른 유사한 버전을 보았지만 부분적으로만 이해했다

이건 좀 더 공부해야겠어요. 이것은 테스트할 때 연속적인 인쇄 문으로 인해 대부분의 코드를 잃어버리는 곳일 수 있습니다.

나는 그것에 대한 다른 방법이 있다고 확신하지만 이에 대한 지표도 만들고 AtoB 등에서 선을 그릴 계획입니다.

좀 더 공부할게
 
여기 내가 지금까지 만든 몇 가지 진전이 있습니다.

누군가는 그것을 잘 사용할 수 있습니다. 전문가가 더 잘 수정할 수 있다고 확신합니다.

어쨌든 내가 원하는 것을 인쇄하고 있으며 사용자가 원하는 수준을 선택할 수 있도록 fibo 수준에 대한 일부 extern 값을 추가했습니다.

포럼에 대한 나의 첫 번째 코드 기여 LOL

누구나 이 작업을 수행할 수 있는 더 좋은 방법이 있습니다. 내 코드가 수행하는 작업을 표시하기 위해 iCustom 표시기 를 추가하기 때문에 이미 코드를 두 배로 늘릴 것으로 예상하지만 이는 배열 버퍼 등에 대한 일종의 이중 코딩을 의미한 다음 iCustom을 사용하는 것을 의미합니다.

어쨌든 여기 내가 얻은 것이 있습니다

 //+------------------------------------------------------------------+
//|                                          Unfinished_POS_slate.mq4 |
//|                                                    Unfinished POS |
//|                                    
//+------------------------------------------------------------------+
#property copyright "Unfinished POS slate by Agent86"


//---- input parameters
extern double     TakeProfit= 20.0 ;
extern double     Lots= 0.1 ;
extern double     StopLoss= 10.0 ;
extern int MagicNumber= 123486 ;
extern double fibo_retrace= 0.500 ; //this is C retracement level
extern double fibo_extension= 1.618 ;   // coming soon, D extention 


double val1;
double val2;
bool traded = false;


//++++ These are adjusted for 5 digit brokers.

int      pips2points;     // slippage  3 pips    3=points    30=points
double   pips2dbl;       // Stoploss 15 pips    0.0015      0.00150
int      Digits .pips;     // DoubleToStr(dbl/pips2dbl, Digits.pips)

     // OrderSend(... Slippage.Pips * pips2points, Bid - StopLossPips * pips2dbl
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
   if ( Digits == 5 || Digits == 3 )
   {     // Adjust for five (5) digit brokers.
      pips2dbl    = Point * 10 ; pips2points = 10 ;   Digits .pips = 1 ;
   } 
   else 
    {    
      pips2dbl    = Point ;    pips2points =   1 ;   Digits .pips = 0 ; 
    }
     // OrderSend(... Slippage.Pips * pips2points, Bid - StopLossPips * pips2dbl
     
   
    
//---- 

//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//---- 
   
//----
   return ( 0 );
  }
   
    
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
   
        
   int i= 0 ;
   int ticket,total,result;
   total = OrdersTotal ();                 
   val1= iFractals ( NULL , 0 , MODE_UPPER, 3 );
   val2= iFractals ( NULL , 0 , MODE_LOWER, 3 ); 

     
     if (val1 > 0 && val2 == 0 && traded == false)
      { 
       double B = val1;
       Print (B, " B high" );
       if (val2== 0 )
         {
         for (i= 0 ; val2== 0 ; i++)
            {
            val2= iFractals ( NULL , 0 , MODE_LOWER, i);
             double A = val2;
             if (A!= 0 )
              {
               Print (A, " A low" );
              }
            }
          }
       double C = B-(B-A)*fibo_retrace; //retrace 50% no fractal
       Print (C, " UP ABC retrace level" );
       if (Bid <= C)
         {
         Print (Bid, " UP ABC C Retrace Hit" );
         }  
      
      
      traded=true;
      }
     
     //val1=iFractals(NULL, 0, MODE_UPPER,3); been suggested I might need to reset these here
     //val2=iFractals(NULL, 0, MODE_LOWER,3); I'll investigate this some more
     
     
     if (val2 > 0 && val1 == 0 && traded == true)
      {
      B = val2;
       Print (B, " B low" );
       if (val1== 0 )
        {
         for (i= 0 ; val1== 0 ; i++)
           {
           val1= iFractals ( NULL , 0 , MODE_UPPER, i);
           A = val1;
           if (A!= 0 )
             {
               Print (A, " A high" );
             }
           }
        }        
             
        C = B+(A-B)*fibo_retrace; //retrace 50% no fractal  //recheck my math on this one
         Print (C, " DOWN ABC retrace level" );
         if (Bid <= C)
           {
           Print (Bid, " DOWN ABC C Retrace Hit" );
           } 
                 
      traded=false;
      }
     
                    
                
   return ( 0 );
  }    

//+------------------------------------------------------------------+
나의 제한된 지식과 경험으로 이것이 내가 ABCD 계획에 대해 생각해낼 수 있는 전부입니다.

사용자가 A와 B를 이전 A와 B를 위반하지 않는 수준으로 변경할 수 있도록 하여 추세 등에 진정으로 머물 수 있도록 더 노력하겠습니다.

누군가가 이것을 사용하거나 더 나은 아이디어로 추가할 수 있기를 바랍니다.

이제 촛불 패턴과 표시기에 추가하여 팝업 알림, 소리 및 일부 팝업 비디오가 재미있을 수 있습니다.

모두 도와주셔서 감사합니다.

 

Доброго времени суток уважаемые форумчане!

Меня зовут Герман, мне 23 года, я являюсь трейдером компании "Инстафорекс"

Помогите в поиске нужного скрипта! Скрипт нужен для сетки отложенных ордеров.

 
GERICH :

Доброго времени суток уважаемые форумчане!

Меня зовут Герман, мне 23 года, я являюсь трейдером компании "Инстафорекс"

Помогите в поиске нужного скрипта! Скрипт нужен для сетки отложенных ордеров.

친구, 저는 InstaForex에 관심이 없습니다. 그리드 스크립트를 원하시면 코더 고용 섹션에 프로젝트 를 게시하십시오.
그리고 영문으로 올려주세요

행복한 거래