int OrdCon(int nap, int MGV)
{
int result=0;
for (int i=0;i<OrdersTotal();i++) {
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if ((nap==0) && (OrderSymbol() == Symbol())&& (OrderMagicNumber() == MGV)) {
result=result+1; // открыт ордер бай
}
if ((nap==1) && (OrderSymbol() == Symbol()) && (OrderMagicNumber() == MGV)) {
result=result+1; // открытый ордер селл
}
}
return(result); // 0 means we have no trades
}
if ((nap==0) && (OrderSymbol() == Symbol())&& (OrderMagicNumber() == MGV)) {
result=result+1; // открыт ордер бай
}
if ((nap==1) && (OrderSymbol() == Symbol()) && (OrderMagicNumber() == MGV)) {
result=result+1; // открытый ордер селл
}
在这一点上,根据什么得出结论,未结订单是卖出还是买入?
这里是上面的整个代码。
int OrdCon(int nap, int MGV)
{
int result=0;
for (int i=0;i<OrdersTotal();i++) {
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if ((nap==0) && (OrderSymbol() == Symbol())&& (OrderMagicNumber() == MGV)) {
result=result+1; // открыт ордер бай
}
if ((nap==1) && (OrderSymbol() == Symbol()) && (OrderMagicNumber() == MGV)) {
result=result+1; // открытый ордер селл
}
}
return(result); // 0 means we have no trades
}
//+------------------------------------------------------------------+//| 20/200 expert.mq4 |//| 1H EUR/USD |//| Smirnov Pavel |//| www.autoforex.ru |//+------------------------------------------------------------------+#property copyright "Smirnov Pavel"#property link "www.autoforex.ru"externint TakeProfit = 20; // Уровень тейкпрофит в пунктахexternint StopLoss = 200; // уровень стоплосс в пунктахexternint TradeTime=18;
externint t1=7;
externint t2=2;
externint delta=7;
externint dayout=1;
externdouble lot = 0.1;
int ticket;
bool cantrade=true;
int OpenLong(double volume=0.1)
{
int slippage=10;
string comment="20/200 expert (Long)";
color arrow_color=Red;
int magic=0;
ticket=OrderSend(Symbol(),OP_BUY,volume,Ask,slippage,Ask-StopLoss*Point,
Ask+TakeProfit*Point,comment,magic,0,arrow_color);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
{
Print("Buy order opened : ",OrderOpenPrice());
return(0);
}
}
else
{
Print("Error opening Buy order : ",GetLastError());
return(-1);
}
}
int OpenShort(double volume=0.1)
{
int slippage=10;
string comment="20/200 expert (Short)";
color arrow_color=Red;
int magic=0;
ticket=OrderSend(Symbol(),OP_SELL,volume,Bid,slippage,Bid+StopLoss*Point,
Bid-TakeProfit*Point,comment,magic,0,arrow_color);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
{
Print("Sell order opened : ",OrderOpenPrice());
return(0);
}
}
else
{
Print("Error opening Sell order : ",GetLastError());
return(-1);
}
}
int init()
{
return(0);
}
int deinit()
{
return(0);
}
int start()
{
if((TimeHour(TimeCurrent())>TradeTime)) cantrade=true;
// проверяем есть ли открытые ордера ...if(OrdersTotal()<1)
{
// ... если нет ни одного открытого ордера, то идем дальше// проверяем настало ли время для торговлиif((TimeHour(TimeCurrent())==TradeTime)&&(cantrade)&&(TimeDayOfWeek(TimeCurrent())!=dayout))
{
// ... если настало время, тоif ((Open[t1]-Open[t2])>delta*Point) //Если цена изменилась на величину delta
{
//условие выполнено значит входим в короткую позицию:// проверяем есть ли свободные деньги для открытия короткой позицииif(AccountFreeMarginCheck(Symbol(),OP_SELL,lot)<=0 || GetLastError()==134)
{
Print("Not enough money");
return(0);
}
OpenShort(lot);
cantrade=false; //запрещаем торговать повторно до следующего бараreturn(0);
}
if ((Open[t2]-Open[t1])>delta*Point) //Если цена изменилась на величину delta
{
// условие выполнено значит входим в длинную позицию// проверяем есть ли свободные деньги на счетуif(AccountFreeMarginCheck(Symbol(),OP_BUY,lot)<=0 || GetLastError()==134)
{
Print("Not enough money");
return(0);
}
OpenLong(lot);
cantrade=false;
return(0);
}
}
}
return(0);
}
伙计们,错误在哪里看....a,然后在信号处打开几个头寸,有时会错过信号....a,然后在触发对的止损或利润后,打开一个新的....。
Look.... 条件:RSI与周期14和17的水平30从下到上同时交叉,上升趋势70从上到下...
伙计们,错误在哪里看....a,然后在信号处打开几个头寸,有时会错过信号....a,然后在触发对的止损或利润后,打开一个新的....。
Look.... 条件:RSI与周期14和17的水平30从下到上同时交叉,上升趋势70从上到下...
我将这样做,我将设置买入止损,而不是卖出。
哈...以你的方式,任何低于30的值都可以打开交易!!!!!!!,这是不可接受的....,我需要一个从下到上的30水平交叉!!!!!。
和价值
这些只是前一根蜡烛的RSI值,....,它们必须小于30!!这里的一切都很正确......我只是不明白为什么在一个信号下,交易要分几块开仓。
我会这样做,它不会立即被设定为买入,而是被设定为停止,也不会被设定为卖出,而是被设定为停止。
哈...你的方法是,任何低于30的数值都可以打开交易!!!!!!!,这是不可接受的....,我需要从下往上的30水平的交叉点!!!!!。
和价值
这些只是之前开仓蜡烛的RSI值....,它们必须小于30!!这里的一切都很正确......我只是不明白为什么交易在一个信号下被打开了好几次!
如果你想让它开一笔交易,那是不行的--这是一台386电脑,它的速度更快,可以在1秒钟内完成一百万笔交易。通过控制已开立的交易,控制开立一个交易。如果你总共有0个交易,就打开它们,如果没有,你就完蛋了。
嗯...这就是重点,如果有一百万个交易,那么交易应该被打开,....。
好的,我会想办法解决的)))如果有控制交易的代码,请告诉我......))。
嗯...这就是问题所在--如果有一百万个交易,那么交易应该由一个交易打开......
好的,我会想办法解决的)))如果有交易控制的代码,请给我吧)))。
这里有一个函数
在这一点上,根据什么得出结论,未结订单是卖出还是买入?
这里是上面的整个代码。
在这里,我已经用我的顾问优化了你的PSI