KimIV的有用功能 - 页 15 1...8910111213141516171819202122...128 新评论 [删除] 2008.04.28 17:24 #141 KimIV: B_Dima: 如果CCI值高于100,则开立买入头寸,直到该值低于-100,当它低于-100时,则开立卖出头寸,直到它高于100。 对于你,迪马,我可以建议这个功能。 int CCI_period=14; int Applied_Price=PRICE_CLOSE; //+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru | //+----------------------------------------------------------------------------+ //| Версия : 28.24.2008 | //| Описание : Возвращает торговый сигнал: | //| 1 - покупай | //| 0 - сиди, кури бамбук | //| -1 - продавай | //+----------------------------------------------------------------------------+ //| Параметры: | //| sy - наименование инструмента ("" или NULL - текущий символ) | //| tf - таймфрейм ( 0 - текущий таймфрейм) | //| nb - номер бара ( 0 - текущий номер бара) | //+----------------------------------------------------------------------------+ int GetTradeSignal(string sy="", int tf=0, int nb=0) { if (sy=="" || sy=="0") sy=Symbol(); double cci0=iCCI(sy, tf, CCI_period, Applied_Price, nb); double cci1=iCCI(sy, tf, CCI_period, Applied_Price, nb+1); int bs=0; if (cci1<=+100 && cci0>+100) bs=+1; if (cci1>=-100 && cci0<-100) bs=-1; return(bs); } 这个函数在买入时返回1,卖出时返回-1。买/卖条件如你所愿。你现在需要做的就是在每次打勾时做以下工作。 1.获取GetTradeSignal()的值。 2.如果收到的值==0,则不做任何事情。 如果收到的值>0,则关闭所有销售并购买。 4.如果计算值小于0,则关闭所有交易并卖出。 :)))) 当然,谢谢你的帮助,但我的错误,我解释得不够准确,CCI指标的间隔为50,显示了方向和趋势的变化,当价格触及EMA8时,就会出现开盘,也会用止损和止盈等指标来判断修正。图片中的情况是,当CCI突破+100时,在触及EMA时开立买入头寸,CCI在哪里并不重要(+10或-20),主要的是当它越过-100时,开立卖出头寸。在穿越100根蜡烛和建立10个或更多头寸的时间跨度中,CCI>=+100和CCI<=-100可以穿越100根蜡烛。我希望它是清楚的。如果你有任何提示,我将很乐意帮助。 Igor Kim 2008.04.29 01:10 #142 B_Dima писал (а): 我的错误,我没有解释得足够准确。 嗯...你的错误由你来纠正 :-) 我给你的方向是正确的。它将导致目标的实现。所以请继续... [删除] 2008.04.29 08:56 #143 KimIV: 如何使用ModifyOrder()函数的例子。 我决定举出以前被问过很多次的最开始的例子。这是在市场订单执行方面的开仓行为市场观察。它是指我们不能同时下达按市场价格开仓的指令,并将一个挂单附在上面。在Market Watch 上的这种开仓应该分两个阶段进行:首先,我们开一个头寸,然后给它附加一个挂单,即我们设置StopLoss 和TakeProfit 价格水平。 1.买入当前符号的0.1手并设定30点的止损。 int ti=OpenPosition(NULL, OP_BUY, 0.1); if (OrderSelect(ti, SELECT_BY_TICKET)) ModifyOrder(-1, Ask-30*Point, -1, clModifyBuy); 2.卖出当前工具的0.15手,设置SL=45,TP=99 int ti=OpenPosition(NULL, OP_SELL, 0.15); if (OrderSelect(ti, SELECT_BY_TICKET)) ModifyOrder(-1, Bid+45*Point, Bid-99*Point, clModifySell); 预告片中包括一个带有实例的工作脚本。 伊戈尔,请再检查一下--该脚本不起作用。 1)在正常的经纪公司中,对未结订单的数量没有限制(无休止地打开)。 2)在经纪公司中,订单是在市场上打开的 - (错误131)。你可以测试一下,例如用NorthFinance。 Alexei Kharchenko 2008.04.29 09:02 #144 这么多有用的功能摆在那里...也许有人想写一个模板,用来编写一个交易EA,可以根据用户定义的条件,打开和关闭挂单、头寸,设置止盈和止损,修改订单和头寸。这样的模板将允许你快速编写一个EA,其中只有条件块被改变(当然,这部分将由用户根据策略插入)。 如果有来自金的有用的功能,即在使用上有一定的通用性标准,那么为什么不把来自金的交易EA的模板代码布置出来...... Igor Kim 2008.04.29 13:44 #145 Set777 писал (а): 伊戈尔,请再次检查 - 脚本不工作: 1)在正常的经纪公司中,对未结订单的数量没有限制(无限打开) 2)在经纪公司中,订单由市场打开 - (错误131)。你可以测试一下,例如NorthFinance。 1.脚本中没有对开仓数量的检查。你运行脚本多少次,它将打开多少个位置。 错误131 -数量不正确,批量大小。可能是0.15,用0.2代替。 Igor Kim 2008.04.29 14:00 #146 kharko писал (а): 这么多有用的功能布置... 还没有达到我心中所想的五分之一......我将在这里让大家感到无聊,直到秋天。所以请忍受我... kharko 写道(a): 也许有人想写一些写交易顾问的模板,它可以根据用户定义的条件,打开和关闭挂单、头寸,设置止盈和止损,修改订单和头寸... 模板...模板...好主意!谢谢你!但首先是功能... Igor Kim 2008.04.29 14:35 #147 DistMarketAndPos()函数。 我们来了!更多有趣的功能来了!例如,它返回市场和最近的位置之间的距离,单位是点。更准确地选择要检查的位置是由外部参数设定的。 sy- 仪器的名称。如果设置了这个参数,函数将只检查指定仪器的位置。""或NULL表示当前仪器。 op- 贸易操作,职位类型。有效值:OP_BUY、OP_SELL或-1。默认值-1意味着任何位置。 mn- 位置标识符(MagicNumber)。默认值-1 - 任何MagicNumber。 //+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru | //+----------------------------------------------------------------------------+ //| Версия : 19.02.2008 | //| Описание : Возвращает расстояние в пунктах между рынком и ближайшей | //| позицей | //+----------------------------------------------------------------------------+ //| Параметры: | //| sy - наименование инструмента ("" или NULL - текущий символ) | //| op - торговая операция ( -1 - любая позиция) | //| mn - MagicNumber ( -1 - любой магик) | //+----------------------------------------------------------------------------+ int DistMarketAndPos(string sy="", int op=-1, int mn=-1) { double d, p; int i, k=OrdersTotal(), r=1000000; if (sy=="" || sy=="0") sy=Symbol(); p=MarketInfo(sy, MODE_POINT); if (p==0) if (StringFind(sy, "JPY")<0) p=0.0001; else p=0.01; for (i=0; i<k; i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if ((OrderSymbol()==sy) && (op<0 || OrderType()==op)) { if (mn<0 || OrderMagicNumber()==mn) { if (OrderType()==OP_BUY) { d=MathAbs(MarketInfo(sy, MODE_ASK)-OrderOpenPrice())/p; if (r>d) r=NormalizeDouble(d, 0); } if (OrderType()==OP_SELL) { d=MathAbs(OrderOpenPrice()-MarketInfo(sy, MODE_BID))/p; if (r>d) r=NormalizeDouble(d, 0); } } } } } return(r); } Igor Kim 2008.04.29 14:39 #148 使用DistMarketAndPos()的例子。 为什么需要一个函数来确定市场离最近的位置有多远?我看到至少有四个基本选择。 买过或卖过。市场已经朝着我们的方向发展了。而一旦它通过了一些距离,现有的头寸获得了一些利润,我们立即进行存款--在同一方向再次进入。 我们购买或出售。市场朝着我们的方向发展。一旦它走过了一定的距离,而现有的头寸也获得了一定的利润,我们就会立即意识到,就是这样了!"。逆转就在眼前!是时候翻转了。我们关闭目前的头寸,并在相反的方向开仓。 我们购买或出售。市场已经转向对我们不利。但出于某种原因,我们确信自己是对的,在离最近的进场点有一定距离时,也就是在某种程度的亏损时,我们的平均水平和开盘方向是一致的。 我们购买或出售。市场已经对我们不利。而且我们已经意识到,我们进入市场的方式不正确。因此,我们固定在某一水平的损失上,并在另一方向打开。 如果你想具体实现这些选项中的任何一个,请在这里写下你的请求。我将在我所列举的框架内满足所有要求。 附上一个实验DistMarketAndPos()函数的模板。 附加的文件: test_distmarketandpos.mq4 4 kb khorosh 2008.05.01 09:01 #149 亲爱的 KimIV 在你的专家顾问e-TFL_v2 的idPriceLevel() 函数中,有一个错误:在最后一个条件中,gdUpPrice==0 重复了两次。 可能在第二种情况下,你想写成gdDnPrice==0。出于某种原因,该EA在可视化模式下的策略测试器中可以工作,但模拟账户的头寸却没有打开,尽管评论中告知了买入和卖出水平。也许你可以告诉我什么是错的。 Igor Kim 2008.05.01 12:56 #150 khorosh: e-TFL_v2 专家顾问中的bool idPriceLevel() 函数有一个错误:gdUpPrice==0 在最后一个条件中重复了两次,你可能想在第二种情况下写gdDnPrice==0。 谢谢你!我已将e-TFL_v2 的修正版上传到网站。 khorosh。 出于某种原因,该EA在我的策略测试器中以可视化模式运行,但在模拟账户中却不能开仓,尽管它在评论中报告了买入和卖出水平。也许你可以告诉我这是什么问题。 我不知道......我刚刚在NorthFinance演示中完成了对该专家顾问的测试。昨天我在莫斯科的朋友给我打电话。他抱怨的是同一个专家顾问。他说,它按线开仓,然后越来越多,直到你停下来,开了很多仓。因此,有两个测试的目标。 1.关于你的问题。检查一般功能。 2.关于我朋友的问题。我只从一条线上开了一个头寸。 为了检查它,我把e-TFL_v2 专家顾问放在5分钟时间段的EURUSD、GBPUSD、USDCHF和USDJPY。使用趋势线,我在最后20-30个柱子上画了通道。结果,专家顾问如愿以偿地工作了。欧元从底线被买入,而日元从顶线被卖出。对于磅数和糜费,一切也都是正确的。所以你应该自己去检查。专家顾问的工作。 1...8910111213141516171819202122...128 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
如果CCI值高于100,则开立买入头寸,直到该值低于-100,当它低于-100时,则开立卖出头寸,直到它高于100。
对于你,迪马,我可以建议这个功能。
这个函数在买入时返回1,卖出时返回-1。买/卖条件如你所愿。你现在需要做的就是在每次打勾时做以下工作。
1.获取GetTradeSignal()的值。
2.如果收到的值==0,则不做任何事情。
如果收到的值>0,则关闭所有销售并购买。
4.如果计算值小于0,则关闭所有交易并卖出。
:)))) 当然,谢谢你的帮助,但我的错误,我解释得不够准确,CCI指标的间隔为50,显示了方向和趋势的变化,当价格触及EMA8时,就会出现开盘,也会用止损和止盈等指标来判断修正。图片中的情况是,当CCI突破+100时,在触及EMA时开立买入头寸,CCI在哪里并不重要(+10或-20),主要的是当它越过-100时,开立卖出头寸。在穿越100根蜡烛和建立10个或更多头寸的时间跨度中,CCI>=+100和CCI<=-100可以穿越100根蜡烛。我希望它是清楚的。如果你有任何提示,我将很乐意帮助。
我的错误,我没有解释得足够准确。
嗯...你的错误由你来纠正 :-)
我给你的方向是正确的。它将导致目标的实现。所以请继续...
如何使用ModifyOrder()函数的例子。
我决定举出以前被问过很多次的最开始的例子。这是在市场订单执行方面的开仓行为市场观察。它是指我们不能同时下达按市场价格开仓的指令,并将一个挂单附在上面。在Market Watch 上的这种开仓应该分两个阶段进行:首先,我们开一个头寸,然后给它附加一个挂单,即我们设置StopLoss 和TakeProfit 价格水平。
1.买入当前符号的0.1手并设定30点的止损。
2.卖出当前工具的0.15手,设置SL=45,TP=99
预告片中包括一个带有实例的工作脚本。伊戈尔,请再检查一下--该脚本不起作用。
1)在正常的经纪公司中,对未结订单的数量没有限制(无休止地打开)。
2)在经纪公司中,订单是在市场上打开的 - (错误131)。你可以测试一下,例如用NorthFinance。
这么多有用的功能摆在那里...也许有人想写一个模板,用来编写一个交易EA,可以根据用户定义的条件,打开和关闭挂单、头寸,设置止盈和止损,修改订单和头寸。这样的模板将允许你快速编写一个EA,其中只有条件块被改变(当然,这部分将由用户根据策略插入)。
如果有来自金的有用的功能,即在使用上有一定的通用性标准,那么为什么不把来自金的交易EA的模板代码布置出来......
伊戈尔,请再次检查 - 脚本不工作:
1)在正常的经纪公司中,对未结订单的数量没有限制(无限打开)
2)在经纪公司中,订单由市场打开 - (错误131)。你可以测试一下,例如NorthFinance。
1.脚本中没有对开仓数量的检查。你运行脚本多少次,它将打开多少个位置。
错误131 -数量不正确,批量大小。可能是0.15,用0.2代替。
这么多有用的功能布置...
还没有达到我心中所想的五分之一......我将在这里让大家感到无聊,直到秋天。所以请忍受我...
也许有人想写一些写交易顾问的模板,它可以根据用户定义的条件,打开和关闭挂单、头寸,设置止盈和止损,修改订单和头寸...
DistMarketAndPos()函数。
我们来了!更多有趣的功能来了!例如,它返回市场和最近的位置之间的距离,单位是点。更准确地选择要检查的位置是由外部参数设定的。
使用DistMarketAndPos()的例子。
为什么需要一个函数来确定市场离最近的位置有多远?我看到至少有四个基本选择。
如果你想具体实现这些选项中的任何一个,请在这里写下你的请求。我将在我所列举的框架内满足所有要求。
附上一个实验DistMarketAndPos()函数的模板。
谢谢你!我已将e-TFL_v2 的修正版上传到网站。
我不知道......我刚刚在NorthFinance演示中完成了对该专家顾问的测试。昨天我在莫斯科的朋友给我打电话。他抱怨的是同一个专家顾问。他说,它按线开仓,然后越来越多,直到你停下来,开了很多仓。因此,有两个测试的目标。
1.关于你的问题。检查一般功能。
2.关于我朋友的问题。我只从一条线上开了一个头寸。
为了检查它,我把e-TFL_v2 专家顾问放在5分钟时间段的EURUSD、GBPUSD、USDCHF和USDJPY。使用趋势线,我在最后20-30个柱子上画了通道。结果,专家顾问如愿以偿地工作了。欧元从底线被买入,而日元从顶线被卖出。对于磅数和糜费,一切也都是正确的。所以你应该自己去检查。专家顾问的工作。