希望得到您的意见 - 页 4

 
angevoyageur:
你试图通过在某些方面欺骗你的EA和/或回测结果来欺骗初学者,你对此非常清楚。

"不要在你不知道你在争论什么的时候进行指责。我已经说过,它100%的尝试是不在亏损时关闭任何东西,而是等待它变得有利可图。浮动亏损将由动态手数和余额的百分比作为手数来管理,从而使其很难遭遇保证金追缴。
 
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);
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
附加的文件:
 
我个人并不相信黄牛党。这只是一个有趣的项目,我想听听那些可能曾经在这里居住过的剥头皮的人的意见。有的tp水平和时间框架确实让账户破产了,这就是为什么使用H1这个不常见的剥头皮的时间框架,因为它比分钟时间 框架能提供更准确的趋势预测。我在实盘账户上用少量的余额测试了一些剥头皮的策略,在不到两周的时间里赚了3000%(从10美元到300美元),但常见的情况是,追加保证金会有最终决定权。在这种情况下,我尝试了一些有可能剥头皮并长期获胜的方法,尽管盈利能力受到了打击,这就是为什么你可以看到测试报告在两年内只赚了大约100%,这在剥头皮方面并不算多。我对剥头皮的看法是,你可以通过剥头皮赚钱,但不是长期的。剥头皮应该作为一个 "赚了就跑 "的系统,即存入1000美元,一旦你赚了三倍,就离开,把钱投资到其他地方。我还研究了这个sp服务中的剥头皮信号供应商(由于广告服务,我不会提及),虽然有些人甚至在一年内获利,但最终的结果是大量的浮动损失,通常是 "保证金调用 "大多数用户的账户。如果想通过剥头皮赚钱,你必须存入大量资金,但使用非常小的手数,最终的结果是比非剥头皮策略的利润要小,这就是我在这里尝试的概念。总而言之,我的结论是,我个人不喜欢剥头皮,但如果你喜欢,那就赚到300%或1000%,然后跑路,同时记住你的经纪人可能不允许你撤回这笔钱,因为大多数经纪人根本不喜欢这样做,请检查你的经纪人的反剥头皮规则,在剥头皮时,尽量遵守他们,不要过早(少于10分钟)关闭交易。
 
tonny:

"不要在你不知道你在争论什么的时候进行指责 我已经说过,它100%地尝试了不在亏损时关闭任何东西,而是等待它变得有利可图。浮动亏损将由动态手数和余额的百分比作为手数来管理,从而使其很难遭遇保证金追缴。
  • 你能解释一下吗?
不匹配的图表错误350
 
哦,所以我是那个把错误放在MT4上的人?你没有时间可以进行战略测试,而且你得到了0个不匹配的错误 lol你真的不知道你在说什么 undertaker看起来很像
 
tonny:
哦,原来是我把错误放在MT4上的?没有什么时候你可以在策略测试中得到0个不匹配的错误,你真的不知道你在说什么,殡仪馆看起来很像。

很有可能出现零错位的图表错误 ......这仅仅取决于你的数据和它的构建方式,例如,从相同的tick数据创建M1到MN1应该会导致很少的错误 ......

 
tonny:
哦,所以我是那个把错误放在MT4上的人?你没有时间可以进行策略测试,你得到0个不匹配的错误,你真的不知道你在说什么。

我已经做了 数百次 回测 ,我从来没有 见过这个错误。

总之,你想听听我的意见,我的意见是,你的EA 只能 用来 炸毁一个账户。

可能是我错了,我认为你在作弊,对此我很抱歉。如果你没有,因为你从2010年1月开始在这里,你至少是非常天真。

 

有可能做这样的测试

我也可以这样做

策略:如果最高点18条买入

如果低点最低18条卖出,没有止损

也可以跟踪这个结果(愚蠢的游戏)。

附加的文件:
testresult.zip  46 kb
 
是的,但这个男孩说的好像是我创造的错误,有人告诉他这是来自MT4的数据而不是我。
 
我什么时候说过这个项目是完美的,我说过很多次了,我只是在研究它,只是在征求 "成熟 "的意见,这个利润远远低于我已经成功的系统,但正如我所说的,我只是在探索剥头皮系统,我愿意接受有用的意见,但我不会接受侮辱,作为主持人,你不应该表现得像一只苍蝇,你应该比这更成熟,我的测试结果 是来自MT4自然,这就是为什么MT4数据有一些错误,因为我没有在其中注入代码来改变什么。