[警告关闭!]任何新手问题,为了不给论坛添乱。专业人士,不要走过。没有你,哪里都不能去。 - 页 482

 
Urain писал(а)>>

编写一个bool函数()来检查价格和设定的止损点之间的差异是否大于StopLoss(来自marketinfo)。

则为真,否则为假。

那么在开单之前,你应该检查if(function())并开单。


如果我设置的止损比这家经纪公司的止损多30%,为什么我还需要它?

khorosh 写道>>

2和3点是错误的。右图:买入时的止损和止盈与卖出时的止损和止盈与买入时的止盈相抵。
检查很简单。计算一下,如果止盈被触发,你将通过你的变体获得什么收益。它将不等于点数的TakeProfit。在拟议的变体中,它将是完全平等的。


因此,我像以前一样修改了它,得到了同样的结果。 我只留下了价格的正常化。
但测试器中的错误仍然存在,最有趣的是,它不是对所有的订单,而是对其中一些订单重复出现。
在10个订单中,有1个出现了4107错误,其他9个没有错误地返回。

 

Помогите пожфлуйста с индикаторами: 1-й чтобы не убирал разметку на графике. 2-й чтобы лини старших ТФ были внешними на младших и чтобы можно было задать отоброжение(после того как задаешь отоброжение сразу все нормально пока не перещелкнешь ТФ,после этого все линии младших ТФ на старших)нии младших ТФ на старших)

 
我忘了...
附加的文件:
macd.rar  7 kb
 
2
附加的文件:
multi.rar  9 kb
 
baltik писал(а)>>


如果我在经纪公司设置的止损比止损水平高30%,为什么我需要它?


所以我按原样重新做了一遍,结果还是一样,我只留下了价格正常化。
但在测试器中,错误仍然存在。 最有趣的是,我在几个订单中出现了错误,但不是所有的订单都出现了错误。
10个中的1个出现了错误4107,其他9个没有错误地被处理。


给我看一下代码,让我们看一下。
 
Noterday >>:
Народ, у меня проблема, причем никак не могу допетрить в чем дело, особо не пинайте.
Есть стандартный MACD, хочу в индикаторе отметить все пики столбцов (значками), вот код:
Таким образом я нарисовал все экстремумы в индикаторе. Всё ОК, НО!
Когда функцией Print я вывожу значения всех найденых пиков
то вот что выходит:
Я так понимаю что 2147483647 это нули или пустые значения?

那么,难道没有人可以帮忙吗?:)

 
Noterday писал(а)>>

那么,难道没有人可以帮忙吗?:)


问题似乎出在MAX和MIN数组上。
你是否用SetIndexBuffer()将它们链接到指标缓冲区?

 
是的,当然了 :)
 
Noterday писал(а)>>
是的,当然了 :)


你是否使用 IndicatorBuffers()函数?

 
以下是完整的代码。
#property indicator_separate_window
#property indicator_buffers 4

#property indicator_color1 MediumPurple
#property indicator_color2 MediumPurple
#property indicator_color3 Green
#property indicator_color4 Red

#property indicator_width3 1
#property indicator_width4 1


extern int FastEMA=12;
extern int SlowEMA=26;
extern int SignalSMA=9;

double MMACD1[];
double SMACD1[];
double MAX[];
double MIN[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{

SetIndexStyle(0,DRAW_HISTOGRAM);
SetIndexStyle(1,DRAW_LINE);

SetIndexStyle(2,DRAW_ARROW);
SetIndexStyle(3,DRAW_ARROW);
SetIndexArrow(2,119);
SetIndexArrow(3,119);

SetIndexDrawBegin(1,SMACD1);
IndicatorDigits(Digits+2);

SetIndexBuffer(0,MMACD1);
SetIndexBuffer(1,SMACD1);
SetIndexBuffer(2,MAX);
SetIndexBuffer(3,MIN);

IndicatorShortName("MACD("+FastEMA+","+SlowEMA+","+SignalSMA+")");
SetIndexLabel(0,"MACD");
SetIndexLabel(1,"Signal");

return(0);
}
//+------------------------------------------------------------------+
//| Moving Averages Convergence/Divergence |
//+------------------------------------------------------------------+
int start()
{
int limit;
int counted_bars=IndicatorCounted();

if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;

for(int i=0; i<limit; i++)
MMACD1[i]=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i);

for(i=0; i<limit; i++)
SMACD1[i]=iMAOnArray(MMACD1,Bars,SignalSMA,0,MODE_SMA,i);

for(i=0; i<limit; i++)
{
if(MMACD1[i+1] > MMACD1[i+2] && MMACD1[i+1] > MMACD1[i])
MAX[i+1] = MMACD1[i+1];

if(MMACD1[i+1] < MMACD1[i+2] && MMACD1[i+1] < MMACD1[i])
MIN[i+1] = MMACD1[i+1];
}

for(i=0; i<limit; i++)
{
if (MAX[i+1] != EMPTY_VALUE)
Print(MAX[i+1]);
}

return(0);
}
//+------------------------------------------------------------------+

原因: