[警告关闭!]任何新手问题,为了不给论坛添乱。专业人士,不要走过。没有你,哪里都不能去。 - 页 1095

 
我没有马上写一个没有指标的EA,没有指标,只有买入和卖出等订单------然后在测试器中改变的时期,最终的结果仍然是什么都没有,我不明白。
 
5drakon:
我没有马上写一个没有指标的EA,没有指标,只有买入和卖出等订单------然后在测试器中改变的时期,最终的结果仍然是什么都没有,我不明白。

没有专家顾问本身,你不能说什么。我只是在猜测。
 

我应该对Ilan6做什么才能让他开始交易?多少钱开始工作,它对一分钱是否有作用?

 
5drakon:
我没有马上写一个没有指标的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);
}
}
//--------------------------------------------------------------------------------------------

 
kolyango:

你能告诉我错误在哪里吗?如果有卖出我们的金融工具的市场订单,那么就关闭它,如果没有买入的订单,那么就开一个买入的订单。在这里关闭一切都很正常,但它不是一次就能打开,而是每次勾选都能打开。

//--------------------------------------------------------------------------------------------

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语句的规则


当把控制权传给for语句 时,执行Expression_1。当for语句的Condition为真时:将控制权传递给循环体的第一条语句,在循环体的所有语句执行完毕后,执行Expression_2,并将控制权传递给标题,检查Condition是否为真。如果for语句的条件是假的:将控制权传递给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中执行?解释一下...

 
kolyango:

执行for语句的规则


当把控制权传给for语句时,执行Expression_1。当for语句的Condition为真时:将控制权传递给循环体的第一条语句,在循环体的所有语句执行完毕后,执行Expression_2,并将控制权传递给标题,检查Condition是否为真。如果for语句的条件是假的:将控制权传递给for语句后面的语句。

告诉我:一个刻度线已经到来,操作符的条件为真,控制被进一步传递--所有这些将在一个刻度线期间发生,即所有这些操作符将在一个刻度线期间执行或不执行。

或者说,到底哪些操作者会在这个tick期间被执行?以上都是,还是哪些将在下一个tick中执行?解释一下...


start()函数在第一个tick到达时被执行。如果在函数运行过程中,有其他刻度线到达,它们将被跳过。

启动功能将完全按照其逻辑执行

 
kolyango:

语句执行的规则


当把控制权传给for语句时,执行Expression_1。 当for语句的Condition为真时:把控制权传给循环体的第一条语句,在循环体的所有语句执行完毕后,执行Expression_2并把控制权传给头,检查Condition是否为真。 如果for语句的条件是假的:将控制权传递给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中执行?解释一下...


弄清楚了。如果条件耗尽,所有操作者都将被执行。
 
我怎样才能使这段代码在购买前检查我们是否已经有一个购买订单。如果没有市场买单,那么只能执行买入?
原因: