找回密码
 注册

QQ登录

只需一步,快速开始

查看: 95|回复: 3

[MT4-EA] 请懂EA的看看哪里有问题 ? 有止损但不跟踪止损

[复制链接]
当前外汇汇率:
发表于 2017-10-12 13:39 | 显示全部楼层 |阅读模式
下单有止损但不跟踪止损,比如 1.020开仓,止损100点为0.920,当价格到1.040时止损也应该提升20点到0.940,现在没有向上跟踪上抬止损.
请懂EA编程的帮忙解决!谢谢!




extern string 自动止损参数="默认打开";
extern bool AutoStoploss=True;
extern double stoploss= 800;
extern string 自动止盈参数="默认打开"
extern bool AutoTakeProfit=True;
extern double takeprofit=2000;
extern string 盈利后移动止损="默认打开";
extern bool AutoTrailingStop=true;
extern double TrailingStop = 800;
extern string 分次离场参数="按比例分步撤退";
extern bool Gradually = False;               
extern int GraduallyNum = 3;               
double OriginalLot;
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
{
for(int cnt=0;cnt<OrdersTotal();cnt++)  
{
if (OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES))
{

  if(OrderSymbol()==Symbol())
  {
     double stp=OrderStopLoss();   
     double tpt=OrderTakeProfit();  
     double OpenPrice = OrderOpenPrice();

       if (OriginalLot == 0)
           {
           OriginalLot=OrderLots();
           }         


     if(OrderType()==OP_BUY)         
     {
        CraduallyBuy ();
            if (AutoStoploss && AutoTakeProfit && stp==0 && tpt==0)   
          OrderModify(OrderTicket(),OrderOpenPrice(),Ask-Point*stoploss,Ask+Point*takeprofit,0,Green);
        else
        {
          if (AutoStoploss && stp==0)                  
          {
            OrderModify(OrderTicket(),OrderOpenPrice(),Ask-Point*stoploss,OrderTakeProfit(),0,Green);
              }

              if (AutoTakeProfit && tpt==0)               
          {
            OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),Ask+Point*takeprofit,0,Green);
          }   


          if (AutoTrailingStop  && ((Bid - OpenPrice) > Point*TrailingStop))      
          {
            if((Bid-stp)>TrailingStop*Point )
            OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);
          }
            }   
     }

  if(OrderType()==OP_SELL)                  
  {
     CraduallySell ();
     if (AutoStoploss && AutoTakeProfit && stp==0 && tpt==0)  
       OrderModify(OrderTicket(),OrderOpenPrice(),Bid+Point*stoploss,Bid-Point*takeprofit,0,Green);
     else
     {
        if (AutoStoploss && stp==0)         
        {
            OrderModify(OrderTicket(),OrderOpenPrice(),Bid+Point*stoploss,OrderTakeProfit(),0,Green);
        }
        if (AutoTakeProfit && tpt==0)        
        {
            OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),Bid-Point*takeprofit,0,Green);
        }  

        if(AutoTrailingStop  && ((OpenPrice-Ask) > Point*TrailingStop ))      
        {
                   if((stp-Ask)>TrailingStop*Point)
              OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Green);
        }
     }
  }

}
}
else
{
    OriginalLot=0;
}
         
}
}





void CraduallyBuy ()               
{
  double OpenPrice = OrderOpenPrice();
  double lot=OrderLots();            

  for (int yi=1;yi<=GraduallyNum;yi++)
   {
          if (NormalizeDouble((Bid - OpenPrice)/Point,0) == NormalizeDouble(TrailingStop/GraduallyNum*yi,0))
            {

        if  (lot != NormalizeDouble(OriginalLot*(1-yi/GraduallyNum),2))
         {
           OrderClose(OrderTicket(),NormalizeDouble(OriginalLot/GraduallyNum,2),Bid,3,CLR_NONE);
         }
                     
            }
        }
}



void CraduallySell ()               
{
  double OpenPrice = OrderOpenPrice();
  double lot=OrderLots();            

  for (int yi=1;yi<=GraduallyNum;yi++)
   {
          if (NormalizeDouble((OpenPrice - Ask)/Point,0) == NormalizeDouble(TrailingStop/GraduallyNum*yi,0))
            {            

        if  (lot != NormalizeDouble(OriginalLot*(1-yi/GraduallyNum),2))
         {
           OrderClose(OrderTicket(),NormalizeDouble(OriginalLot/GraduallyNum,2),Ask,3,CLR_NONE);
         }
                     
            }
        }

}


发表于 2017-10-12 14:10 | 显示全部楼层
你自己写的代码不检查的?  


条件未达怎么移动

点评

你好 不是我写的 是下载的 你知道怎么样能达到我要的效果吗? 只要一下单就下好止损,有新高低点产生就同步跟踪,谢谢!  详情 回复 发表于 2017-10-12 14:21
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-10-12 14:21 | 显示全部楼层
瑞讯银行开户 发表于 2017-10-12 14:10
你自己写的代码不检查的?  

你好  不是我写的   是下载的   你知道怎么样能达到我要的效果吗?  只要一下单就下好止损,有新高低点产生就同步跟踪,谢谢!
论坛谏言--外汇交易不应是你投资的全部,交易外汇也不应是你生活的全部
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-10-12 14:26 | 显示全部楼层
瑞讯银行开户 发表于 2017-10-12 14:10
你自己写的代码不检查的?  

是下面800这个原因吗


extern string 盈利后移动止损="默认打开";

extern bool AutoTrailingStop=true;
extern double TrailingStop = 800;
论坛谏言--外汇交易不应是你投资的全部,交易外汇也不应是你生活的全部
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

支持人民币出入金 支持人民币入金 支持skrill(MB) 提供低点差 提供固定点差 支持ECN交易 支持周返交易 返佣宝app下载

 

风险提示:
外汇/差价合约保证金交易具有很大的风险,其损失可能超过存入的资金,未必适合所有的投资者。使用杠杆比例来进行外汇操作对交易者有利也有弊。阁下在决定投资外汇市场前,应该仔细考虑阁下的投资目标,经验水平和承担风险的能力。可能出现的情况包括蒙受损失超过存入的资金,因此阁下不应该以不能承受全部损失的资金来投资。并且, 阁下还应该留意所有与外汇投资相关的风险。若有任何疑问,应该向独立财务顾问咨询。
1)外汇交易具有较大的风险,甚至有可能导致您的投资血本无归,投资前请慎重考虑您是否能承受上述损失,切勿轻易听信他人蛊惑而冒然开户。
2)除ieforex.com和ibrebates.com之外的任何文字、图片、flash等形式的链接,均为第三方所投放的广告,请各位会员务必仔细考量并权衡与之投资的风险及安全性,由此导致的任何亏损与论坛无关。
声明:论坛中汇市分析文章、外汇分析见解以及所有发言和回复均为会员个人观点,与韬客外汇论坛立场无关

精品导航
韬客 外汇论坛 黄金论坛 外汇返现 外汇交易 外汇EA 外汇投资
韬客外汇 外汇监管 黄金投资 福汇返现 外汇交易商 外汇开户 外汇平台
外汇市场 外汇图书 期货 福汇开户 外汇交易平台 外汇期权 外汇保证金交易
外汇保证金 外汇网站 股票 财经日历 外汇交易中心 人民币汇率 外汇交易时间