如何编码? - 页 123

 
InTrance:
不要尝试,做

我在工作......而且这里的metatrader端口被封锁了

 

嘿,我还是个编程新手,我在给这个简单的EA添加以下功能时遇到了麻烦。

1.获取利润

2.止损

3.追踪止损

4.激活追踪止损的点数

//---- input parameters

extern double Lots=0.1;

extern int Slippage=5;

int MagicNum = 98760;

bool longPosOpened, shortPosOpened;

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

//| expert initialization function |

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

int init()

{

//----

//----

return(0);

}

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

//| expert deinitialization function |

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

int deinit()

{

//----

//----

return(0);

}

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

//| expert start function |

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

int start()

{

double crossup = iCustom(NULL , 0, "18_28Cross", 1,18,1,28,1,0, 1);

double crossdown = iCustom(NULL , 0, "18_28Cross", 1,18,1,28,1,1,1);

if (crossup != EMPTY_VALUE)

{

if (!PosOpened(OP_BUY))

{

CloseAllOpenAndPendingTrades();

OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0,Symbol(),MagicNum,0);

}

}

else if(crossdown != EMPTY_VALUE)

{

if (!PosOpened(OP_SELL))

{

CloseAllOpenAndPendingTrades();

OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0,0,Symbol(),MagicNum,0);

}

}

return(0);

}

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

bool PosOpened(int orderType)

{

int total=OrdersTotal();

for(int cnt=0;cnt<total;cnt++)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if(OrderSymbol() == Symbol() && OrderType() == orderType)

{

return(true);

}

}

return(false);

}

void CloseAllOpenAndPendingTrades()

{

int total = OrdersTotal();

for(int i=total-1;i>=0;i--)

{

OrderSelect(i, SELECT_BY_POS);

if(Symbol() != OrderSymbol()) continue; // important! only close positions of current currency pair

int type = OrderType();

bool result = false;

switch(type)

{

//Close opened long positions

case OP_BUY : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 200);

break;

//Close opened short positions

case OP_SELL : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), 200);

break;

//Close pending orders

case OP_BUYLIMIT :

case OP_BUYSTOP :

case OP_SELLLIMIT :

case OP_SELLSTOP : result = OrderDelete( OrderTicket() );

}

}

return(0);

}

 

如何检测抛物线 沙尔的跳跃?

我目前正在使用这段代码来检测一个跳跃。

if(iSAR(NULL,0,0.02,0.2,0)-iSAR(NULL,0,0.02,0.2,1)>1.0){ // if there is a jump up

但这似乎并不正确。

我怎样才能检测出psar是否高于或低于我的条形图?

TIA

 
在Metatrader中使用你的代理...

技巧

ssvl:
我在工作中......而metatrader的端口在这里被封锁了
 
将你的sar结果与当前的close[0]进行比较
ssvl:
我目前正在使用这段代码来检测跳跃。

if(iSAR(NULL,0,0.02,0.2,0)-iSAR(NULL,0,0.02,0.2,1)>1.0){ //如果有跳空上涨的话

但这似乎并不正确。

我怎样才能检测出psar是否高于或低于我的条形图?

TIA
 

嘿,IN10TION,你知道有什么好方法可以检查 交易是否刚刚结束,以便EA在下一个信号出现之前不会再进行交易(重新进入)?我的EA检查交易条件,比如说10条,但如果卖出交易条件在前几条已经满足并关闭,我希望EA停止检查,直到10条偏移,并等待下一个实际信号?

谢谢

 

使用OrderHistory()函数

拉克斯

 
luxinterior:
使用OrderHistory()函数。 Lux

谢谢你,但不知道这怎么操作。我不是真的想知道一个订单是否刚被关闭,而是想知道一个订单是否在这么多条内被打开和关闭。然后只在下一个主要信号输入时再进行交易。我仍然试图消除在订单刚刚打开和关闭但交易条件仍然满足的情况下的快速交易再进入。我想让它在某种程度上只对每个主信号进行一次交易,所以即使交易条件仍然有效,如果已经在该信号上进行了交易,也不会再进行交易(包括偏移)。

让我看看我是否能用一个例子来解释。这可能是没办法的事。

例如:假设我使用QQE和VQI作为信号交易的切入点(QQE交叉,VQI从买入变为卖出或相反)。

现在我添加了一个SignalOffset选项,比如说6个柱子,因为QQE交叉和VQI信号可能不会完全发生在同一个柱子上。

现在让我们假设,当QQE和VQI一致时,在2个柱子内有一个有效的交易,所以现在交易被放置,但我的TP是10点,柱子移动15点,我的TP被击中,交易被关闭。交易条件仍然满足,因为我的6个柱状体偏移,现在另一笔交易被放置(重新进入),坏的 ,如果一个或两个柱状体移动100点,我的TP是10,我刚刚有10笔交易,坏的 ,我只希望每个信号有一个交易(包括偏移)。

这有意义吗?我仍然希望它在6个柱子内进行交易,如果发生相反的信号,而其他的交易仍然被关闭。

谢谢

 
做一个[switch] 变量,如果已经有一个卖出订单,它就会停止做其他的卖出(switch值为-1),只有当有一个买入信号和买入订单时才会重新调整(switch值为1)......你可以考虑一些额外的(剩余的)东西,就是定时器的重置,如果有一个大的上升或下降趋势,你可以有2或3个卖出,在相同订单之间有某种间隔(计时)。

解释

matrixebiz:
谢谢你,但不确定这一点是如何运作的。我不是真的想知道一个订单是否被关闭,而是想知道一个订单是否在这么多条内被打开和关闭。然后只在下一个主要信号输入时再进行交易。我仍然试图消除在订单刚刚打开和关闭但交易条件仍然满足的情况下的快速交易再进入。我想让它在某种程度上只对每个主信号进行一次交易,所以即使交易条件仍然有效,如果已经在该信号上进行了交易,也不会再进行交易(包括偏移)。

让我看看我是否能用一个例子来解释。这可能是无可奈何的事情。

例如:假设我使用QQE和VQI作为信号交易的切入点(QQE交叉和VQI从买入变为卖出或相反)。

现在我添加了一个SignalOffset选项,比如说6个柱子,因为QQE交叉和VQI信号可能不会完全发生在同一个柱子上。

现在让我们假设,当QQE和VQI一致时,在2个柱子内有一个有效的交易,所以现在交易被放置,但我的TP是10点,柱子移动15点,我的TP被击中,交易被关闭。交易条件仍然满足,因为我的6个柱状体偏移,现在另一笔交易被放置(重新进入),坏的 ,如果一个或两个柱状体移动100点,我的TP是10,我刚刚有10笔交易,坏的 ,我只希望每个信号有一个交易(包括偏移)。

这有意义吗?我仍然希望它在6个柱子内进行交易,如果发生相反的信号,而其他的交易仍然被关闭。

谢谢
 

在两个metatrader应用程序之间共享数据

我想把数据从一个metatrader写到一个文件中,以便从第二个metatrader读取。

问题是,当我试图写到c:\\时,我收到错误信息 "绝对文件路径 "C:\EURUSD.txt "不允许"。

有什么想法或其他方法可以在两个metatrader应用程序之间分享数据?

原因: