我写了一个虚拟余额的代码总感觉有些不对又不知道错在哪里?

楼主  收藏   举报   帖子创建时间:  2019-05-05 05:23 回复:0 关注量:260
我弄了一个代码,最终目的计算出:
1,现在的虚拟账户余额
2,N次平仓获利的平均账户虚拟余额
总感觉有些不对又不知道错在哪里?恳请老师及大家指正undefined undefined


  • //--- 输入参数
  • input double   下单量=0.01;
  • input int      止损=100;
  • input int      止盈=888;
  • input int      订单编号=160;
  • input int      LMA=2;
  • input int      SMA=10;
  • input int      LRMA=3;
  • input int      点距=100;
  • input int      a=20;
  • input int      b=30;
  • //+------------------------------------------------------------------+
  • //---全局变量
  • //double 虚拟开仓价格,虚拟手数,虚拟买单止损,虚拟买单止盈,虚拟卖单平仓信号;
  • //bool 虚拟买单开关=false;
  • //+------------------------------------------------------------------+
  • //| EA 初始化功能                                                    |
  • //+------------------------------------------------------------------+
  • int onInit()
  •   {
  • //---
  • //---
  •    return(INIT_SUCCEEDED);
  •   }
  • //+------------------------------------------------------------------+
  • //| EA 取消初始化功能                                                |
  • //+------------------------------------------------------------------+
  • void onDeinit(const int reason)
  •   {
  • //---
  •   }
  • //+------------------------------------------------------------------+
  • //| EA 主程序                                                        |
  • //+------------------------------------------------------------------+
  • void onTick()
  •   {
  • //---
  •    虚拟买单函数();
  •    虚拟卖单函数();
  •    虚拟平仓函数();
  •   }
  • //+------------------------------------------------------------------+
  • string 虚拟买单注释="0",虚拟卖单注释="0";
  • int 虚拟平仓信号=0;
  • double 虚拟买单开仓价格=0,虚拟卖单开仓价格=0;
  • double 虚拟买单平仓价格=0,虚拟卖单平仓价格=0;
  • double 虚拟买单止损=0,虚拟买单止盈=0,虚拟卖单止损=0,虚拟卖单止盈=0;
  • int 虚拟订单编号=0;
  • double 虚拟账户余额=100,虚拟账户平均余额=0,虚拟订单获利=0;
  • int N=0;
  • int 虚拟订单获利信号=0;
  • int 虚拟平仓次数=0;
  • //+------------------------------------------------------------------+
  • //|   虚拟买单函数                                                   |
  • //+------------------------------------------------------------------+
  • void 虚拟买单函数()
  •   {
  •    if(虚拟买单条件成立)
  •      {
  •       虚拟平仓信号=1;
  •       虚拟卖单平仓价格=Ask;
  •       if(虚拟买单注释=="0")
  •         {
  •          虚拟买单开仓价格=Ask;
  •          虚拟买单止损=Ask-止损*Point;
  •          虚拟买单止盈=Ask+止盈*Point;
  •          虚拟买单注释="买单1";
  •          虚拟订单编号=订单编号;
  •         }
  •       if(虚拟买单注释=="买单1") return;
  •      }
  •   }
  • //+------------------------------------------------------------------+
  • //|  虚拟卖单函数()                                                  |
  • //+------------------------------------------------------------------+
  • void 虚拟卖单函数()
  •   {
  •    if(虚拟卖单条件成立)
  •      {
  •       虚拟平仓信号=1;
  •       虚拟买单平仓价格=Bid;
  •       if(虚拟卖单注释=="0")
  •         {
  •          虚拟卖单开仓价格=Bid;
  •          虚拟卖单止损=Bid+止损*Point;
  •          虚拟卖单止盈=Bid-止盈*Point;
  •          虚拟卖单注释="卖单1";
  •          虚拟订单编号=订单编号;
  •         }
  •       if(虚拟卖单注释=="卖单1") return;
  •      }
  •   }
  • //+------------------------------------------------------------------+
  • void 虚拟平仓函数()
  •   {
  •    if(虚拟平仓信号==1 && 虚拟买单注释=="买单1")
  •      {
  •       虚拟订单获利信号=1;
  •       虚拟订单获利=(虚拟买单平仓价格-虚拟买单开仓价格)*Point*下单量 *100000;
  •       虚拟买单开仓价格=0;
  •       虚拟买单止损=0;
  •       虚拟买单止盈=0;
  •       虚拟买单注释="0";
  •       虚拟订单编号=0;
  •      }
  •    if(虚拟买单止损==Bid)
  •      {
  •       虚拟订单获利信号=1;
  •       虚拟订单获利=(虚拟买单止损-虚拟买单开仓价格)*Point*下单量 *100000;
  •       虚拟买单开仓价格=0;
  •       虚拟买单止损=0;
  •       虚拟买单止盈=0;
  •       虚拟买单注释="0";
  •       虚拟订单编号=0;
  •      }
  •    if(虚拟买单止盈==Bid)
  •      {
  •       虚拟订单获利信号=1;
  •       虚拟订单获利=(虚拟买单止盈-虚拟买单开仓价格)*Point*下单量 *100000;
  •       虚拟买单开仓价格=0;
  •       虚拟买单止损=0;
  •       虚拟买单止盈=0;
  •       虚拟买单注释="0";
  •       虚拟订单编号=0;
  •      }
  • //---
  •    if(虚拟平仓信号==1 && 虚拟卖单注释=="卖单1")
  •      {
  •       虚拟订单获利信号=1;
  •       虚拟订单获利=(虚拟卖单平仓价格-虚拟卖单开仓价格)*Point*下单量 *100000;
  •       虚拟卖单开仓价格=0;
  •       虚拟卖单止损=0;
  •       虚拟卖单止盈=0;
  •       虚拟卖单注释="0";
  •       虚拟订单编号=0;
  •      }
  •    if(虚拟卖单止损==Ask)
  •      {
  •       虚拟订单获利信号=1;
  •       虚拟订单获利=(虚拟卖单止损-虚拟卖单开仓价格)*Point*下单量 *100000;
  •       虚拟卖单开仓价格=0;
  •       虚拟卖单止损=0;
  •       虚拟卖单止盈=0;
  •       虚拟卖单注释="0";
  •       虚拟订单编号=0;
  •      }
  •    if(虚拟卖单止盈==Ask)
  •      {
  •       虚拟订单获利信号=1;
  •       虚拟订单获利=(虚拟卖单止盈-虚拟卖单开仓价格)*Point*下单量 *100000;
  •       虚拟卖单开仓价格=0;
  •       虚拟卖单止损=0;
  •       虚拟卖单止盈=0;
  •       虚拟卖单注释="0";
  •       虚拟订单编号=0;
  •      }
  •   }
  • //+------------------------------------------------------------------+
  • //|   虚拟余额计算                                                               |
  • //+------------------------------------------------------------------+
  • void 虚拟余额函数()
  •   {
  •    虚拟平仓次数=虚拟平仓次数+虚拟订单获利信号;
  •    if(虚拟平仓次数==N)
  •      {
  •       虚拟账户余额=虚拟账户余额+虚拟订单获利;
  •       for(int i=0;i<N;i++)
  •         {
  •          虚拟账户平均余额=(虚拟账户余额+(虚拟账户余额+虚拟订单获利))/N;
  •          //虚拟账户平均余额=(100*N+虚拟账户余额)/N;
  •         }
  •      }
  •   }
  • //+------------------------------------------------------------------+


复制代码






[/tr]

打赏