新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 39 1...323334353637383940414243444546...1953 新评论 [删除] 2016.12.19 20:33 #381 trader781: 我不知道该如何解释。但这绝对是一部杰作。 我告诉你,他们在这里喜欢挖苦人)。而特里什金对此不以为然。 他说他会有一个密码来帮助。 Mickey Moose 2016.12.19 20:38 #382 Movlat Baghiyev: 我告诉你,他们在这里喜欢挖苦人 )))特里什金也不以为然。 他说,该守则将有助于。我和你一样是新手,但即使是我也有很多问题。for(int i=0; i<OrdersTotal(); i++){if(OrderSelect(i。SELECT_BY_POS)==true){if(OrderSymbol()!=Symbol() ||OrderMagicNumber()!=Magic)继续; if(OrderType()==OP_BUY||OrderType()==OP_SELL) p++;if(OrderType()==OP_BUYSTOP)如果(signal_bue)OrderDelete(OrderTicket());else b++; 如果(OrderType()==OP_SELLSTOP) if(signal_sell)OrderDelete(OrderTicket() );else s++;}}1)你在哪里得到b++2) 你从哪里得到s++3)如果(signal_bue)是什么别的?以及其余的代码。如果我冒犯了你,很抱歉。 Any questions from newcomers [警告关闭!]任何新手问题,为了不给论坛添乱。专业人士,不要走过。没有你,哪里都不能去。 编码帮助 [删除] 2016.12.19 20:45 #383 这可能是正确的做法。//+------------------------------------------------------------------+//| ОТЛОЖКИ.mq4 |//+------------------------------------------------------------------+extern double StopLoss = 100; //Стоплосс ордера extern double TakeProfit = 150; //Тейкпрофит ордераextern double TrailingStop = 100; // трал extern int Delta = 100; //Расстояние от цены для установки ордераextern double LOT = 0.1; //Объём позицииextern int Magic =2;//+------------------------------------------------------------------+//| expert start function |//+------------------------------------------------------------------+int start() { if (TrailingStop!=0) Trailing(); //ИНДИКАТОР RSI double RSI0=iRSI(NULL,0,5,PRICE_CLOSE,0); double RSI1=iRSI(NULL,0,5,PRICE_CLOSE,1); int b = 0, s = 0, p = 0, res = 0; double BuyPrice=Ask+Delta*Point; double SellPrice=Bid-Delta*Point; for (int i=0; i<OrdersTotal(); i++) { if (OrderSelect(i, SELECT_BY_POS)==true) { if (OrderSymbol()!=Symbol() || OrderMagicNumber()!=Magic) continue; if (OrderType()==OP_BUY || OrderType()==OP_SELL) p++; if (OrderType()==OP_BUYSTOP) { if(RSI0<50&&RSI1>50) OrderDelete(OrderTicket()); else b++; } if (OrderType()==OP_SELLSTOP) { if(RSI0>50&&RSI1<50) OrderDelete(OrderTicket()); else s++; } } } double SL,TP; // < !!!!!!!!! эти переменные не используются, можно удалить//---- buy stop if(RSI0>50&&RSI1<50 && p<1 && b<1) // < !!!!!!!!! { res=OrderSend(Symbol(),OP_BUYSTOP,LOT,BuyPrice,0,BuyPrice-StopLoss*Point,BuyPrice+TakeProfit*Point,"ОТЛОЖКИ",Magic,OP_SELLSTOP,Blue); } //---- sell stop if(RSI0<50&&RSI1>50 && p<1 && s<1) // < !!!!!!!!! { res=OrderSend(Symbol(),OP_SELLSTOP,LOT,SellPrice,0,SellPrice+StopLoss*Point,SellPrice-TakeProfit*Point,"ОТЛОЖКИ",Magic,OP_BUYSTOP,Red); }//---- return(0);} Any questions from newcomers RSI EA code help Errors, bugs, questions Alekseu Fedotov 2016.12.19 20:46 #384 Movlat Baghiyev: 我告诉你,他们在这里喜欢挖苦人)。而特里什金对此很不以为然。 他说他会帮助我解决密码问题。这样就更简单了。void OrderDelete_(int Type) { for(int i=0; i<OrdersTotal(); i++) { if(OrderSelect(i,SELECT_BY_POS)==true) { if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=Magic) continue; if(OrderType()==Type) OrderDelete(OrderTicket()); } } }它在void OnTick()函数之外的某个地方。if (сигнал_bue) OrderDelete_(OP_SELLSTOP);if (сигнал_sell)OrderDelete_(OP_BUYSTOP);而这是在void OnTick()函数体内。 Any questions from newcomers 初学者的问题 MQL4 MT4 MetaTrader EA不会在多对上运行,需要帮助 [删除] 2016.12.19 20:49 #385 Alekseu Fedotov:而这是在void OnTick()函数体中 的内容 请在代码中进行更正 Vitalie Postolache 2016.12.19 20:57 #386 trader781:好的。算是完成了我能做的。说明已经完成。目的是要了解为什么它不能按我的意愿工作。在 if()块内 有别的东西 。它真的是这样的吗?更进一步。Counts()函数接受一个未初始化的全局变量 count,此外,该变量在函数中再次被定义。Counts()函数对订单进行计数,但将它们与一些票据进行比较,而这些票据在主函数中发生了几次变化。但在函数操作过程中,票面价值是相同的。那么,该函数将计算出多少个订单?是不是不止一个?这种形式的函数不需要参数。 只要调用它,让它返回结果。下一步。函数FindLastOType()再次与票据进行比较。你能保证它与有效的票据相比吗?当找到第一个具有必要的神奇数字和符号的订单时,中断循环,然后返回订单类型,这不是更简单吗?与FindLastOrderOpenPrice()和FindLastLot()相同。ModifyOrders()函数让我惊恐万分,为了避免晚上做噩梦,我有很长一段时间不会去研究它...... Alekseu Fedotov 2016.12.19 21:11 #387 Movlat Baghiyev: 请在代码中进行更正试试吧 ^_~extern double StopLoss = 100; //Стоплосс ордера extern double TakeProfit = 150; //Тейкпрофит ордераextern double TrailingStop = 100; // трал extern int Delta = 100; //Расстояние от цены для установки ордераextern double LOT = 0.1; //Объём позицииextern int Magic =2;//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+int OnInit() {//--- create timer //--- return(INIT_SUCCEEDED); }//+------------------------------------------------------------------+//| Expert deinitialization function |//+------------------------------------------------------------------+void OnDeinit(const int reason) {//--- destroy timer }//+------------------------------------------------------------------+//| Expert tick function |//+------------------------------------------------------------------+void OnTick() { int res = 0;//ИНДИКАТОР RSI double RSI0=iRSI(NULL,0,5,PRICE_CLOSE,0); double RSI1=iRSI(NULL,0,5,PRICE_CLOSE,1); double BuyPrice=Ask+Delta*Point; double SellPrice=Bid-Delta*Point; //---- buy stop if(RSI0>50&&RSI1<50 && Number(OP_BUYSTOP)<0 && Number(OP_BUY)<1) // < !!!!!!!!! { res=OrderSend(Symbol(),OP_BUYSTOP,LOT,BuyPrice,0,BuyPrice-StopLoss*Point,BuyPrice+TakeProfit*Point,"ОТЛОЖКИ",Magic,OP_SELLSTOP,Blue); } //---- sell stop if(RSI0<50&&RSI1>50 && Number(OP_SELLSTOP)<0 && Number(OP_SELL)<1) // < !!!!!!!!! { res=OrderSend(Symbol(),OP_SELLSTOP,LOT,SellPrice,0,SellPrice+StopLoss*Point,SellPrice-TakeProfit*Point,"ОТЛОЖКИ",Magic,OP_BUYSTOP,Red); }//---- if (RSI0>50&&RSI1<50) OrderDelete_(OP_SELLSTOP);if (RSI0<50&&RSI1>50)OrderDelete_(OP_BUYSTOP); }//+------------------------------------------------------------------+void OrderDelete_(int Type) { bool r; for(int i=0; i<OrdersTotal(); i++) { if(OrderSelect(i,SELECT_BY_POS)==true) { if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=Magic) continue; if(OrderType()==Type) r = OrderDelete(OrderTicket()); } } }//+------------------------------------------------------------------+//+------------------------------------------------------------------+int Number(int Type) { int kp=0; for(int i=0; i<OrdersTotal(); i++) { if(OrderSelect(i,SELECT_BY_POS)==true) { if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=Magic) continue; if(OrderType()==Type) kp++; } } return(kp); }//+------------------------------------------------------------------+ Any questions from newcomers RSI EA code help 初学者的问题 MQL4 MT4 MetaTrader [删除] 2016.12.19 21:18 #388 阿列克谢-费多托夫,谢谢你,上帝保佑你。 Mickey Moose 2016.12.19 21:24 #389 Vitalie Postolache:在if()块里面 有其他的东西 。难道真的要这样吗?更进一步。Counts()函数接受一个未初始化的全局变量 count,该变量也在函数本身中再次声明。Counts()函数对订单进行计数,但将它们与一些票据进行比较,而这些票据在主函数中发生了几次变化。但在函数操作过程中,票面价值是相同的。那么,该函数将计算出多少个订单?是不是不止一个?在这种形式下,这个函数不需要参数。 只要调用它并让它返回结果。下一步。函数FindLastOType()再次与票据进行比较。你能保证它与有效的票据相比吗?当找到第一个具有必要的神奇数字和符号的订单时,中断循环,然后返回订单类型,这不是更简单吗?与FindLastOrderOpenPrice()和FindLastLot()相同。函数ModifyOrders()让我非常害怕,为了避免晚上做噩梦,我有很长一段时间不会去研究它......纠正在其他地方没有其他办法,这将是错误的参数。它必须考虑到最新的我会试着改变它。我试图使用标准的OrderModify(),但如果我同时不断地移动一堆订单,它就会被禁止。谢谢你的批评。 Artyom Trishkin 2016.12.19 22:50 #390 spoiltboy: 是的,那是支架上的一个错字。问题的其余部分是有效的。bool condition;if(condition) {}等于if(condition==true) {}иif(!condition) {}等同于if(condition==false) {}它只是更短,更熟悉。 1...323334353637383940414243444546...1953 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
我不知道该如何解释。但这绝对是一部杰作。
我告诉你,他们在这里喜欢挖苦人 )))特里什金也不以为然。 他说,该守则将有助于。
我和你一样是新手,但即使是我也有很多问题。
for(int i=0; i<OrdersTotal(); i++){
if(OrderSelect(i。SELECT_BY_POS)==true)
{
if(OrderSymbol()!=Symbol() ||OrderMagicNumber()!=Magic)继续;
if(OrderType()==OP_BUY||OrderType()==OP_SELL) p++;
if(OrderType()==OP_BUYSTOP)
如果(signal_bue)OrderDelete(OrderTicket());
else b++;
如果(OrderType()==OP_SELLSTOP)
if(signal_sell)OrderDelete(OrderTicket() );
else s++;
}
}
1)你在哪里得到b++
2) 你从哪里得到s++
3)如果(signal_bue)是什么别的?
以及其余的代码。如果我冒犯了你,很抱歉。
//| ОТЛОЖКИ.mq4 |
//+------------------------------------------------------------------+
extern double StopLoss = 100; //Стоплосс ордера
extern double TakeProfit = 150; //Тейкпрофит ордера
extern double TrailingStop = 100; // трал
extern int Delta = 100; //Расстояние от цены для установки ордера
extern double LOT = 0.1; //Объём позиции
extern int Magic =2;
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
if (TrailingStop!=0) Trailing();
//ИНДИКАТОР RSI
double RSI0=iRSI(NULL,0,5,PRICE_CLOSE,0);
double RSI1=iRSI(NULL,0,5,PRICE_CLOSE,1);
int b = 0, s = 0, p = 0, res = 0;
double BuyPrice=Ask+Delta*Point;
double SellPrice=Bid-Delta*Point;
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i, SELECT_BY_POS)==true)
{
if (OrderSymbol()!=Symbol() || OrderMagicNumber()!=Magic) continue;
if (OrderType()==OP_BUY || OrderType()==OP_SELL) p++;
if (OrderType()==OP_BUYSTOP)
{
if(RSI0<50&&RSI1>50)
OrderDelete(OrderTicket());
else
b++;
}
if (OrderType()==OP_SELLSTOP)
{
if(RSI0>50&&RSI1<50)
OrderDelete(OrderTicket());
else
s++;
}
}
}
double SL,TP; // < !!!!!!!!! эти переменные не используются, можно удалить
//---- buy stop
if(RSI0>50&&RSI1<50 && p<1 && b<1) // < !!!!!!!!!
{
res=OrderSend(Symbol(),OP_BUYSTOP,LOT,BuyPrice,0,BuyPrice-StopLoss*Point,BuyPrice+TakeProfit*Point,"ОТЛОЖКИ",Magic,OP_SELLSTOP,Blue);
}
//---- sell stop
if(RSI0<50&&RSI1>50 && p<1 && s<1) // < !!!!!!!!!
{
res=OrderSend(Symbol(),OP_SELLSTOP,LOT,SellPrice,0,SellPrice+StopLoss*Point,SellPrice-TakeProfit*Point,"ОТЛОЖКИ",Magic,OP_BUYSTOP,Red);
}
//----
return(0);
}
我告诉你,他们在这里喜欢挖苦人)。而特里什金对此很不以为然。 他说他会帮助我解决密码问题。
这样就更简单了。
{
for(int i=0; i<OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS)==true)
{
if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=Magic) continue;
if(OrderType()==Type)
OrderDelete(OrderTicket());
}
}
}
它在void OnTick()函数之外的某个地方。
if (сигнал_sell)OrderDelete_(OP_BUYSTOP);
而这是在void OnTick()函数体内。
而这是在void OnTick()函数体中 的内容
好的。
算是完成了我能做的。说明已经完成。目的是要了解为什么它不能按我的意愿工作。
在 if()块内 有别的东西 。它真的是这样的吗?
更进一步。Counts()函数接受一个未初始化的全局变量 count,此外,该变量在函数中再次被定义。
Counts()函数对订单进行计数,但将它们与一些票据进行比较,而这些票据在主函数中发生了几次变化。但在函数操作过程中,票面价值是相同的。那么,该函数将计算出多少个订单?是不是不止一个?
这种形式的函数不需要参数。 只要调用它,让它返回结果。
下一步。函数FindLastOType()再次与票据进行比较。你能保证它与有效的票据相比吗?当找到第一个具有必要的神奇数字和符号的订单时,中断循环,然后返回订单类型,这不是更简单吗?
与FindLastOrderOpenPrice()和FindLastLot()相同。
ModifyOrders()函数让我惊恐万分,为了避免晚上做噩梦,我有很长一段时间不会去研究它......
请在代码中进行更正
试试吧 ^_~
extern double TakeProfit = 150; //Тейкпрофит ордера
extern double TrailingStop = 100; // трал
extern int Delta = 100; //Расстояние от цены для установки ордера
extern double LOT = 0.1; //Объём позиции
extern int Magic =2;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//--- create timer
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- destroy timer
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
int res = 0;
//ИНДИКАТОР RSI
double RSI0=iRSI(NULL,0,5,PRICE_CLOSE,0);
double RSI1=iRSI(NULL,0,5,PRICE_CLOSE,1);
double BuyPrice=Ask+Delta*Point;
double SellPrice=Bid-Delta*Point;
//---- buy stop
if(RSI0>50&&RSI1<50 && Number(OP_BUYSTOP)<0 && Number(OP_BUY)<1) // < !!!!!!!!!
{
res=OrderSend(Symbol(),OP_BUYSTOP,LOT,BuyPrice,0,BuyPrice-StopLoss*Point,BuyPrice+TakeProfit*Point,"ОТЛОЖКИ",Magic,OP_SELLSTOP,Blue);
}
//---- sell stop
if(RSI0<50&&RSI1>50 && Number(OP_SELLSTOP)<0 && Number(OP_SELL)<1) // < !!!!!!!!!
{
res=OrderSend(Symbol(),OP_SELLSTOP,LOT,SellPrice,0,SellPrice+StopLoss*Point,SellPrice-TakeProfit*Point,"ОТЛОЖКИ",Magic,OP_BUYSTOP,Red);
}
//----
if (RSI0>50&&RSI1<50) OrderDelete_(OP_SELLSTOP);
if (RSI0<50&&RSI1>50)OrderDelete_(OP_BUYSTOP);
}
//+------------------------------------------------------------------+
void OrderDelete_(int Type)
{
bool r;
for(int i=0; i<OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS)==true)
{
if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=Magic) continue;
if(OrderType()==Type)
r = OrderDelete(OrderTicket());
}
}
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
int Number(int Type)
{
int kp=0;
for(int i=0; i<OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS)==true)
{
if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=Magic) continue;
if(OrderType()==Type)
kp++;
}
}
return(kp);
}
//+------------------------------------------------------------------+
在if()块里面 有其他的东西 。难道真的要这样吗?
更进一步。Counts()函数接受一个未初始化的全局变量 count,该变量也在函数本身中再次声明。
Counts()函数对订单进行计数,但将它们与一些票据进行比较,而这些票据在主函数中发生了几次变化。但在函数操作过程中,票面价值是相同的。那么,该函数将计算出多少个订单?是不是不止一个?
在这种形式下,这个函数不需要参数。 只要调用它并让它返回结果。
下一步。函数FindLastOType()再次与票据进行比较。你能保证它与有效的票据相比吗?当找到第一个具有必要的神奇数字和符号的订单时,中断循环,然后返回订单类型,这不是更简单吗?
与FindLastOrderOpenPrice()和FindLastLot()相同。
函数ModifyOrders()让我非常害怕,为了避免晚上做噩梦,我有很长一段时间不会去研究它......
纠正
在其他地方没有其他办法,这将是错误的参数。
它必须考虑到最新的
我会试着改变它。
我试图使用标准的OrderModify(),但如果我同时不断地移动一堆订单,它就会被禁止。
谢谢你的批评。
是的,那是支架上的一个错字。问题的其余部分是有效的。
bool condition;
if(condition) {}
等于
if(condition==true) {}
и
if(!condition) {}
等同于
if(condition==false) {}
它只是更短,更熟悉。