破坏神 - 页 12

 

我做了一个专家顾问,它的下单方式与作者的方法一样,但也有区别。它根据ATR的水平下单(如果方法是双赢的,那么从什么水平下单有什么区别)。在新的一天开始时,关闭并删除所有订单(我只是不知道如何关闭没有TP和SL且不会带来利润的订单)。

你可以尝试优化参数。我只是懒惰,我不相信这种策略。

附加的文件:
[删除]  
khorosh:
当批评懒得跟你讲道理,但你真的想说点什么的时候,沉默总比混日子好。
不要忘了照照镜子。
 

Diablo v09.02.12 (不朽版)

两种类型的订单被放置在离价格一定距离的地方,时间间隔相等:直式订单(从价格向上买入止损,从价格向下卖出止损)和倒式订单(从价格向上卖出限价,从价格向下买入限价)。买入止损单和卖出限价单被放置在同一水平(成对),卖出止损单和买入限价单也是如此。

所有订单都有相同的成交量,止损等于订单之间的步长。

直线订单(买入止损和卖出止损)没有止盈。倒置的订单(卖出限价和买入限价)有算术上递增的获利:第一个订单(离价格最近的)有一个步骤,第二个订单(稍远的)有三个步骤,第三个订单有五个步骤,依此类推。


一个用于下订单的脚本。

// Diablo v09.02.12
#property copyright "Jon Katana"
#property show_inputs
extern int Step=0,Spread=0,Levels=0;
extern double Up=0,Vol=0;
int start()
{for(int i=0;i<(Levels);i++)
{OrderSend(Symbol(),OP_BUYSTOP,Vol,Up+(i*Step+Spread)*Point,0,Up+(i-1)*Step*Point,0,0,0);
OrderSend(Symbol(),OP_SELLSTOP,Vol,Up-(i+1)*Step*Point,0,Up-(i*Step-Spread)*Point,0,0,0);
OrderSend(Symbol(),OP_SELLLIMIT,Vol,Up+i*Step*Point,0,Up+((i+1)*Step+Spread)*Point,Up-(Step*(i+1)+Spread)*Point,0,0);
OrderSend(Symbol(),OP_BUYLIMIT,Vol,Up-((i+1)*Step-Spread)*Point,0,Up-(i+2)*Step*Point,Up+i*Step*Point,0,0);}
return(0);}

该系统是完全不可破坏的。由它自己决定,最后它总是以盈利或零的价格收盘。

非常好的是在步长上没有回落的趋势--利润像滚雪球一样增加,可以多次收集一个价格运动。在平坦的地方,利润是适度的或归零。最慢的变体是 "龙 "的形态,当价格向一个方向移动时,但从每个级别滚回一步,然后再继续前进。在这种情况下,它只是需要更长的时间来达到利润或零。

因此,计算下单的水平之间的步长,以便价格不会因为小的修正而触及已经通过的水平。

只要价格不超过下单的水平,该计划就可以不受监控。另一个变种是跟随大魔王,当达到一定的利润(例如,一个步骤的大小)时关闭,随后再次重新安排订单,或只是一次性关闭利润。

 

脚本中的更正:在卖出限价 订单中,有一个错误的偏移量。

// Diablo v13.02.12
#property copyright "Jon Katana"
#property show_inputs
extern int Step=0,Spread=0,Levels=0;
extern double Up=0,Vol=0;
int start()
{for(int i=0;i<(Levels);i++)
{OrderSend(Symbol(),OP_BUYSTOP,Vol,Up+(i*Step+Spread)*Point,0,Up+(i-1)*Step*Point,0,0,0);
OrderSend(Symbol(),OP_SELLSTOP,Vol,Up-(i+1)*Step*Point,0,Up-(i*Step-Spread)*Point,0,0,0);
OrderSend(Symbol(),OP_SELLLIMIT,Vol,Up+i*Step*Point,0,Up+((i+1)*Step+Spread)*Point,Up-(Step*(i+1)-Spread)*Point,0,0);
OrderSend(Symbol(),OP_BUYLIMIT,Vol,Up-((i+1)*Step-Spread)*Point,0,Up-(i+2)*Step*Point,Up+i*Step*Point,0,0);}
return(0);}
 

Extern int Step=0,Spread=0,Levels=0;
外置 双数 Up=0,Vol=0。

我应该把什么参数放在这里才能使其发挥作用?

 
为什么不把UP变量分配给asc,以便从当前价格 下订单....
 
#property copyright "Jon Katana"
#property show_inputs
extern int Step=50,Spread=2,Levels=5;
extern double Up=0,Vol=0.1;
int TotalOrders,i;
int start()
{Up=Ask;
        TotalOrders=OrdersTotal();
        for (i=0; i<=TotalOrders; i++){
                 if (OrderSelect(0,SELECT_BY_POS)==true){
                    if (OrderType()==OP_BUY) OrderClose(OrderTicket(),OrderLots(),Bid,5,Red);
                    if (OrderType()==OP_SELL) OrderClose(OrderTicket(),OrderLots(),Ask,5,Red);
                    if (OrderType()==OP_SELLSTOP) OrderDelete(OrderTicket(),Green);
                    if (OrderType()==OP_BUYSTOP) OrderDelete(OrderTicket(),Green);
                    if (OrderType()==OP_SELLLIMIT) OrderDelete(OrderTicket(),Green);
                    if (OrderType()==OP_BUYLIMIT) OrderDelete(OrderTicket(),Green);
                 
                 }
        }

for(int i=0;i<(Levels);i++)
{OrderSend(Symbol(),OP_BUYSTOP,Vol,Up+(i*Step+Spread)*Point,0,Up+(i-1)*Step*Point,0,0,0);
OrderSend(Symbol(),OP_SELLSTOP,Vol,Up-(i+1)*Step*Point,0,Up-(i*Step-Spread)*Point,0,0,0);
OrderSend(Symbol(),OP_SELLLIMIT,Vol,Up+i*Step*Point,0,Up+((i+1)*Step+Spread)*Point,Up-(Step*(i+1)-Spread)*Point,0,0);
OrderSend(Symbol(),OP_BUYLIMIT,Vol,Up-((i+1)*Step-Spread)*Point,0,Up-(i+2)*Step*Point,Up+i*Step*Point,0,0);}
return(0);
}
我在脚本中添加了一个清理功能。也就是说,如果有未结订单或挂单,它首先删除所有的东西,然后根据参数设置挂单......
 
IronBird:

Extern int Step=0,Spread=0,Levels=0;
extern double Up=0,Vol=0

应该在这里输入什么参数才能使其发挥作用?

步数 - 订单之间的步数,以点为单位(例如,4位数的订单为20,5位数的订单为200)。

点差 - 以点为单位的点差(例如,4位数为2,5位数为20)。

级别 - 下订单的级别数(例如,20)。

向上 - 价格上方的一条线,下单将从该线开始向上进行(下单将自动从该线偏移一步)。

Vol - 订单的数量(例如0.1)。

 
nikelodeon:
我们为什么不把变量UP分配给asc,这样订单就会从当前价格.... 。

出于两个原因。

1) 不能从某一水平(阻力、支撑、斐波那契、兔子......)下单。

2)有几十个订单,而且不是即时下的。在这段时间内,Ask可以从初始值转移,这将不可预测地移动下单的位置和他们的获利 和止损。这将允许交易中心在不由一对的水平上开出订单,但 "拉 "出单独的订单,而不抓到一对的第二个订单,然后将它们赶到损失,这将破坏整个系统。

 
JonKatana:

出于两个原因。

1) 不能从某一水平(阻力、支撑、斐波那契、兔子......)下单。

2)有几十个订单,而且不是立即下的。在这段时间内,Ask可以从初始值转移,这将不可预测地移动下单的位置和他们的获利和止损。这将允许交易中心在不由一对的水平上开出订单,但 "拉 "出单独的订单,而不抓住一对的第二个订单,然后将它们赶到损失,这将毁掉整个系统。

你可以使用当前价格 设置前两个订单,并相对于第一个订单价格计算其他订单的价格。前两个订单可能是市场订单。