코딩 도움말 - 페이지 777

 
Algo_W :

이를 위해 IMaOnArray를 구현하는 방법을 잘 모르겠습니다. 나는 그것이 해결책이라고 생각합니까? 히스토그램에 대한 ADX의 이동 평균을 얻을 수 있는 사람이 있습니까?

고맙습니다

 #property indicator_type1 DRAW_LINE

#property indicator_type1 DRAW_LINE
for ( int i = limit- 1 ; i >= 0 ; i--)
   Buffer1[i] = iADX ( NULL , PERIOD_CURRENT , 14 , PRICE_CLOSE , MODE_MAIN , i);
   
for (i = limit- 1 ; i >= 0 ; i--)   
   Buffer2[i] = iMAOnArray (Buffer1, 0 , 5 , 0 , MODE_SMA , i);
 
Naguisa Unada :

안녕하세요 나구이사님!

나는 당신의 우물을 신뢰합니까?

mtf BB 표시기를 조정해 주셔서 감사하고 감사하다는 말을 전하고 싶습니다. 나는 그것이 매력처럼 작동한다고 말할 수 있습니다.


나구이사! 내가 할 수 있는지 추가로 문의하기 위해 이 표시기를 조정할 수 있으므로 피보나치 수 또는 홀수 및 짝수 시간 프레임과 같은 다른 사용자 지정 유명인을 볼 수 있으며 반드시 MT4에만 해당되는 것은 아닙니다. 가능한가요?

 

코딩 도와주세요.

어떻게 코딩할 수 있어

ma 끝점에 광고 오른쪽 광선.?

 
guner :

코딩 도와주세요.

어떻게 코딩할 수 있어

ma 끝점에 광고 오른쪽 광선.?

막대 0에서 선택한 MA의 값과 동일한 PRICE1 및 PRICE2 값과 막대 0의 시간과 동일한 TIME1을 사용하여 TIME2가 미래의 어딘가에 있는 동안 추세 개체를 그립니다. 모든 눈금 에서 MA를 다시 계산하고 그에 따라 PRICE1 및 PRICE2를 설정하고 모든 새 막대에서 새 TIME1을 설정합니다.

 

안녕하세요 여러분,


저는 Mark Whistler의 "Volatility 조명" 책을 공부하고 있으며 그가 구축한 지표, 특히 WAVE-PM에 대해 더 깊이 파고드는 데 관심이 있습니다.
Whistler는 책에 mq4 코드를 게시했으며 여기에 사본도 있습니다. http://fxcodebase.com/code/viewtopic.php?f=38&t=64011

그러나 내 의도는 내 주요 차트 플랫폼이기 때문에 표시기를 tradingview로 이식하는 것입니다. 기본적인 pinescript를 알고 있지만 원래 스크립트의 코드와 같은 C로 읽기가 정말 어렵습니다.
누군가 코드를 살펴보고 코드가 하는 일의 논리를 대략적으로 말해 줄 수 있습니까?

책에서 Whistler는 지표에 대해 많이 말하지 않고 " 더 큰 분포 내에서 단기 분포의 '압축'을 시각적으로 식별합니다. "



내가 이해한 바에 따르면 오실레이터는 볼린저 밴드 의 상위 밴드와 하위 밴드 사이의 차이를 나타내며 값은 0-1 범위에서 정규화되고 시간에 따라 플롯됩니다.

코드에서 두 개의 오실레이터(ShortBandsPeriod 및 LongBandsPeriod)가 생성되지만 for 주기에 빠져들고 있음을 알 수 있습니다. 일부 수학 계산(제곱, 지수 거듭 제곱, 접선?) 이 있다는 것만 알 수 있습니다. 그러나 불행하게도 왜 그리고 어떻게 만들어지는지 이해할 수 없습니다.

 .
.
.
for (i=limit; i>= 0 ; i--){
   
             
                avg= iMA ( NULL , 0 ,ShortBandsPeriod, 0 , MODE_SMA , PRICE_CLOSE ,i+ShortBandsShift);
                
                sum= 0 ;
                
                 for (j=ShortBandsPeriod- 1 ; j>= 0 ; j--){
                 temp = Close [i+j] - avg;
                 sum = sum + temp * temp;
                }
         
                ShortDev[i]= ShortBandsDeviations * MathSqrt (sum / ShortBandsPeriod);
        ShortDev1[i] = MathPow ((ShortDev[i] / Point ), 2 );
                
                
                     //if  ( i < limit - Chars)
                         //{
         
                        
                          temp= 0 ;
                                 for (j=Chars- 1 ; j>= 0 ; j--){                             
                                 temp = temp + ShortDev1[i+j];
                                }
                        
            temp = MathSqrt (temp / Chars) * Point ;
             if (temp != 0 )
                        {
                temp = ShortDev[i] / temp;
            }

                                
         
                        ShortOscillator[i] = MathTanh (temp);
                                
                   //}
   }
.
.
.


따라서 어떤 도움, 제안 또는 힌트를 주시면 감사하겠습니다.

파일:
WAVE-PM.mq4  5 kb
 

안녕하세요, 여러분, 일부 코더가 이 피셔 표시기를 수정하는 데 도움을 줄 수 있습니까?

예, 아주 오래된 표시기이며 다시 칠하지만 몇 가지 중요한 정보가 있습니다. 모든 촛불이 닫힐 때 표시기의 상태를 분석하고 싶습니다. 감사하겠습니다.

우리는 다시 그리기 기능 을 변경하지 않고 자동 새로 고침을 추가하기만 하면 됩니다. 표시기를 새로 고치고 모든 촛불이 닫힐 때 상태를 기록하지만 다음 촛불이 시작되는 동안 자체를 새로 고치지 마십시오.

내 나쁜 영어에 대해 죄송합니다. 미리 감사합니다.

파일:
fisher1.mq4  3 kb
 

안녕 얘들아!

나는 당신의 모든 것을 잘 믿습니까?

동적 영역 포럼에서 이 표시기를 찾았지만 제대로 작동하지 않으며 관대한 코더가 이를 고칠 수 있다면 매우 감사하겠습니다.

여기에 붙이고,

미리 감사드립니다.

 
Mkurugenzi :

안녕 얘들아!

나는 당신의 모든 것을 잘 믿습니까?

동적 영역 포럼에서 이 표시기를 찾았지만 제대로 작동하지 않으며 관대한 코더가 이를 고칠 수 있다면 매우 감사하겠습니다.

여기에 붙이고,

미리 감사드립니다.

@나구이사 우나다


나는 당신의 우물을 신뢰합니까?


친절하게도, 위의 내 마지막 게시물을 보고 모든 지표가 작동하지 않더라도 최소한 일부를 수정할 수 있는 위치에 있는지 확인하시겠습니까?


귀하의 노력과 시간과 자원에 미리 감사드립니다.

 

코더 여러분! 누군가 이 EA를 수정하는 데 도움을 줄 수 있습니까?

이것은 x분/시간 동안 지속되는 x분 지정가 주문을 던지는 단순한 매수 저가 매도 고가 EA입니다.


내가 생각하는 개선 사항은 필터를 추가하는 것입니다. 스토캐스틱이나 RSI라고 합시다.

따라서 스토캐스틱이 40보다 낮을 때 = 구매 제한 시작

그리고 스토캐스틱이 60보다 높을 때 = 판매 제한 시작

그리고 그 사이 그것은 아무것도 시작하지 않습니다



이게 가능해? 미리 감사드립니다.

EA를 붙인다


나는 좋은 결과로 장변 또는 단변을 실행하기로 결정하여 EA를 "수동으로" 사용했습니다.

파일:
WIDE_HARD.mq4  8 kb
EA-FXblue.png  68 kb
 
안녕하세요. 내 나쁜 영어에 대해 즉시 사과하십시오. 어렵지 않다면 어드바이저 코드를 도와주세요. 즉, 위치를 열고 닫는 조건을 수정합니다. 로봇에 대해 조금 이야기하자면 로봇은 지그재그 표시기의 회전에서 위치를 열고 닫습니다.
이 시스템은 MT4에 지그재그 표시가 있는지 여부에 관계없이 작동해야 합니다.
 //+------------------------------------------------------------------+
//|                                       Test advisor on ZigZag.mq4 |
//|                        Copyright 2017, MetaQuotes Software Corp. |
//|                                         https:/goga342@yandex.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright c 2010, MQL для тебя."
#property link "http://mql4you.ru"
#property strict
extern double lots = 0.01 ; //
extern int   TakeProfit= 60 ; //
extern int   StopLoss= 100 ; //
extern int Magic= 111111111 ;
extern int Slippage= 3 ;
extern int ExtDepth= 12 ;
extern int ExtDeviation= 5 ;
extern int ExtBackstep= 3 ;

datetime Today= 0 ;
double SL,TP;
int ticket;
//±-----------------------------------------------------------------+
int OnInit ()
  {
   if ( Digits == 3 || Digits == 5 )
     {
      TakeProfit *= 10 ;
      StopLoss   *= 10 ;
      Slippage   *= 10 ;
     }
   return ( INIT_SUCCEEDED );
  }
//±-----------------------------------------------------------------+
int deinit() { return ( 0 );}
//±-----------------------------------------------------------------+
int start()
  {

   if (DayOfWeek()== 0 || DayOfWeek()== 6 ) return ( 0 ); // в выходные не работаем
   if (!IsTradeAllowed()) return ( 0 ); // пропустим тик если терминал занят
                                     //:проверим открытие новой свечи
   if (Time[ 0 ]==Today) return ( 0 );
   Today=Time[ 0 ];
//:получим значение ZigZag на предыдущей свече
   double lZZ= iCustom ( NULL , 0 , "ZigZag" ,ExtDepth,ExtDeviation,ExtBackstep, 0 , 1 );
   double lZZ_= iCustom ( NULL , 0 , "ZigZag" ,ExtDepth,ExtDeviation,ExtBackstep, 0 , 0 );
// открытие продаж

   if (CountSell()== 0 && lZZ==Low[ 0 ] && lZZ_==Low[ 0 ])
     {
      SL = NormalizeDouble (Bid+StopLoss* Point , Digits );
      TP = NormalizeDouble (Bid-TakeProfit* Point , Digits );
        {

         ticket= OrderSend ( Symbol (),OP_SELL,lots,Bid,Slippage,SL,TP, "macd sample" ,Magic, 0 ,Red);
         if (ticket> 0 )
           {
             // закрытие продаж
     //        if(CountSell()>0 && iCustom(NULL,0,"ZigZag_Rosh",12,5,3,0,1)==High[0] && iCustom(NULL,0,"ZigZag_Rosh",48,20,12,0,1)==High[0])
              {
               for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--)
                 {
                   if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES)== true )
                    {
                     if (OrderMagicNumber()==Magic && OrderType()==OP_SELL)
                         if (OrderClose(OrderTicket(),OrderLots(),Ask,Slippage, clrNONE ))
                           Print ( "Ошибка открытия ордера на покупку !" );
                    }
                 }
              }
           }
        }
     }
// открытие покупок

 //  if(CountBuy()==0 && iCustom(NULL,0,"ZigZag_Rosh",12,5,3,0,1)==High[0] && iCustom(NULL,0,"ZigZag_Rosh",48,20,12,0,1)==High[0])
     {
      TP = NormalizeDouble (Ask+TakeProfit* Point , Digits );
      SL = NormalizeDouble (Ask-StopLoss* Point , Digits );
        {
         ticket= OrderSend ( Symbol (),OP_BUY,lots,Ask,Slippage,SL,TP, "macd sample" ,Magic, 0 ,Green);
         if (ticket> 0 )
           {
             // закрытие покупок    
       //     if(CountBuy()>0 && iCustom(NULL,0,"ZigZag_Rosh",12,5,3,1,0)==Low[0] && iCustom(NULL,0,"ZigZag_Rosh",48,20,12,1,0)==Low[0])
              {
               for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--)
                 {
                   if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES)== true )
                    {
                     if (OrderMagicNumber()==Magic && OrderType()==OP_BUY)
                         if (!OrderClose(OrderTicket(),OrderLots(),Bid,Slippage, clrNONE ))
                           Print ( "Ошибка открытия ордера на продажу!" );
                    }
                 }
              }
           }
        }
     }
   return ( 0 );
  }
//+------------------------------------------------------------------+
int CountSell() //проверкна открытие ордеров на продажу
  {
   int count= 0 ;

   for ( int trade= OrdersTotal ()- 1 ; trade>= 0 ; trade--)
     {
       if ( OrderSelect (trade,SELECT_BY_POS,MODE_TRADES))
        {
         if (OrderSymbol()== Symbol () && OrderMagicNumber()==Magic && OrderType()==OP_SELL)
           {
             if (OrderType()==OP_SELL)
               count++;
           }
        }
     }
   return (count);
  }
//+------------------------------------------------------------------+
int CountBuy() // проверкна открытие ордеров на покупку
  {
   int count= 0 ;

   for ( int trade= OrdersTotal ()- 1 ; trade>= 0 ; trade--)
     {
       if ( OrderSelect (trade,SELECT_BY_POS,MODE_TRADES))
        {
         if (OrderSymbol()== Symbol () && OrderMagicNumber()==Magic && OrderType()==OP_BUY)
           {
             if (OrderType()==OP_BUY)
               count++;
           }
        }
     }
   return (count);
  }
//+------------------------------------------------------------------+

오프닝 세일

 if (CountSell()== 0 && iCustom ( NULL , 0 , "ZigZag_Rosh" , 12 , 5 , 3 , 1 , 0 )==Low[ 0 ] && iCustom ( NULL , 0 , "ZigZag_Rosh" , 48 , 20 , 12 , 1 , 0 )==Low[ 0 ])

마감 판매

       if (CountSell()> 0 && iCustom ( NULL , 0 , "ZigZag_Rosh" , 12 , 5 , 3 , 0 , 1 )==High[ 0 ] && iCustom ( NULL , 0 , "ZigZag_Rosh" , 48 , 20 , 12 , 0 , 1 )==High[ 0 ])
              

오프닝 구매

 if (CountBuy()== 0 && iCustom ( NULL , 0 , "ZigZag_Rosh" , 12 , 5 , 3 , 0 , 1 )==High[ 0 ] && iCustom ( NULL , 0 , "ZigZag_Rosh" , 48 , 20 , 12 , 0 , 1 )==High[ 0 ])
     

마감 매수

 if (CountBuy()> 0 && iCustom ( NULL , 0 , "ZigZag_Rosh" , 12 , 5 , 3 , 1 , 0 )==Low[ 0 ] && iCustom ( NULL , 0 , "ZigZag_Rosh" , 48 , 20 , 12 , 1 , 0 )==Low[ 0 ])