期货量化交易软件:方便的剥头皮交易
简介
赫兹期货量化本文描述了开始交易的算法,可以更加方便的进行剥头皮交易。但是,该算法也可以应用于其他交易方法。实际上,本文提供了一种帮助交易者快速交易的方法。
一般来说,剥头皮交易被视为一种激进的交易类型。这里非常重要的一点是每次都需要指明手数、获利和止损位,因此转移了对图表的注意力。
本文是赌博模型作为培养“市场直觉”的方法的续篇。在开始研究本文之前,建议先阅读以上文章。
我想提醒你什么是剥头皮交易。剥头皮交易是快速交易的一种方法。通常这种交易的获利固定在 1-10 个价格利润点(点)。剥头皮交易以其复杂性、激进性和要求高度注意力著称。有人认为它不够严肃,有人则视其为完美操作。对我来说,我不想去评估该交易类型 - 它已被广泛讨论,每人都有自己的看法。

编辑切换为居中
概念
很可能每个交易者都曾尝试过剥头皮交易策略。对某些交易者,剥头皮交易是最便捷的交易类型,而对其他人则相反。有人视剥头皮为最有趣的交易,其他人则视其为浪费时间。但是,所有人都意识到这种交易类型中对市场和已开始交易高度关注的必要性。
很多交易者不愿使用剥头皮交易,仅仅是因为需要太多精力。但是,有一种方法可以帮助剥头皮交易者。
假设交易者打算以固定的手数进行剥头皮交易,并且每次交易都获利。显然,有必要消除每次交易都需要指明这些参数的要求。因为这会占用额外的时间,并且分散交易者对图表的注意力。
这意味着我们需要一个工具,能够根据交易者的命令以固定的手数和获利/止损位开始交易。工具的操作应尽可能简单,此外,应该尽可能少的分散交易者对图表的注意力。
使用 赫兹期货量化可以轻松创建这个工具。
实施
作为基础, 赫兹期货量化将采用《赌博模型作为培养“市场直觉”的方法》一文中描述的游戏。 赫兹期货量化将创建一个工具,能够在玩该游戏的同时进行交易。
对游戏的简要描述。图表上绘制两个箭头 - 向上和向下。交易者删除不必要的箭头,从而做出表明其意见的选择 - 即证券要上涨还是下跌。在新的蜡烛图的开始处,EA 检查交易者的预测是正确还是错误。预测的正确率影响游戏的分数。此外,交易者可以在限定的时间内做出选择。该时间可以更改(交易者决定是否进行设置)。
为了实现, 赫兹期货量化在当前柱后面的一个柱上再画两个箭头。当前柱仍用于赌博。在前一个柱上删除一个箭头将是 EA 在必要的方向上开始交易的信号。另外,选择交易方向的持续时间限制将在交易中禁用。有以下可变参数:获利和止损水平、手数、可接受的滑点和幻数。此外,可以使用外部布尔变量禁用交易,从而使 EA 仅用于赌博。
而且,根据此时开始的交易,在图表上将绘制一个命名为‘买’或‘卖’的箭头。这是为了防止 EA 在该蜡烛图上开始新的交易。该箭头将绘制在距离柱开盘价格 300 点的地方,这样用户很可能根本不会注意到它。
EA 本身将分为两大块 - 游戏和开始交易。这样读者就可以看到代码中添加的内容。
这样,我们有以下程序代码:
//+------------------------------------------------------------------+ //| trener.mq4 | //| Copyright © 2008, FXRaider | //| | //+------------------------------------------------------------------+ #property copyright "Copyright © 2008, FXRaider" extern int gap=2; extern bool Trading=true; extern int TP=2; extern int SL=20; extern double Lots=0.02; extern int slippage=1; extern int MagicNumber=777; extern int time_limit=30; int start() { //---- //################################################################################# //####################################### GAME #################################### //------------------------------ string solution="none"; int point, point_neg, point_pos; //------------------------------ //+---------------------------------------------------------------+ //| "up" choice searching | if( ObjectGet("up", OBJPROP_PRICE1)==Open[1]+gap*Point &&iBarShift(NULL,0,ObjectGet("up",OBJPROP_TIME1))==1 &&ObjectFind("down") != 0 &&ObjectFind("up") == 0 ) { solution="up"; } //| "up" choice searching | //+---------------------------------------------------------------+ //+---------------------------------------------------------------+ //| "down" choice searching | if( ObjectGet("down", OBJPROP_PRICE1)==Open[1]-gap*Point &&iBarShift(NULL,0,ObjectGet("down",OBJPROP_TIME1))==1 &&ObjectFind("up") != 0 &&ObjectFind("down") == 0 ) { solution="down"; } //| "down" choice searching | //+---------------------------------------------------------------+ //+---------------------------------------------------------------+ //| counting points at a positive answer | if((solution=="up"&&Open[1]<Close[1]) ||(solution=="down"&&Open[1]>Close[1])) { point=1; point_pos=1; point_neg=0; } //| counting points at a positive answer | //+---------------------------------------------------------------+ //+---------------------------------------------------------------+ //| counting points at a negative answer | if((solution=="up"&&Open[1]>Close[1]) ||(solution=="down"&&Open[1]<Close[1])) { point=-1; point_pos=0; point_neg=1; } //| counting points at a negative answer | //+---------------------------------------------------------------+ //+----------------------------------------------------------------------------------+ //| working with an external file | int handle; double points, //total score points_pos, //score of positive answers points_neg; //score of negative answers handle=FileOpen("trener_"+Symbol()+"_"+Period()+".csv", FILE_CSV|FILE_WRITE|FILE_READ,";"); if(handle>0) //if there is a file, read it { points=NormalizeDouble(StrToDouble(FileReadString(handle)),Digits); points_pos=NormalizeDouble(StrToDouble(FileReadString(handle)),Digits); points_neg=NormalizeDouble(StrToDouble(FileReadString(handle)),Digits); FileClose(handle); } if(solution!="none") //if a choice has been made made { handle=FileOpen("trener_"+Symbol()+"_"+Period()+".csv", FILE_CSV|FILE_WRITE|FILE_READ,";"); FileWrite(handle ,points+point); //write the total score FileWrite(handle ,points_pos+point_pos); //write the score of positive answers FileWrite(handle ,points_neg+point_neg); //write the score of negative answers FileClose(handle);