如何编码? - 页 69

 

嗨,沃尔夫

wolfe:
我知道这个问题以前已经说过了,但谁能告诉我一些代码,允许每条街只有一个交易? 谢谢。

这对我来说是有效的

datetime LastOpenTime=0。

//////////////////////////////////////////

int Order;

for(int t=0;t<OrdersTotal();t++)

{

if(OrderSelect(t, SELECT_BY_POS, MODE_TRADES))

{

如果(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumbers && OrderType() == OP_SELL)

{

如果(OrderOpenTime()>LastOpenTime)LastOpenTime=OrderOpenTime()。

}

}

}

然后我就把它贴在我的代码中

如果(LastOpenTime0)

{ OrderSend(blah blah)

Time[0]是你的时间框架的蜡烛的开始,所以要确保你选择正确的时间框架。

 
waltini:
这对我来说是有效的

datetime LastOpenTime=0。

//////////////////////////////////////////

....................

时间[0]是你的时间框架的蜡烛的开始,所以请确保你选择正确的时间框架。

这可能更简单一点。

datetime LastOpenTime; //Global var

[/CODE]

[CODE]

int init()

{

LastOpenTime=Time[0];

}

int start()

{

................

if(LastOpenTime!=Time[0])

{

// do your trade code

LastOpenTime=Time[0];

}

..............

return(0);

}

你的 "交易代码 "将在任何蜡烛上只执行一次。即使您关闭MT4并再次打开它,该蜡烛上也不会再有任何交易。但是请注意,假设你在下午5点的蜡烛上激活了EA,那么在这根蜡烛上也不会有任何交易,你必须等待下一根蜡烛的到来。

 
wolfe:
我知道这个问题以前已经涉及过了,但谁能告诉我一些代码,允许每条街只有一个交易? 谢谢。

全局,把这个放在init()之前

datetime PreviousBar;[/CODE]

In the order placement and/or order close stuff, wrap it in this:

if(NewBar() == true)

{

if blah blah blah, gimme pips // not actual functions but you get the idea

if blah blah blah, close orders // um

}

Common function outside main loop:

[CODE]//--- returns true if current bar just formed

bool NewBar()

{

if(PreviousBar<Time[0])

{

PreviousBar = Time[0];

return(true);

}

else

{

return(false);

}

return(false);

}
 

关于编程的帮助

你好。

我一直在做我的工作,尝试编程一些东西,但我遇到了一块砖墙。所以我尝试了一些真正简单的东西。如果我取消注释 "Print("Five"); "并测试程序,它只会打印 "Yahooooooo"。(好吧,它也打印了 "一")。现在把 "Print("Five"); "注释掉,即使是 "Yahooooooo "也不打印了。我错过了什么?

附加的文件:
trial.mq4  2 kb
 

当一个交易达到TP时,关闭所有挂单和开单

你好。

我试图在我的EA中写一个代码,一旦有一笔交易达到TP,就关闭所有的挂单和开单。以下是我使用的代码,似乎不工作。谁能看一下并告诉我缺少什么。谢谢。

if( PreviousOpenOrders > OpenOrders )

{

for( cnt = OrdersTotal()-1; cnt >= 0; cnt-- )

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)。

mode = OrderType()。

如果( OrderSymbol() == Symbol() &&)

OrderMagicNumber()==Magic)

{

如果( mode == OP_BUY ) OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),slipage,Blue)。

如果( 模式 == OP_SELL ) OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),slipage,Red);

如果(模式 == OP_SELLLIMIT) OrderDelete(OrderTicket())。

如果(模式 == OP_BUYLIMIT) OrderDelete(OrderTicket())。

}

}

}

}

 

分别使用Bid和Ask而不是OrderClosePrice()...

 
ralph.ronnquist:
分别使用Bid和Ask而不是OrderClosePrice()...

你好,拉尔夫。

你能帮我举个例子吗?谢谢你的帮助。

 
timebandit:
嗨,我一直在做我的工作,尝试编程一些东西,但我遇到了一块砖墙。所以我尝试了一些真正简单的东西。如果我取消注释 "Print("Five"); "并测试程序,它只会打印 "Yahooooooo"。(好吧,它也打印了 "一")。现在把 "Print("Five"); "注释掉,即使是 "Yahooooooo "也不打印了。我错过了什么?

如果你不使用括号,只有一行被执行。这取决于你想做什么,但你应该这样做。

if(d>5)

{

Print("Five");

Print("Yahoooooooooooooooooooooooo");

}
 

if( mode == OP_BUY ) OrderClose(OrderTicket(),OrderLots(),Bid,slippage,Blue);

if( mode == OP_SELL ) OrderClose(OrderTicket(),OrderLots(),Ask,slippage,Red);

 

移动一次止损

这是我的一点代码,用于在一定的利润后 止损移动到收支平衡。这有什么问题吗?

//MoveOnce

if(MoveStopOnce && MoveStopWhenPrice > 0) {

if(Bid - OrderOpenPrice() == Point * MoveStopWhenPrice) {

OrderModify(OrderTicket(),OrderOpenPrice(), Bid - Point * MoveStopTo, OrderTakeProfit(), 0, Red);

if (!EachTickMode) BarCount = Bars;

continue;

}

}