extern double LOT = 0.01; //-------------------------------------------------------------------------------------------- int start() { int sells=0; for (int i=0; i<OrdersTotal(); i++) { if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true) { if (OrderSymbol() !=Symbol() || OrderType() !=OP_SELL ) continue; OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3,White); Alert (GetLastError()); // Выводит сообщение об ошибке sells++; } } if (sells==0) { OrderSend(Symbol(),OP_BUY,LOT,Ask,1,Bid-400*Point,Bid+400*Point,0,Green); Alert (GetLastError()); // Выводит сообщение об ошибке return(0); } } //--------------------------------------------------------------------------------------------
extern double LOT = 0.01; //-------------------------------------------------------------------------------------------- int start() { int sells=0; for (int i=0; i<OrdersTotal(); i++) { if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true) { if (OrderSymbol() !=Symbol() || OrderType() !=OP_SELL ) continue; OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3,White); Alert (GetLastError()); // Выводит сообщение об ошибке sells++; } } if (sells==0) { OrderSend(Symbol(),OP_BUY,LOT,Ask,1,Bid-400*Point,Bid+400*Point,0,Green); Alert (GetLastError()); // Выводит сообщение об ошибке return(0); } } //--------------------------------------------------------------------------------------------
我没有马上写一个没有指标的EA,没有指标,只有买入和卖出等订单------然后在测试器中改变的时期,最终的结果仍然是什么都没有,我不明白。
没有专家顾问本身,你不能说什么。我只是在猜测。
我应该对Ilan6做什么才能让他开始交易?多少钱开始工作,它对一分钱是否有作用?
我没有马上写一个没有指标的EA,没有指标,只有买入和卖出等订单------然后在测试器中改变的时期,最终的结果仍然是什么都没有,我不明白。
是的,我们应该看一下代码本身。难道它没有某种策略,在计算的基础上打开和关闭订单?
你能告诉我错误在哪里吗?如果有卖出 我们的金融工具的市场订单,那么就关闭它,如果没有买入的订单,那么就开一个买入的订单。在这里关闭一切都很正常,但它不是一次就能打开,而是每一次勾选都能打开。
//--------------------------------------------------------------------------------------------
extern double LOT = 0.01;
//--------------------------------------------------------------------------------------------
int start()
{
int sells=0;
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{
if (OrderSymbol() !=Symbol() || OrderType() !=OP_SELL ) continue;
OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3,White);
Alert (GetLastError()); // Выводит сообщение об ошибке
sells++;
}
}
if (sells==0)
{
OrderSend(Symbol(),OP_BUY,LOT,Ask,1,Bid-400*Point,Bid+400*Point,0,Green);
Alert (GetLastError()); // Выводит сообщение об ошибке
return(0);
}
}
//--------------------------------------------------------------------------------------------
你能告诉我错误在哪里吗?如果有卖出我们的金融工具的市场订单,那么就关闭它,如果没有买入的订单,那么就开一个买入的订单。在这里关闭一切都很正常,但它不是一次就能打开,而是每次勾选都能打开。
//--------------------------------------------------------------------------------------------
extern double LOT = 0.01;
//--------------------------------------------------------------------------------------------
int start()
{
int sells=0;
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{
if (OrderSymbol() !=Symbol() || OrderType() !=OP_SELL ) continue;
OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3,White);
Alert (GetLastError()); // Выводит сообщение об ошибке
sells++;
}
}
if (sells==0)
{
OrderSend(Symbol(),OP_BUY,LOT,Ask,1,Bid-400*Point,Bid+400*Point,0,Green);
Alert (GetLastError()); // Выводит сообщение об ошибке
return(0);
}
}
//--------------------------------------------------------------------------------------------
还是这样做更好?如果没有卖出指令,我们就不会开出买入指令。
extern double LOT = 0.01;
//--------------------------------------------------------------------------------------------
int start()
{
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{
if (OrderSymbol() !=Symbol() || OrderType() !=OP_SELL ) continue;
OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3,White);
Alert (GetLastError()); // Выводит сообщение об ошибке
OrderSend(Symbol(),OP_BUY,LOT,Ask,1,Bid-400*Point,Bid+400*Point,0,Green);
Alert (GetLastError()); // Выводит сообщение об ошибке
return(0);
}
}
}
//--------------------------------------------------------------------------------------------
执行for语句的规则
告诉我:一个刻度线已经到来,操作符的条件为真,控制被进一步传递--所有这些将在一个刻度线期间发生,即所有这些操作符将在一个刻度线期间执行或不执行。
extern double LOT = 0.01;
//--------------------------------------------------------------------------------------------
int start()
{
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{
if (OrderSymbol() !=Symbol() || OrderType() !=OP_SELL ) continue;
OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3,White);
Alert (GetLastError()); // Выводит сообщение об ошибке
OrderSend(Symbol(),OP_BUY,LOT,Ask,1,Bid-400*Point,Bid+400*Point,0,Green);
Alert (GetLastError()); // Выводит сообщение об ошибке
return(0);
}
}
}
//--------------------------------------------------------------------------------------------
或者说,到底哪些操作者会在这个tick期间被执行?以上都是,还是哪些将在下一个tick中执行?解释一下...
执行for语句的规则
告诉我:一个刻度线已经到来,操作符的条件为真,控制被进一步传递--所有这些将在一个刻度线期间发生,即所有这些操作符将在一个刻度线期间执行或不执行。
或者说,到底哪些操作者会在这个tick期间被执行?以上都是,还是哪些将在下一个tick中执行?解释一下...
start()函数在第一个tick到达时被执行。如果在函数运行过程中,有其他刻度线到达,它们将被跳过。
启动功能将完全按照其逻辑执行
语句执行的规则
告诉我:一个刻度线已经到来,操作符的条件为真,控制被进一步传递--所有这些将在一个刻度线期间发生,即所有这些操作符将在一个刻度线期间执行或不执行。
extern double LOT = 0.01;
//--------------------------------------------------------------------------------------------
int start()
{
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{
if (OrderSymbol() !=Symbol() || OrderType() !=OP_SELL ) continue;
OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3,White);
Alert (GetLastError()); // Выводит сообщение об ошибке
OrderSend(Symbol(),OP_BUY,LOT,Ask,1,Bid-400*Point,Bid+400*Point,0,Green);
Alert (GetLastError()); // Выводит сообщение об ошибке
return(0);
}
}
}
//--------------------------------------------------------------------------------------------
或者说,到底哪些操作者会在这个tick期间被执行?以上都是,还是哪些将在下一个tick中执行?解释一下...
弄清楚了。如果条件耗尽,所有操作者都将被执行。