PDA

View Full Version : 编码帮助d'Alembert Forex EA



tlispl
12-07-2014 16:28, 04:28 PM
大家好,

我尝试编写一个处理d'alembert进度的EA(对于所有那些不知道进步d'alembert的人:
http://www.bettingexpert.com/casino/roulette/egy/d’alembert-system)

计划从0.01手和SL 13点/TP 14点开始。

每当交易以亏损结束时,新的交易立即以额外的0.01手开立,并且在下一交易的赢利交易之后立即以0.01手的价格开盘,直到我们达到0.01手。


例:

1.交易0.01手损失

2.交易0.02手损失

3.交易0.03手损失

4.交易0.04手损失

5.交易0.05手赢

6.交易0.04手赢

7.交易0.03手赢

8.交易0.02手

9.交易0.01手


所以这是我的第一个代码尝试,但它在策略测试器中不起作用。 :-(

谁可以帮忙?


插入的代码// --------------------------------------------- --------------------- /| A4.mq4 |/|版权所有©2010,MetaQuotes Software Corp. |/| http://www.metaquotes.net |/ ----------------------------------------------- ------------------- #property copyright版权所有©2010,MetaQuotes Software Corp. #property link http://www.metaquotes.net/ ---- -------------------------------------------------- ------------ /|外部输入参数|/ ----------------------------------------------- ------------------- extern int MagicNumber_101 = 101000; extern int SL = 13; extern int TP = 14;双dXPoint = 1;/ ----------------------------------------------- ------------------- /|专家初始化函数|/ ----------------------------------------------- ------------------- int init(){//----/---- return(0); }/ ---------------------------------------------- -------------------- /|专家去初始化函数|/ ----------------------------------------------- ------------------- int deinit(){//----/---- return(0); }/ ---------------------------------------------- -------------------- /|专家启动功能|/ ----------------------------------------------- ------------------- int start(){double Lotsize = 0.01; (OrdersHistoryTotal()gt; = 1){OrderSelect(OrdersHistoryTotal() - 1,SELECT_BY_POS); Lotsize = OrderLots(); } if(OrderProfit()lt; 0 OrdersHistoryTotal()gt; = 1){Lotsize = Lotsize 0.01; }如果(OrderProfit()gt; 0 OrdersHistoryTotal()gt; = 1 Lotsizegt; = 0.02){Lotsize = Lotsize - 0.01; (OrderSnd(Symbol(),OP_BUY,0.01,MarketInfo(Symbol(),MODE_ASK)),2,Bid-SL * Point,Bid TP * Point,买,MagicNumber_101,0,CLR_NONE); }睡眠(120000); (OrdersTotal()== 0 Minute()== 00){OrderSelect(OrdersHistoryTotal() - 1,SELECT_BY_POS); if(OrderProfit()> 0 OrderType()== OP_BUY){OrderSend(Symbol(),OP_BUY,0.01,MarketInfo(Symbol(),MODE_ASK),2,Bid-SL * Point,Bid TP * Point,buy ,MagicNumber_101,0,CLR_NONE); }睡眠(120000);如果(OrdersTotal()== 0 Minute()== 00){If(OrderProfit()gt; 0 OrderType()== OP_SELL){OrderSend(Symbol(),OP_SELL,0.01,MarketInfo(Symbol(),MODE_BID ); 2,向 SL *点,ASK-TP *点,出售,MagicNumber_101,0,CLR_NONE); }睡眠(120000); } if(OrdersTotal()== 0 Minute()== 00){if(OrderProfit()lt; 0 OrderType()== OP_SELL){OrderSend(符号(),OP_BUY,0.01,MarketInfo(符号(),MODE_ASK),2,出价-SL *点,出价 TP *点,购买,MagicNumber_101,0,CLR_NONE); }睡眠(120000); } OrderProfit()lt; 0 OrderType()== OP_BUY){OrderSend(Symbol(),OP_SELL,0.01,MarketInfo(Symbol(),MODE_BID)如果(OrdersTotal()== 0 Minute ); 2,向 SL *点,ASK-TP *点,出售,MagicNumber_101,0,CLR_NONE); }睡眠(120000); } return(0); }
请不要评论,如吹你的帐户... blabla
只是分享一个交易策略。

问候。

阿代尔阿波洛多罗
10-20-2021 13:26, 01:26 PM
试试这个(在测试仪中是..):插入代码#property严格输入int SL = 130;输入int TP = 140;双重批次= 0.01; int票; int OnInit(){ticket = OrderSend(Symbol(),OP_BUY,lot,Ask,2,Ask-SL * Point,Ask TP * Point);如果(ticket GT; -1)返回INIT_SUCCEEDED;返回INIT_FAILED; } void OnTick(){if(OrderSelect(0,SELECT_BY_POS))return; OrderSelect(ticket,SELECT_BY_TICKET); if(OrderProfit()lt; 0.0){lot = 0.01; ticket = OrderSend(Symbol(),OP_SELL,lot,Bid,2,Bid SL * Point,Bid-TP * Point); } else {if(lot gt; 0.01)lot - = 0.01; ticket = OrderSend(Symbol(),OP_BUY,lot,Ask,2,Ask-SL * Point,Ask TP * Point); }}

tlispl
10-20-2021 14:47, 02:47 PM
嗨,rockit,谢谢!这是mql5的代码?问候。

阿代尔阿波洛多罗
10-20-2021 16:08, 04:08 PM
不,这是自MT4 build 600(目前为755)以来的官方MQL4。另一种风格已弃用,不应再使用。无论如何,这是有限制的。

tlispl
10-20-2021 17:28, 05:28 PM
您好rockit,我想我解决它...插入代码{if(OrderSelect(0,SELECT_BY_POS))return; OrderSelect(ticket,SELECT_BY_TICKET); if(OrderProfit()lt; 0.0){lot = 0.01; (OrderType()== OP_BUY){ticket = OrderSend(Symbol(),OP_SELL,lot,Bid,2,Bid SL * Point,Bid-TP * Point);如果(OrderType()== OP_SELL){ticket = OrderSend(Symbol(),OP_BUY,lot,Ask,2,Ask-SL * Point,Ask TP * Point); }} else {if(lot gt; 0.01)lot - = 0.01; (OrderType()== OP_SELL){ticket = OrderSend(Symbol(),OP_SELL,lot,Bid,2,Bid SL * Point,Bid-TP * Point);如果(OrderType()== OP_BUY){ticket = OrderSend(Symbol(),OP_BUY,lot,Ask,2,Ask-SL * Point,Ask TP * Point); } } 非常感谢您的支持!

tlispl
10-20-2021 18:49, 06:49 PM
您好rockit,代码工作正常,除了每一个新的交易必须开放的趋势,这意味着: - 如果一个长期交易与利润关闭,下一个交易是一个长期交易 - 如果一个长期的交易与损失关闭,下一个交易是短期交易 - 如果短期交易以利润结束,下一笔交易是短期交易 - 如果短期交易以亏损结束,下一笔交易是长期交易问候并且很多感谢提前