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

 
Vinin:

维克多,请看一下你的个人留言。
 
glasha:
维克多,请看一下你的个人留言。

见过它
 
dimon74:

OrderSend()是在每个tick点触发的(据我理解)。为了消除这个问题,在启动函数之前放置一个变量,例如int H=0

进一步的代码。

..........

如果 ( H==0)

{

OrderSend(blah blah blah)。

}

H=1;

而且不需要代数。而OrdersTotal() 最好不要被用来限制。


我明白了,这对我来说是有效的,我的意思是我必须打开一个订单,它不会在下一个点打开。

第二个订单,第二个订单只有在第一个订单关闭时才需要。

 

如果我没弄错的话,一定是这样的?

int H=0。

int F=OrdersTotal()

..........

如果(F<1)

{

如果 ( H==0)

{

OrderSend(blah blah blah)。

}

H=1;}

 
gheka:

如果我没弄错的话,一定是这样的?

int H=0。

int F=OrdersTotal()

..........

如果(F<1)

{

如果 ( H==0)

{

OrderSend(blah blah blah)。

}

H=1;}

total = CountTrades();
if (total < 1) {
ticket = OrderSend
}

int CountTrades() {
   int count = 0;
   for (int trade = OrdersTotal() - 1; trade >= 0; trade--) {
      OrderSelect(trade, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber) continue;
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
         if (OrderType() == OP_SELL || OrderType() == OP_BUY) count++;
   }
   return (count);
}
 
gheka:


这是可以理解的,一切都对我有用,我的意思是一个订单被打开,而不是在下一个点打开。

第二个订单,只有在第一个订单关闭时才需要第二个订单。

你应该在这里检查。
 

大家下午好。我不太擅长写EA,我试图学习这些东西,但我刚刚开始,对我来说相当困难。我想写一个EA,当价格穿越移动平均线时开仓交易,并在相反的穿越处平仓,可以使用止损或追踪止损。我找到了这样一个EA的例子,但没有拖曳止损或止损,交易只是在穿越时打开和关闭。我没有足够的知识来做这个。我想请人帮助我在哪里设置追踪止损和止损,以及如何使其发挥作用。

#财产版权"Jake Sunders"

#属性链接 "feloq@mail.ru"



#define STATE_SQUARE 0

#define STATE_LONG 1

#define STATE_SHORT 2



//---- 输入参数

外来int MAPeriod=26;
外来的双倍LotsNumber=1.0。
外来的双倍TrailingStop=50。
外置双倍止损=50。


//---- 全局变量

int 当前状态。

int MyOrderTicket;

//+------------------------------------------------------------------+

//|专家初始化功能|

//+------------------------------------------------------------------+

int init()

{

//----

如果(iMA(NULL, 0, MAPeriod, 0, MODE_SMA, PRICE_CLOSE, 0) > Close[0])

当前状态 = STATE_SHORT。

否则 CurrentState = STATE_LONG;

MyOrderTicket = 0;
//----
return(0);
}
//+------------------------------------------------------------------+
//|专家去初始化功能|
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//|专家启动功能|
//+------------------------------------------------------------------+
int start()
{
//----
int err;
双料硕士。
MA = iMA(NULL, 0, MAPeriod, 0, MODE_EMA, PRICE_CLOSE, 0)。
如果 ( CurrentState == STATE_LONG)
{
if (MA > Close[1]) //移动平均线高于收盘价。
{
当前状态 = STATE_SHORT。
//转而出售
//-----------如果打开了,就关闭位置
if ( MyOrderTicket != 0)
{
如果(!OrderClose(MyOrderTicket, LotsNumber, Bid, 3, CLR_NONE))
{
err = GetLastError()。
Print("关闭位置时出错:", err)。
return(0);
}
MyOrderTicket = 0;
}
RefreshRates()。
//------------- 多头头寸成功平仓
//---- 现在让我们建立一个卖出头寸
//----检查自由资金
MyOrderTicket = OrderSend(Symbol(), OP_SELL, LotsNumber, Bid, 3, 0, 0,
null, 0, 0, clr_none)。
如果(MyOrderTicket<0)
{
err = GetLastError()。
Print("开仓时出错:", err)。
MyOrderTicket = 0;
}
}
}
否则
{
if (MA < Close[1]) // 滑动平均线低于收盘价
{
当前状态 = STATE_LONG;

//反过来买
//-----------如果打开了,就关闭位置
if ( MyOrderTicket != 0)
{
如果(!OrderClose(MyOrderTicket, LotsNumber, Ask, 3, CLR_NONE))
{
err = GetLastError()。
Print("关闭位置时出错:", err)。
return(0);
}
MyOrderTicket = 0;
}
RefreshRates()。
//------空头头寸被成功平仓
//---- 现在让我们开一个买入头寸
//----检查自由资金
MyOrderTicket = OrderSend(Symbol(), OP_BUY, LotsNumber, Ask, 3, 0, 0,
null, 0, 0, clr_none)。
如果(MyOrderTicket<0)
{
err = GetLastError()。
Print("开仓时出错:", err)。
MyOrderTicket = 0;
}
}
}
//----
return(0);
}

 

人们,请指教!如何在蜡烛或烛台的到期日进行开仓和平仓?也就是说,它在一个新的蜡烛图开盘时开盘,并收盘

如何在蜡烛图的收盘时获取指标值?

 
gheka:

我有买入和卖出的订单,几乎50-100个头寸都以相同的价格打开。

如果我没有弄错的话,我应该如何使一个订单开放, - OrdersTotal()

如果是这样,我应该如何使用它,应该把它放在哪里? 我觉得如果没有这个功能,我需要输入整个代数


做交易的条件不对,见两个MA的例子。
 
Superjake:

大家下午好。我不太擅长写EA,我试图学习这些东西,但我刚刚开始,对我来说相当困难。我想写一个EA,当价格穿越移动平均线时开仓交易,并在相反的穿越处平仓,可以使用止损或追踪止损。我找到了这样一个EA的例子,但没有拖曳止损或止损,交易只是在穿越时打开和关闭。我没有足够的知识来做这个。我想请人帮助我在哪里设置追踪止损和止损,以及如何使其发挥作用。

#财产版权 "Jake Sunders"

#属性链接 "feloq@mail.ru"



#define STATE_SQUARE 0

#define STATE_LONG 1

#define STATE_SHORT 2



//---- 输入参数

外来int MAPeriod=26;
外来的双倍LotsNumber=1.0。
外来的双倍TrailingStop=50。
外置双倍止损=50。


//---- 全局变量

int 当前状态。

int MyOrderTicket;

//+------------------------------------------------------------------+

//|专家初始化功能|

//+------------------------------------------------------------------+

int init()

{

//----

如果(iMA(NULL, 0, MAPeriod, 0, MODE_SMA, PRICE_CLOSE, 0) > Close[0])

当前状态 = STATE_SHORT。

否则 CurrentState = STATE_LONG;

MyOrderTicket = 0;
//----
return(0);
}
//+------------------------------------------------------------------+
//|专家去初始化功能|
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//|专家启动功能|
//+------------------------------------------------------------------+
int start()
{
//----
int err;
双料硕士。
MA = iMA(NULL, 0, MAPeriod, 0, MODE_EMA, PRICE_CLOSE, 0)。
如果 ( CurrentState == STATE_LONG)
{
if (MA > Close[1]) //移动平均线高于收盘价。
{
当前状态 = STATE_SHORT。
//转而出售
//-----------如果打开了,就关闭位置
if ( MyOrderTicket != 0)
{
如果(!OrderClose(MyOrderTicket, LotsNumber, Bid, 3, CLR_NONE))
{
err = GetLastError()。
Print("关闭位置时出错:", err)。
return(0);
}
MyOrderTicket = 0;
}
RefreshRates()。
//------------- 多头头寸成功平仓
//---- 现在让我们建立一个卖出头寸
//----检查自由资金
MyOrderTicket = OrderSend(Symbol(), OP_SELL, LotsNumber, Bid, 3, 0, 0,
null, 0, 0, clr_none)。
如果(MyOrderTicket<0)
{
err = GetLastError()。
Print("开仓时出错:", err)。
MyOrderTicket = 0;
}
}
}
否则
{
if (MA < Close[1]) // 滑动平均线低于收盘价
{
当前状态 = STATE_LONG;

//反过来买
//-----------如果打开了,就关闭位置
if ( MyOrderTicket != 0)
{
如果(!OrderClose(MyOrderTicket, LotsNumber, Ask, 3, CLR_NONE))
{
err = GetLastError()。
Print("关闭位置时出错:", err)。
return(0);
}
MyOrderTicket = 0;
}
RefreshRates()。
//------空头头寸被成功平仓
//---- 现在让我们开一个买入头寸
//----检查自由资金
MyOrderTicket = OrderSend(Symbol(), OP_BUY, LotsNumber, Ask, 3, 0, 0,
null, 0, 0, clr_none)。
如果(MyOrderTicket<0)
{
err = GetLastError()。
Print("开仓时出错:", err)。
MyOrderTicket = 0;
}
}
}
//----
return(0);
}


请看这个例子
原因: