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

 
solnce600:

非常感谢您的帮助。

但在测试器中,每分钟 的蜡烛都会打开交易。信息。在这个链接中http://clip2net.com/s/2T98Y

我想让它在5分钟 的蜡烛上开一个订单,但不是在每个 蜡烛

而且只有当当前的 五分钟蜡烛图>或=30点 (从开盘价到其最大值)时,才会出现。

也就是说,在零点=当前五分钟期间的开盘价的第三十个点上开一个市场订单。

如果当前五分钟的蜡烛图从开盘价到最高价不到30个点,那么就不要开市场订单。

只要把EA放到五分钟的图表上,就会像你写的那样。

或者将代码中的Open[0]替换为iOpen(Symbol(), PERIOD_M5, 0),那么它将在任何图表中工作。

你的代码中的第二个条件是,当前5分钟的收盘价>=订单的开盘价。

不,Close[0]是第0条的当前收盘价,也就是说,只是当前价格。你可以直接写Bid,结果是一样的。


也就是说,不会有很多订单,我在Excel中计算过,自1999年以来--双向的欧元订单比3000多一点。

我们进入下一个五分钟,如果它,即当前五分钟>或= 30点,我们在第三十点开盘,如果更少,我们进入下一个五分钟......以此类推,直到图表的最后。

但问题 是,据粗略估计,大多数>或=30点 的5分钟计划, 飞过15点的可能性要比被30点止损关闭的可能性大得多。

你有一个条件-- 如果没有未结订单

但在我的系统中,可以连续形成两个具有上述参数的 五分钟时段 如果前一个五分钟时段的订单没有被关闭,那么在第二个五分钟时段就不会有订单被打开。

我需要在每5分钟开一个订单,参数如上所述,无论交易中是否有任何订单。

好吧,那就让我们改变条件。所以它就出来了。

int start()

{

 double Price=iOpen (Symbol (),PERIOD_M5,0)+300*Point;        
 double SL=NormalizeDouble (Price-300*Point, Digits);         
 double TP=NormalizeDouble (Price+150*Point, Digits);    
 
 int last_order_bar = 0;
 int ot = OrdersTotal();

 if (ot>0) //если есть ордера в рынке
 {
   if (OrderSelect (ot-1,SELECT_BY_POS)) //выбрали последний ордер
      if (OrderType ()==OP_BUY || OrderType ()==OP_SELL) //проверили тип
         last_order_bar = iBarShift (Symbol (),PERIOD_M5,OrderOpenTime ()); //запомнили, на каком 5-минутном баре открыт последний ордер (если он есть)
 }
 
 if (OrdesTotal()==0 || last_order_bar>0) //если ордеров нет либо последний открыт не на текущем баре
    if (Bid>=Price)                       //если текущая цена доползла до цены открытия
       int Ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,SL,TP );

}
 
beginner:
我对顾问、物品感兴趣--我自己画蜡烛吗?

你可以理解这个原则。

//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//|  Автор : TarasBY, taras_bulba@tut.by                                              |
//+-----------------------------------------------------------------------------------+
//|        Рисуем на чарте бары                                                       |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
void fDraw_Bars (string fs_Pref,          // Префикс имени объекта
                 int fi_NUMPeriod,        // Индекс (номер) периода, на котором будет виден объект
                 bool fb_IsNullBar,       // флаг рисования 0-го бара
                 double ar_Price[][][4])  // Массив с ценами
{
    int      li_widht = 6;
    string   ls_Name;
    color    lc_color = Aqua;
    datetime ldt_Time;
//----
    //---- Определяем время текущей свечи (её место в истории)
    if (fb_IsNullBar) {ldt_Time = Time[0];}
    else {ldt_Time = Time[1];}
    //---- Рисуем свечу
    ls_Name = StringConcatenate (fs_Pref, "_Candle_", TimeToStr (ldt_Time));
    if (ar_Price[0][1][3] < ar_Price[0][1][0]) {lc_color = Red;} else {if (ar_Price[0][1][3] == ar_Price[0][1][0]) {li_widht = 8;} else {lc_color = Blue;}}
    fDraw_OBJ (ls_Name, OBJ_TREND, ldt_Time, ar_Price[0][1][3], ar_Price[0][1][0], lc_color, li_widht, fi_NUMPeriod, "", 0, 10, "Arial", 0);
    //---- Рисуем тени свечи
    ls_Name = StringConcatenate (fs_Pref, "_Shadow_", TimeToStr (ldt_Time));
    if (ar_Price[0][1][3] <= ar_Price[0][1][0]) {lc_color = Gold;} else {lc_color = DeepSkyBlue;}
    fDraw_OBJ (ls_Name, OBJ_TREND, ldt_Time, ar_Price[0][1][1], ar_Price[0][1][2], lc_color, 1, fi_NUMPeriod, "", 0, 10, "Arial", 0);
//---- 
}
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
 
Diubakin:
你看了测试器中该功能的测试EA吗?无论有多少个订单--两个或二十个,它都能准确地以最大利润关闭最大损失。
目前,关于函数的问题还没有定论,因为我明天会在你的测试EA中粘贴一些更多的函数,做一个纯实验。我在视觉模式下观察过,几乎所有的双倍收盘都是最后一个,较早的一个收盘在SL和TP,也就是说我没有什么可选择的。为了让大家有所选择,我去掉了 "停 "和 "取"。明天,我将展示你的专家顾问的所有附加功能和评论!你将能够亲自看到这个功能是如何工作的。我真的希望它能表明我是错的!"。如果我是对的,我将努力做到最好!明天见!
 
alsu:

只要把你的EA留在五分钟的图表上,它就会像你写的那样。

或者用iOpen(Symbol(), PERIOD_M5, 0)替换代码中的Open[0],那么它将在任何图表中工作。

不,Close[0]是第0条的当前收盘价,也就是说,只是当前价格。你可以直接写Bid,结果是一样的。


好吧,那我们就改变一下条件。它出来了。




非常感谢您的帮助,没关系的。但......

1.在一些五分钟内,有超过1个订单打开。

2.有些订单在止损单上被关闭,其价格与代码中规定的价格不同。

我在所附文件中标记了订单数据。

 
alsu:

只要把专家顾问扔到5分钟图上,就会像你写的那样。

或者用iOpen(Symbol(), PERIOD_M5, 0)替换代码中的Open[0],那么它将在任何图表中工作。

不,Close[0]是第0条的当前收盘价,也就是说,只是当前价格。你可以直接写Bid,结果是一样的。


好吧,那我们就改变一下条件。它出来了。




非常感谢你的帮助,没关系的。但......

1.在一些五分钟内,有超过1个订单打开。

2.一些订单被止损单关闭,其价格与代码中规定的价格不同。

有关上述订单的信息可在此链接中找到

http://clip2net.com/s/2Tfym

 

对不起.请帮助.我正在复制一个有一些变化的程序.编译器给我一个错误:'(' -函数 定义意外 F:\forex\MetaTrader NordFX\experts\ia.mq4 (305, 16) 。

这是什么意思?

- 我试图删除这块程序--它也说了以下的话。

- 试着不改变这部分 - 结果是一样的(同样的错误)。

上的本地程序编译成功。

 
TarasBY:

这个原则可以理解。



谢谢你!
 
lopuh:

对不起,请帮助我。我正在复制一个有一些变化的程序。编译器给我的错误:'(' - 函数定义意外 F:\forex\MetaTrader NordFX\experts\ia.mq4 (305, 16) 。

这是什么意思?

- 我试图删除这块程序--它也说了以下的话。

- 试着不改变这部分 - 结果是一样的(同样的错误)。

上的本地程序编译成功。

在这里

该错误表明你在另一个函数中定义了一个函数。所有的功能都必须全局定义

 

需要一些帮助。

寻找任何知道如何在某个时间点进行截图的函数或脚本,例如在打开/关闭一个姿势时。

当我不需要的时候,偶尔也会遇到一个,但现在我找不到了。

帮助!
 
DhP:

需要一些帮助。

寻找任何知道如何在某个时间点进行截图的函数或脚本,例如在打开/关闭一个姿势时。

当我不需要的时候,我偶尔会遇到一个,但现在我找不到了。

帮助!
Igor Kim有一个专家顾问,在给定的时间间隔内进行截图