交易危机

 找回密码
 快捷注册(禁q号)

QQ登录

只需一步,快速开始

搜索
广告位
查看: 7528|回复: 6
打印 上一主题 下一主题

[指标] 多空轨道系统EA源码

[复制链接]

130

主题

9822

积分

0

精华

操盘专家

金钱
9822 美元
权重
0
跳转到指定楼层
楼主
发表于 2018-3-15 22:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 sanbuxiaozhu 于 2018-3-15 22:33 编辑



发一个我在用的,多空轨道系统EA源码


  1. //+------------------------------------------------------------------+
  2. //|                                                      ProjectName |
  3. //|                                      Copyright 2018, CompanyName |
  4. //|                                       http://www.companyname.net |
  5. //+------------------------------------------------------------------+
  6. #property copyright "test.com"
  7. #property version   "1.00"
  8. #property strict

  9. extern int MA    =    120;
  10. extern int method    =    0;
  11. extern double 内轨系数    =    1.0;

  12. int trend = 0;
  13. extern double 初始下单量=0.01;
  14. extern int 初始单止盈点数=180;
  15. extern int 亏损加仓间隔点数=250;
  16. extern double 亏损加仓下倍数=1;
  17. extern int 亏损加仓次=5;
  18. extern double 总获利大于几美金全部平仓=30;
  19. extern int magic=1213;
  20. datetime buytime=0;
  21. datetime selltime=0;



  22. void OnTick()
  23.   {

  24.    double high =  iMA(Symbol(),0,MA,0,method,PRICE_CLOSE,1)+(iMA(Symbol(),0,MA,0,method,PRICE_HIGH,1)-iMA(Symbol(),0,MA,0,method,PRICE_LOW,1))*内轨系数;
  25.    double low = iMA(Symbol(),0,MA,0,method,PRICE_CLOSE,1)-(iMA(Symbol(),0,MA,0,method,PRICE_HIGH,1)-iMA(Symbol(),0,MA,0,method,PRICE_LOW,1))*内轨系数;
  26.    double high1 =  iMA(Symbol(),0,MA,0,method,PRICE_CLOSE,2)+(iMA(Symbol(),0,MA,0,method,PRICE_HIGH,2)-iMA(Symbol(),0,MA,0,method,PRICE_LOW,2))*内轨系数;
  27.    double low1 = iMA(Symbol(),0,MA,0,method,PRICE_CLOSE,2)-(iMA(Symbol(),0,MA,0,method,PRICE_HIGH,2)-iMA(Symbol(),0,MA,0,method,PRICE_LOW,2))*内轨系数;
  28.    
  29.    double open1=iOpen(Symbol(),0,1);
  30.    double close1=iClose(Symbol(),0,1);
  31.    double close12=iClose(Symbol(),0,2);
  32.    
  33.    if(close1>high&&close12<high1){trend = 1;}
  34.    if(close1<low&&close12>low1){trend = -1;}
  35.      
  36.      double buyop,buylots;
  37.      int buydanshu=buydanshu(buyop,buylots);
  38.      if(buydanshu==0)
  39.       {
  40.         if(trend == 1)
  41.           {
  42.            if(buytime!=Time[0])
  43.             {
  44.               if(buy(初始下单量,0,初始单止盈点数,Symbol()+"buy",magic)>0)
  45.                {
  46.                  buytime=Time[0];
  47.                }
  48.             }
  49.           }
  50.       }
  51.      else
  52.       {
  53.         if(buydanshu<亏损加仓次 && (buyop-Ask)>=亏损加仓间隔点数*Point)
  54.          {
  55.            
  56.            buy(flots(buylots*亏损加仓下倍数),0,0,Symbol()+"buy"+buydanshu,magic);
  57.          }
  58.       }
  59.      double avgbuyprice=avgbuyprice();
  60.      if(avgbuyprice>0 && buydanshu>1)
  61.       {
  62.         buyxiugaitp(avgbuyprice);
  63.       }
  64.       
  65.       
  66.      double sellop,selllots;
  67.      int selldanshu=selldanshu(sellop,selllots);
  68.      if(selldanshu==0)
  69.       {
  70.         if(trend == -1)
  71.           {
  72.            if(selltime!=Time[0])
  73.             {
  74.               if(sell(初始下单量,0,初始单止盈点数,Symbol()+"sell",magic)>0)
  75.                 {
  76.                   selltime=Time[0];
  77.                 }
  78.             }
  79.           }
  80.       }
  81.      else
  82.       {
  83.         if(selldanshu<亏损加仓次 && (Bid-sellop)>=亏损加仓间隔点数*Point)
  84.          {
  85.            
  86.            sell(flots(selllots*亏损加仓下倍数),0,0,Symbol()+"sell"+selldanshu,magic);
  87.          }
  88.       }
  89.      double avgsellprice=avgsellprice();
  90.      if(avgsellprice>0 && selldanshu>1)
  91.       {
  92.         sellxiugaitp(avgsellprice);
  93.       }
  94.      if(buyprofit()>总获利大于几美金全部平仓)
  95.       {
  96.        closebuy();
  97.       }
  98.      if(sellprofit()>总获利大于几美金全部平仓)
  99.       {
  100.        closesell();
  101.       }
  102.       trend = 0;
  103.   }
  104. double buyprofit()
  105.   {
  106.      double a=0;
  107.      int t=OrdersTotal();
  108.      for(int i=t-1;i>=0;i--)
  109.          {
  110.            if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
  111.              {
  112.                if(OrderSymbol()==Symbol() && OrderType()==OP_BUY && OrderMagicNumber()==magic)
  113.                  {
  114.                    a=a+OrderProfit()+OrderCommission()+OrderSwap();
  115.                  }
  116.              }
  117.          }  
  118.     return(a);
  119.   }
  120. double sellprofit()
  121.   {
  122.      double a=0;
  123.      int t=OrdersTotal();
  124.      for(int i=t-1;i>=0;i--)
  125.          {
  126.            if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
  127.              {
  128.                if(OrderSymbol()==Symbol() && OrderType()==OP_SELL && OrderMagicNumber()==magic)
  129.                  {
  130.                    a=a+OrderProfit()+OrderCommission()+OrderSwap();
  131.                  }
  132.              }
  133.          }  
  134.     return(a);
  135.   }
  136. void closebuy()
  137.   {
  138.     double buyop,buylots;
  139.     while(buydanshu(buyop,buylots)>0)
  140.      {
  141.         int t=OrdersTotal();
  142.         for(int i=t-1;i>=0;i--)
  143.          {
  144.            if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
  145.              {
  146.                if(OrderSymbol()==Symbol() && OrderType()==OP_BUY && OrderMagicNumber()==magic)
  147.                  {
  148.                    OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),300,Green);
  149.                  }
  150.              }
  151.          }
  152.         Sleep(800);
  153.      }
  154.   }
  155. void closesell()
  156.   {
  157.     double sellop,selllots;
  158.     while(selldanshu(sellop,selllots)>0)
  159.      {
  160.         int t=OrdersTotal();
  161.         for(int i=t-1;i>=0;i--)
  162.          {
  163.            if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
  164.              {
  165.                if(OrderSymbol()==Symbol() && OrderType()==OP_SELL && OrderMagicNumber()==magic)
  166.                  {
  167.                    OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),300,Green);
  168.                  }
  169.              }
  170.          }
  171.         Sleep(800);
  172.      }
  173.   }
  174. void buyxiugaitp(double tp)
  175.   {
  176.      for(int i=0;i<OrdersTotal();i++)
  177.       {
  178.         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
  179.           {
  180.             if(OrderSymbol()==Symbol() && OrderType()==OP_BUY && OrderMagicNumber()==magic)
  181.               {
  182.                 if(NormalizeDouble(OrderTakeProfit(),Digits)!=NormalizeDouble(tp,Digits))
  183.                  {
  184.                    OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),tp,0,Green);
  185.                  }
  186.               }
  187.           }
  188.       }
  189.   }
  190. void sellxiugaitp(double tp)
  191.   {
  192.      for(int i=0;i<OrdersTotal();i++)
  193.       {
  194.         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
  195.           {
  196.             if(OrderSymbol()==Symbol() && OrderType()==OP_SELL && OrderMagicNumber()==magic)
  197.               {
  198.                 if(NormalizeDouble(OrderTakeProfit(),Digits)!=NormalizeDouble(tp,Digits))
  199.                  {
  200.                    OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),tp,0,Green);
  201.                  }
  202.               }
  203.           }
  204.       }
  205.   }
  206. double avgbuyprice()
  207.   {
  208.     double a=0;
  209.     int shuliang=0;
  210.     double pricehe=0;
  211.     for(int i=0;i<OrdersTotal();i++)
  212.       {
  213.         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
  214.           {
  215.             if(OrderSymbol()==Symbol() && OrderType()==OP_BUY && OrderMagicNumber()==magic)
  216.               {
  217.                pricehe=pricehe+OrderOpenPrice();
  218.                shuliang++;
  219.               }
  220.           }
  221.       }
  222.     if(shuliang>0)
  223.      {
  224.       a=pricehe/shuliang;
  225.      }
  226.     return(a);
  227.   }
  228. double avgsellprice()
  229.   {
  230.     double a=0;
  231.     int shuliang=0;
  232.     double pricehe=0;
  233.     for(int i=0;i<OrdersTotal();i++)
  234.       {
  235.         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
  236.           {
  237.             if(OrderSymbol()==Symbol() && OrderType()==OP_SELL && OrderMagicNumber()==magic)
  238.               {
  239.                pricehe=pricehe+OrderOpenPrice();
  240.                shuliang++;
  241.               }
  242.           }
  243.       }
  244.     if(shuliang>0)
  245.      {
  246.       a=pricehe/shuliang;
  247.      }
  248.     return(a);
  249.   }
  250. double flots(double dlots)
  251.   {
  252.     double fb=NormalizeDouble(dlots/MarketInfo(Symbol(),MODE_MINLOT),0);
  253.     return(MarketInfo(Symbol(),MODE_MINLOT)*fb);
  254.   }
  255. int buydanshu(double &op,double &lots)
  256.   {
  257.      int a=0;
  258.      op=0;
  259.      lots=0;
  260.      for(int i=0;i<OrdersTotal();i++)
  261.       {
  262.         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
  263.           {
  264.             if(OrderSymbol()==Symbol() && OrderType()==OP_BUY && OrderMagicNumber()==magic)
  265.               {
  266.                 a++;
  267.                 op=OrderOpenPrice();
  268.                 lots=OrderLots();
  269.               }
  270.           }
  271.       }
  272.     return(a);
  273.   }
  274. int selldanshu(double &op,double &lots)
  275.   {
  276.      int a=0;
  277.      op=0;
  278.      lots=0;
  279.      for(int i=0;i<OrdersTotal();i++)
  280.       {
  281.         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
  282.           {
  283.             if(OrderSymbol()==Symbol() && OrderType()==OP_SELL && OrderMagicNumber()==magic)
  284.               {
  285.                 a++;
  286.                 op=OrderOpenPrice();
  287.                 lots=OrderLots();
  288.               }
  289.           }
  290.       }
  291.     return(a);
  292.   }
  293. int buy(double lots,double sl,double tp,string com,int buymagic)
  294.   {
  295.     int a=0;
  296.     bool zhaodan=false;
  297.      for(int i=0;i<OrdersTotal();i++)
  298.       {
  299.         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
  300.           {
  301.             string zhushi=OrderComment();
  302.             int ma=OrderMagicNumber();
  303.             if(OrderSymbol()==Symbol() && OrderType()==OP_BUY && zhushi==com && ma==buymagic)
  304.               {
  305.                 zhaodan=true;
  306.                 break;
  307.               }
  308.           }
  309.       }
  310.     if(zhaodan==false)
  311.       {
  312.         if(sl!=0 && tp==0)
  313.          {
  314.           a=OrderSend(Symbol(),OP_BUY,lots,Ask,50,Ask-sl*Point,0,com,buymagic,0,White);
  315.          }
  316.         if(sl==0 && tp!=0)
  317.          {
  318.           a=OrderSend(Symbol(),OP_BUY,lots,Ask,50,0,Ask+tp*Point,com,buymagic,0,White);
  319.          }
  320.         if(sl==0 && tp==0)
  321.          {
  322.           a=OrderSend(Symbol(),OP_BUY,lots,Ask,50,0,0,com,buymagic,0,White);
  323.          }
  324.         if(sl!=0 && tp!=0)
  325.          {
  326.           a=OrderSend(Symbol(),OP_BUY,lots,Ask,50,Ask-sl*Point,Ask+tp*Point,com,buymagic,0,White);
  327.          }
  328.       }
  329.     return(a);
  330.   }
  331. int sell(double lots,double sl,double tp,string com,int sellmagic)
  332.   {
  333.     int a=0;
  334.     bool zhaodan=false;
  335.      for(int i=0;i<OrdersTotal();i++)
  336.       {
  337.         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
  338.           {
  339.             string zhushi=OrderComment();
  340.             int ma=OrderMagicNumber();
  341.             if(OrderSymbol()==Symbol() && OrderType()==OP_SELL && zhushi==com && ma==sellmagic)
  342.               {
  343.                 zhaodan=true;
  344.                 break;
  345.               }
  346.           }
  347.       }
  348.     if(zhaodan==false)
  349.       {
  350.         if(sl==0 && tp!=0)
  351.          {
  352.            a=OrderSend(Symbol(),OP_SELL,lots,Bid,50,0,Bid-tp*Point,com,sellmagic,0,Red);
  353.          }
  354.         if(sl!=0 && tp==0)
  355.          {
  356.            a=OrderSend(Symbol(),OP_SELL,lots,Bid,50,Bid+sl*Point,0,com,sellmagic,0,Red);
  357.          }
  358.         if(sl==0 && tp==0)
  359.          {
  360.            a=OrderSend(Symbol(),OP_SELL,lots,Bid,50,0,0,com,sellmagic,0,Red);
  361.          }
  362.         if(sl!=0 && tp!=0)
  363.          {
  364.            a=OrderSend(Symbol(),OP_SELL,lots,Bid,50,Bid+sl*Point,Bid-tp*Point,com,sellmagic,0,Red);
  365.          }
  366.       }
  367.     return(a);
  368.   }
复制代码



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 转播转播 分享分享 分享淘帖 支持支持 保留保留
装死

130

主题

9822

积分

0

精华

操盘专家

金钱
9822 美元
权重
0
沙发
 楼主| 发表于 2018-3-15 22:17 | 只看该作者
  1. int start()
  2.   {
  3. for(int i= OrdersTotal() - 1;i >= 0;i--){
  4.    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
  5.    if(OrderType() < 2 && Symbol()==OrderSymbol()) OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),30);
  6.   }
  7. return(0);
  8. }
复制代码



这是一件平仓脚本
装死

39

主题

4001

积分

0

精华

高级操盘手

金钱
4001 美元
权重
5
板凳
发表于 2018-3-15 22:23 | 只看该作者
复制调试后用不了,能不能发指标上来?

203

主题

1万

积分

0

精华

操盘专家

金钱
12664 美元
权重
14
地板
发表于 2018-3-15 22:30 | 只看该作者
人生如戏 全凭演技
回复

使用道具 举报

130

主题

9822

积分

0

精华

操盘专家

金钱
9822 美元
权重
0
5
 楼主| 发表于 2018-3-15 22:35 | 只看该作者
anson888 发表于 2018-3-15 22:23
复制调试后用不了,能不能发指标上来?

可以的啊
装死

8

主题

4107

积分

0

精华

高级操盘手

金钱
4107 美元
权重
0
6
发表于 2018-3-26 19:06 | 只看该作者
楼主直接发指标吧。

7

主题

1万

积分

0

精华

操盘专家

金钱
13561 美元
权重
0
7
发表于 2021-1-28 21:02 | 只看该作者
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 快捷注册(禁q号)

本版积分规则

QQ|黄金吧|黄金论坛|手机版|指标下载|非农|目录|交易危机

版权所有: ©2014-2021 fx3q.com Powered by Discuz! X3
皖ICP备: 2024050410号-2

风险提示:杠杆风险高,交易要谨慎 声明:坛友发言和回复均为个人观点,不代表论坛立场。
若有侵权请联系fx3q@qq.com删除

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