微信扫一扫 分享朋友圈

已有 72 人浏览分享

开启左侧

EA编程速成教程(4)修改止损止盈

[复制链接]
72 0
EA编程速成教程(4)修改止损止盈
[color=]本课程的目标是给之前下的单子添加止损止盈价。
[color=]首选添加外部参数
  • input int SL=
    [color=]600
    ;      
    //止损点数
  • input int TP=
    [color=]200
    ;      
    //止盈点数

    复制代码

    [color=]给单子添加止损止盈有两个方法:
    [color=]一、在下单函数里面带上相应的止损和止盈。
    [color=]OrderSend函数有11个参数,其中第六个(stoploss)和第七个(takeprofit)分别是止损价和止盈价。
  • int OrderSend(
  • string symbol, // symbol
  • int cmd, // operation
  • double volume, // volume
  • double price, // price
  • int slippage, // slippage
  • double stoploss, // stop loss
  • double takeprofit, // take profit
  • string comment=NULL, // comment
  • int magic=0, // magic number
  • datetime expiration=0, // pending order expiration
  • color arrow_color=clrNONE // color
  • );
    复制代码

    [color=]具体使用方法如下:

  • int ticket=OrderSend(Symbol(),OP_BUY,lots,Ask,
    [color=]3
    ,Ask-SL*Point,Ask+TP*Point,
    [color=]"My order"
    ,
    [color=]16384
    ,
    [color=]0
    ,clrGreen);
    复制代码

    [color=]注意:有些平台下单的时候不允许同时带上止损和止盈,否则会报错,之前的东航金融平台就是,也有的平台要求止损止盈至少要距离当前价格一定的点数,如果设置太小的话,可能造成下单失败。所以,设置止损止盈的方法我们通常使用第二种。

    [color=]二、下单成功后,通过修改订单设置上止损和止盈。
    [color=]    修改订单用到的函数是OrderModify,这个函数有6个参数,其中第三个和第四个分别是止损价和止盈价
  • bool OrderModify(
  • int ticket, // ticket
  • double price, // price
  • double stoploss, // stop loss
  • double takeprofit, // take profit
  • datetime expiration, // expiration
  • color arrow_color // color
  • );
    复制代码
    [color=]第一个参数ticket是订单编号,订单编号一般是需要通过遍历账户的所有单子来获取,修改止损止盈的全部代码如下:

      
  • for(int i=
    [color=]0
    ; iif(OrderSelect(OrderTicket(),SELECT_BY_POS,MODE_TRADES))
  •         {
  •          if(OrderSymbol()==Symbol() && OrderMagicNumber()==
    [color=]16384
    && OrderType()==OP_BUY)
  •            {
  •             if(OrderStopLoss()==
    [color=]0
    )
  •               {
  •                bool res=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-SL*Point,OrderOpenPrice()+TP*Point,
    [color=]0
    );
  •                if(res)
  •                   Print(
    [color=]"订单修改成功"
    );
  •               }
  •            }
  •         }
  •      }
    复制代码
  • 整个EA的全部代码如下:
    复制代码

  • //+------------------------------------------------------------------+

  • //|                                                   Test_EA_04.mq4 |

  • //|                                                             云开 |

  • //|                                             https://www.mql5.com |

  • //+------------------------------------------------------------------+

  • [color=]#property copyright "http://www.forexmt4.cn"

  • [color=]#property link      "http://www.forexmt4.cn"

  • [color=]#property description "【漆天编程】 测试EA"

  • [color=]#property description "  "

  • [color=]#property description "这是一款测试EA,作者QQ:80364276"

  • [color=]#property description "  "

  • [color=]#property description "发布时间:2020.04.16"

  • [color=]#property strict

  • [color=]#property icon "//Images//sea.ico"
  • input double lots=
    [color=]0.1
    ;
    //交易手数
  • input int SL=
    [color=]600
    ;      
    //止损点数
  • input int TP=
    [color=]200
    ;      
    //止盈点数
  • bool isgo=
    [color=]true
    ;

  • //+------------------------------------------------------------------+

  • //| Expert initialization function                                   |

  • //+------------------------------------------------------------------+
  • int OnInit()
  •   {

  • //---

  • //---
  •    return(INIT_SUCCEEDED);
  •   }

  • //+------------------------------------------------------------------+

  • //| Expert deinitialization function                                 |

  • //+------------------------------------------------------------------+
  • void OnDeinit(const int reason)
  •   {

  • //---
  •   }

  • //+------------------------------------------------------------------+

  • //| Expert tick function                                             |

  • //+------------------------------------------------------------------+
  • void OnTick()
  •   {
  •    for(int i=
    [color=]0
    ; iif(OrderSelect(OrderTicket(),SELECT_BY_POS,MODE_TRADES))
  •         {
  •          if(OrderSymbol()==Symbol() && OrderMagicNumber()==
    [color=]16384
    && OrderType()==OP_BUY)
  •            {
  •             if(OrderStopLoss()==
    [color=]0
    )
  •               {
  •                bool res=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-SL*Point,OrderOpenPrice()+TP*Point,
    [color=]0
    );
  •                if(res)
  •                   Print(
    [color=]"订单修改成功"
    );
  •               }
  •            }
  •         }
  •      }

  • //---
  •    if(isgo)
  •      {
  •       int ticket=OrderSend(Symbol(),OP_BUY,lots,Ask,
    [color=]3
    ,
    [color=]0
    ,
    [color=]0
    ,
    [color=]"My order"
    ,
    [color=]16384
    ,
    [color=]0
    ,clrGreen);
  •       if(ticketelse
  •         {
  •          isgo=
    [color=]false
    ;
  •          Print(
    [color=]"OrderSend placed successfully"
    );
  •         }
  •      }
  •   }

  • //+------------------------------------------------------------------+

  • 复制代码

    大家在看了小编以上对"EA编程速成教程(4)修改止损止盈"的介绍后应该都清楚了吧,希望对大家做单有所帮助。如果大家还想要下载更多有关"EA编程速成教程(4)修改止损止盈"的相关EA源码,敬请关注汇探网下载。我们会持续更新交易系统,EA源码。
  • 举报 使用道具

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

    本版积分规则

    精彩推荐
    热门资讯
    网友晒图
    图文推荐
    • 联系我们
    • 邮箱:1912582076#qq.com(请把#改成@)
    • 电话:400-178-8526
    • QQ客服 1912582076
    • 工作时间:周一至周五(早上9点至下午5:30点)
    • 微信公众平台

    • 客服微信号

    QQ|外汇EA|炒外汇论坛|外汇ea|汇探网 |网站地图

    GMT+8, 2026-3-20 03:24 , Processed in 0.249961 second(s), 29 queries .

    Powered by 汇探网 免责申明:本平台仅提供 外汇ea, 外汇指标模板所有产品及展示信息均由第三方发布提供.|投资有风险,交易需谨慎.

    Copyright © 2014-2023, 汇探网-提供 外汇MT4指标,外汇EA下载,外汇交易系统,外汇开户赠金视频教程,外汇软件工具等.版权所有,复制必究.