[存档!]任何菜鸟问题,为了不使论坛变得混乱。专业人士,不要路过。没有你,哪里都不能去 - 4. - 页 463

 
borilunad:

滑点,开盘价后,至少有30个5!
啊,我明白你的意思了。我有偏差集
 
nemo811:
这是我的想法。我现在就去试试。谢谢你。

另外,有些括号的位置不正确。

    for (i=OrdersTotal()-1;i>=0;i--)
    {
        if (!OrderSelect (i, SELECT_BY_POS, MODE_TRADES))
        {Alert ("Ошибка ", GetLastError(), " выбора ордера!");}
        else
        {
            SMB = OrderSymbol();
            SchBuyLotsSMB = 0;
            SchSellLotsSMB = 0;
            for (ii=OrdersTotal()-1;ii>=0;ii--)
            {
                if (!OrderSelect (ii, SELECT_BY_POS, MODE_TRADES))
                {Alert ("Ошибка ", GetLastError(), " выбора ордера!");}
                else
                {
                    if (OrderSymbol() == SMB)
                    {
                        if (OrderType()==OP_BUY) {SchBuyLotsSMB +=OrderLots();}
                        if (OrderType()==OP_SELL) {SchSellLotsSMB += OrderLots();}
                    }
                }
            }
            MarketLotSMB=SchBuyLotsSMB-SchSellLotsSMB;
            if (MarketLotSMB == 0.0) continue;
            RefreshRates();
            if (MarketLotSMB<0)
            {
                MarketLotSMB = MathAbs (MarketLotSMB);
                Price = MarketInfo (SMB, MODE_ASK);
                OPENORDER ("Buy", SMB, MarketLotSMB, Price);
            }
            else if (MarketLotSMB>0)
            {
                Price = MarketInfo (SMB, MODE_BID);
                OPENORDER ("Sell", SMB, MarketLotSMB, Price);
            }            
        }
    }

而且我们还需要考虑到,在第二个周期中有一个订单的重新分配,在第二个周期之后(如果不是测试者),例如,SMB可能是!=OrderSymbol()。

 
TarasBY:

另外,有些括号的位置不正确。

而且你还必须考虑到,在第二个周期中,有一个订单的整体分配,在第二个周期结束后(如果它不是一个测试器),例如,SMB可能是!=OrderSymbol()。

好样的!你的变体是有效的。

真诚地感谢你。


borilunad- 也谢谢你。

 
TarasBY:

另外,有些括号是错误的。

我在自己的版本中正确地加了括号,也成功了。

再次感谢。

 

granit77

我不同意。不需要超越mql,不需要从图表中删除EA。 通过在EA代码中提供这一点,以编程方式阻止交易就足够了。

竺可桢
对!对!对仅适用于远程控制的例外情况。

谢谢你的反馈,但我还是不知道哪个更好,我已经选择了。

PostMessageA(WindowHandle(Symbol(),Period()), WM_COMMAND, 33050, 0);

现在我有另一个问题,我应该在代码中加入什么,以便它不会立即响起,而是在一定的触发量之后(例如:Kol=3)。

#property show_inputs
#include <WinUser32.mqh>
extern int Kol=3;

int start()
{
OrderSend(Symbol(),OP_SELL,0.05,Bid,333,0,0,"Тест",0,0,CLR_NONE);
while(!IsTradeAllowed()) Sleep(1000);
PostMessageA(WindowHandle(Symbol(),Period()), WM_COMMAND, 33050, 0);
return(0);
}

预先感谢

 

你好!

我已经开始为Aroon指标建立一个EA。我从来没有想过要使用MT4中没有的指标。我不能让它工作: (((((

我只是无法得到提示或建议我的错误。

附加的文件:
 
Sarguss:

你好!

我已经开始为Aroon指标建立一个EA。我从来没有想过要使用MT4中没有的指标。我不能让它工作: (((((

我无法得到提示,也无法建议我的错误。

这是非常有趣的代码。

Up1 = Highest(Symbol(),"Aroon_Horn2",MODE_HIGH,Aroon_Period-1,0);
 Up2 = Highest(Symbol(),"Aroon_Horn2",MODE_HIGH,Aroon_Period-1,1);
      Dn1 = Lowest(Symbol(),"Aroon_Horn2",MODE_LOW,Aroon_Period-1,0);
   Dn2 = Lowest(Symbol(),"Aroon_Horn2",MODE_LOW,Aroon_Period-1,1);

Highest()和Lowest()是用户函数?如果没有,你在哪里找到这样的建筑?
如果你想从指标中获取数值,你应该使用iCustom() 函数。

 
TarasBY:

这是一个非常有趣的代码。

Highest()和Lowest()是自定义函数吗?如果没有,你在哪里找到这样的结构?
如果你想从指标中获取数值,你应该使用iCustom() 函数。

这是我从指标中直觉到的。一定很有趣 :)

这是唯一的错误吗?

当我把专家顾问放在演示版上时,它说 "2012.10.26 21:49:56 2012.10.22 23:59 Trommel 300+Aroon CADJPY,H1: iLowest函数的参数2是无效的整数。

2012.10.26 21:49:56 2012.10.22 23:59 Trommel 300+Aroon CADJPY,H1: invalid integer number as parameter 2 for iHighest function" but intersection Up & Down works.

 
TarasBY:

这是非常有趣的代码。

Highest()和Lowest()是自定义函数?如果没有,你从哪里挖出这样的结构?
如果你想从指标中获取数值,你应该使用iCustom() 函数。

我为这些愚蠢的问题道歉,并感谢你。

Shas wikidid.

2012.10.26 21:59:19 2012.10.22 23:59 Trommel 300+Aroon CADJPY,H1:自定义指标名称必须为字符串

2012.10.26 21:59:19 2012.10.22 23:59 Trommel 150+Aroon CADJPY,H1: 指标调用函数的参数2为无效整数

 
Sarguss:

我为这些愚蠢的问题道歉,并感谢你。

它是一种灯芯草。

2012.10.26 21:59:19 2012.10.22 23:59 Trommel 300+Aroon CADJPY,H1:自定义指标名称必须为字符串

2012.10.26 21:59:19 2012.10.22 23:59 Trommel 150+Aroon CADJPY,H1: 指标调用函数的参数2为无效整数

你有没有听说过关于可变类型的事情?第一个错误 - 在提到的iCustom()中,指标名称必须是字符串(即 "指标名称")。

第2个错误--你已经在同一个iCustom()中正确输入了要传递给指标的参数。

这是一个理论,但要在实践中理解它,请翻阅别人的代码(代码库里有很多),并翻阅这些例子。