[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 5. - 页 134

 
klyuchnikk:

大家好。

我有一个专家顾问,在历史上工作(用于分析)。我在其中手动设置了一个参数--下订单的时间(小时、分钟)。我在设定的日期范围内运行EA,改变订单时间并再次运行它。我每天做96次(15分钟后)。我怎样才能使它循环,使它自己这样做?

我可以帮你吗?
 
artmedia70:
我再次问:你到底想什么时候下订单?不要 用你的代码来回答(我不想了解它--我们有足够的自己的代码来分析),而只是用文字 回答。

例如:我想在该距离的MA上方/下方放一个停顿,前提是......。......哒哒哒哒哒......。

这是我第二次要求你解释。我们早就解决了你的问题。


目前,问题是这样的:fastMa 越过slowMa 向上.........所以我们正在寻找哪里可以买到。然后我们等待价格,即Ask(因为我们考虑买入)将达到fastMa( 嗯,我想不会有准确的值,我们需要+-一些偏差,它被重新命名为i_thresholdFromMa,一旦价格达到fastMa +- i_thresholdFromMa ,专家顾问应该在(fastMa + buyHear * pt) 放置BUYSTOP

我想出的方法在一个终端中不起作用,而在另一个终端中却起作用,在另一个终端中也不一定起作用。总的来说是有问题的。

这里是buyHear函数的最后一个变体。

//+-------------------------------------------------------------------------------------+
//| Открытие длинной позиции                                                            |
//+-------------------------------------------------------------------------------------+
bool OpenBuy()
{
   int ticket = -1;
   double OOP = fastMa + buyHear * pt;
   
   if ((ND(OOP) - Ask) >= g_stopLevel)           
   {
       if (ND(OOP) > Ask)           // Проверка что цена открытия выше Ask, т.к. у нас вход отложенником
       {
           ticket = OrderSend(Symbol(), OP_BUYSTOP, 0.1, ND(OOP), 3, 0, 0, NULL, i_magic, 0);
       }
   }
   if (ticket > 0)
   {
       return (true);
   }
   else
    
   Alert (GetLastError());
}
以下是输入参数。
extern double i_thresholdFromMa = 5;                           // Отступ от МА
extern double buyHear = 10,                                    // Расстояние от МА до отложки на бай

int init()
{
   if (Digits == 1 || Digits == 3 || Digits == 5)
       pt = Point * 10;
}

在截图上可以看到错误(在OrderSend()中,价格被输入到红色珠子上方,而截图上看到的订单是在....)。

开盘价合

artmedia70:
还有一件事:如果你把fastMA和slowMA定义为全局,为什么要把它们传到函数中?反正所有的函数都可以看到它们,不需要把它们的参数传给被调用的函数。

而在它们不是全局性的之前,它们是在特定的函数中声明的,而不是在启动中。但由于它们没有在任何一个函数中使用,所以每次都得到它们在某种程度上,比方说,是 "作为一个程序员的坏习惯 "的表现,在不同的函数中出现相同的代码行是不舒服的。

Artyom,你认为我一开始就得到了正确的手腕吗?我的意思是,在每一个刻度 上都会收到价值。这不是太贵了吗?因为我的学历不是程序员,这些问题有时会出现在我身上...

 
Tincup:

答案我不太清楚,所以让我再问一次。我对你的理解是否正确,在设置交易条件时

你应该使用相应条数的MA值,而不是图片中标有黄色箭头的值,向后退。

我按照我对你的答案的理解画了这个图。



其实这个问题有点偏。问题不在于曲线的移动,而在于专家顾问需要从缓冲区获得哪个条形的数值。这就是需要了解的情况。而且,偏置和从缓冲器中获取数值之间没有对应关系。
 

你好

第一个问题


A=true

如果15分钟前的Imacd值(主线)小于30分钟前

 
Claus084:

你好

第一个问题

A=true

如果15分钟前的Imacd值(主线)小于30分钟前

不,最好往前走!
 
doubleiMACD( string symbol, int timeframe, int fast_ema_period, int slow_ema_period, int signal_period, int applied_price, int mode, int shift)
移动平均线收敛/背离指标的计算。在OMA被称为MACD直方图的系统中,该指标被画成两条线。 在客户终端,移动平均线的收敛/背离被画成直方图。
参数。
标志 - 符号的名称,将根据其数据计算指标。NULL表示当前符号。
时限 - 期间。可以是图表 中的一个时期。0表示当前图表的周期。
快速的马氏周期 - 计算快速移动平均线的平均周期。
缓和期 - 计算慢速移动平均线的平均周期。
信号周期 - 信号线计算的平均周期。
应用价格 - 使用的价格。可以是任何一个价格常数
模式 - 指示线指数。可以是任何一个指标行的标识符 值。



这里的问题是


,如果我理解正确的话
- 从指标缓冲区收到的数值的索引(相对于当前条形图,向后移动指定的周期数)。


什么时期的数量?
或者我如何从上一个条形图而不是当前条形图中获取macd的值?

开始()。
{
bool A=trueif
(iMACD(NULL,15,12,26,9,PRICE_CLOSE,MODE_MAIN,1)<iMACD(NULL,15,12,26,9,PRICE_CLOSE,MODE_SIGNAL,2) ) { A=true; } return; }


 

点击图表 中的时期,看看哪些时期!并找到上一栏(shift = 1)到当前栏(shift = 0)的最后位置。

double MA0 = iMACD(symbol,timeframe,fast_ema_period,slow_ema_period,signal_period,applied_price,mode,0);//текущий бар
double MA1 = iMACD(symbol,timeframe,fast_ema_period,slow_ema_period,signal_period,applied_price,mode,1);//предыдущий бар


或者更好的是,开始学习S.科瓦廖夫的教科书!
 
请告知,在 "开盘价 "测试模式下,测试者是 使用开盘价,还是开盘价、收盘价、最高价和最低价?
 
xant:

又见面了。

请告知如何解决以下问题。

有一个指标是以汇编的形式出现的。该代码是不可用的。该指标反映了主图表窗口中的价格水平。我想在我的EA中使用这些水平,但不可能使用iCustom()函数调用指标--显示的水平是图形对象。是否有可能以其他方式读取数据,例如通过对象名称和时间?所有级别的名称都是已知的(可在指标设置中获得),对象每周更新一次。

我想马上说,我在编程方面还不是很有经验,如果能得到有用的答复,我将非常感激。

这是个好主意。图形对象是通过名称来识别的。水平可以由两种(基本)类型的图形对象指定:OBJ_TREND(趋势线)和OBJ_HLINE(水平线)。按照我的理解,你需要这些对象的两个属性(价格和可能的时间)。

    //---- Уровень для горизонтальной линии
    double ld_Level = ObjectGet (Name, OBJPROP_PRICE1);
    //---- Уровень для трендовой линии на текущем баре
    ld_Level = ObjectGetValueByShift (Name, Bar);
    datetime ldt_Time = ObjectGet (Name, OBJPROP_TIME1);
类似这样的事情。
 
Sancho77:
请告知:在 "开盘价 "的测试模式中,测试者是否只使用开盘价、收盘价、最高价和最低价?

是的,只有公开价格,这就是为什么在分析EA时要考虑它的原因。例如,如果蜡烛的尾部打破了你的通道,那么EA可能不会注意到它,但你可以在程序逻辑中写出这一点,并解决这个问题。