编码帮助 - 页 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:

嗨,Naguisa!

我相信你很好?

我想感谢你对mtf BB indcator的调整,我可以告诉你,它的工作就像一个魅力。


Naguisa!如果可以的话,我想进一步询问一下,这个指标是否可以调整,以便人们可以看到不同的自定义时间框架,例如斐波那契数字或任何奇数和偶数时间框架,而不一定是只适用于MT4的。

 

请提供编码帮助。

如何编码

右边的射线到马的端点。

 
guner:

请提供编码帮助。

如何编码

在一个MA端点上添加右射线?

绘制趋势对象,PRICE1和PRICE2的值等于你在第0条上选择的MA值,TIME1等于第0条的时间,而TIME2是未来的某个地方。在每个tick重新计算MA,并相应地设置PRICE1和PRICE2,在每个新的bar上设置新的TIME1。

 

大家好。


我正在学习马克-惠斯勒的 "Volatility illuminated "一书,我对他建立的指标感兴趣,特别是WAVE-PM,想深入了解。
惠斯勒在书中公布了mq4代码,这里也有一份http://fxcodebase.com/code/viewtopic.php?f=38&t=64011

然而,我的意图是将指标移植到tradingview,因为这是我的主要图表平台,我知道一些pinescript的基础,但我发现真的很难读懂原始脚本的C语言代码。
谁能看一下代码,并告诉我它的大致逻辑是什么?

在书中,惠斯勒对这个指标并没有多说什么,只是说"从视觉上识别短期分布在大分布中的'压缩'"。



据我所知,震荡器代表布林带 上下带之间的差异,然后在0-1的范围内将该值归一化,并沿时间方向绘制。

在代码中,我看到有两个震荡器被创建(ShortBandsPeriod和LongBandsPeriod),但随后我就陷入了循环之中......我只能看到有一些数学计算(一个平方、一个指数幂和一个切线?),但不幸的是,我无法掌握为什么以及如何进行 计算

.
.
.
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
 

嗨,伙计们,一些编码员可以帮助修改这个Fisher指标吗?

是的,这是一个非常老的指标,而且是重绘的,但它有一些有价值的信息。我想分析每根蜡烛收盘时指标的状态。我将会很感激。

我们不改变重绘功能,只是增加自动刷新功能。当每根蜡烛收盘时,让指标刷新并记录状态,但在下一根蜡烛开始时不刷新自己。

对不起,我的英语不好,谢谢。

附加的文件:
fisher1.mq4  3 kb
 

大家好!

我相信你们都很好?

我在动态区域论坛上发现了这些指标,但它们不能正常工作,如果有慷慨的编码员可以修复它们,我将非常感激。

我把它们附在这里。

衷心感谢您的到来。

 
Mkurugenzi:

大家好!

我相信你们都很好?

我在动态区域论坛上发现了这些指标,但它们不能正常工作,如果有慷慨的编码员可以修复它们,我将非常感激。

我把它们附在这里。

衷心感谢您的到来。

@Naguisa Unada


我相信你很好?


请你查看我上面的最后一个帖子,看看你是否能够至少修饰一些(如果不是全部)指标,使其发挥作用?


我们感谢你的努力、时间和资源。

 

嗨,编码员们!谁能帮我修改这个EA?

这是一个简单的买低卖高的EA,每隔X分钟抛出限价单,持续X分钟/小时。


我认为改善它的方法是为它添加一个过滤器。比方说随机指标或RSI。

因此,当随机指标低于40时=启动买入限制。

而当随机指标高于60时=启动卖出限制

而在这两者之间 它没有启动任何东西



这可能吗?先谢谢你。

我附上该EA


我已经 "手动 "使用了该EA,决定运行它,并取得了良好的效果。

附加的文件:
WIDE_HARD.mq4  8 kb
EA-FXblue.png  68 kb
 
你好。 马上为我糟糕的英语道歉。 如果不难的话,请帮助解决顾问代码的问题。 也就是说,要纠正开仓和平仓的条件。 关于机器人的一点,机器人在之字形指标的转折处开仓和平仓。
这个系统应该是有效的,无论MT4中是否有Zig zag指标。
//+------------------------------------------------------------------+
//|                                       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])