设为首页 收藏本站 切换语言

请帮忙修改一下移动止盈函数

| 发表于 2023-6-1 18:38:04 | 显示全部楼层 |复制链接
任务编号:77374 悬赏任务5H币 悬赏任务 : 按雇主需求进行任务后提交稿件,被采纳后即获得佣金。

距截止: 任务已圆满完成 雇主已托管赏金:50 H币
雇主发布需求23.06.01 雇主托管佣金23.06.01 投稿者投稿23.06.07 雇主开始选稿23.06.30 任务完成23.06.30

任务大厅共需10个合格投稿 | 每稿将获得5 H币 | 每人交稿次数不限 可多次任务

投诉举报 联系Ta 我来承接 已有5 个投稿 | 已采纳0 稿 | 拒绝5 稿 | 还需要10 稿

任务需求:
请帮忙修改一下移动止盈,或者请用MQ5帮忙写一个移动止盈的函数,并请标上详细注释。

需求如下:
初设止损点为500毫点,初设止盈点为600毫点,第一个止盈点为700 毫点,第二个止盈点为800毫点, 第二个止盈点为900毫点.

1.当行情盈利大于或等于初设止盈点600毫点,且小于第一个止盈点700毫点时
  止损点修改为初设止盈点, 止盈点修改为第一个止盈点  .


2. 当行情盈利大于或等于第一个止盈点700毫点, 且小于第二个止盈点800毫点时
  止损点修改为 第一个止盈点 , 止盈点修改为第二个止盈点  .

3. 当行情盈利大于或等于第二个止盈点800毫点, 且小于 第三个止盈点900毫点时
   止损点修改为第二个止盈点 , 止盈点修改为第三个止盈点  .

以此类推.



自己试写了一下,欧美和黄金都回测过,但都不生效。请帮忙看一下以下代码或者逻辑有没有问题。

#property copyright "Copyright 2022, MetaQuotes Ltd."

#property link      "https://www.mql5.com"

#property version   "1.00"



input int slpoint=500; // 初设止损点为500毫点

input int tppoint=600;  // 初设止盈点为600毫点

input int tppoint1=700;  // 初设第一个止盈点为700毫点

input int tppoint2=800;   //  初设第二个止盈点为800毫点

input int tppoint3=900;   //  初设第三个止盈点为900毫点

input double lots=0.01;   // 开仓手数

input int magic=123;   // 魔术码



int OnInit()

  {



   return(INIT_SUCCEEDED);

  }



void OnDeinit(const int reason)

  {



  }



void OnTick()

  {



buy;// 开多单函数是没有问题的

TrailingStop (_Symbol,POSITION_TYPE_BUY,magic); //移动止盈不生效

  }

void TrailingStop (string symbol,ENUM_POSITION_TYPE type,int magic)

    {

      int t=PositionsTotal();  // 取得成交单子总数

      if (t>0)                  // 如果有单子               

      {

       for(int i=t-1;i>=0;i--)  // 历遍所有单子

        {

          if(PositionGetTicket(i)>0) // 选中单子

           {

             if(PositionGetString(POSITION_SYMBOL)==symbol) // 选取当前货币对

              {

                double bid=SymbolInfoDouble(symbol,SYMBOL_BID); // 获取卖价

                double ask=SymbolInfoDouble(symbol,SYMBOL_ASK); // 获取买价

                double pot=SymbolInfoDouble(symbol,SYMBOL_POINT); // 获取点数

                double op=PositionGetDouble(POSITION_PRICE_OPEN); // 获取成交价

                double sl=PositionGetDouble(POSITION_SL); // 获取止损价

                double tp=PositionGetDouble(POSITION_TP); // 获取止盈价

                if(type==POSITION_TYPE_BUY)  // 如果是买单

                 {

                 if(bid-op>=pot*tppoint && bid-op<pot*tppoint1)  // 当行情盈利大于或等于初设止盈点600毫点,且小于第一个止盈点700毫点时



                    {

                      if(magic==0) // 如果单子没有设置魔术码

                       {

                          MqlTradeRequest request={};

                          MqlTradeResult  result={};

                          request.action=TRADE_ACTION_SLTP;

                          request.position=PositionGetTicket(i);  // 单子成交编号

                          request.symbol=symbol;

                          request.magic=0;

                          request.sl=tppoint*pot;  //按需求把止损点修改为初设止盈点,但是不生效.

                          request.tp=tppoint1*pot; //按需求把 止盈点修改为第一个止盈点 ,但是不生效 ,请帮忙修改一下代码或者用MQ5重新写过生效

的,谢谢。



                          if(!OrderSend(request,result))

                          PrintFormat("OrderSend error %d",GetLastError());

                       }

                      else

                       {

                          if(PositionGetInteger(POSITION_MAGIC)==magic)  // 如果单子设置了魔术码

                          {

                             MqlTradeRequest request={};

                             MqlTradeResult  result={};

                             request.action=TRADE_ACTION_SLTP;

                             request.position=PositionGetTicket(i); // 单子成交编号

                             request.symbol=symbol;

                             request.magic=magic;

                             request.sl=tppoint*pot; // 止损点修改为初设止盈点

                             request.tp=tppoint1*pot; //止盈点修改为第一个止盈点

                           //  request.sl=bid-pot*yidongdian;

                           //  request.tp=tp;



                             if(!OrderSend(request,result))

                             PrintFormat("OrderSend error %d",GetLastError());

                          }

                       }

                    }



                 }

                 if(type==POSITION_TYPE_SELL)

                 {

                    if((op-ask)>=pot*yidongdian && ((sl>(ask+pot*yidongdian)) || (sl==0)))

                     {

                       if(magic==0)

                        {

                          MqlTradeRequest request={};

                          MqlTradeResult  result={};

                          request.action=TRADE_ACTION_SLTP;

                          request.position=PositionGetTicket(i);

                          request.symbol=symbol;



                       // request.sl=ask+pot*yidongdian;

                       // request.tp=tp;

                          request.sl=ask+pot*yidongdian;

                          request.tp=0;

                          request.magic=0;

                          if(!OrderSend(request,result))

                          PrintFormat("OrderSend error %d",GetLastError());

                       }

                       else

                       {

                          if(PositionGetInteger(POSITION_MAGIC)==magic)

                          {

                             MqlTradeRequest request={};

                             MqlTradeResult  result={};

                             request.action=TRADE_ACTION_SLTP;

                             request.position=PositionGetTicket(i);

                             request.symbol=symbol;

                             request.magic=magic;

                             request.sl=ask+pot*yidongdian;

                             request.tp=tp;

                             if(!OrderSend(request,result))

                             PrintFormat("OrderSend error %d",GetLastError());

                          }

                       }

                     }

                 }

              }

           }

        }

    }

}


举报

评论 使用道具

上一篇 : 写3个函数
下一篇 : 写一个指标

精彩评论5

svip2022
DD
| 发表于 2023-6-7 15:54:00 | 显示全部楼层
已拒绝
稿件已经隐藏,仅投稿者和雇主可见
举报

点赞 评论 使用道具

sunyu007
C
| 发表于 2023-6-9 12:07:32 | 显示全部楼层
已拒绝
稿件已经隐藏,仅投稿者和雇主可见
举报

点赞 评论 使用道具

对冲大魔王
DD
| 发表于 2023-6-10 16:26:53 | 显示全部楼层
已拒绝
稿件已经隐藏,仅投稿者和雇主可见
举报

点赞 评论 使用道具

seek_ideal
DDD
| 发表于 2023-6-17 05:33:41 | 显示全部楼层
已拒绝
稿件已经隐藏,仅投稿者和雇主可见
举报

点赞 评论 使用道具

bobo0116wan
D
| 发表于 2023-6-22 00:06:52 | 显示全部楼层
已拒绝
稿件已经隐藏,仅投稿者和雇主可见
举报

点赞 评论 使用道具

发新帖
EA交易
您需要登录后才可以评论 登录 | 立即注册

简体中文
繁體中文
English(英语)
日本語(日语)
Deutsch(德语)
Русский язык(俄语)
بالعربية(阿拉伯语)
Türkçe(土耳其语)
Português(葡萄牙语)
ภาษาไทย(泰国语)
한어(朝鲜语/韩语)
Français(法语)