在启动"TrendMeLeaveMe"EA之前只要画出趋势是向上还是向下. 设置属性, 运行EA, 然后就可以去睡觉或者工作了.
1. 本EA不会自动工作. 您必须画出是向上趋势, 向下趋势, 或者水平趋势. 把它称为buystop 或者 sellstop , 设置 BuyStop_StepUpper, BuyStop_StepLower, SellStop_StepUpper 和SellStop_StepLower 属性.
2. 当价格进入您的buystop趋势和BuyStop_StepLower之间的区域时, EA将会在价格BuyStop_StepUpper设置止损买入挂单.
当价格进入您的sellstop趋势和SellStop_StepUpper之间的区域时, EA将会在价格SellStop_StepLower设置止损卖出挂单.
3. 当价格在趋势中变动时, EA会一直修改两个订单的建仓价格直到价格移动到之前的区域.
4. 对于buystop, 您可以设置BuyStop_StopLoss , BuyStop_Takeprofit 和 BuyStop_Lot.
对于sellstop, 您可以设置 SellStop_StopLoss , SellStop_Takeprofit 和 SellStop_Lot.
看一下这个图表就更好解释了:
1. 本EA不会自动工作. 您必须画出是向上趋势, 向下趋势, 或者水平趋势. 把它称为buystop 或者 sellstop , 设置 BuyStop_StepUpper, BuyStop_StepLower, SellStop_StepUpper 和SellStop_StepLower 属性.
2. 当价格进入您的buystop趋势和BuyStop_StepLower之间的区域时, EA将会在价格BuyStop_StepUpper设置止损买入挂单.
当价格进入您的sellstop趋势和SellStop_StepUpper之间的区域时, EA将会在价格SellStop_StepLower设置止损卖出挂单.
3. 当价格在趋势中变动时, EA会一直修改两个订单的建仓价格直到价格移动到之前的区域.
4. 对于buystop, 您可以设置BuyStop_StopLoss , BuyStop_Takeprofit 和 BuyStop_Lot.
对于sellstop, 您可以设置 SellStop_StopLoss , SellStop_Takeprofit 和 SellStop_Lot.
看一下这个图表就更好解释了:
//+------------------------------------------------------------------+
//|
TrendMeLeaveMe.mq4 |
//|
Copyright ?2006, Eng. Waddah Attar |
//|
waddahattar@hotmail.com |
//+------------------------------------------------------------------+
#property copyright "Copyright ?2007,Eng Waddah Attar"
#property link
"waddahattar@hotmail.com"
//---
外部可输入性变量,首先赋默认值,在MT4中可根据个人要求作设置?-
extern string BuyStop_Trend_Info = "_______________________";
extern string BuyStop_TrendName = "buystop";
extern int
BuyStop_TakeProfit = 50;
extern int
BuyStop_StopLoss = 30;
extern double BuyStop_Lot = 0.1;
extern int
BuyStop_StepUpper = 10;
extern int
BuyStop_StepLower = 50;
extern string SellStop_Trend_Info = "_______________________";
extern string SellStop_TrendName = "sellstop";
extern int
SellStop_TakeProfit = 50;
extern int
SellStop_StopLoss = 30;
extern double SellStop_Lot = 0.01;
extern int
SellStop_StepUpper = 50;
extern int
SellStop_StepLower = 10;
//------
定义全局变量?
//编程中的「魔数」(magic number)是什么意思?
//Magic number一般是指硬写到代码里的整数常量,数值是编程者自己指定的,其他人不知道数值有什么具体意义,表示不明觉厉,就称作magic number。
//下边的MagicBuyStop、MagicSellStop就是两个自定义变量,并储存自已确定的魔数值。专门指定本EA生成的订单。(用魔数标识),仔细琢磨,与OrderTicket、订单序列号结合使用,有点特殊用处呢!
int MagicBuyStop = 1101;
int MagicSellStop = 1102;
int glbOrderType;
int glbOrderTicket;
//+------------------------------------------------------------------+
//|
|
//+--------------------------
初始化,在图的左上角显示内容?-------------------------+
int init()
//+------------------------------------------------------------------+
//|
|
//+---------------
当数据变动时触发,将上步内容“刷空”---------------------------------------------------+
int deinit()
//+------------------------------------------------------------------+
//|
|
//+------------------------------------------------------------------+
int start()
//---使用自定义函数,
SetObject(string name,datetime T1,double P1,datetime T2,double P2,color clr)
//因为已经”人工手动“事先
划出是向上趋势, 向下趋势, 或者水平趋势. 把它称为buystop 或者 sellstop ,
//此处系统自动划出本文开始部分示意图中的buystop_stepupper、buystop_steplower这两条损买的上限(线)及下限(线)
//---如果有(如果没有则创建)名为"Highbuystop_trend“的趋势线,即损买的上线、下线,
//NormalizeDouble 给出环绕浮点值的精确度,计算止损和赢利值,挂单交易交易的开盘价必须正常化。精确值需要在小数点中预定义。
//--ObjectGetValueByShift,函数计算并返回指定柱的值(转移当前相关的柱)
//当前时间(柱)对应损买上、中、下线(限)的价格
//--ObjectGetValueByShift,函数计算并返回指定柱的值(转移当前相关的柱)
//当前时间(柱)对应损买上、中、下线(限)的价格
//ObjectGetValueByShift("High"+BuyStop_TrendName,0)------获得当前系统自动画的K线柱(0表示当前)所在时间点所对应的自划线的价格。就是自划的趋势线这个函数方程,指定时间(系统K线柱对应的时间),计算出趋势线方程对应的价格。
//损买对应的止损、止盈价格
------------------------------------------------------------------------
---当前价格运行在在“损买”自划趋势线下方,
if Ask
-----1---可“损买”情况 (认为价格将“突破”,并突破后买入)
if (rsisjp<65 && kdsjp<65)
OrderSend(Symbol(), OP_BUYSTOP, BuyStop_Lot, vH, 3, sl, tp,"", MagicBuyStop, 0, Green) < 0);
if (rsisjp<50 && kdsjp<50)
OrderSend(Symbol(), OP_BUYSTOP, BuyStop_Lot, vH, 3, sl, tp,"", MagicBuyStop, 0, Green) < 0);
OrderSend(Symbol(), OP_BUYSTOP, BuyStop_Lot, vH, 3, sl, tp,"", MagicBuyStop, 0, Green) < 0);
if (rsisjp<30 && kdsjp<30)
OrderSend(Symbol(), OP_BUYSTOP, BuyStop_Lot*2, vH, 3, sl, tp,"", MagicBuyStop, 0, Green) < 0);
OrderSend(Symbol(), OP_BUYSTOP, BuyStop_Lot*2, vH, 3, sl, tp,"", MagicBuyStop, 0, Green) < 0);
if Ask
-----1---可“损买”情况 (认为价格将“突破”,并突破后买入)
-------突破买入后,如果以上指标出现反向,要做平仓操作
if rsisjp>75 && kdsjp>75 && 此货币损买n=OrdersTotal()持仓量>lot 则平此货币n-1倍lot仓位;
if rsisjp>85 && kdsjp>85 && 此货币损买n=OrdersTotal()持仓量>lot 则平引货币全部仓位;
if
//平损买仓量lot
if rsisjp<50 && kdsjp<50 //买入量lot
if rsisjp>90 && kdsjp90 //平损买仓量lot*3
OrderClose
-----2---可“限卖”情况(认为价格在“通道”之间震荡)
if rsisjp>65 && kdsjp>65 //限卖量lot
if rsisjp>80 && kdsjp>80 //限卖量lot*2
if rsisjp>90 && kdsjp>90 //限卖量lot*3
-----2---可“限卖”情况(认为价格在“通道”之间震荡)
简言:如果价格到达区间,并且没有相应的订单,则执行如下操作:
产生一个本窗口货币对,“损买”单,外部输入的手数,以处划趋势线高位线对应的,滑点值设为3,以外部输入值设定止损、止盈,内空为空,以EA首部的自定义变量“MagicBuyStop”的值作为本订单的魔数值,此订单过期值不设定,箭头设置绿色。
简言:如果价格到达区间,并且存在相应的订单(开仓类型相同),则执行如下操作:
选择这个订单
如果这个的订单的价格不等于策略的开仓价(损买价)
为本订单按策略值修改开仓价、止损、止盈、不过期、绿箭头。
如果修改失败,提示错误信息!
//自动划出损卖的上线、下线
if(Bid >= vM && Bid <= vH && OrderFind(MagicSellStop) == false)
//+------------------------------------------------------------------+
//|
|
//+------------------------------------------------------------------+
bool OrderFind(int Magic)
//+------------------------------------------------------------------+
//|
|
//-----------------自定义函数setobject?--------------------------------------+
//函数相当于y=f(x),输入参数值X,经过此函数运算,加工出对应的Y值!
//setobject函数的意义,输入name、T1、P1、T2等值,输出结果:
//如果存在名称为name的趋势线,则用T1、P1、T2、P2对其相应属性赋值
//如果趋势线name不存在,创建并用变量用T1、P1、T2、P2对其相应属性赋值
//T1、P1、T2、P2对应属性值为锚点1的时间和价格、锚点2的时间和价格
//-------------
//+------------------------------------------------------------------+