任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 291

 
tara:

鲁斯塔姆是主人的名字。要我介绍他吗?
啊...我明白了。
 
tara:

不,这很好。只是你所使用的产品不仅有 "功能",还有连作者都没有想到要深入研究的设置:)这个产品是一个笑话,你已经相当认真地研究过了--为你点赞。

你说的产品是指试验品吗?

但我测试了几个对.....,结果是一样的。

 
solnce600:

我不太清楚你说的是什么设置,但代码是原始的,只有几行,只是重复了很多遍

一个困难的条件和一个开单的命令。


你说的产品是指测试器吗?

不,如果我没记错的话,作者称其为测试者的圣杯
 

我得到了提示。

但我意识到,测试者和真正的交易是略有不同的东西....。

但我认为它们的相似之处多于差异。

 
solnce600:

我得到了提示。

但我意识到,测试者和真正的交易是略有不同的东西....。

但我认为它们的相似之处多于差异。


在品味和色彩方面,你无法超越钢笔的毡尖。
 
tara:

你无法超越毛毡试纸的颜色和味道。

就测试质量而言,你对这个测试器的看法是什么?

http://clip2net.com/s/6h6sCw

在测试质量方面,它是否远远优于MT-4测试器?

谢谢你。

 
90909solnce600:

就测试质量而言,你对这个测试器的看法是什么?

http://clip2net.com/s/6h6sCw

在测试质量方面,它是否比MT-4测试仪优越很多?

谢谢你。



我不太了解测试质量,更希望有一个测试器能在数据不变的情况下提供可重复的结果(MT4测试器的工作方式不同)。因此,我经常在自己的程序中测试交易策略。
 
tara:

我不太了解测试质量,更希望有一个测试器能在数据不变的情况下提供可重复的结果(MT4测试器的工作方式不同)。因此,我经常在自己的程序中测试交易策略。
明白了,谢谢你。
 

伙计们,谁能描述一下发生了什么,并说明在+中关闭订单的地方,并打开一个新的系列。

extern bool test=false;  // откл объектов при тесте
extern int prof=56;     // уровень профита
extern int chag=36;     // шаг между ордерами
extern int risk=4;         //уровень риска
extern double lot = 0.01; // начальный лот
extern double k_lot=1.7; // увеличение объема
extern double lot_max=100; // максимальный лот
int kn=9;  // величина вертикальной шкалы
int magic = 37641; 
 
int k,c,b_ind,s_ind,objtot,er;
double buy_prs,sel_prs,buy_ind,sel_ind,or_bu,or_sl,prf_b,prf_s,b_pr,s_pr,b2_cls,s2_cls;
string nh;
int init()
  {
//----
 
if(Digits==2) k=1;
if(Digits==3) k=10;
if(Digits==4) k=1;
if(Digits==5) k=10;
nh=StringSubstr(Symbol(),2,2);
 
 if(!IsTesting()){
    buy_prs=GlobalVariableGet(nh+"_buy_prs"); buy_ind=GlobalVariableGet(nh+"_buy_ind");
    sel_prs=GlobalVariableGet(nh+"_sel_prs"); sel_ind=GlobalVariableGet(nh+"_sel_ind");}
 
c=0;
chag=chag*k;
prof=prof*k;
//нннннннннннннннннннннннннннн//
   return(0);
  }
//============================================//
int start()
  {
//----
int i,y,tick_s,tick_b,tick_slm,tick_blm;
double prov,price_b,price_s,prof_b,prof_s,lot_b,lot_s,b_cls,s_cls,abc;
bool mod_b=false,mod_s=false;

   if(Bars-c>1) c=0;
   i=Bars-c; c=Bars;
 if(!IsTesting()){for(y=0;y<OrdersTotal();y++)
   {OrderSelect(y,0,0); if(OrderSymbol()!=Symbol()||OrderMagicNumber()!=magic||(OrderType()!=0&&OrderType()!=1)) continue;
      prov=prov+OrderProfit()+OrderSwap()+OrderCommission();}
   if(prov<0&&prov<GlobalVariableGet(nh+"_max_prov"))GlobalVariableSet(nh+"_max_prov",prov);}
 
    for (y=0;y<OrdersTotal();y++){OrderSelect(y,0);
      if(Symbol()!=OrderSymbol()||OrderMagicNumber()!=magic) continue; 
      if (OrderType() == 0 || OrderType() == 1) abc=abc + OrderProfit() + OrderSwap() + OrderCommission();
     
      if(OrderType()==0){if(prf_b!=OrderTakeProfit() && prf_b!=0) mod_b=true; prf_b=OrderTakeProfit();}
      if(OrderType()==OP_BUY && tick_b<OrderTicket()) {
       tick_b=OrderTicket();
       price_b=OrderOpenPrice();
       lot_b=OrderLots();
       prof_b=OrderTakeProfit();}
 
      if(OrderType()==1){if(prf_s!=OrderTakeProfit() && prf_s!=0) mod_s=true; prf_s=OrderTakeProfit();}      
      if(OrderType()==OP_SELL && tick_s<OrderTicket()) {
       tick_s=OrderTicket();
       price_s=OrderOpenPrice();
       lot_s=OrderLots();
       prof_s=OrderTakeProfit();} 
 
      if (OrderType()==OP_BUYLIMIT)  tick_blm = OrderTicket();
      if (OrderType()==OP_SELLLIMIT) tick_slm = OrderTicket();}
   if(Ask>buy_prs && or_bu<=0) {buy_prs=Ask; buy_ind=Ask;}
   if((Ask<buy_prs && Ask<buy_ind) || buy_ind==0) buy_ind=Ask;
   b_cls=buy_ind+MathFloor(prof+chag/2)*Point;
   or_bu=MathFloor((buy_prs-buy_ind)/Point/chag); 
   if(Bid>=b_cls && or_bu>0){buy_prs=Ask; buy_ind=Ask; or_bu=0;}
   if(tick_b==0 && b_ind>0){buy_prs=Ask; buy_ind=Ask; or_bu=0;}
 
   if((Bid<sel_prs||sel_prs==0) && or_sl<=0) {sel_prs=Bid; sel_ind=Bid;}
   if(Bid>sel_prs && Bid>sel_ind) sel_ind=Bid;
   s_cls=sel_ind-MathFloor(prof+chag/2)*Point;
   or_sl=MathFloor((sel_ind-sel_prs)/Point/chag);
   if(Ask<=s_cls && or_sl>0){sel_prs=Bid; sel_ind=Bid; or_sl=0;}
   if(tick_s==0 && s_ind>0) {sel_prs=Bid; sel_ind=Bid; or_sl=0;}
 
 if(!IsTesting()){
   GlobalVariableSet(nh+"_buy_prs",buy_prs); GlobalVariableSet(nh+"_buy_ind",buy_ind);
   GlobalVariableSet(nh+"_sel_prs",sel_prs); GlobalVariableSet(nh+"_sel_ind",sel_ind);} 
   if(tick_b==0 && tick_blm!=0) OrderDelete(tick_blm);
   if(tick_s==0 && tick_slm!=0) OrderDelete(tick_slm);
 
   if(or_bu==risk && tick_b==0) open(0); 
   if(or_sl==risk && tick_s==0) open(1);
 
   if(tick_b>0 && tick_blm==0 && lot_b*k_lot<lot_max && Ask>price_b-chag*Point) open_lim(2,price_b,lot_b);
   if(tick_s>0 && tick_slm==0 && lot_s*k_lot<lot_max && Bid<price_s+chag*Point) open_lim(3,price_s,lot_s);
 
   if(mod_b) modif(0,prof_b);
   if(mod_s) modif(1,prof_s);
//===============================
  b_ind=tick_b;   s_ind=tick_s; 
//=================================================//
 if(!test){if(b_pr!=buy_prs || s_pr!=sel_prs || i>=1 || objtot!=ObjectsTotal())
         object(buy_prs,buy_prs-chag*kn*Point, sel_prs,sel_prs+chag*kn*Point);
//======= 
 if(b_cls>buy_prs && ObjectFind("clsbuy")==0) ObjectDelete("clsbuy"); 
 if(s_cls<sel_prs && ObjectFind("clsel")==0)  ObjectDelete("clsel");
 
 if(b_cls<buy_prs && (b2_cls!=b_cls || i>=1 || objtot!=ObjectsTotal())) cls(0,b_cls);
 if(s_cls>sel_prs && (s2_cls!=s_cls || i>=1 || objtot!=ObjectsTotal())) cls(1,s_cls);
 
   b2_cls=b_cls; s2_cls=s_cls;
   b_pr=buy_prs; s_pr=sel_prs;
   objtot=ObjectsTotal(); com(abc);}
//======================================================//
   return(0);
  }
//нннннннннннннннннннннннннннн//
//==================================//
int open(int tip){int tk;
   if(tip==0){tk=OrderSend(Symbol(),OP_BUY,lot,Ask,3,0,0,"martin",magic); er=GetLastError(); if(er>0) err(er);
   if(tk>0){OrderSelect(tk,SELECT_BY_TICKET); OrderModify(OrderTicket(),OrderOpenPrice(),0,OrderOpenPrice()+prof*Point,0);
       er=GetLastError(); if(er>0) err(er);}}
             
   if(tip==1){tk=OrderSend(Symbol(),OP_SELL,lot,Bid,3,0,0,"martin",magic); er=GetLastError(); if(er>0) err(er);    
   if(tk>0){OrderSelect(tk,SELECT_BY_TICKET); OrderModify(OrderTicket(),OrderOpenPrice(),0,OrderOpenPrice()-prof*Point,0);
       er=GetLastError(); if(er>0) err(er);}}}
//==================================//
int open_lim(int tip,double prc,double lota){double lott=NormalizeDouble(lota*k_lot,2); if(lota==0.01 && k_lot>1.3)lott=0.02;
   if(tip==2){OrderSend(Symbol(),OP_BUYLIMIT,lott,prc-chag*Point,3,0,prc-(chag-prof)*Point,"martin",magic,0);
               er=GetLastError(); if(er>0) err(er);}
   if(tip==3){OrderSend(Symbol(),OP_SELLLIMIT,lott,prc+chag*Point,3,0,prc+(chag-prof)*Point,"martin",magic,0);}
               er=GetLastError(); if(er>0) err(er);}
//==================================//
bool modif(int tp,double pf){int y;
   if(tp==0){ for(y=0;y<OrdersTotal();y++){OrderSelect(y,0);
      if(Symbol()!=OrderSymbol() || OrderMagicNumber()!=magic || OrderType()!=0) continue;
       OrderModify(OrderTicket(),OrderOpenPrice(),0,pf,0); er=GetLastError(); if(er>0) err(er);}}
//=======   
   if(tp==1){ for(y=0;y<OrdersTotal();y++){OrderSelect(y,0);
      if(Symbol()!=OrderSymbol() || OrderMagicNumber()!=magic || OrderType()!=1) continue;   
       OrderModify(OrderTicket(),OrderOpenPrice(),0,pf,0); er=GetLastError(); if(er>0) err(er);}}}      
//======================================//
bool com(double abc){Comment("  gubaha martin.    ",TimeToStr(TimeLocal(),4),
      "\n", "  максим. просадка   =  ",GlobalVariableGet(nh+"_max_prov")," $",
      "\n", "  Текущий прибыль= ",NormalizeDouble(abc,2)," $ ", 
      "\n", "  Текущий баланс       = ", AccountBalance(), " $ ");}
//==================================//
bool object(double up_b,double dw_b,double up_s,double dw_s){
   if(ObjectFind("lin_b")==-1)
      {ObjectCreate("lin_b",2,0,Time[0]+Period()*240,up_b,Time[0]+Period()*240,dw_b);
       ObjectSet("lin_b",10,0);ObjectSet("lin_b",6,DeepSkyBlue);
       ObjectSet("lin_b",8,2);}   
   else{ObjectSet("lin_b",1,up_b); ObjectSet("lin_b",0,Time[0]+Period()*240);
        ObjectSet("lin_b",3,dw_b); ObjectSet("lin_b",2,Time[0]+Period()*240);}      
//-------------
   if(ObjectFind("lin_s")==-1)
      {ObjectCreate("lin_s",2,0,Time[0]+Period()*480,up_s,Time[0]+Period()*480,dw_s);
       ObjectSet("lin_s",10,0);ObjectSet("lin_s",6,Red);
       ObjectSet("lin_s",8,2);}   
   else{ObjectSet("lin_s",1,up_s);ObjectSet("lin_s",0,Time[0]+Period()*480);
        ObjectSet("lin_s",3,dw_s);ObjectSet("lin_s",2,Time[0]+Period()*480);}
//-------------
 string ln; int y,tm,tm2,col,shn; double kln;
 
   for(y=0;y<=kn*2+1;y++){ln="kr_"+DoubleToStr(y,0);    
      if(y<=kn){kln=up_b-y*chag*Point; tm=120; tm2=240;}
      if(y>kn && y<=kn*2+1){kln=up_s+(y-kn-1)*chag*Point; tm=360; tm2=480;}
      if(y==risk || y==kn+1+risk) {col=Lime; shn=3;} else {col=DarkGoldenrod; shn=0;}
 
   if(ObjectFind(ln)==-1)   
       {ObjectCreate(ln,2,0,Time[0]+Period()*tm,kln,Time[0]+Period()*tm2,kln);
        ObjectSet(ln,10,0);ObjectSet(ln,6,col); ObjectSet(ln,8,shn);}
   else{ObjectSet(ln,1,kln);ObjectSet(ln,3,kln);ObjectSet(ln,6,col); ObjectSet(ln,8,shn);
        ObjectSet(ln,0,Time[0]+Period()*tm);ObjectSet(ln,2,Time[0]+Period()*tm2);}}}
//==============//
 bool cls(int tp,double clos){
   if(tp==0){if(ObjectFind("clsbuy")==-1) 
       {ObjectCreate("clsbuy",2,0,Time[0]+Period()*120,clos,Time[0]+Period()*240,clos);
        ObjectSet("clsbuy",10,0);ObjectSet("clsbuy",6,Magenta); ObjectSet("clsbuy",8,3);}
   else{ObjectSet("clsbuy",1,clos); ObjectSet("clsbuy",3,clos);   
        ObjectSet("clsbuy",0,Time[0]+Period()*120); ObjectSet("clsbuy",2,Time[0]+Period()*240);}}
 
   if(tp==1){if(ObjectFind("clsel")==-1)      
       {ObjectCreate("clsel",2,0,Time[0]+Period()*360,clos,Time[0]+Period()*480,clos);
        ObjectSet("clsel",10,0); ObjectSet("clsel",6,Magenta); ObjectSet("clsel",8,3);}
   else{ObjectSet("clsel",1,clos); ObjectSet("clsel",3,clos);   
        ObjectSet("clsel",0,Time[0]+Period()*360); ObjectSet("clsel",2,Time[0]+Period()*480);}}
       }
 
Burger:

你能告诉我,为什么在策略测试器中,EA可以工作,但在模拟账户中,即使我设置了一个小的时间框架,EA也只是笑笑,没有开仓?

测试版.0

外部双数Minimal_lot = 1;//值:1;0.10;0.01

外来的双倍价格_项目=10。

外来的双倍利润=20.Percent_profit。

外来的双数Percent_risk = 20;

外部数据时间time1 = D'24.11.2014 19:00'。

外部的双倍价格1 = 1.3450。

外部数据时间time2 = D'24.11.2014 19:00'。

外部双倍价格2 = 1.3560。

外部数据时间 time_close = D'24.11.2014 19:00:00';//时间的格式 dd.mm.gg hh:mm:ss

外来的int AF = 100。

int init()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//|专家启动功能|

//+------------------------------------------------------------------+

int start()

{

双TP,SL,BBU,BBD,dLTU,dLTD,N。

string comment = NULL。

string LTU,Ltd;

int票。

int DSL = ((Percent_Risk/100)*AccountBalance())。

int DTP = ((Percent_Profit/100)*AccountBalance())。

int Times = (Time_close/3600)-(TimeLocal())/3600。

BBU = iBands(NULL,0,20,2,0,PRICE_CLOSE,MODE_UPPER,0)。

BBD = iBands(NULL,0,20,2,0,PRICE_CLOSE,MODE_LOWER,0)。

N = ((AccountBalance()*(Percent_Risk/100))/(Point_price*AF))*Minimum_lot。

TP = (DSL+((Percent_Risk/100)*Times)/(Point_price*AF*(Percent_profit/100)))/Point_price。

SL = (DTP-((Percent_risk/100)*Times)/(Price_item*AF*(Percent_profit/100)) )/Price_item。

如果(price1<price2)

{

LTU = ObjectCreate("Trend Up",OBJ_TREND,0,time1,price1,time2);

dLTU = StrToDouble(LTU)。

}

如果(price1>price2)

{

LTD = ObjectCreate("TrendBack",OBJ_TREND,0,time1,price1,time2,price2)。

dLTU = StrToDouble(LTD);

}

//----

如果(BBU<dLTU)

{

ticket=OrderSend(Symbol(),OP_SELL,N,Bid,3,Bid+SL*Point,Ask-TP*Point,评论,365,绿色)。

}

If(Closing time==true)

{

OrderClose(OrderTicket(),OrderLots(),Ask,10)。

}

如果(BBD>dLTD)

{

ticket=OrderSend(Symbol(),OP_BUY,N,Ask,3,Bid-SL*Point,Ask+TP*Point,评论,367,绿色)。

}

If(Closing time==true)

{

OrderClose(OrderTicket(),OrderLots(),Bid,10)。

}

return(0);


你有2014年