任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 553

 
splxgf:
这不是一个错误,是一个特点。你可以到这里https://www.mql5.com/ru/articles/1388

YOOOOO谢谢你!哦,伙计。一次点击就解决了问题。
 
AlexeyVik:

在数学中,"0 "就是 "0",而在你的案例中,"0 "是某个价格,一切从它开始。

如果开盘价是1.3926,正如splexgf 建议的那样,那么0将在1.3926/123*100=1.1322或1.3926/1.23=1.1322。

这一价格变动的1%将是(1.3926-1.1322)/100=0.0026

此外,我希望,你会自己想出办法。


亲爱的先生们,这简直是一派胡言。菲波是建立在2个点上的,请看我之前写的内容。你不能从1.3926这个点计算出任何东西。看看欧元在1.13的时候 :)

参考价格是Fibo的0水平(4H、日、周、月、年的最低/最高值...),它是一个完全具体的价格,而不是一个数学上的0。零点和100% Fibo是这一时期价格的最低和最高值。那么23%作为从0水平的进入点也是可以理解的,TP为38%等等。

 
splxgf:


在这种情况下,这是一个不同的故事,可以在初级数学的水平上用百分比来解决。

PercentStep=(OrderTakeProfit-OrderOpenPrice)/(138-23) - 这将是1%的鹦鹉。坦率地说,有时你将不得不根据顺序类型或模数来交换操作数。

那么

StoplossLevel = OrderOpenPrice + PercentStep*(51-23) //LevelWLoss 在Kim的术语中,但这应该为每个订单计算。

MoveStoplossLevel = OrderOpenPrice + PercentStep*(76-23) //LevelProfit - 见上文。


非常感谢您的答复和公式。我将试一试。
 

我无法得到第四个缓冲区的值。我做错了什么?

#property indicator_separate_window
#property indicator_buffers 4
#property  indicator_color1 Lime
#property  indicator_color2 Yellow
#property  indicator_color3 Red
#property  indicator_color4 Aqua
//--- input parameters
extern int       Period_MA_1=14;
extern int       p2          =7;
//--- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double ExtMapBuffer3[];
double ExtMapBuffer4[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,ExtMapBuffer1);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,ExtMapBuffer2);
   SetIndexStyle(2,DRAW_LINE);
   SetIndexBuffer(2,ExtMapBuffer3);
   SetIndexStyle(3,DRAW_LINE);
   SetIndexBuffer(3,ExtMapBuffer4);
   IndicatorDigits(Digits+1);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int counted_bars=IndicatorCounted(),                      
    limit;
    double MA_1_t,MA_2_t;
    if(counted_bars>0)
    counted_bars--;
    limit=Bars-counted_bars;
    
   for(int i=0;i<limit;i++)
   {
   ExtMapBuffer1[i]=Close[i]-Close[i+Period_MA_1];
   ExtMapBuffer2[i]=MathAbs(ExtMapBuffer1[i]);
   ExtMapBuffer3[i]=ExtMapBuffer1[i]/ExtMapBuffer2[i];
   ExtMapBuffer4[i]=iMAOnArray(ExtMapBuffer3, 0, p2, 0, MODE_SMA,i);
   }
   
   return(0);
  }
 
Forexman77:

我无法得到第四个缓冲区的值。我做错了什么?


我的例子中有几个循环。摆脱了不必要的东西?
 

你好。

你能告诉我为什么在EA设置窗口中,我不能勾选 "允许DLL调用 "的选项吗?

终端设置 中,它也被启用。它在其他EA上是可以的。

我正在尝试自己写这个EA。它使用iCustom指标,iCustom需要访问DLL。

谢谢你的帮助。

 
Vinin:

我的例子中有几个循环。你是否摆脱了不必要的东西?
试过不同的方法,但如果我这样做。
#property indicator_separate_window
#property indicator_buffers 4
#property  indicator_color1 Lime
#property  indicator_color2 Yellow
#property  indicator_color3 Red
#property  indicator_color4 Aqua

//--- input parameters
extern int       Period_MA_1=14;
extern int       p2          =7;
extern int       p3          =5;
extern int       p4          =3;
//--- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double ExtMapBuffer3[];
double ExtMapBuffer4[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_NONE);
   SetIndexBuffer(0,ExtMapBuffer1);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,ExtMapBuffer2);
   SetIndexStyle(2,DRAW_LINE);
   SetIndexBuffer(2,ExtMapBuffer3);
   SetIndexStyle(3,DRAW_LINE);
   SetIndexBuffer(3,ExtMapBuffer4);
   IndicatorDigits(Digits+1);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int counted_bars=IndicatorCounted(),
   i,limit1,limit2,limit3,limit4;
   limit1=Bars-counted_bars-1;
   limit2=limit1;
   limit3=limit2;
   limit4=limit3;
   if(limit1>0) 
     {
      limit1=Bars-Period_MA_1-1;
      limit2=limit1-p2;
      limit3=limit2-p3;
      limit4=limit3-p4;
     }

   for(i=limit1;i>=0;i--) ExtMapBuffer1[i]=Close[i]-Close[i+Period_MA_1];
   for(i=limit2;i>=0;i--) ExtMapBuffer2[i]=MathAbs(ExtMapBuffer1[i]);
   for(i=limit3;i>=0;i--) ExtMapBuffer3[i]=ExtMapBuffer1[i]/ExtMapBuffer2[i];
   for(i=limit4;i>=0;i--) ExtMapBuffer4[i]=iMAOnArray(ExtMapBuffer3, 0, p2, 0, MODE_SMA,i);

   return(0);
  }

第三和第四个缓冲区不算数。我不知道错误在哪里。我在这一领域的知识是不够的。

最好不要把所有东西都放到不同的缓冲区,而是像这样计算主要部分。

 ExtMapBuffer1[i]=(Close[i]-Close[i+Period_MA_1])/MathAbs(Close[i]-Close[i+Period_MA_1]);
但在这种情况下,根本就没有什么。
 
Forexman77:
我已经尝试了不同的方法,但如果我这样做。

第三和第四个缓冲区不算数。我不知道错误在哪里。我在这一领域的知识是不够的。

最好不要把所有东西都塑造成不同的缓冲区,像这样计算主要部分。

但在这种情况下,根本就没有什么。


根据你的公式,结果将是1或-1。这是真的吗?还是你在期待一个不同的结果?
 
Vinin:

根据你的公式,结果将是1或-1。这是真的吗?还是你期望的结果不同?

是的,第三个缓冲区将是1或-1。而第四个缓冲区则是计算这些参数的移动平均值

在第三个缓冲区中,除以的数值被乘以100,但这并不是一个问题。

 
Forexman77:

是的,第三个缓冲区将是1或-1。而第四个缓冲区则是计算这些参数的移动平均值。

在第三个缓冲区中,除以的数值被乘以100,但这并不是一个问题。


//+------------------------------------------------------------------+
//|                                                      ProjectName |
//|                                      Copyright 2012, CompanyName |
//|                                       http://www.companyname.net |
//+------------------------------------------------------------------+
#property indicator_separate_window
#property indicator_buffers 2
#property  indicator_color1 Lime
#property  indicator_color2 Yellow

//--- input parameters
extern int       Period_MA_1=14;
extern int       p2=7;
//--- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_HISTOGRAM);
   SetIndexBuffer(0,ExtMapBuffer1);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,ExtMapBuffer2);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int counted_bars=IndicatorCounted(),
   i,limit1,limit2;
   limit1=Bars-counted_bars-1;
   limit2=limit1;
   if(limit1>0)
     {
      limit1=Bars-Period_MA_1-1;
      limit2=limit1-p2;
     }

   for(i=limit1;i>=0;i--) 
     {
      ExtMapBuffer1[i]=1;
      if(Close[i]<Close[i+Period_MA_1])
         ExtMapBuffer1[i]=-1;
     }
   for(i=limit2;i>=0;i--) ExtMapBuffer2[i]=iMAOnArray(ExtMapBuffer1,0,p2,0,MODE_SMA,i);

   return(0);
  }
//+------------------------------------------------------------------+
原因: