新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 63 1...565758596061626364656667686970...1953 新评论 [删除] 2017.01.09 10:04 #621 Vitaly Muzichenko:你在一个现有的柱子上检查,双rsi=iRSI(_Symbol,0,RSIperiod,PRICE_CLOSE,0)。价格上升,出现70级的交叉,进入交易。在收盘的事实中,你已经看到RSI走低了,但在此之前它是走高的,然后又回到了水平线以下。在闭合的条形图上进行检查,那么这种情况就不会发生,而进场将是在确认的信号上。double rsi=iRSI(_Symbol,0,RSIperiod,PRICE_CLOSE,1);double rsi1=iRSI(_Symbol,0,RSIperiod,PRICE_CLOSE,2); 我明白了。谢谢你。 [删除] 2017.01.09 10:44 #622 我是这样写的。(可能是错的)。double tp,sl,OrderBuy=0,OrderSell=0;double slSell,slBuy,tpSell,tpBuy,TotalBiu,TotalSell;int tiket;//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+int OnInit() { return(INIT_SUCCEEDED); }//+------------------------------------------------------------------+//| Expert deinitialization function |//+------------------------------------------------------------------+void OnDeinit(const int reason) { }//+------------------------------------------------------------------+//| Expert tick function |//+------------------------------------------------------------------+void OnTick() { OrderBuy=0; OrderSell=0; for(int i=OrdersTotal()-1; i>=0; i--) //Цикл по всем ордерам { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber) //Выбрали ордер { if(OrderType()==OP_BUY) { OrderBuy++; //Кол. покупок } if(OrderType()==OP_SELL) { OrderSell++; //Кол. продаж } } } double rsi=iRSI(_Symbol,0,RSIperiod,PRICE_CLOSE,0); double rsi1=iRSI(_Symbol,0,RSIperiod,PRICE_CLOSE,1); double rsi2=iRSI(_Symbol,0,RSIperiod,PRICE_CLOSE,2);//+------------------------------------------------------------------+ double StopLossLevel; double TakeProfitLevel; if(StopLoss>0) StopLossLevel=Bid-StopLoss*Point; else StopLossLevel=0.0; if(TakeProfit>0) TakeProfitLevel=Ask+TakeProfit*Point; else TakeProfitLevel=0.0; tpBuy=NormalizeDouble(Ask+TakeProfit*_Point,_Digits); slBuy=NormalizeDouble(Bid-StopLoss*_Point,_Digits); tpSell=NormalizeDouble(Bid-TakeProfit*_Point,_Digits); slSell=NormalizeDouble(Ask+StopLoss*_Point,_Digits);///--- if(OrderBuy==0 && rsi>Urov_70 && rsi1<Urov_70 && rsi2<Urov_70) { tiket=OrderSend(_Symbol,OP_BUY,Lot,Ask,slippage,slBuy,tpBuy,NULL,MagicNumber,0,clrBlue); if(tiket<0)Print("Ошибка открытия ордера № - ",GetLastError()); } if(OrderSell==0 && rsi<Urov_30 && rsi1>Urov_30 && rsi2>Urov_30) { tiket=OrderSend(_Symbol,OP_SELL,Lot,Bid,slippage,slSell,tpSell,NULL,MagicNumber,0,clrRed); if(tiket<0)Print("Ошибка открытия ордера № - ",GetLastError()); } }//+------------------------------------------------------------------+结果:订单在没有交叉的情况下打开... Any questions from newcomers 初学者的问题 MQL4 MT4 MetaTrader Errors, bugs, questions Vitaly Muzichenko 2017.01.09 10:51 #623 Ibragim Dzhanaev:我是这样写的。(可能是错的)。 } } double rsi=iRSI(_Symbol,0,RSIperiod,PRICE_CLOSE,0); double rsi1=iRSI(_Symbol,0,RSIperiod,PRICE_CLOSE,1); double rsi2=iRSI(_Symbol,0,RSIperiod,PRICE_CLOSE,2);//+------------------------------------------------------------------+ double StopLossLevel;结果如下:订单在没有交叉的情况下打开...为什么你需要当前条形图double rsi=iRSI(_Symbol,0,RSIperiod,PRICE_CLOSE,0); ??你重写的代码满足了与之前完全相同的条件--在零柱上,价格越过水平线,交易被打开,后来价格返回,RSI回到水平线之下,结果,在关闭柱子后,没有信号。在计算中不要使用零条。 [删除] 2017.01.09 11:12 #624 Vitaly Muzichenko:为什么你需要当前条形图double rsi=iRSI(_Symbol,0,RSIperiod,PRICE_CLOSE,0); ??你重写的代码满足了与之前完全相同的条件,在零条上,价格越过了水平线,交易被打开,后来价格返回,RSI回到了水平线之下,结果,在关闭条后没有信号。在计算中不要使用零条。 它是有效的。谢谢你。 [删除] 2017.01.09 12:33 #625 你能告诉我为什么会出现错误吗?double tp,sl,OrderBuy=0,OrderSell=0;double slSell,slBuy,tpSell,tpBuy,TotalBiu,TotalSell;int tiket;//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+int OnInit() { return(INIT_SUCCEEDED); }//+------------------------------------------------------------------+//| Expert deinitialization function |//+------------------------------------------------------------------+void OnDeinit(const int reason) { }//+------------------------------------------------------------------+//| Expert tick function |//+------------------------------------------------------------------+void OnTick() { OrderBuy=0; OrderSell=0; for(int i=OrdersTotal()-1; i>=0; i--) //Цикл по всем ордерам { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber) //Выбрали ордер { if(OrderType()==OP_BUY) { OrderBuy++; //Кол. покупок } if(OrderType()==OP_SELL) { OrderSell++; //Кол. продаж } } }//double rsi=iRSI(_Symbol,0,RSIperiod,PRICE_CLOSE,0); double rsi1=iRSI(_Symbol,0,RSIperiod,PRICE_CLOSE,1); double rsi2=iRSI(_Symbol,0,RSIperiod,PRICE_CLOSE,2);//+------------------------------------------------------------------+ double StopLossLevel; double TakeProfitLevel; if(StopLoss>0) StopLossLevel=Bid-StopLoss*Point; else StopLossLevel=0.0; if(TakeProfit>0) TakeProfitLevel=Ask+TakeProfit*Point; else TakeProfitLevel=0.0; tpBuy=NormalizeDouble(Ask+TakeProfit*_Point,_Digits); slBuy=NormalizeDouble(Bid-StopLoss*_Point,_Digits); tpSell=NormalizeDouble(Bid-TakeProfit*_Point,_Digits); slSell=NormalizeDouble(Ask+StopLoss*_Point,_Digits);///--- if(CountBuy()+CountSell()==0 && rsi1>Urov_70 && rsi2<Urov_70) { tiket=OrderSend(_Symbol,OP_BUY,Lot,Ask,slippage,slBuy,tpBuy,NULL,MagicNumber,0,clrBlue); if(tiket<0)Print("Ошибка открытия ордера № - ",GetLastError()); } if(CountBuy()+CountSell()==0 && rsi1<Urov_30 && rsi2>Urov_30) { tiket=OrderSend(_Symbol,OP_SELL,Lot,Bid,slippage,slSell,tpSell,NULL,MagicNumber,0,clrRed); if(tiket<0)Print("Ошибка открытия ордера № - ",GetLastError()); } }//+------------------------------------------------------------------+int CountBuy() { int count=0; for(int trade=OrdersTotal()-1; trade>0; trade--); { if(OrderSelect(trade,SELECT_BY_POS,MODE_TRADES)==true) { if(OrderSymbol()==_Symbol && OrderMagicNumber()==MagicNumber && OrderType()==OP_BUY) count++; } } return(count); }//+------------------------------------------------------------------+int CountSell() { int count=0; for(int trade=OrdersTotal()-1; trade>0; trade--); { if(OrderSelect(trade,SELECT_BY_POS,MODE_TRADES)==true) { if(OrderSymbol()==_Symbol && OrderMagicNumber()==MagicNumber && OrderType()==OP_SELL) count++; } } return(count); }//+------------------------------------------------------------------+ Any questions from newcomers 初学者的问题 MQL4 MT4 MetaTrader 请帮助我 [已解决] Sergey Gritsay 2017.01.09 12:40 #626 Ibragim Dzhanaev:你能告诉我为什么会出现错误吗?double tp,sl,OrderBuy=0,OrderSell=0;double slSell,slBuy,tpSell,tpBuy,TotalBiu,TotalSell;int tiket;//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+int OnInit() { return(INIT_SUCCEEDED); }//+------------------------------------------------------------------+//| Expert deinitialization function |//+------------------------------------------------------------------+void OnDeinit(const int reason) { }//+------------------------------------------------------------------+//| Expert tick function |//+------------------------------------------------------------------+void OnTick() { OrderBuy=0; OrderSell=0; for(int i=OrdersTotal()-1; i>=0; i--) //Цикл по всем ордерам { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber) //Выбрали ордер { if(OrderType()==OP_BUY) { OrderBuy++; //Кол. покупок } if(OrderType()==OP_SELL) { OrderSell++; //Кол. продаж } } }//double rsi=iRSI(_Symbol,0,RSIperiod,PRICE_CLOSE,0); double rsi1=iRSI(_Symbol,0,RSIperiod,PRICE_CLOSE,1); double rsi2=iRSI(_Symbol,0,RSIperiod,PRICE_CLOSE,2);//+------------------------------------------------------------------+ double StopLossLevel; double TakeProfitLevel; if(StopLoss>0) StopLossLevel=Bid-StopLoss*Point; else StopLossLevel=0.0; if(TakeProfit>0) TakeProfitLevel=Ask+TakeProfit*Point; else TakeProfitLevel=0.0; tpBuy=NormalizeDouble(Ask+TakeProfit*_Point,_Digits); slBuy=NormalizeDouble(Bid-StopLoss*_Point,_Digits); tpSell=NormalizeDouble(Bid-TakeProfit*_Point,_Digits); slSell=NormalizeDouble(Ask+StopLoss*_Point,_Digits);///--- if(CountBuy()+CountSell()==0 && rsi1>Urov_70 && rsi2<Urov_70) { tiket=OrderSend(_Symbol,OP_BUY,Lot,Ask,slippage,slBuy,tpBuy,NULL,MagicNumber,0,clrBlue); if(tiket<0)Print("Ошибка открытия ордера № - ",GetLastError()); } if(CountBuy()+CountSell()==0 && rsi1<Urov_30 && rsi2>Urov_30) { tiket=OrderSend(_Symbol,OP_SELL,Lot,Bid,slippage,slSell,tpSell,NULL,MagicNumber,0,clrRed); if(tiket<0)Print("Ошибка открытия ордера № - ",GetLastError()); } }//+------------------------------------------------------------------+int CountBuy() { int count=0; for(int trade=OrdersTotal()-1; trade>0; trade--); { if(OrderSelect(trade,SELECT_BY_POS,MODE_TRADES)==true) { if(OrderSymbol()==_Symbol && OrderMagicNumber()==MagicNumber && OrderType()==OP_BUY) count++; } } return(count); }//+------------------------------------------------------------------+int CountSell() { int count=0; for(int trade=OrdersTotal()-1; trade>0; trade--); { if(OrderSelect(trade,SELECT_BY_POS,MODE_TRADES)==true) { if(OrderSymbol()==_Symbol && OrderMagicNumber()==MagicNumber && OrderType()==OP_SELL) count++; } } return(count); }//+------------------------------------------------------------------+ 顺便说一下。 for(int trade=OrdersTotal()-1; trade>0; trade--); 必须是这样的 for(int trade=OrdersTotal()-1; trade>=0; trade--); 否则你会错过最后的订单 Vitaly Muzichenko 2017.01.09 12:50 #627 Ibragim Dzhanaev:你能告诉我为什么会显示错误吗? for(int trade=OrdersTotal()-1; trade>0; trade--); { if(OrderSelect(trade,SELECT_BY_POS,MODE_TRADES)==true) { if(OrderSymbol()==_Symbol && OrderMagicNumber()==MagicNumber && OrderType()==OP_SELL) count++; } } return(count); }//+------------------------------------------------------------------+额外的";"int CountBuy() { int count=0; for(int trade=OrdersTotal()-1; trade>0; trade--); <<< { if(OrderSelect(trade,SELECT_BY_POS,MODE_TRADES)) { if(OrderSymbol()==_Symbol && OrderMagicNumber()==MagicNumber && OrderType()==OP_BUY) count++; } } return(count); }//+------------------------------------------------------------------+int CountSell() { int count=0; for(int trade=OrdersTotal()-1; trade>0; trade--); <<< { if(OrderSelect(trade,SELECT_BY_POS,MODE_TRADES)) { if(OrderSymbol()==_Symbol && OrderMagicNumber()==MagicNumber && OrderType()==OP_SELL) count++; } } return(count); } 而在这种情况下,这将是更好的。for(int trade=0; trade<OrdersTotal(); trade++) [删除] 2017.01.09 13:03 #628 Sergey Gritsay: 顺便说一下。 for(int trade=OrdersTotal()-1; trade>0; trade--); 必须如此 for(int trade=OrdersTotal()-1; trade>=0; trade--); 否则你会错过最后的订单。 谢谢你。 [删除] 2017.01.09 13:04 #629 Vitaly Muzichenko:多余的";"int CountBuy() { int count=0; for(int trade=OrdersTotal()-1; trade>0; trade--); <<< { if(OrderSelect(trade,SELECT_BY_POS,MODE_TRADES)) { if(OrderSymbol()==_Symbol && OrderMagicNumber()==MagicNumber && OrderType()==OP_BUY) count++; } } return(count); }//+------------------------------------------------------------------+int CountSell() { int count=0; for(int trade=OrdersTotal()-1; trade>0; trade--); <<< { if(OrderSelect(trade,SELECT_BY_POS,MODE_TRADES)) { if(OrderSymbol()==_Symbol && OrderMagicNumber()==MagicNumber && OrderType()==OP_SELL) count++; } } return(count); } 而在这种情况下,这将是更好的。for(int trade=0; trade<OrdersTotal(); trade++) 谢谢你。 Mickey Moose 2017.01.10 22:29 #630 大家好,我怎么写表达式呢?第五手等于订单中第1手和第4手之和找到第一个或最后一个,可以通过票据定义找到但是,考虑到当前网格的不断变化,如何找到任何中间的一个?我的意思是每个订单都应该被储存在某个地方或其他方式以及是否有区别?之间void OnTick() { if uslovie1==true {...} if uslovie2==true {...} if uslovie3==true {...} } Иvoid OnTick() { { if uslovie1==true {...} else if {...} else if {...} } } 1...565758596061626364656667686970...1953 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
你在一个现有的柱子上检查,双rsi=iRSI(_Symbol,0,RSIperiod,PRICE_CLOSE,0)。
价格上升,出现70级的交叉,进入交易。在收盘的事实中,你已经看到RSI走低了,但在此之前它是走高的,然后又回到了水平线以下。
在闭合的条形图上进行检查,那么这种情况就不会发生,而进场将是在确认的信号上。
double rsi=iRSI(_Symbol,0,RSIperiod,PRICE_CLOSE,1);
double rsi1=iRSI(_Symbol,0,RSIperiod,PRICE_CLOSE,2);
我是这样写的。(可能是错的)。
double slSell,slBuy,tpSell,tpBuy,TotalBiu,TotalSell;
int tiket;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
OrderBuy=0; OrderSell=0;
for(int i=OrdersTotal()-1; i>=0; i--) //Цикл по всем ордерам
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber) //Выбрали ордер
{
if(OrderType()==OP_BUY)
{
OrderBuy++; //Кол. покупок
}
if(OrderType()==OP_SELL)
{
OrderSell++; //Кол. продаж
}
}
}
double rsi=iRSI(_Symbol,0,RSIperiod,PRICE_CLOSE,0);
double rsi1=iRSI(_Symbol,0,RSIperiod,PRICE_CLOSE,1);
double rsi2=iRSI(_Symbol,0,RSIperiod,PRICE_CLOSE,2);
//+------------------------------------------------------------------+
double StopLossLevel;
double TakeProfitLevel;
if(StopLoss>0) StopLossLevel=Bid-StopLoss*Point; else StopLossLevel=0.0;
if(TakeProfit>0) TakeProfitLevel=Ask+TakeProfit*Point; else TakeProfitLevel=0.0;
tpBuy=NormalizeDouble(Ask+TakeProfit*_Point,_Digits);
slBuy=NormalizeDouble(Bid-StopLoss*_Point,_Digits);
tpSell=NormalizeDouble(Bid-TakeProfit*_Point,_Digits);
slSell=NormalizeDouble(Ask+StopLoss*_Point,_Digits);
///---
if(OrderBuy==0 && rsi>Urov_70 && rsi1<Urov_70 && rsi2<Urov_70)
{
tiket=OrderSend(_Symbol,OP_BUY,Lot,Ask,slippage,slBuy,tpBuy,NULL,MagicNumber,0,clrBlue);
if(tiket<0)Print("Ошибка открытия ордера № - ",GetLastError());
}
if(OrderSell==0 && rsi<Urov_30 && rsi1>Urov_30 && rsi2>Urov_30)
{
tiket=OrderSend(_Symbol,OP_SELL,Lot,Bid,slippage,slSell,tpSell,NULL,MagicNumber,0,clrRed);
if(tiket<0)Print("Ошибка открытия ордера № - ",GetLastError());
}
}
//+------------------------------------------------------------------+
结果:订单在没有交叉的情况下打开...
我是这样写的。(可能是错的)。
}
double rsi=iRSI(_Symbol,0,RSIperiod,PRICE_CLOSE,0);
double rsi1=iRSI(_Symbol,0,RSIperiod,PRICE_CLOSE,1);
double rsi2=iRSI(_Symbol,0,RSIperiod,PRICE_CLOSE,2);
//+------------------------------------------------------------------+
double StopLossLevel;
结果如下:订单在没有交叉的情况下打开...
为什么你需要当前条形图double rsi=iRSI(_Symbol,0,RSIperiod,PRICE_CLOSE,0); ??
你重写的代码满足了与之前完全相同的条件--在零柱上,价格越过水平线,交易被打开,后来价格返回,RSI回到水平线之下,结果,在关闭柱子后,没有信号。
在计算中不要使用零条。
为什么你需要当前条形图double rsi=iRSI(_Symbol,0,RSIperiod,PRICE_CLOSE,0); ??
你重写的代码满足了与之前完全相同的条件,在零条上,价格越过了水平线,交易被打开,后来价格返回,RSI回到了水平线之下,结果,在关闭条后没有信号。
在计算中不要使用零条。
你能告诉我为什么会出现错误吗?
double slSell,slBuy,tpSell,tpBuy,TotalBiu,TotalSell;
int tiket;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
OrderBuy=0; OrderSell=0;
for(int i=OrdersTotal()-1; i>=0; i--) //Цикл по всем ордерам
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber) //Выбрали ордер
{
if(OrderType()==OP_BUY)
{
OrderBuy++; //Кол. покупок
}
if(OrderType()==OP_SELL)
{
OrderSell++; //Кол. продаж
}
}
}
//double rsi=iRSI(_Symbol,0,RSIperiod,PRICE_CLOSE,0);
double rsi1=iRSI(_Symbol,0,RSIperiod,PRICE_CLOSE,1);
double rsi2=iRSI(_Symbol,0,RSIperiod,PRICE_CLOSE,2);
//+------------------------------------------------------------------+
double StopLossLevel;
double TakeProfitLevel;
if(StopLoss>0) StopLossLevel=Bid-StopLoss*Point; else StopLossLevel=0.0;
if(TakeProfit>0) TakeProfitLevel=Ask+TakeProfit*Point; else TakeProfitLevel=0.0;
tpBuy=NormalizeDouble(Ask+TakeProfit*_Point,_Digits);
slBuy=NormalizeDouble(Bid-StopLoss*_Point,_Digits);
tpSell=NormalizeDouble(Bid-TakeProfit*_Point,_Digits);
slSell=NormalizeDouble(Ask+StopLoss*_Point,_Digits);
///---
if(CountBuy()+CountSell()==0 && rsi1>Urov_70 && rsi2<Urov_70)
{
tiket=OrderSend(_Symbol,OP_BUY,Lot,Ask,slippage,slBuy,tpBuy,NULL,MagicNumber,0,clrBlue);
if(tiket<0)Print("Ошибка открытия ордера № - ",GetLastError());
}
if(CountBuy()+CountSell()==0 && rsi1<Urov_30 && rsi2>Urov_30)
{
tiket=OrderSend(_Symbol,OP_SELL,Lot,Bid,slippage,slSell,tpSell,NULL,MagicNumber,0,clrRed);
if(tiket<0)Print("Ошибка открытия ордера № - ",GetLastError());
}
}
//+------------------------------------------------------------------+
int CountBuy()
{
int count=0;
for(int trade=OrdersTotal()-1; trade>0; trade--);
{
if(OrderSelect(trade,SELECT_BY_POS,MODE_TRADES)==true)
{
if(OrderSymbol()==_Symbol && OrderMagicNumber()==MagicNumber && OrderType()==OP_BUY)
count++;
}
}
return(count);
}
//+------------------------------------------------------------------+
int CountSell()
{
int count=0;
for(int trade=OrdersTotal()-1; trade>0; trade--);
{
if(OrderSelect(trade,SELECT_BY_POS,MODE_TRADES)==true)
{
if(OrderSymbol()==_Symbol && OrderMagicNumber()==MagicNumber && OrderType()==OP_SELL)
count++;
}
}
return(count);
}
//+------------------------------------------------------------------+
你能告诉我为什么会出现错误吗?
double slSell,slBuy,tpSell,tpBuy,TotalBiu,TotalSell;
int tiket;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
OrderBuy=0; OrderSell=0;
for(int i=OrdersTotal()-1; i>=0; i--) //Цикл по всем ордерам
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber) //Выбрали ордер
{
if(OrderType()==OP_BUY)
{
OrderBuy++; //Кол. покупок
}
if(OrderType()==OP_SELL)
{
OrderSell++; //Кол. продаж
}
}
}
//double rsi=iRSI(_Symbol,0,RSIperiod,PRICE_CLOSE,0);
double rsi1=iRSI(_Symbol,0,RSIperiod,PRICE_CLOSE,1);
double rsi2=iRSI(_Symbol,0,RSIperiod,PRICE_CLOSE,2);
//+------------------------------------------------------------------+
double StopLossLevel;
double TakeProfitLevel;
if(StopLoss>0) StopLossLevel=Bid-StopLoss*Point; else StopLossLevel=0.0;
if(TakeProfit>0) TakeProfitLevel=Ask+TakeProfit*Point; else TakeProfitLevel=0.0;
tpBuy=NormalizeDouble(Ask+TakeProfit*_Point,_Digits);
slBuy=NormalizeDouble(Bid-StopLoss*_Point,_Digits);
tpSell=NormalizeDouble(Bid-TakeProfit*_Point,_Digits);
slSell=NormalizeDouble(Ask+StopLoss*_Point,_Digits);
///---
if(CountBuy()+CountSell()==0 && rsi1>Urov_70 && rsi2<Urov_70)
{
tiket=OrderSend(_Symbol,OP_BUY,Lot,Ask,slippage,slBuy,tpBuy,NULL,MagicNumber,0,clrBlue);
if(tiket<0)Print("Ошибка открытия ордера № - ",GetLastError());
}
if(CountBuy()+CountSell()==0 && rsi1<Urov_30 && rsi2>Urov_30)
{
tiket=OrderSend(_Symbol,OP_SELL,Lot,Bid,slippage,slSell,tpSell,NULL,MagicNumber,0,clrRed);
if(tiket<0)Print("Ошибка открытия ордера № - ",GetLastError());
}
}
//+------------------------------------------------------------------+
int CountBuy()
{
int count=0;
for(int trade=OrdersTotal()-1; trade>0; trade--);
{
if(OrderSelect(trade,SELECT_BY_POS,MODE_TRADES)==true)
{
if(OrderSymbol()==_Symbol && OrderMagicNumber()==MagicNumber && OrderType()==OP_BUY)
count++;
}
}
return(count);
}
//+------------------------------------------------------------------+
int CountSell()
{
int count=0;
for(int trade=OrdersTotal()-1; trade>0; trade--);
{
if(OrderSelect(trade,SELECT_BY_POS,MODE_TRADES)==true)
{
if(OrderSymbol()==_Symbol && OrderMagicNumber()==MagicNumber && OrderType()==OP_SELL)
count++;
}
}
return(count);
}
//+------------------------------------------------------------------+
你能告诉我为什么会显示错误吗?
for(int trade=OrdersTotal()-1; trade>0; trade--);
{
if(OrderSelect(trade,SELECT_BY_POS,MODE_TRADES)==true)
{
if(OrderSymbol()==_Symbol && OrderMagicNumber()==MagicNumber && OrderType()==OP_SELL)
count++;
}
}
return(count);
}
//+------------------------------------------------------------------+
额外的";"
{
int count=0;
for(int trade=OrdersTotal()-1; trade>0; trade--); <<<
{
if(OrderSelect(trade,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==_Symbol && OrderMagicNumber()==MagicNumber && OrderType()==OP_BUY)
count++;
}
}
return(count);
}
//+------------------------------------------------------------------+
int CountSell()
{
int count=0;
for(int trade=OrdersTotal()-1; trade>0; trade--); <<<
{
if(OrderSelect(trade,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==_Symbol && OrderMagicNumber()==MagicNumber && OrderType()==OP_SELL)
count++;
}
}
return(count);
}
而在这种情况下,这将是更好的。
顺便说一下。
多余的";"
{
int count=0;
for(int trade=OrdersTotal()-1; trade>0; trade--); <<<
{
if(OrderSelect(trade,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==_Symbol && OrderMagicNumber()==MagicNumber && OrderType()==OP_BUY)
count++;
}
}
return(count);
}
//+------------------------------------------------------------------+
int CountSell()
{
int count=0;
for(int trade=OrdersTotal()-1; trade>0; trade--); <<<
{
if(OrderSelect(trade,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==_Symbol && OrderMagicNumber()==MagicNumber && OrderType()==OP_SELL)
count++;
}
}
return(count);
}
而在这种情况下,这将是更好的。
大家好,我怎么写表达式呢?
第五手等于订单中第1手和第4手之和
找到第一个或最后一个,可以通过票据定义找到
但是,考虑到当前网格的不断变化,如何找到任何中间的一个?
我的意思是每个订单都应该被储存在某个地方或其他方式
以及是否有区别?
之间
{
if uslovie1==true {...}
if uslovie2==true {...}
if uslovie3==true {...}
}
И
void OnTick()
{
{
if uslovie1==true
{...}
else if {...}
else if {...}
}
}