我弄了一个代码,最终目的计算出:
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] |
|