任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 146 1...139140141142143144145146147148149150151152153...1178 新评论 Viktar Dzemikhau 2013.09.16 07:51 #1451 我通常通过单独的功能发送订单。我想对此进行优化,这样我就可以用一个函数同时发送挂单和市价订单。 请告知如何正确地实施它? 在发送挂单 时,我们应该检查高于(低于)买入价的开盘价,并考虑到一些其他方面。 让我们看看别人是怎么做的。让我们来看看金正日使用的最简单的变体。 //+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru | //+----------------------------------------------------------------------------+ //| Версия : 21.03.2008 | //| Описание : Открывает позицию и возвращает её тикет. | //+----------------------------------------------------------------------------+ //| Параметры: | //| sy - наименование инструмента (NULL или "" - текущий символ) | //| op - операция | //| ll - лот | //| sl - уровень стоп | //| tp - уровень тейк | //| mn - MagicNumber | //+----------------------------------------------------------------------------+ int OpenPosition(string sy, int op, double ll, double sl=0, double tp=0, int mn=0) { color clOpen; datetime ot; double pp, pa, pb; int dg, err, it, ticket=0; string lsComm=WindowExpertName()+" "+GetNameTF(Period()); if (sy=="" || sy=="0") sy=Symbol(); if (op==OP_BUY) clOpen=clOpenBuy; else clOpen=clOpenSell; for (it=1; it<=NumberOfTry; it++) { if (!IsTesting() && (!IsExpertEnabled() || IsStopped())) { Print("OpenPosition(): Остановка работы функции"); break; } while (!IsTradeAllowed()) Sleep(5000); RefreshRates(); dg=MarketInfo(sy, MODE_DIGITS); pa=MarketInfo(sy, MODE_ASK); pb=MarketInfo(sy, MODE_BID); if (op==OP_BUY) pp=pa; else pp=pb; pp=NormalizeDouble(pp, dg); ot=TimeCurrent(); ticket=OrderSend(sy, op, ll, pp, Slippage, sl, tp, lsComm, mn, 0, clOpen); if (ticket>0) { if (UseSound) PlaySound(NameFileSound); break; } else { err=GetLastError(); if (pa==0 && pb==0) Message("Проверьте в Обзоре рынка наличие символа "+sy); // Вывод сообщения об ошибке Print("Error(",err,") opening position: ",ErrorDescription(err),", try ",it); Print("Ask=",pa," Bid=",pb," sy=",sy," ll=",ll," op=",GetNameOP(op), " pp=",pp," sl=",sl," tp=",tp," mn=",mn); // Блокировка работы советника if (err==2 || err==64 || err==65 || err==133) { gbDisabled=True; break; } // Длительная пауза if (err==4 || err==131 || err==132) { Sleep(1000*300); break; } if (err==128 || err==142 || err==143) { Sleep(1000*66.666); if (ExistPositions(sy, op, mn, ot)) { if (UseSound) PlaySound(NameFileSound); break; } } if (err==140 || err==148 || err==4110 || err==4111) break; if (err==141) Sleep(1000*100); if (err==145) Sleep(1000*17); if (err==146) while (IsTradeContextBusy()) Sleep(1000*11); if (err!=135) Sleep(1000*7.7); } } return(ticket); } 他根本不检查任何东西。我们可以看到,他的功能只用于开立市场订单。 我认为这不符合逻辑。如果你发送一个订单,它将是任何类型的。如果你按照我的想法来写,乍一看会太长。 总的来说,我是在请求帮助和提示如何更好地落实这些要点。 Artyom Trishkin 2013.09.16 09:42 #1452 hoz:我通常通过单独的功能发送订单。我想对此进行优化,这样我就可以用一个函数同时发送挂单和市价订单。请告知如何正确地实施它?在发送挂单时,我们应该检查高于(低于)买入价的开盘价,并考虑到一些其他方面。让我们看看别人是怎么做的。让我们来看看金正日使用的最简单的变体。他根本不检查任何东西。我们可以看到,他的功能只用于开立市场订单。 我认为这不符合逻辑。如果你发送一个订单,它将是任何类型的。如果你按照我的想法来写,乍一看会太长。 总的来说,请让我在如何更好地实施这些要点方面寻求帮助和提示。好吧,伊戈尔的函数执行的正是函数名称中指出的任务。所有的调整和检查都需要在调用这个函数之前完成。毕竟,函数本身只做分配给它的任务--它用传递给它的参数(进入函数)打开位置,没有别的。它在所有必要的错误处理方面做得非常好。缺少什么--自己开发。 打个比方:当你在商店购买速溶咖啡时,不会向它提供沸水和糖以及其他成分的自动混合--你最好知道如何自己制作咖啡。 [删除] 2013.09.16 12:03 #1453 伙计们,是否有可能...请在不同的循环条件下重写... 也就是说,有一个奇妙的bbands_stop指标。 for (shift=Nbars-Length-1;shift>=0;shift--) { smax[shift]=iBands(NULL,0,Length,Deviation,0,PRICE_CLOSE,MODE_UPPER,shift); smin[shift]=iBands(NULL,0,Length,Deviation,0,PRICE_CLOSE,MODE_LOWER,shift); if (Close[shift]>smax[shift+1]) trend=1; if (Close[shift]<smin[shift+1]) trend=-1; bsmax[shift]=smax[shift]+0.5*(MoneyRisk-1)*(smax[shift]-smin[shift]); bsmin[shift]=smin[shift]-0.5*(MoneyRisk-1)*(smax[shift]-smin[shift]); if (trend>0) UpTrendBuffer[shift]=bsmin[shift]; else DownTrendBuffer[shift]=bsmax[shift]; } 有没有可能写一个类似于前一个结果的代码。但为了一个循环。 for(i = 0; i <= limit; i++) { 我已经坐了第二天了;我找不到它...... Any rookie question, so 请帮忙将这个5分钟趋势公式改写成ea 用于BBands_stop_v1的EA FEAR 2013.09.16 12:27 #1454 大家好,当然这个问题很愚蠢,要使1个点值1美元,需要多少手数? Mihail Marchukajtes 2013.09.16 12:48 #1455 0.1 PapaYozh 2013.09.16 12:49 #1456 FEAR: 大家好,当然问题是愚蠢的,为了让1个点值1美元,需要多少手。 这取决于地段大小。 PapaYozh 2013.09.16 12:49 #1457 nikelodeon: 0.1 并非总是 Mihail Marchukajtes 2013.09.16 12:53 #1458 PapaYozh: 并非总是 根据肩部.... Mihail Marchukajtes 2013.09.16 12:53 #1459 0.1在1:100的杠杆作用下 PapaYozh 2013.09.16 12:55 #1460 nikelodeon: 根据肩部.... nikelodeon: 0.1,杠杆率为1:100 在谈到项目风格时,肩部是不相关的。 1...139140141142143144145146147148149150151152153...1178 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
我通常通过单独的功能发送订单。我想对此进行优化,这样我就可以用一个函数同时发送挂单和市价订单。
请告知如何正确地实施它?
在发送挂单 时,我们应该检查高于(低于)买入价的开盘价,并考虑到一些其他方面。
让我们看看别人是怎么做的。让我们来看看金正日使用的最简单的变体。
他根本不检查任何东西。我们可以看到,他的功能只用于开立市场订单。
我认为这不符合逻辑。如果你发送一个订单,它将是任何类型的。如果你按照我的想法来写,乍一看会太长。
总的来说,我是在请求帮助和提示如何更好地落实这些要点。
我通常通过单独的功能发送订单。我想对此进行优化,这样我就可以用一个函数同时发送挂单和市价订单。
请告知如何正确地实施它?
在发送挂单时,我们应该检查高于(低于)买入价的开盘价,并考虑到一些其他方面。
让我们看看别人是怎么做的。让我们来看看金正日使用的最简单的变体。
他根本不检查任何东西。我们可以看到,他的功能只用于开立市场订单。
我认为这不符合逻辑。如果你发送一个订单,它将是任何类型的。如果你按照我的想法来写,乍一看会太长。
总的来说,请让我在如何更好地实施这些要点方面寻求帮助和提示。
好吧,伊戈尔的函数执行的正是函数名称中指出的任务。所有的调整和检查都需要在调用这个函数之前完成。毕竟,函数本身只做分配给它的任务--它用传递给它的参数(进入函数)打开位置,没有别的。它在所有必要的错误处理方面做得非常好。缺少什么--自己开发。
打个比方:当你在商店购买速溶咖啡时,不会向它提供沸水和糖以及其他成分的自动混合--你最好知道如何自己制作咖啡。
伙计们,是否有可能...请在不同的循环条件下重写...
也就是说,有一个奇妙的bbands_stop指标。
for (shift=Nbars-Length-1;shift>=0;shift--)
{
smax[shift]=iBands(NULL,0,Length,Deviation,0,PRICE_CLOSE,MODE_UPPER,shift);
smin[shift]=iBands(NULL,0,Length,Deviation,0,PRICE_CLOSE,MODE_LOWER,shift);
if (Close[shift]>smax[shift+1]) trend=1;
if (Close[shift]<smin[shift+1]) trend=-1;
bsmax[shift]=smax[shift]+0.5*(MoneyRisk-1)*(smax[shift]-smin[shift]);
bsmin[shift]=smin[shift]-0.5*(MoneyRisk-1)*(smax[shift]-smin[shift]);
if (trend>0)
UpTrendBuffer[shift]=bsmin[shift];
else
DownTrendBuffer[shift]=bsmax[shift];
}
有没有可能写一个类似于前一个结果的代码。但为了一个循环。
for(i = 0; i <= limit; i++) {
我已经坐了第二天了;我找不到它......
大家好,当然问题是愚蠢的,为了让1个点值1美元,需要多少手。
0.1
并非总是
根据肩部....
0.1,杠杆率为1:100
在谈到项目风格时,肩部是不相关的。