int magic = 428;//EA的magic number extern double volume = 0.1;//下单量 extern int slippage = 3;//slippage int OPB;//下的买单标签 int OPS;//下的卖单标签 int Profit=1;//开单的利润水平 string comB = "Entry by trend to Buy"; //request for order string comS = "Entry by trend to Sell"; //request for order double StochasticCAD。// double StochasticAUD;//澳元当前条形上的随机主线的位置
int magic = 428;//магический номер экспертаexterndouble volume = 0.1;//объем выставляемого ордераexternint slippage = 3;//проскальзываниеint OPB;//метка выставляемого ордера на покупкуint OPS;//метка выставляемого ордера на продажуint Profit=1;//уровень профита открытых ордеровstring comB = "Вход по тренду на Buy";//комментарий ордераstring comS = "Вход по тренду на Sell";//комментарий ордераdouble StochasticCAD;//положение основной линии Стохастики на текущем баре по USDCADdouble StochasticAUD;//положение основной линии Стохастики на текущем баре по AUDUSDdouble SARCAD;//текущее положение индикатора по USDCADdouble SARСCAD;//положение индикатора бар назад по USDCADdouble SARAUD;//текущее положение индикатора по AUDUSDdouble SARСAUD;//положение индикатора бар назад по AUDUSDdouble bidCAD;
double askCAD;
double bidAUD;
double askAUD;
int start()
{
//______________________________определение значений переменных_______________________
StochasticCAD = iStochastic("USDCAD",30,5,3,3,1,1,0,0);
StochasticAUD = iStochastic("AUDUSD",30,5,3,3,1,1,1,0);
SARCAD=iSAR("USDCAD",30,0.02,0.2,0);
SARСCAD=iSAR("USDCAD",30,0.02,0.2,1);
SARAUD=iSAR("AUDUSD",30,0.02,0.2,0);
SARСAUD=iSAR("AUDUSD",30,0.02,0.2,1);
bidCAD =MarketInfo("USDCAD",MODE_BID);
askCAD =MarketInfo("USDCAD",MODE_ASK);
bidAUD =MarketInfo("AUDUSD",MODE_BID);
askAUD =MarketInfo("AUDUSD",MODE_ASK);
//______________________________поиск и закрытие ордеров_______________________________________ int i;
for(i=0; i<=OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)
break;// если ордер номер i не существует, прекращаем переборif (OrderSymbol() != "GBPUSD" || OrderMagicNumber() != magic) // если ордер не с этой пары, на которой стоит наш экспертcontinue; // пропускаем его и смотрим на следующий за ним ордер//_______закрытие Buy_______ if (OrderType() == OP_BUY && OrderProfit()>=Profit)
// если ордер бай
{
OPB=1;
if(StochasticCAD==0 || StochasticAUD==100 || SARCAD<bidCAD || SARAUD>askAUD)//и рынок близок к развороту
{
OrderClose(OrderTicket(),OrderLots(),Bid,slippage,Wheat); // закроем его, если он в профите
OPB=0;
}
}
else
{
//_______закрытие Sell_______ if(OrderType() == OP_SELL && OrderProfit()>=Profit)// если ордер селл
{OPS=1;
if(StochasticCAD==100 || StochasticAUD==0 || SARCAD>askCAD || SARAUD<bidAUD)//и рынок близок к развороту
{
OrderClose(OrderTicket(),OrderLots(),Ask,slippage,PaleTurquoise); // закроем его, если он в профите
OPS=0;
}
}
}
}
//______________выставление ордеров______________________________________________________________________if (SARCAD>askCAD && SARСCAD<bidCAD && SARAUD<bidAUD && SARСAUD>askAUD && OPB<1)//определим условия
{ //_______Buy_______ if(!IsTradeAllowed())
{
Alert("занят торговый поток, повторим попытку бай...");
return(-1);
}
OPB =OrderSend("GBPUSD",OP_BUY,volume,Ask,slippage,0,0,comB,magic,0,Red); //выставим ордерif(OPB == -1)
{
Alert("GBPUSD"," ошибка: бай", GetLastError());
return(-1);
}
if(OPB > 1)
Alert ("GBPUSD","Выставили ордер на покупку!");
}
else
{//_______Sell_______if (SARСCAD>askCAD && SARCAD<bidCAD && SARСAUD<bidAUD && SARAUD>askAUD && OPS<1)//определим условия
{
if(!IsTradeAllowed())
{
Alert("занят торговый поток, повторим попытку селл...");
return(-1);
}
OPS=OrderSend("GBPUSD",OP_SELL,volume,Bid,slippage,0,0,comS,magic,0,Blue); //выставим ордерif(OPS == -1)
{
Alert("GBPUSD"," ошибка: селл", GetLastError());
return(-1);
}
if(OPS > 1)
Alert ("GBPUSD","Выставили ордер на продажу!");
}
}
return(0);//выход
}
为什么测试仪的速度在第三年年底会下降?
有这样一个问题--我也有这样的问题,如果专家顾问每年做很多交易--可能为了显示最终结果而存储了很多数据,或者指标缓冲区 会吃掉内存。
作为一个整体的锯子--我不知道,请容忍我--为了大局,测试10年,最好是一次优化一年,然后进行最佳参数的选择。
我想分析不同的交叉盘,然后在另一个货币对上下单。
int magic = 428;//专家顾问的魔法号码。
外部双倍体积 = 0.1;//正在下的订单的体积。
外来的int slippage = 3;//slippage
int OPB;//买入订单的标记
int OPS;//卖出订单的标记
int Profit=1;//开仓单利润水平
string comB = "买入时进入趋势;//对订单的评论
string comS = "按趋势进入卖出";//订单注释
double StochasticCAD;//USDCAD当前条形图上的主要随机线的位置
double StochasticAUD;//澳元兑美元的随机指数线在当前柱子上的位置。
double SARCAD;//当前指标在USDCAD上的位置
双重SARCAD;//指标条的位置回到USDCAD上
双重SARAUD;//指标在AUDUSD上的当前位置
双重SARСAUD;//在澳元兑美元上的指标条回的位置
int start()
{
//______________________________определение значений переменных_______________________
StochasticCAD = iStochastic("USDCAD",30,5,3,3,1,1,0,0)。
StochasticAUD = iStochastic("AUDUSD",30,5,3,3,1,1,1,0)。
SARCAD=iSAR("USDCAD",30,0.02,0.2,0);
SARСCAD=iSAR("USDCAD",30,0.02,0.2,1);
SARAUD=iSAR("AUDUSD",30,0.02,0.2,0);
SARСAUD=iSAR("AUDUSD",30,0.02,0.2,1);
double bidCAD =MarketInfo("USDCAD",MODE_BID);
double askCAD =MarketInfo("USDCAD",MODE_ASK);
double bidAUD =MarketInfo("AUDUSD",MODE_BID)。
double askAUD =MarketInfo("AUDUSD",MODE_ASK);
//______________________________поиск и закрытие ордеров_______________________________________
int i;
for(i=0; i<=OrdersTotal(); i++)
{
如果(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)
break;//如果订单号i不存在,停止搜索。
如果(OrderSymbol() != "GBPUSD" || OrderMagicNumber() != magic)//如果订单不是来自我们EA所在的货币对
continue; // 跳过这个订单,看它后面的下一个订单。
//_______close 购买_______
如果(OrderType() == OP_BUY && OrderProfit()>=Profit)
// 如果订单是买入
{
OPB=1。
如果(StochasticCAD==0 ||StochasticAUD==100 ||SARCAD<bidCAD ||SARAUD>askAUD)//和市场即将逆转。
{
OrderClose(OrderTicket(),OrderLots(),Bid,slippage,Wheat); // 如果处于盈利状态就关闭它。
OPB=0。
}
}
否则
{
//_______close Sell_______
如果(OrderType() == OP_SELL && OrderProfit()>=Profit)//如果订单为卖出
{OPS=1;
如果(StochasticCAD==100|StochasticAUD==0|SARCAD>askCAD|SARAUD<bidAUD)//和市场接近反转。
{
OrderClose(OrderTicket(),OrderLots(),Ask,slippage,PaleTurquoise); //如果处于盈利状态就关闭它。
OPS=0。
}
}
}
}
//______________выставление ордеров______________________________________________________________________
如果(SARCAD>askCAD && SARCAD<bidCAD && SARAUD<bidAUD && SARCAUD>askAUD && OPB<1)//定义条件
{ //_______Buy_______
if(!IsTradeAllowed())
{
Alert("trade thread is busy, try again buy...")。
返回(-1)。
}
OPB =OrderSend("GBPUSD",OP_BUY,volume,Ask,slipage,0,0,comB,magic,0,Red); //设置一个订单
如果(OPB == -1)
{
Alert("GBPUSD", "Error: buy", GetLastError())。
返回(-1)。
}
如果(OPB > 1)
Alert("GBPUSD", "我们有一个买入订单!" )
}
否则
{//_______Sell_______
if(SARCAD>askCAD && SARCAD<bidCAD && SARCADAUD<bidAUD && SARAUD>askAUD && OPS<1)//定义条件
{
if(!IsTradeAllowed())
{
Alert("交易线程繁忙,再试一次卖出...")。
返回(-1)。
}
OPS=OrderSend("GBPUSD",OP_SELL,volume,Bid,slipage,0,0,comS,magic,0,Blue); //设置一个订单
如果(OPS == -1)
{
Alert("GBPUSD", "Error: Sell", GetLastError())。
返回(-1)。
}
如果(OPS > 1)
Alert("GBPUSD", "Put Sell order!" )
}
}
return(0);//exit
}
当我测试时,没有任何东西出来。没有结果。
在日志中,有一组错误。
你能告诉我什么是错的吗?
我想分析不同的交叉盘,然后在另一对上下单。
int magic = 428;//EA的magic number
extern double volume = 0.1;//下单量
extern int slippage = 3;//slippage
int OPB;//下的买单标签
int OPS;//下的卖单标签
int Profit=1;//开单的利润水平
string comB = "Entry by trend to Buy"; //request for order
string comS = "Entry by trend to Sell"; //request for order
double StochasticCAD。//
double StochasticAUD;//澳元当前条形上的随机主线的位置
double SARCAD;//指标在USDCA上的当前位置
double SARCAD;//指标条形在USDCA上的位置
double SARAUD;//指标在AUDUSD上的当前位置
double SARAUD;//指标在AUDUSD上的位置
int start()
{
//______________________________ 确定变量值_______________________ StochasticCAD = iStochastic("USDCAD",30,5,3,3,1,1,0,0); StochasticAUD = iStochastic("AUDUSD",30,5,3,3,1,1,0); SARCAD=iSAR("USDCAD",30,002,0.2,0); SARCAD=iSAR("USDCAD",30,0.02,0.2,1); SARAUD=iSAR("AUDUSD",30,0.02,0.2,0); SARSAUD=iSAR("AUDUSD",30,0。02,0.2,1); double bidCAD =MarketInfo("USDCAD",MODE_BID); double askCAD =MarketInfo("USDCAD",MODE_ASK); double bidAUD =MarketInfo("AUDUSD",MODE_BID); double askAUD =MarketInfo("AUDUSD",MODE_ASK); //______________________________ 搜索和关闭订单_______________________________________ int i; for(i=0; i<=OrdersTotal(); i++){ if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;//如果订单号码i不存在,停止搜索 if (OrderSymbol() !="GBPUSD" || OrderMagicNumber() != magic) // 如果订单不是来自我们的专家顾问所在的货币对 continue; // 跳过它,看看它后面的订单 //_______close Buy_______ if (OrderType() == OP_BUY && OrderProfit()>.=利润) //如果订单是买入 { OPB=1; if(StochasticCAD==0 || StochasticAUD==100 || SARCAD<bidCAD || SARAUD>askAUD)//且市场接近反转 { OrderClose(OrderTicket(),OrderLots(),Bid,slippage,Wheat); //如果是买入就关闭 OPB=0; }} else { //_______close Sell_______ if(OrderType() == OP_SELL && OrderProfit()>=Profit)//如果订单是Sell {OPS=1; if(StochasticCAD==100 || StochasticAUD==0 || SARCAD>.askCAD || SARAUD<bidAUD)//并且市场接近反转 { OrderClose(OrderTicket(),OrderLots(),Ask,slippage,PaleTurquoise); //如果盈利就关闭它 OPS=0; }} } } //______________ 下单 ______________________________________________________________________ if (SARCAD>askCAD && SARCAD<bidCAD && SARAUD<bidAUD && SARAUD>askAUD && OPB<1)//定义条件 { //_______Buy if(!IsTradeAllowed()){ Alert("the trade thread is busy, try again buy..."); return(-1); }OPB =OrderSend("GBPUSD",OP_BUY,volume,Ask,slipage,0,0,comB,magic,0,Red); //set order if(OPB == -1) { Alert("GBPUSD"," error: buy", GetLastError(); return(-1); }if(OPB > 1) Alert ("GBPUSD", "Put Buy Order!"); }else {//_______Sell_______ if(SARCAD>askCAD && SARCAD<bidCAD && SARCAD<bidAUD && SARAUD>askAUD && OPS<1)/define conditions { if(!IsTradeAllowed()){ Alert("the trade thread is busy, try again to sell..."); return(-1); }OPS=OrderSend("GBPUSD",OP_SELL,volume,Bid,slipage,0,0,comS,magic,0,Blue); //set order if(OPS == -1) { Alert("GBPUSD", "error: sell", GetLastError(); return(-1); }if(OPS > 1) Alert ("GBPUSD", "Put Sell order!"); }} return(0);//退出 }
测试时没有任何东西出来。它没有产生任何结果。
日志中出现了一组错误。
你能告诉我什么是错的吗?
首先,学习如何通过同时按 "Counterclick + Alt + M "在窗口中插入代码,这样在你的halimatry中人们就可以导航并给出建议。
也可以尝试双击日志中相应的错误信息--也许它将导致一些思考......
首先,学习如何通过同时按 "Conrle + Alt + M "键在窗口中插入代码,这样你就可以引导人们了解你的废话并提出建议。
此外,尝试双击日志中相应的错误信息--也许那会给你一些想法......
错误是在测试人员的日志中,而不是在编译器的日志中...(其实你可以在图片中看到,如果你先看,然后再评论...)。双击在那里没有任何作用......
对所有抽搐进行测试?历史上的问题
对所有抽搐进行测试?历史上的问题
也就是说,你需要为分析中涉及的所有货币对重新加载历史记录吗?
也就是说,你需要为分析中涉及的所有货币对重新加载历史记录?
也许。当然,如果经纪公司支持它的话。
但我们不应忘记,你可以在测试器中为当前的符号建仓,而对其他符号有一些限制
这是有可能的。当然,如果经纪公司支持它的话。
请记住,在测试器中,你可以在当前工具中开仓,而对其他工具有一些限制
什么是DC?那么对其他文书的限制是什么?
什么是经纪公司?那么对其他符号有什么限制呢?
DC - 交易台
在其他工具的测试器中,你只能 得到零条上的开盘价,其他工具的ticks没有被模拟,市场环境几乎是不可触及的。
其他工具的交易没有开放。
如果你需要正确进行多货币分析,最好使用MT5。有一个多币种测试器。