希望得到您的意见 - 页 4 1234567 新评论 [删除] 2013.03.16 13:16 #31 angevoyageur: 你试图通过在某些方面欺骗你的EA和/或回测结果来欺骗初学者,你对此非常清楚。 "不要在你不知道你在争论什么的时候进行指责。我已经说过,它100%的尝试是不在亏损时关闭任何东西,而是等待它变得有利可图。浮动亏损将由动态手数和余额的百分比作为手数来管理,从而使其很难遭遇保证金追缴。 Ubzen 2013.03.17 01:19 #32 tonny: 这里是测试者的报告。由于明显的原因,我省略了参数和EA名称。你想检查就检查吧,我没有什么可隐瞒的。好得多。我对你的系统的看法是,它风险太大。然而,风险是一个相对的术语,如果你觉得你可以忍受50%的相对缩水,并有可能导致账户爆仓,那么就交易吧。然而,我建议你在蒙特卡洛模式下运行你的系统,以获得一个更好的统计,即50%的提款发生的频率。还有你的Risk_Of_Ruin与你的BankRoll等。我刚刚醒来,看到你的数据,决定把一些东西放在一起,可以在一定程度上复制结果,下面是代码和结果。注意:在我第一次运行时,它破产了。第2次和第3次运行看起来像下面的结果。根据我的三次运行,我说 "我的 "系统在测试的时间段内有三分之一的机会使1万欧元破产。你所显示的结果只是该系统的一个静态[积极]表现。任何交易这个系统的人都会不断问自己 "如果价格永远不回来怎么办?"。我的建议是,你要进行成千上万次的运行,以测试你的系统对反弹期的预测程度。还可以延长时间框架并在其他货币对上进行测试。代码是匆忙写的,不打算用于Real_Money的使用。我以后可能会删除这些代码。//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #property copyright "Copyright © Ubzen" #property link "https://www.mql5.com/en/users/ubzen" //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #define Magic_Nm 1 #define Scalp_Pi 5 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //extern int MonteCarlo=1;//Optimize 1->100 Equal_100 Random_Runs //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ void start(){ if(!isNewBar()){return;} Order_Origination(); Order_Termination(); } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ void Order_Origination(){ if(Count_OrderS_Symb()>0){return;} if(!isRange()){return;} Order_Send(Symbol(),Random_OT(),Compound()); } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ void Order_Termination(){ for(int i=OrdersTotal()-1; i>=0; i--){ if(!OrderSelect(i,SELECT_BY_POS)){continue;} if(OrderMagicNumber()!=Magic_Nm){continue;} string Sy=Symbol(); if(OrderSymbol()!=Sy){continue;} if(OrderProfit()<0){continue;} double OpnPrc=OrderOpenPrice(); double ClsPrc=OrderClosePrice(); double Diff=MathAbs(ClsPrc-OpnPrc); double inPip=p2pips(Sy,Diff); int inInt=p2i(Sy,inPip); if(inInt<Scalp_Pi){return;} Close_Order_Ticket(OrderTicket()); } } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bool isNewBar(){ static datetime BarTime; datetime MinOpen=iTime(Symbol(),PERIOD_M1,0); if(BarTime!=MinOpen){BarTime=MinOpen; return(true);} } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ int Random_OT(){ static double Seed; if(Seed==0){Seed=GetTickCount();} Seed+=0.9; MathSrand(Seed); int OrType=MathRand()%2; if(OrType%2==0){return(OP_BUY);}else{return(OP_SELL);} } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ double Symb_Digit(string Symb){ return(MarketInfo(Symb,MODE_DIGITS)); } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ int p2i(string Symb, double X){ /*Converts Price_2_Integer*/ int SymDigit=Symb_Digit(Symb); if(SymDigit%2==0){if(SymDigit==2){int Y=100;}else{Y=10000;} }else{if(SymDigit==3){Y=1000;}else{Y=100000;}} return(X*Y); } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ double p2pips(string Symb, double X){//Points2Pips int D=Symb_Digit(Symb); if(D%2==1){X/=10;} return(X); } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ double p2points(string Symb, double X){//Pips2Points int D=Symb_Digit(Symb); if(D%2==1){X*=10;} return(X); } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bool isRange(){ int Range=10; string Sy=Symbol(); int Tf=PERIOD_M5; int Pd=99; int Dev=1; int Sh=0; int App=PRICE_LOW; int iDex=0; double Band_Up=iBands(Sy,Tf,Pd,Dev,Sh,App,MODE_UPPER,iDex); double Band_Dn=iBands(Sy,Tf,Pd,Dev,Sh,App,MODE_LOWER,iDex); int iBand_Up=p2i(Sy,Band_Up); int iBand_Dn=p2i(Sy,Band_Dn); int Dif=iBand_Up-iBand_Dn; int Range2Points=p2points(Sy,Range); if(Dif<Range2Points){return(true);} } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ int Count_OrderS_Symb(){ int Cnt; for(int i=OrdersTotal()-1; i>=0; i--){ if(!OrderSelect(i,SELECT_BY_POS)){continue;} if(OrderMagicNumber()!=Magic_Nm){continue;} if(OrderSymbol()!=Symbol()){continue;} Cnt++;} return(Cnt);} //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bool Close_Order_Ticket(int Tkt){ if(!OrderSelect(Tkt,SELECT_BY_TICKET)){return;} if(OrderType()>1){return;} if(OrderCloseTime()!=0){return;} if(!IsTesting()){while(IsTradeContextBusy()){Sleep(500);}} double Ocp=OrderClosePrice(); double Ol=OrderLots(); bool Res=OrderClose(Tkt,Ol,Ocp,0,0); return(Res);} //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ int Order_Send(string Symb, int OType, double Lots){ if(AccountFreeMarginCheck(Symb,OType,Lots)<=0){return;} if(GetLastError()==134){return;} int Order_Slip=0; color OrColor; if(OType==OP_BUY){OrColor=Blue;} if(OType==OP_SELL){OrColor=Red;} if(OType==OP_BUY){double P=MarketInfo(Symb,MODE_ASK);} if(OType==OP_SELL){ P=MarketInfo(Symb,MODE_BID);} int OrTicket=OrderSend( Symb,OType,Lots,P,Order_Slip, 0,0,"_",Magic_Nm,0,OrColor); return(OrTicket); } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ double Compound(){ double BrkMinLot=MarketInfo(Symbol(),MODE_MINLOT); double BrkMaxLot=MarketInfo(Symbol(),MODE_MAXLOT); double BrkLotStp=MarketInfo(Symbol(),MODE_LOTSTEP); double LotSize=AccountBalance()/200*0.01; if(LotSize<BrkMinLot){LotSize=BrkMinLot;} if(LotSize>BrkMaxLot){LotSize=BrkMaxLot;} return(LotSize); } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 附加的文件: tonny20130316.zip 19 kb [删除] 2013.03.17 07:11 #33 我个人并不相信黄牛党。这只是一个有趣的项目,我想听听那些可能曾经在这里居住过的剥头皮的人的意见。有的tp水平和时间框架确实让账户破产了,这就是为什么使用H1这个不常见的剥头皮的时间框架,因为它比分钟时间 框架能提供更准确的趋势预测。我在实盘账户上用少量的余额测试了一些剥头皮的策略,在不到两周的时间里赚了3000%(从10美元到300美元),但常见的情况是,追加保证金会有最终决定权。在这种情况下,我尝试了一些有可能剥头皮并长期获胜的方法,尽管盈利能力受到了打击,这就是为什么你可以看到测试报告在两年内只赚了大约100%,这在剥头皮方面并不算多。我对剥头皮的看法是,你可以通过剥头皮赚钱,但不是长期的。剥头皮应该作为一个 "赚了就跑 "的系统,即存入1000美元,一旦你赚了三倍,就离开,把钱投资到其他地方。我还研究了这个sp服务中的剥头皮信号供应商(由于广告服务,我不会提及),虽然有些人甚至在一年内获利,但最终的结果是大量的浮动损失,通常是 "保证金调用 "大多数用户的账户。如果想通过剥头皮赚钱,你必须存入大量资金,但使用非常小的手数,最终的结果是比非剥头皮策略的利润要小,这就是我在这里尝试的概念。总而言之,我的结论是,我个人不喜欢剥头皮,但如果你喜欢,那就赚到300%或1000%,然后跑路,同时记住你的经纪人可能不允许你撤回这笔钱,因为大多数经纪人根本不喜欢这样做,请检查你的经纪人的反剥头皮规则,在剥头皮时,尽量遵守他们,不要过早(少于10分钟)关闭交易。 Alain Verleyen 2013.03.17 09:12 #34 tonny: "不要在你不知道你在争论什么的时候进行指责。 我已经说过,它100%地尝试了不在亏损时关闭任何东西,而是等待它变得有利可图。浮动亏损将由动态手数和余额的百分比作为手数来管理,从而使其很难遭遇保证金追缴。你能解释一下吗?不匹配的图表错误350 [删除] 2013.03.17 11:34 #35 哦,所以我是那个把错误放在MT4上的人?你没有时间可以进行战略测试,而且你得到了0个不匹配的错误 lol你真的不知道你在说什么 undertaker看起来很像 Simon Gniadkowski 2013.03.17 11:43 #36 tonny: 哦,原来是我把错误放在MT4上的?没有什么时候你可以在策略测试中得到0个不匹配的错误,你真的不知道你在说什么,殡仪馆看起来很像。很有可能出现零错位的图表错误 ......这仅仅取决于你的数据和它的构建方式,例如,从相同的tick数据创建M1到MN1应该会导致很少的错误 ...... Alain Verleyen 2013.03.17 11:48 #37 tonny: 哦,所以我是那个把错误放在MT4上的人?你没有时间可以进行策略测试,你得到0个不匹配的错误,你真的不知道你在说什么。 我已经做了 数百次 回测 ,我从来没有 见过这个错误。 总之,你想听听我的意见,我的意见是,你的EA 只能 用来 炸毁一个账户。 可能是我错了,我认为你在作弊,对此我很抱歉。如果你没有,因为你从2010年1月开始在这里,你至少是非常天真。 Tjipke de Vries 2013.03.17 12:00 #38 有可能做这样的测试我也可以这样做策略:如果最高点18条买入如果低点最低18条卖出,没有止损也可以跟踪这个结果(愚蠢的游戏)。 附加的文件: testresult.zip 46 kb [删除] 2013.03.17 12:17 #39 是的,但这个男孩说的好像是我创造的错误,有人告诉他这是来自MT4的数据而不是我。 [删除] 2013.03.17 12:30 #40 我什么时候说过这个项目是完美的,我说过很多次了,我只是在研究它,只是在征求 "成熟 "的意见,这个利润远远低于我已经成功的系统,但正如我所说的,我只是在探索剥头皮系统,我愿意接受有用的意见,但我不会接受侮辱,作为主持人,你不应该表现得像一只苍蝇,你应该比这更成熟,我的测试结果 是来自MT4自然,这就是为什么MT4数据有一些错误,因为我没有在其中注入代码来改变什么。 1234567 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
你试图通过在某些方面欺骗你的EA和/或回测结果来欺骗初学者,你对此非常清楚。
"不要在你不知道你在争论什么的时候进行指责。我已经说过,它100%的尝试是不在亏损时关闭任何东西,而是等待它变得有利可图。浮动亏损将由动态手数和余额的百分比作为手数来管理,从而使其很难遭遇保证金追缴。
好得多。我对你的系统的看法是,它风险太大。然而,风险是一个相对的术语,如果你觉得你可以忍受50%的相对缩水,并有可能导致账户爆仓,那么就交易吧。然而,我建议你在蒙特卡洛模式下运行你的系统,以获得一个更好的统计,即50%的提款发生的频率。还有你的Risk_Of_Ruin与你的BankRoll等。
我刚刚醒来,看到你的数据,决定把一些东西放在一起,可以在一定程度上复制结果,下面是代码和结果。注意:在我第一次运行时,它破产了。第2次和第3次运行看起来像下面的结果。
根据我的三次运行,我说 "我的 "系统在测试的时间段内有三分之一的机会使1万欧元破产。你所显示的结果只是该系统的一个静态[积极]表现。任何交易这个系统的人都会不断问自己 "如果价格永远不回来怎么办?"。我的建议是,你要进行成千上万次的运行,以测试你的系统对反弹期的预测程度。还可以延长时间框架并在其他货币对上进行测试。
代码是匆忙写的,不打算用于Real_Money的使用。我以后可能会删除这些代码。
"不要在你不知道你在争论什么的时候进行指责。 我已经说过,它100%地尝试了不在亏损时关闭任何东西,而是等待它变得有利可图。浮动亏损将由动态手数和余额的百分比作为手数来管理,从而使其很难遭遇保证金追缴。
哦,原来是我把错误放在MT4上的?没有什么时候你可以在策略测试中得到0个不匹配的错误,你真的不知道你在说什么,殡仪馆看起来很像。
很有可能出现零错位的图表错误 ......这仅仅取决于你的数据和它的构建方式,例如,从相同的tick数据创建M1到MN1应该会导致很少的错误 ......
哦,所以我是那个把错误放在MT4上的人?你没有时间可以进行策略测试,你得到0个不匹配的错误,你真的不知道你在说什么。
我已经做了 数百次 回测 ,我从来没有 见过这个错误。
总之,你想听听我的意见,我的意见是,你的EA 只能 用来 炸毁一个账户。
可能是我错了,我认为你在作弊,对此我很抱歉。如果你没有,因为你从2010年1月开始在这里,你至少是非常天真。
有可能做这样的测试
我也可以这样做
策略:如果最高点18条买入
如果低点最低18条卖出,没有止损
也可以跟踪这个结果(愚蠢的游戏)。