智能交易网,程序化交易,自动交易,量化交易

 找回密码
 注册

QQ登录

只需一步,快速开始

手机短信登录

参加MT4智能交易编程培训,7课免费在线试听MT4指标,EA代写,或EA指标加密账户远程验证服务 最完善商业MT4跟单系统(0.1秒极速响应不漏单)
为论坛做贡献有奖学金,奖学金可直接换真钱 扫本站微信公 众号部分视频课程指标EA免费得智能交易网MT4操盘神器,扫公众号免费得
查看: 396|回复: 3

请各位老师帮助,多种形式下单和赢利到目标后停止交易的的问题?

[复制链接]
发表于 2018-6-25 20:02:35 | 显示全部楼层 |阅读模式
我的问题如下:
1、当最后平仓单利润>0时,下一单按10倍下单,当最后平仓单<0时,下一单1倍下单;
2、当所有赢利达到10000时,停止交易。
  实在不知道怎么处理了,恳请各位老师赐教!
我的程序:
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
datetime 限制一根柱子下注一次 =0; //自定义。。。。。。
extern int 止损=0;
extern int 止赢=0;
extern double 赢钱目标=300;//自定义赢太多了不要做单
extern double 输钱目标=500;//自定义输太惨了不要做单
extern double              资金占用百分比例1=10;
extern double              资金占用百分比例2=1;
ENUM_TIMEFRAMES    EA运行周期=PERIOD_H4;
extern int                 平移=1;//开单平仓时第几个K执行(0实时1收盘)   
extern bool                平多1=true;//平多1(亏损执行)
extern bool                平空1=true;//平空1(亏损执行)
int                 订单识别码=280726108;
int init()
  {
   return(0);
  }
int deinit()
  {
   return(0);
  }
int start()
  {
   double cci0=iCustom(NULL,PERIOD_H4,"CCI - nrp",0,平移);
   double cci1=iCustom(NULL,PERIOD_H4,"CCI - nrp",0,平移+1);
   double Value2=iCustom(NULL,PERIOD_H4,"CCI - nrp",1,平移+1);
   double Value3=iCustom(NULL,PERIOD_H4,"CCI - nrp",2,平移+1);
   double Value4=iCustom(NULL,PERIOD_H4,"CCI - nrp",3,平移+1);
   double Value5=iCustom(NULL,PERIOD_H1,"CCI - nrp",4,1);

   double lot1=0.3;
   double lot2=0.03;
   lot1=NormalizeDouble(AccountBalance()*资金占用百分比例1/100/MarketInfo(Symbol(),MODE_MARGINREQUIRED),2);
   lot2=NormalizeDouble(AccountBalance()*资金占用百分比例2/100/MarketInfo(Symbol(),MODE_MARGINREQUIRED),2);
   if(cci0>100 && 限制一根柱子下注一次 !=Time[0])//
   {
       for(int i=0;i<OrdersTotal();i++)//扫描空单
               {
                   if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
                     {
                       if(OrderType()==OP_SELL && OrderMagicNumber()==订单识别码)   
                         {
                           OrderClose(OrderTicket(),OrderLots(),Ask,300);//平仓空单
                           {
                           限制一根柱子下注一次 =Time[0];
                           }
                         }
                     }
              
               }
       buy(lot1,止损,止赢,DoubleToStr(cci0,3),订单识别码);//下多单
   }
   if(cci0<-100 && 限制一根柱子下注一次 !=Time[0])//
   {
       for(int i1=0;i1<OrdersTotal();i1++)//以下为扫描多单
               {
                   if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
                     {
                       if(OrderType()==OP_BUY && OrderMagicNumber()==订单识别码)   
                         {
                           OrderClose(OrderTicket(),OrderLots(),Bid,300);//平仓多单
                           {   
                           限制一根柱子下注一次 =Time[0];
                             {
                               int i=0;
                               while (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
                               i++;
                                 {
                                  OrderSelect(i-1,SELECT_BY_POS,MODE_HISTORY)
                                    {
                                      if(OrderOpenPrice>=0);
                                       {
                                         sell(lot1,止损,止赢,DoubleToStr(cci1,3),订单识别码);//下空单
                                          {
                                           else
                                             {
                                               if(OrderOpenPrice<0);
                                                {
                                                  sell(lot2,止损,止赢,DoubleToStr(cci1,3),订单识别码);//下空单
                                                }
                                                
                                             }
                                             
                                          }
                                          
                                       }
                                       
                                  }
                                
                               }
                          }
                       }
                   }
              }
          }
   }
回复

使用道具 举报

发表于 2018-6-26 09:09:04 | 显示全部楼层
  1. double getlastprofit(int magicok,string huobi=NULL)
  2. {
  3.      double a=0;
  4.      if(huobi==NULL) huobi=Symbol();
  5.      for(int i=OrdersHistoryTotal()-1;i>=0;i--)
  6.       {
  7.         if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==true)
  8.           {
  9.             if(OrderSymbol()==huobi && OrderMagicNumber()==magicok && OrderType()<=1)
  10.               {
  11.                  a=OrderProfit();
  12.                  break;
  13.               }
  14.           }
  15.       }
  16.      return(a);
  17. }
复制代码

这个函数可以获得最后一张单的盈利值。然后你再根据这个判断加倍吧。
盈利达到1000停止交易,这个 是需要 你在每次开单前就加入一个开关。
当盈利达到1000时,你把这个开关关闭。这样就不能开单了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-6-26 09:11:44 | 显示全部楼层
谢谢光辉老师,每次都这么细心解答,非常感谢!
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|sitemap|智能交易网,程序化交易,自动交易,量化交易 ( 苏ICP备08108698号,苏州智德金网络科技股份有限公司版权所有 )

GMT+8, 2019-10-14 08:49 , Processed in 0.033420 second(s), 15 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表