[警告关闭!]任何新手问题,为了不给论坛添乱。专业人士,不要走过。没有你,哪里都不能去。 - 页 341 1...334335336337338339340341342343344345346347348...1145 新评论 Stepan241 2009.12.08 15:56 #3401 亲爱的新手们!这里讨论的一些问题非常具体,确实值得提示和帮助。但有些,嗯,坦率地说,产生于这样一个事实,即开始编程的一些EXPERT作家甚至没有阅读MCL的教科书。提示:下载该教程(5mb)并阅读它,你将不必等待论坛的答案--它将在你的头脑中出现。 Oleg 2009.12.08 16:00 #3402 costy_ >> : 保存的指示参数在模板初始化过程中被 "输入 "到指标中一次,然后 "它们变得完全独立"/。 所有改变的指标参数都保存在模板中,如果你已经改变了指标参数,请重新保存模板。 >> 谢谢你! Stepan241 2009.12.08 16:04 #3403 mazepa 08.12.2009 17:42 回答:关于CODE! 如果我理解的算法,那么在设定的时间,我们打开买入(卖出),如果价格已经超过另一个方向>10点,那么我们关闭订单并站在相反的方向上。 为了关闭,我正在使用我自己的通用功能。 // void _CloseAllOrder() { for(int i=0; i<OrdersTotal(); i++) //交叉所有货币的所有订单 { if (OrderSelect(i,SELECT_BY_POS)==true) //如果订单被成功选中 { if (OrderSymbol() !=Symbol()) continue; //如果订单是 错误的货币,继续搜索 { switch(OrderType()) //在需要的订单中,确定类型(Bue_Sell)并关闭它 { case 0:OrderClose(OrderTicket(),OrderLots(),Bid,2);break; case 1:OrderClose(OrderTicket(),OrderLots(),Ask,2);break; } } } } return; } 所以现在在反方向开盘前你只要写_CloseAllOrder() 编码帮助 [WARNING CLOSED!] Any newbie 问吧! [删除] 2009.12.08 16:23 #3404 朋友们,我只是在学习。请不要看程序的内容,只要帮我找到程序中的一个错误。 int start() { switch(CurrentState) { case STATE_SHORT: MyOrderTicket =OrderSend(Symbol(), OP_SELL, Lots, Bid, 1, 0, 0,NULL, 1, 0, Red); OrderSelect(MyOrderTicket,SELECT_BY_TICKET); if (OrderModify(OrderTicket(), OrderOpenPrice(), Bid+90*Point, Bid-Profit1*Point, 0, Green) ==true) {CurrentState=STATE_1; break; } case STATE_1: OrderSelect(MyOrderTicket,SELECT_BY_TICKET); if(Ask <= OrderTakeProfit() ) {CurrentState=STATE_SHORT; break; } if(Bid >= (OrderOpenPrice()+Profit1*Point) {CurrentState=STATE_SHORT; break; } //---- return(0); } 错误情况如下。\end_of_program' - 不平衡的左括号。错误在哪里? [WARNING CLOSED!] Any newbie [存档!]任何菜鸟问题,为了不给论坛添乱。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 2. 初学者的问题 MQL4 MT4 MetaTrader TheXpert 2009.12.08 16:27 #3405 Klinskih >> : 朋友们,我只是在学习。请不要看程序的内容,只要帮我找到程序中的一个错误。 明白了。 if(Bid >= (OrderOpenPrice()+ Profit1*Point) 需要。 if(Bid >= OrderOpenPrice()+ Profit1*Point) costy_ 2009.12.08 16:46 #3406 如何声明一个一维数组而不对每个存储单元应用写操作(是否可能)? ии[1]=ExtMapBuffer1[0]; ии[2]=ExtMapBuffer2[0]; ии[3]=ExtMapBuffer3[0]; 而是由一个一维的序列 ии[3]={ExtMapBuffer1[0],ExtMapBuffer2[0],ExtMapBuffer3[0]} 还是一维序列只适用于数字和逻辑常数!!? [删除] 2009.12.08 16:52 #3407 TheXpert >> : 明白了。 >> 我们必须这样做。 谢谢你,朋友! Aleksey Lebedev 2009.12.08 19:32 #3408 future >> : 还有一个问题。如果(OrdersTotal()==0)这个...如果未结订单的数量等于零...那么,如果当日开仓的订单数量等于零,会是怎样的情况? 不是有类似OrdersDayTotal的东西吗? 没有,但我们总是可以写出我们自己的函数) int OrdersDayTotal(string Symb) { int cnt, OrdersDayTotal=0, Time0=iTime(NULL,PERIOD_D1,0); for( cnt=0; cnt<OrdersTotal(); cnt++) { OrderSelect( cnt, SELECT_BY_POS, MODE_TRADES); if(OrderSymbol()== Symb && OrderType()<2) { if(OrderOpenTime()> Time0) OrdersDayTotal++; } } for( cnt=0; cnt<OrdersHistoryTotal(); cnt++) { OrderSelect( cnt, SELECT_BY_POS, MODE_HISTORY); if(OrderSymbol()== Symb && OrderType()<2) { if(OrderOpenTime()> Time0) OrdersDayTotal++; } } return( OrdersDayTotal); } 计算今天对某一符号所开的买入和卖出订单。没有悬而未决的订单。 如果(OrdersDayTotal(Symbol())==0) {...}。 类似这样的情况) Mazepa 2009.12.08 20:58 #3409 Stepan241 >> : mazepa 08.12.2009 17:42 答案:在COD上! 如果我理解的算法,我们在设定的时间打开买入(卖出),如果价格在另一个方向通过>10个点,我们就关闭订单并转移到另一边。 我使用我自己的通用函数来关闭它。 //关闭窗口中所有市场订单的功能-------------------------------------------------------------------------------------------------- 空白 _CloseAllOrder() { for(int i=0; i<OrdersTotal(); i++) //剔除所有货币的所有订单 { 如果(OrderSelect(i,SELECT_BY_POS)==true) //如果订单被成功选中。 { 如果(OrderSymbol()!=Symbol())继续; //如果订单使用的是错误的货币,继续搜索 { switch(OrderType()) //当所需的订单被提交时,定义其类型(Bue_Sell)并关闭它 { case 0:OrderClose(OrderTicket(),OrderLots(),Bid,2);break; case 1:OrderClose(OrderTicket(),OrderLots(),Ask,2);break; } } } } 返回。 } 所以现在你只需在反方向打开之前写_CloseAllOrder() 这个功能是个炸弹,我花了几页时间。 非常感谢你。 Mazepa 2009.12.08 20:58 #3410 Stepan241 >> : mazepa 08.12.2009 17:42 答案:在COD上! 如果我理解的算法,我们在设定的时间打开买入(卖出),如果价格向另一个方向移动了>10点,我们就关闭订单并向相反方向移动。 我使用我自己的通用函数来关闭它。 //关闭窗口中所有市场订单的功能-------------------------------------------------------------------------------------------------- 空白 _CloseAllOrder() { for(int i=0; i<OrdersTotal(); i++) //剔除所有货币的所有订单 { 如果(OrderSelect(i,SELECT_BY_POS)==true) //如果订单被成功选中。 { 如果(OrderSymbol()!=Symbol())继续; //如果订单使用的是错误的货币,继续搜索 { switch(OrderType()) //当所需的订单被提交时,定义其类型(Bue_Sell)并关闭它 { case 0:OrderClose(OrderTicket(),OrderLots(),Bid,2);break; case 1:OrderClose(OrderTicket(),OrderLots(),Ask,2);break; } } } } 返回。 } 所以现在你只需在反方向打开之前写_CloseAllOrder() 这个功能是个炸弹,我花了几页时间。 非常感谢你。 1...334335336337338339340341342343344345346347348...1145 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
保存的指示参数在模板初始化过程中被 "输入 "到指标中一次,然后 "它们变得完全独立"/。
所有改变的指标参数都保存在模板中,如果你已经改变了指标参数,请重新保存模板。
>> 谢谢你!
mazepa 08.12.2009 17:42
回答:关于CODE!
如果我理解的算法,那么在设定的时间,我们打开买入(卖出),如果价格已经超过另一个方向>10点,那么我们关闭订单并站在相反的方向上。
为了关闭,我正在使用我自己的通用功能。
//
void _CloseAllOrder()
{
for(int i=0; i<OrdersTotal(); i++) //交叉所有货币的所有订单
{
if (OrderSelect(i,SELECT_BY_POS)==true) //如果订单被成功选中
{
if (OrderSymbol() !=Symbol()) continue; //如果订单是 错误的货币,继续搜索
{
switch(OrderType()) //在需要的订单中,确定类型(Bue_Sell)并关闭它
{
case 0:OrderClose(OrderTicket(),OrderLots(),Bid,2);break;
case 1:OrderClose(OrderTicket(),OrderLots(),Ask,2);break;
}
}
}
}
return;
}
所以现在在反方向开盘前你只要写_CloseAllOrder()
朋友们,我只是在学习。请不要看程序的内容,只要帮我找到程序中的一个错误。
int start()
{
switch(CurrentState)
{
case STATE_SHORT:
MyOrderTicket =OrderSend(Symbol(), OP_SELL, Lots, Bid, 1, 0, 0,NULL, 1, 0, Red);
OrderSelect(MyOrderTicket,SELECT_BY_TICKET);
if (OrderModify(OrderTicket(), OrderOpenPrice(), Bid+90*Point, Bid-Profit1*Point, 0, Green) ==true)
{CurrentState=STATE_1;
break;
}
case STATE_1:
OrderSelect(MyOrderTicket,SELECT_BY_TICKET);
if(Ask <= OrderTakeProfit() )
{CurrentState=STATE_SHORT;
break;
}
if(Bid >= (OrderOpenPrice()+Profit1*Point)
{CurrentState=STATE_SHORT;
break;
}
//----
return(0);
}
错误情况如下。\end_of_program' - 不平衡的左括号。错误在哪里?
朋友们,我只是在学习。请不要看程序的内容,只要帮我找到程序中的一个错误。
明白了。
需要。
如何声明一个一维数组而不对每个存储单元应用写操作(是否可能)?
而是由一个一维的序列
还是一维序列只适用于数字和逻辑常数!!?
明白了。
>> 我们必须这样做。
谢谢你,朋友!
还有一个问题。如果(OrdersTotal()==0)这个...如果未结订单的数量等于零...那么,如果当日开仓的订单数量等于零,会是怎样的情况?
不是有类似OrdersDayTotal的东西吗?
没有,但我们总是可以写出我们自己的函数)
计算今天对某一符号所开的买入和卖出订单。没有悬而未决的订单。
如果(OrdersDayTotal(Symbol())==0) {...}。
类似这样的情况)
mazepa 08.12.2009 17:42
答案:在COD上!
如果我理解的算法,我们在设定的时间打开买入(卖出),如果价格在另一个方向通过>10个点,我们就关闭订单并转移到另一边。
我使用我自己的通用函数来关闭它。
//关闭窗口中所有市场订单的功能--------------------------------------------------------------------------------------------------
空白 _CloseAllOrder()
{
for(int i=0; i<OrdersTotal(); i++) //剔除所有货币的所有订单
{
如果(OrderSelect(i,SELECT_BY_POS)==true) //如果订单被成功选中。
{
如果(OrderSymbol()!=Symbol())继续; //如果订单使用的是错误的货币,继续搜索
{
switch(OrderType()) //当所需的订单被提交时,定义其类型(Bue_Sell)并关闭它
{
case 0:OrderClose(OrderTicket(),OrderLots(),Bid,2);break;
case 1:OrderClose(OrderTicket(),OrderLots(),Ask,2);break;
}
}
}
}
返回。
}
所以现在你只需在反方向打开之前写_CloseAllOrder()
这个功能是个炸弹,我花了几页时间。 非常感谢你。mazepa 08.12.2009 17:42
答案:在COD上!
如果我理解的算法,我们在设定的时间打开买入(卖出),如果价格向另一个方向移动了>10点,我们就关闭订单并向相反方向移动。
我使用我自己的通用函数来关闭它。
//关闭窗口中所有市场订单的功能--------------------------------------------------------------------------------------------------
空白 _CloseAllOrder()
{
for(int i=0; i<OrdersTotal(); i++) //剔除所有货币的所有订单
{
如果(OrderSelect(i,SELECT_BY_POS)==true) //如果订单被成功选中。
{
如果(OrderSymbol()!=Symbol())继续; //如果订单使用的是错误的货币,继续搜索
{
switch(OrderType()) //当所需的订单被提交时,定义其类型(Bue_Sell)并关闭它
{
case 0:OrderClose(OrderTicket(),OrderLots(),Bid,2);break;
case 1:OrderClose(OrderTicket(),OrderLots(),Ask,2);break;
}
}
}
}
返回。
}
所以现在你只需在反方向打开之前写_CloseAllOrder()
这个功能是个炸弹,我花了几页时间。 非常感谢你。