如何编码? - 页 278

 

我对它进行了20天的回溯测试,看来我是赔钱的。

我将进行一年的回测,让我们看看

但首先我需要知道我是否可以通过改变外部字符串begin和外部字符串end中的值来修改时间?

 

我还注意到,EA每天都会进行多次交易。所以我们必须告诉EA在第一次突破这个最小-最大-/+5点范围时只做一次交易。此外,我们必须加入追踪止损,而不是仅仅止损。

还有一个关于数字的问题。我们需要的止损是30点,获利是 50点。另外,magis=123是什么意思?

同样的问题,如果(Bid<=(low-0.005)) 0.005这里不是50点吗?

是不是extern double stopLoss = 300.0;

extern double takeProfit = 500.0;

extern string Begin="02:00";

extern string End="10:00";

External double distance = 80;

bool isECN = true;

bool cond = false;

bool cond2 = false;

double low;

double high;

外置双数lot = 0.1;

int magic = 123;

int slippage = 1;

string comment = "";

int ticket;

 
Avasys:
我还注意到,EA每天都会进行多次交易。所以我们必须告诉EA在第一次突破这个最小-最大-/+5点的范围时只做一次交易。此外,我们必须加入追踪止损,而不是仅仅止损。

还有关于数字的问题。300不等于300点吗?我们需要止损30点,获利50点。另外,magis=123是什么意思?

同样的问题,如果(Bid<=(low-0.005)) 0.005这里不是50点吗?

是不是extern double stopLoss = 300.0;

extern double takeProfit = 500.0;

extern string Begin="02:00";

extern string End="10:00";

External double distance = 80;

bool isECN = true;

bool cond = false;

bool cond2 = false;

double low;

double high;

外置双数lot = 0.1;

int magic = 123;

int slippage = 1;

string comment = "";

int票。

[lang=pl]你是对的,应该是0.0005而不是0.005。300和500是因为我使用了五位数的经纪人,这意味着300点,所以是30点。

请告诉我你需要什么样的跟踪止损? 关于魔法数字。正如你所看到的,如果你不喜欢123 [/lang],我将改变你的魔法。

附加的文件:
simple_ea.mq4  4 kb
 
g.pociejewski:
[lang=pl]你是对的,应该是0.0005而不是0.005。300和500是因为我使用了五位数的经纪人,这意味着300点,所以是30点。请告诉我你需要什么样的跟踪止损? 关于魔法数字。正如你所看到的,如果你不喜欢123 [/lang],我将改变你的魔法。

谢谢

那么这个EA现在是否一天只做一次交易,所以一天中可能会出现几次突破水平的情况,但它可能只做一次交易。

另外,关于欧元兑日元,因为它是高价值的货币,我仍然使用相同的数字,或者我移动00?

此外,我是否可以自己改变或修改止损、获利、时间等数字?

关于拖曳止损。我希望当利润上升到35点时,追踪止损必须跟随以锁定利润。

那么,如果我在这里改变呢。

extern double stopLoss =300.0;(我使用4位数的经纪人,所以,我应该修改这个吗?)

extern double takeProfit =500.0;

extern string Begin="0:00"; (如果我想把时间范围定在前一天的22:00和今天的6:00会怎么样?)

extern string End="08:15";

extern double distance = 60;

bool isECN = true;

bool cond = false;

bool cond2 = false。

double low;

double high;

外置双数lot = 0.1;

int magic = 123;

int slippage = 1;

string comment = "";

int ticket;

还有,如果我改变这个

if(Bid<=(low-0.005))

这可能不会影响代码的功能吧?

唯一的问题是,当我尝试回测时,我发现EA在一天内执行了几笔交易,所以你能在代码中管理每天只执行一对交易吗?

 

你好

我发现像英镑兑美元这样的货币对,其价值比日元货币对低,所以在日元货币对的情况下,距离必须是低价值货币对的10倍以上。

还有,我不明白一件事,当我回溯测试 时,结果显示EA在一天内对同一货币对进行了多次交易。

那么是否有可能,如果EA进入头寸,这个头寸必须是当天唯一的一个?

谢谢

另外,以下内容的含义是什么。

intslippage= 1;

string comment= "";

int ticket;

还有,我能否在EA中添加脚本,当交易执行时,会以短信或电子邮件的形式发给我?

谢谢

 

今天的止损交易,如果历史上有一个订单被列出的话

你好。

也许有人能指导我怎么做。

- 订单已经执行,以盈利或亏损的方式关闭,并在历史上列出。

- 现在我想禁止交易/停止在这个货币对(符号)上开新的订单,持续一整天

- 第二天,可以执行新的订单

这就像一个 "每栏最大交易量 "的功能,但基于历史。

众多不同的测试代码片断都失败了,因为我缺乏扩展的编码技巧

例子。

1 2008.01.07 02:36 卖出 1 0.10 1.4730 0.0000 0.0000 0.00 10000.00

2 2008.01.07 03:14 close 1 0.10 1.4714 0.0000 0.0000 16.00 10016.00

3 2008.01.07 03:14 卖出 2 0.10 1.4712 0.0000 0.0000 0.00 10016.00

4 2008.01.07 07:54 关闭 2 0.10 1.4672 0.0000 0.0000 40.00 10056.00

5 2008.01.07 07:54 卖出 3 0.10 1.4671 0.0000 0.0000 0.00 10056.00

6 2008.01.09 15:56 关闭 3 0.10 1.4663 0.0000 0.0000 7.04 10063.04

7 2008.01.10 14:24 买入 4 0.10 1.4708 0.0000 0.0000 0.00 10063.04

8 2008.01.10 14:47 关闭 4 0.10 1.4748 0.0000 0.0000 40.50 10103.54

非常感谢任何帮助

问候

尊敬的迈克尔

 
ixbone:
你好。

也许有人能指导我怎么做。

- 订单被执行,以盈利或亏损的方式关闭,并在历史中列出。

- 现在我想禁止交易/停止在这个货币对(符号)上开立新的订单,持续一整天

- 第二天,可以执行新的订单

这就像一个 "每栏最大交易量 "的功能,但基于历史。

众多不同的测试代码片断都失败了,因为我缺乏扩展的编码技巧

例子。

1 2008.01.07 02:36 卖出 1 0.10 1.4730 0.0000 0.0000 0.00 10000.00

2 2008.01.07 03:14 close 1 0.10 1.4714 0.0000 0.0000 16.00 10016.00

3 2008.01.07 03:14 卖出 2 0.10 1.4712 0.0000 0.0000 0.00 10016.00

4 2008.01.07 07:54 收盘 2 0.10 1.4672 0.0000 0.0000 40.00 10056.00

5 2008.01.07 07:54 卖出 3 0.10 1.4671 0.0000 0.0000 0.00 10056.00

6 2008.01.09 15:56 关闭 3 0.10 1.4663 0.0000 0.0000 7.04 10063.04

7 2008.01.10 14:24 买入 4 0.10 1.4708 0.0000 0.0000 0.00 10063.04

8 2008.01.10 14:47 关闭 4 0.10 1.4748 0.0000 0.0000 40.50 10103.54

非常感谢任何帮助

问候

迈克尔

[lang=pl]嗨,迈克尔。

有一个问题,如果当天的任何头寸被关闭,你是否需要停止开新的头寸,或者你不允许开空头,如果任何空头

被关闭?在OP_BUY的情况下,有什么例子可以证明这一点(对其他人来说也类似)?

int time;

bool cond = true;

double stopLoss = 50;

double takeProfit = 70;

double lots = 0.1;

int orders = 0;

int magic = 123;

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

//|专家初始化函数|

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

int init()

{

//----

//----

return(0);

}

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

//|专家的去初始化功能|

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

int deinit()

{

//----

//----

return(0);

}

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

//|专家启动功能|

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

int start()

{

Print(countOrders(magic, OP_BUY))。

if(orders !=countOrders(magic,OP_BUY)) cond = false;

if(time !=DayOfWeek()) cond = true;

如果(cond) {

OrderSend(Symbol(),OP_BUY,lot,Ask, 1,sltpValue(Ask - stopLoss*Point, stopLoss),sltpValue(Bid+ takeProfit*Point, takeProfit),"",magic)。

}

orders = countOrders(magic,OP_BUY);

时间 = DayOfWeek();

//----

返回(0)。

}

int countOrders(int oMagic,int oType) {

int count=0;

for(int i=0;i<OrdersTotal();i++) {

if(OrderSelect(i,SELECT_BY_POS)) {

如果(OrderMagicNumber()==oMagic) {

如果(OrderSymbol()==Symbol()) {

如果(OrderType()==oType || oType<0){

count++;

}

}

}

}

}

return(count)。

}

double sltpValue(double w1, int w2){

如果(w2 == 0)

返回(0)。

返回(NormalizeDouble(w1, Digits))。

}

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

我希望这很清楚。如果有任何问题,请联系我。

干杯。

Grzesiek[/lang]

 

你好,Grzesiek。

是的,只有在当日停止开立新的头寸,不管是买入、卖出、待定还是取消。

- 如果一个订单在盈利、亏损、取消或待定的情况下被关闭,并在历史记录中注明--在当前日期,这个符号()不允许有任何形式的新交易。

- 如果我们有一个新的一天,所有类型的新订单都可以被执行。

我所做的一切并不奏效。

extern bool Only1OrderPerDay=true。

如果(Only1OrderPerDay==true){

CountHistoryOrders()。

}

void CountHistoryOrders(){

for(int d=0;d<OrdersHistoryTotal();d++){

OrderSelect(d,SELECT_BY_POS,MODE_HISTORY);{

如果(OrderSymbol()==Symbol() && (OrderMagicNumber()==Magic || Magic==0))d++;

Print("HistoryOrders "+DoubleToStr(d,0))。

{

如果(d>0 ....time? ...){

返回。

}}}}}

谢谢你的帮助

迈克尔

g.pociejewski:
[lang=pl]Hi Michael,

有一个问题,如果当天的任何头寸被关闭,你是否需要停止开新的头寸,或者你不允许开空头,如果任何空头

被关闭?在OP_BUY的情况下,有什么例子可以证明这一点(对其他人来说是类似的)

int time;

bool cond = true;

double stopLoss = 50;

double takeProfit = 70;

double lots = 0.1;

int orders = 0;

int magic = 123;

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

//|专家初始化函数 |

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

int init()

{

//----

//----

return(0);

}

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

//|专家的去初始化功能|

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

int deinit()

{

//----

//----

return(0);

}

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

//|专家启动功能|

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

int start()

{

Print(countOrders(magic, OP_BUY))。

if(orders !=countOrders(magic,OP_BUY)) cond = false;

if(time !=DayOfWeek()) cond = true;

如果(cond) {

OrderSend(Symbol(),OP_BUY,lot,Ask, 1,sltpValue(Ask - stopLoss*Point, stopLoss),sltpValue(Bid+ takeProfit*Point, takeProfit),"",magic)。

}

orders = countOrders(magic,OP_BUY);

时间 = DayOfWeek();

//----

返回(0)。

}

int countOrders(int oMagic,int oType) {

int count=0;

for(int i=0;i<OrdersTotal();i++) {

if(OrderSelect(i,SELECT_BY_POS)) {

如果(OrderMagicNumber()==oMagic) {

如果(OrderSymbol()==Symbol()) {

如果(OrderType()==oType || oType<0){

count++;

}

}

}

}

}

return(count)。

}

double sltpValue(double w1, int w2){

如果(w2 == 0)

返回(0)。

返回(NormalizeDouble(w1, Digits))。

}

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

我希望这很清楚。如果有任何问题,请联系我。

干杯。

Grzesiek[/lang]
 

拖拽式止损

你好

我有拖拽式止损脚本,我很想使用它。但在我的经纪商那里,在同一个scart中的2个订单不能工作,只能设置一个订单。我想在同一个地方为两个订单设置止损。

这有什么问题吗?它在其他经纪商那里工作正常。

请帮助

int start()

{

//----

int digits = MarketInfo(Symbol(),MODE_DIGITS);

double value = NormalizeDouble(WindowPriceOnDropped(),digits);

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

{

if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES))

继续。

如果(OrderSymbol()!=Symbol())

继续。

RefreshRates()。

如果(OrderType()==OP_BUY)

如果(value<Bid)

OrderModify(OrderTicket(),OrderOpenPrice(),value, OrderTakeProfit(), OrderExpiration(),White)。

如果(OrderType()==OP_SELL)

如果(value>Ask)

OrderModify(OrderTicket(),OrderOpenPrice(),value, OrderTakeProfit(), OrderExpiration(),White)。

if((OrderType()==OP_BUYSTOP) || (OrderType()==OP_BUYLIMIT))

如果(value<OrderOpenPrice())

OrderModify(OrderTicket(),OrderOpenPrice(),value, OrderTakeProfit(),OrderExpiration(), White)。

if((OrderType()==OP_SELLSTOP) || (OrderType()==OP_SELLLIMIT))

如果(value>OrderOpenPrice())

OrderModify(OrderTicket(),OrderOpenPrice(),value, OrderTakeProfit(), OrderExpiration(),White)。

}

return(0);

}

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

 

我如何在EA中找到两个不同的指标的XY共线位置,以买入和卖出其中的交叉点?

比如说在同一个子窗口中的Macd 和另一个指标?