如何编码? - 页 74

 

你是说。

if ( ( CloseSell1_1 CloseSell2_2 ) || ( CloseSell3_1 > CloseSell3_2 ) ) Order = SIGNAL_CLOSESELL;

[/PHP]or do you mean:

[PHP]if ( ( CloseSell1_1 CloseSell2_2 || CloseSell3_1 > CloseSell3_2 ) ) Order = SIGNAL_CLOSESELL;

 

谢谢你。

现在我看了看,这很明显。这招很管用。最初的回测 不是很好。是时候进行调整了。

 
Big Be:
我需要知道如何改变我未平仓订单的一半的止损。 我的理解是,这意味着开两个订单,例如0.2手和0.2手。

我的EA以资金管理计算为基础来确定手数。

在一个订单的止损被改变后(基于达到的价格水平),我将让我的退出代码关闭两个订单,除非他们(现在不同)的止损被击中。

另一个订单保留其原来的止损,或可能将其上移至收支平衡。

如果初始手数(来自MM函数)是奇数,而不是四舍五入的奇数手或十数手,我想在两个订单之间不平均地分割它们。

我相信这涉及到神奇的数字,和几行代码,在这里和那里。 也许有一个具有这些功能的EA,我可以复制。

谢谢你的帮助。

大贝

你好;你在其他地方明确问过我这个问题,但是已经有了一些回复,我不知道你的问题中哪些部分可能仍然存在。这需要一个回合,你再问一下....。

 

嗨,拉尔夫。

ralph.ronnquist:
你好;你在其他地方明确问过我这个问题,但已经有一些回复了,我不知道你的问题哪些部分可能还存在。这需要一个回合,你再问一下....

好吧,没有一个回复真正回答了我的任何问题--有些是关于我对他人问题的回答。

因此,所有的部分仍然存在。(关于我在这个线程中发布的问题的引述,请看以前的帖子)。

谢谢。

大贝

 

设置限价单的问题

嘿,伙计们,女士们。

我试图在我的EA中设置代码,在一个特定的价格水平上进行交易(限价单)。 这就是限价单的代码。

ticket=OrderSend(Symbol(),OP_BUYLIMIT,lot,Ask+10*Point,3,BuyStopLoss,0, "xx Buy",16384,0,Red)。

lots和BuyStopLoss是预先确定的计算值,当我把它切换到普通市场的 "OP_BUY "函数时,它们可以工作。 Ask+10*Point只是我想出的一个高于当前价格的任意值,实际上我通常使用BuyEntry,这也是预先确定的。

当我试图在策略测试器中 运行该代码时,我得到的错误是。

"2008.02.24 16:00:08 2004.06.17 15:15 xxEA EURUSD,M15: OrderSend error 130" (这是一个与止损有关的错误)。

有什么想法是导致这个错误的吗? 我想一定是我设置限价单的方式有问题,或者它在策略测试器中不能执行限价单(?),因为它在市价单中似乎工作正常。 谢谢你的帮助。

 

专家顾问生成器?

Lonestar:
我对Metatrader比较陌生,但对交易并不陌生,我使用专家顾问生成器创建了一些EA。大多数工作正常,但当我使用多个出口时遇到了麻烦。用OR函数关闭(买入)逻辑和关闭(卖出)逻辑。用 "和 "创建的多个出口运行良好,但它不会识别我用 "或 "创建的任何出口。以下是退出代码。

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

//| 信号开始(退出卖出)|

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

if (CloseSell1_1 CloseSell2_2 ||CloseSell3_1 > CloseSell3_2) Order = SIGNAL_CLOSESELL;

粗体部分是它所忽略的信号。有什么想法吗?这是唯一阻碍我进行正确回测的原因。如果有人能提供帮助,并且回测结果良好,你可以拥有它。通过手动过滤掉应该被关闭的交易,它看起来很有希望。

谢谢。

什么是专家顾问生成器?

 
nondisclosure007:
什么是专家顾问生成器?

Gordago这个的 东西

 

不同的地段大小。

你好。

我可以得到一个EA的不同手数的代码吗?

例如,第一笔卖单为 0.2,第二笔卖单为0.1。

请注意。

SIDDESH

 
Linuxser:
Gordago这个的 东西

谢谢。 我喜欢Gordago的策略测试(不需要实际写代码)。 我需要对它为我的EA所使用的模板进行调整。 我发现自己对它所创建的东西做了一些编辑,以满足我自己的编码风格。 但总的来说,我印象很深。

我以为Gordago是一个商业产品? 我没有看到它的价格是多少。

 

开仓交易时的ERR_COMMON_ERROR #2

大家好。

在前几天我遇到的NewBar问题上得到了很好的帮助后,我学到了很多东西,并在学习EA方面取得了巨大的进步。(主要是作为一个学习练习和一个非常基本的系统,我想测试一下(无疑是不赚钱的,但这是一个很好的学习练习!)。

我写了一些脚本,每一个新的条形图,它关闭当前货币对上的所有交易,然后取20期ATR值,并输入一个买入止损点和一个卖出止损点,当它从市场开盘起移动到ATR值的一半时进入市场。然后在ATR值处设置止盈(我的计算是,如果它已经走了一半,那么从当天的平均运动来看,它可能会继续冲击止盈。这可能是完全错误的,但无论如何,我想在模拟账户而不是策略测试器上 对其进行编程,以尝试价值。)

我已经对其进行了编程,并最终解决了如何使用NormalizeDouble去除小数点后的额外数字,但现在当EA试图在条形图开始时打开买入止损时,我有ERR_COMMON_ERROR或错误#2。

这是非常无助的。我已经检查了它定义的开仓、止盈和止损的值,这些看起来都是合理的,我无法找出其他可能的原因。由于GetLastError没有更多的反馈,这让我一晚上都很郁闷!请帮助我。请帮助我。

ATR_Value = iATR(NULL,0,ATR_Period,0); //Get current ATR Value from chart

if (ATR_Value < (ATR_Minimum*Point)) //Check current ATR_Value to ensure it is no less than the ATR_Minimum set

{

Print("Too little range for trading. ATR_Minimum ",(ATR_Minimum*Point)," ATR_Value ",ATR_Value);

return(0);

}

double buyopen,nbuyopen,buysl,nbuysl,buytp,nbuytp,sellopen,nsellopen,sellsl,nsellsl,selltp,nselltp;

buyopen=((iOpen(NULL,0,0))+(ATR_Value*Open_Multiplier)+Open_Offset);

nbuyopen=NormalizeDouble(buyopen,Digits);

buysl=((iOpen(NULL,0,0))+(ATR_Value*SL_Multiplier)+SL_Offset);

nbuysl=NormalizeDouble(buysl,Digits);

buytp=((iOpen(NULL,0,0))+(ATR_Value*TP_Multiplier)+TP_Offset);

nbuytp=NormalizeDouble(buytp,Digits);

sellopen=((iOpen(NULL,0,0))-(ATR_Value*Open_Multiplier)-Open_Offset);

nsellopen=NormalizeDouble(sellopen,Digits);

sellsl=((iOpen(NULL,0,0))-(ATR_Value*SL_Multiplier)-SL_Offset);

nsellsl=NormalizeDouble(sellsl,Digits);

selltp=((iOpen(NULL,0,0))-(ATR_Value*TP_Multiplier)-TP_Offset);

nselltp=NormalizeDouble(sellsl,Digits);

Print("Open:",nbuyopen," TP:",nbuytp," SL:",nbuysl);

int ticketbuy;

ticketbuy=OrderSend(Symbol(),OP_BUYSTOP,Lots,nbuyopen,Max_Slippage,nbuysl,nbuytp,"Buy Order",12345,(Bar_Period-Bar_Offset),Green);

if(ticketbuy<0)

{

Print("Buy Order failed with error #",GetLastError());

return(0);

}

int ticketsell;

ticketsell=OrderSend(Symbol(),OP_SELLSTOP,Lots,nsellopen,Max_Slippage,nsellsl,nselltp,"Buy Order",54321,(Bar_Period-Bar_Offset),Red);

if(ticketsell<0)

{

Print("Buy Order failed with error #",GetLastError());

return(0);

}

非常感谢任何帮助,我还附上了mt4,如果有人不介意看一下。它还包含了其他人的部分脚本,对不起,我没有注明出处,但它们都在这个网站上发布过。(如果我发布了EA,当然会注明,我发这个帖子只是想解决这个问题,因为这是我晚上的苦恼。)

霍华德

附加的文件:
atr.mq4  6 kb