如何编码? - 页 182 1...175176177178179180181182183184185186187188189...347 新评论 Mladen Rakic 2009.05.31 13:52 #1811 ... 这不是代码中的错误 进入工具->历史中心,然后选择并下载你想测试的符号的1分钟数据(为了达到90%的准确度,你只需要1分钟的数据,不需要下载其他的)。 Badguy: 嗨,编码员我还在学习MQL代码的第一步。 当我在日志中看到以下信息时,是什么原因呢? Testgenerator: 不匹配的数据错误(在2009.05.06 19 15超过了体积限制)。 我必须在代码中寻找什么? 谢谢 Roger09 2009.05.31 14:40 #1812 abundance: 我的朋友和我正在开发一个EA。在某个阶段,它(EA)需要读取和检索某个时间的价格,比如,美国东部时间17:00...等等。有哪位前辈能告诉我们如何做到这一点,而不是向后计算价格柱?也许已经有一个函数是这样写的。恳请帮助。谢谢大家,愿上帝保佑! B rgds/丰富 iBarShift(.)可以帮助你找到图表上的条数,然后使用Close或Open。 [删除] 2009.05.31 15:02 #1813 Roger09: iBarShift(...)可以帮助你找到图表上的条数,然后使用Close或Open。 谢谢你,罗杰。这很有帮助。很抱歉没有说得更清楚。我们需要买入和卖出价格。我们怎样才能得到它们呢?如果这是个愚蠢的问题,请原谅 B rgds/abundance raffinoso 2009.05.31 15:34 #1814 数据错误 嗨,mladen 谢谢你的快速回复。 我认为这不是tickdata的问题,因为当我用另一个EA测试时,它运行良好。 我想这是自定义指标的问题。 我将在下文中建立。AllAverages_v2.3 double ALL_AVERAGES_0 = iCustom(NULL,ALL_AVERA_TF, "AllAverages_v2.3",ALL_AVERA_PERIOD,ALL_AVERA_SHIFT,ALL_AVERA_METHOD,ALL_AVERA_PRICE,0) 。 现在我有以下信息:在iCustom函数中索引缓冲区的数量 无效。 如何正确定义这个iCustom? 嗨,mladen,我找到了问题所在 我忘了一个参数。颜色 正确的定义是 double ALL_AVERAGES_0 = iCustom(NULL,ALL_AVERA_TF, "AllAverages_v2.3",ALL_AVERA_PERIOD,ALL_AVERA_SHIFT,ALL_AVERA_METHOD,ALL_AVERA_PRICE,ALL_AVERA_COLOR,0) 。 mladen: 这不是代码中的错误 进入工具->历史中心,然后选择并下载你想测试的符号的1分钟数据(你需要的90%的准确度是1分钟的数据,不需要下载其他的)。 附加的文件: allaverages_v2.3.mq4 19 kb Roger09 2009.05.31 15:46 #1815 abundance: 谢谢你,罗杰。这很有帮助。很抱歉没有说得更清楚。我们需要买入和卖出价格。我们怎样才能得到它们呢?如果这是个愚蠢的问题,请原谅 B rgds/abundance 图表上的所有价格都是买入价。Ask=Bid+MarketInfo(Symbol(),MODE_SPREAD)*Point。 Styex 2009.06.01 23:19 #1816 限制交易 所以我开始用那些模板生成的EA构建器编写一个基本的EA。我似乎已经掌握了EA模板的前提,但是我需要一种方法,使EA最大只能进入一个交易。现在,它一直在生成交易,并导致交易量的下降,这很荒谬。以下是交易批次的代码。 //检查位置 bool IsTrade = False; for (int i = 0; i < Total; i ++) { OrderSelect(i, SELECT_BY_POS, MODE_TRADES)。 如果(OrderType() <= OP_SELL && OrderSymbol() == Symbol() ) { IsTrade = True。 如果(OrderType() == OP_BUY){ //关闭 //+------------------------------------------------------------------+ //| 信号开始(退出买入)| //+------------------------------------------------------------------+ if (CloseBuy1_1 >= CloseBuy1_2) Order = SIGNAL_CLOSEBUY; //+------------------------------------------------------------------+ //| 信号结束(退出买入) | //+------------------------------------------------------------------+ 如果(Order == SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount))))){ OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen)。 if (SignalMail) SendMail("[信号提示]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Close Buy"); if (!EachTickMode) BarCount = Bars; IsTrade = False。 继续。 } //拖曳止损 if(UseTrailingStop && TrailingStop > 0) { if(Bid - OrderOpenPrice() > Point * TrailingStop) { 如果(OrderStopLoss() < Bid - Point * TrailingStop) { OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen) 。 if (!EachTickMode) BarCount = Bars; 继续。 } } } } else { //关闭 如果有人能提供帮助,我们将不胜感激。 问吧! 编码帮助......我如何让指标过滤而不是警报? How to code? wolfe 2009.06.02 02:29 #1817 Styex: 所以我开始用那些模板生成的EA构建器编写一个基本的EA。我似乎已经掌握了EA模板的前提,但是我需要一种方法来使EA最多只进入一个交易。如果有人能提供帮助,我将非常感激。 if (OrdersTotal() == 0) { //Check position bool IsTrade = False; for (int i = 0; i < Total; i ++) { OrderSelect(i, SELECT_BY_POS, MODE_TRADES); if(OrderType() <= OP_SELL && OrderSymbol() == Symbol()) { IsTrade = True; if(OrderType() == OP_BUY) { //Close //+------------------------------------------------------------------+ //| Signal Begin(Exit Buy) | //+------------------------------------------------------------------+ if (CloseBuy1_1 >= CloseBuy1_2) Order = SIGNAL_CLOSEBUY; //+------------------------------------------------------------------+ //| Signal End(Exit Buy) | //+------------------------------------------------------------------+ if (Order == SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) { OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen); if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Close Buy"); if (!EachTickMode) BarCount = Bars; IsTrade = False; continue; } //Trailing stop if(UseTrailingStop && TrailingStop > 0) { if(Bid - OrderOpenPrice() > Point * TrailingStop) { if(OrderStopLoss() < Bid - Point * TrailingStop) { OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen); if (!EachTickMode) BarCount = Bars; continue; } } } } else { //Close } How to code? 编码帮助......我如何让指标过滤而不是警报? 问吧! lumanauw 2009.06.03 03:48 #1818 谢谢OnTheRoad我发现了这个EA,我不太明白其中的一些内容。bool get_signal(){bool enable_trade = false;int trend_up = 0;int trend_down = 0;int i;ArrayInitialize( TradeSign, false )。if( Bars >= 100 ){for( i = 0 ; i < DEF_MA_NUM ; i++ ){Buf_MA[0][ i ] = calc_SMA( PERIOD_M30, MA_prm_1, i ) 。Buf_MA[1][ i ] = calc_SMA( PERIOD_M30, MA_prm_2, i ) 。Buf_MA[2][ i ] = calc_SMA( PERIOD_M30, MA_prm_3, i );Buf_MA[3][ i ] = calc_SMA( PERIOD_M30, MA_prm_4, i );Buf_MA[4][ i ] = calc_SMA( PERIOD_M30, MA_prm_5, i );}double vRSI = iRSI( Symbol(), PERIOD_M5, RSI_period5, PRICE_CLOSE, 0 ) 。double vRSI2 = iRSI( Symbol(), PERIOD_M1, RSI_period1, PRICE_CLOSE, 0 );for( i = 0 ; i < DEF_MA_TYP ; i++ ){if((Buf_MA[2] < Buf_MA[1]) && (Buf_MA[1] < Buf_MA[0])){trend_up++;}}如果((trend_up > 3) && (vRSI <= RSI_lower) && (vRSI2 <= RSI_lower)){TradeSign[SIG_Buy] = true;enable_trade = true;}for( i = 0 ; i < DEF_MA_TYP ; i++ ){if((Buf_MA[2] > Buf_MA[1]) && (Buf_MA[1] > Buf_MA[0])){trend_down++;}}如果((trend_down > 3) && (vRSI >= RSI_upper) && (vRSI2 >= RSI_upper)){TradeSign[SIG_Sell] = true;enable_trade = true;}}return(enable_trade);}double calc_SMA( int timeframe, int period, int offset ){double vMA = 0;double sum=0;int i;for( i = 0 ; i < period ; i++ ){sum +=iClose( Symbol(), timeframe, i + offset ) 。}vMA = sum / period;return(vMA);} 有一个部分 "trendup>3",这是从数组中计算出来的吗?数组是如何工作的,所以可以给出 "trendup>3"?这是为了了解单线的平均数(该线可能会上升或下降)吗?我不明白它是如何工作的。 附加的文件: prizmal_eurgbp_m5.mq4 5 kb How to code? Phone notification for canlde 编码帮助 OxiG 2009.06.04 13:08 #1819 如何在达到目标利润时重置专家? 我在使用马丁格尔策略,但它没有按顺序打开手数...... 例如:手数0.1, 0.2, 0.4, 0.8, 1.6 打开手数:0.1, 0.2, 0.4 -> 在手数0.4处获利,但接下来的手数是0.8, 0.1, 0.2, 0.4... 有谁能帮忙吗? int T=0; for(int i=0;i<OrdersTotal();i++) { OrderSelect(i,SELECT_BY_POS,MODE_TRADES); if(OrderSymbol()==Symbol() && OrderComment()==Name_ExpertS) { T++; if(OrderType()==OP_BUY) s=1; if(OrderType()==OP_SELL) s=2; Last=OrderOpenPrice(); }} if (Lots<0.1) Lots=0.1; for (int j=0;j<T;j++) { Lots=LotsUP[j]; } MQL4 Learning How to code? 被错误困扰的是没有交易业务 Meleah Bridgeford 2009.06.04 20:55 #1820 有标准的高/低点 我试图编写一个指标,在说明一个蜡烛是真正的高点或真正的低点之前寻找特定的东西。 基本上是这样的标准(我附上了一个图表来帮助解释)。 1. 寻找低于之前所有20个收盘价的收盘价(第二个箭头是这个点),然后(2)12个柱子之后的收盘价必须高于之前的12个收盘价(第三个箭头)。 这种上升趋势将持续到(3)出现低于之前7个收盘价的收盘价(第四个箭头)。 我一直在尝试使用iLowest函数,但没有太大成功。 我认为我最好的办法是使用一个数组,但我对数组的了解有限。 有没有关于如何使用ArrayMinimum 和ArrayMaximum的想法或例子? 或者是否有办法让iLowest和iHighest发挥作用? 附加的文件: usdchf20090604.gif 12 kb 1...175176177178179180181182183184185186187188189...347 新评论 原因: 取消 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
...
这不是代码中的错误
进入工具->历史中心,然后选择并下载你想测试的符号的1分钟数据(为了达到90%的准确度,你只需要1分钟的数据,不需要下载其他的)。
嗨,编码员
我还在学习MQL代码的第一步。
当我在日志中看到以下信息时,是什么原因呢?
Testgenerator:
不匹配的数据错误(在2009.05.06 19 15超过了体积限制)。
我必须在代码中寻找什么?
谢谢我的朋友和我正在开发一个EA。在某个阶段,它(EA)需要读取和检索某个时间的价格,比如,美国东部时间17:00...等等。
有哪位前辈能告诉我们如何做到这一点,而不是向后计算价格柱?也许已经有一个函数是这样写的。恳请帮助。谢谢大家,愿上帝保佑!
B rgds/丰富iBarShift(.)可以帮助你找到图表上的条数,然后使用Close或Open。
iBarShift(...)可以帮助你找到图表上的条数,然后使用Close或Open。
谢谢你,罗杰。这很有帮助。很抱歉没有说得更清楚。我们需要买入和卖出价格。我们怎样才能得到它们呢?如果这是个愚蠢的问题,请原谅
B rgds/abundance
数据错误
嗨,mladen
谢谢你的快速回复。
我认为这不是tickdata的问题,因为当我用另一个EA测试时,它运行良好。
我想这是自定义指标的问题。
我将在下文中建立。AllAverages_v2.3
double ALL_AVERAGES_0 = iCustom(NULL,ALL_AVERA_TF, "AllAverages_v2.3",ALL_AVERA_PERIOD,ALL_AVERA_SHIFT,ALL_AVERA_METHOD,ALL_AVERA_PRICE,0) 。
现在我有以下信息:在iCustom函数中索引缓冲区的数量 无效。
如何正确定义这个iCustom?
嗨,mladen,我找到了问题所在
我忘了一个参数。颜色
正确的定义是
double ALL_AVERAGES_0 = iCustom(NULL,ALL_AVERA_TF, "AllAverages_v2.3",ALL_AVERA_PERIOD,ALL_AVERA_SHIFT,ALL_AVERA_METHOD,ALL_AVERA_PRICE,ALL_AVERA_COLOR,0) 。
这不是代码中的错误 进入工具->历史中心,然后选择并下载你想测试的符号的1分钟数据(你需要的90%的准确度是1分钟的数据,不需要下载其他的)。
谢谢你,罗杰。这很有帮助。很抱歉没有说得更清楚。我们需要买入和卖出价格。我们怎样才能得到它们呢?如果这是个愚蠢的问题,请原谅 B rgds/abundance
图表上的所有价格都是买入价。Ask=Bid+MarketInfo(Symbol(),MODE_SPREAD)*Point。
限制交易
所以我开始用那些模板生成的EA构建器编写一个基本的EA。我似乎已经掌握了EA模板的前提,但是我需要一种方法,使EA最大只能进入一个交易。现在,它一直在生成交易,并导致交易量的下降,这很荒谬。以下是交易批次的代码。
//检查位置
bool IsTrade = False;
for (int i = 0; i < Total; i ++) {
OrderSelect(i, SELECT_BY_POS, MODE_TRADES)。
如果(OrderType() <= OP_SELL && OrderSymbol() == Symbol() ) {
IsTrade = True。
如果(OrderType() == OP_BUY){
//关闭
//+------------------------------------------------------------------+
//| 信号开始(退出买入)|
//+------------------------------------------------------------------+
if (CloseBuy1_1 >= CloseBuy1_2) Order = SIGNAL_CLOSEBUY;
//+------------------------------------------------------------------+
//| 信号结束(退出买入) |
//+------------------------------------------------------------------+
如果(Order == SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount))))){
OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen)。
if (SignalMail) SendMail("[信号提示]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Close Buy");
if (!EachTickMode) BarCount = Bars;
IsTrade = False。
继续。
}
//拖曳止损
if(UseTrailingStop && TrailingStop > 0) {
if(Bid - OrderOpenPrice() > Point * TrailingStop) {
如果(OrderStopLoss() < Bid - Point * TrailingStop) {
OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen) 。
if (!EachTickMode) BarCount = Bars;
继续。
}
}
}
} else {
//关闭
如果有人能提供帮助,我们将不胜感激。
所以我开始用那些模板生成的EA构建器编写一个基本的EA。我似乎已经掌握了EA模板的前提,但是我需要一种方法来使EA最多只进入一个交易。如果有人能提供帮助,我将非常感激。
{
//Check position
bool IsTrade = False;
for (int i = 0; i < Total; i ++) {
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(OrderType() <= OP_SELL && OrderSymbol() == Symbol()) {
IsTrade = True;
if(OrderType() == OP_BUY) {
//Close
//+------------------------------------------------------------------+
//| Signal Begin(Exit Buy) |
//+------------------------------------------------------------------+
if (CloseBuy1_1 >= CloseBuy1_2) Order = SIGNAL_CLOSEBUY;
//+------------------------------------------------------------------+
//| Signal End(Exit Buy) |
//+------------------------------------------------------------------+
if (Order == SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen);
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Close Buy");
if (!EachTickMode) BarCount = Bars;
IsTrade = False;
continue;
}
//Trailing stop
if(UseTrailingStop && TrailingStop > 0) {
if(Bid - OrderOpenPrice() > Point * TrailingStop) {
if(OrderStopLoss() < Bid - Point * TrailingStop) {
OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);
if (!EachTickMode) BarCount = Bars;
continue;
}
}
}
} else {
//Close
}谢谢OnTheRoad
我发现了这个EA,我不太明白其中的一些内容。
bool get_signal()
{
bool enable_trade = false;
int trend_up = 0;
int trend_down = 0;
int i;
ArrayInitialize( TradeSign, false )。
if( Bars >= 100 ){
for( i = 0 ; i < DEF_MA_NUM ; i++ ){
Buf_MA[0][ i ] = calc_SMA( PERIOD_M30, MA_prm_1, i ) 。
Buf_MA[1][ i ] = calc_SMA( PERIOD_M30, MA_prm_2, i ) 。
Buf_MA[2][ i ] = calc_SMA( PERIOD_M30, MA_prm_3, i );
Buf_MA[3][ i ] = calc_SMA( PERIOD_M30, MA_prm_4, i );
Buf_MA[4][ i ] = calc_SMA( PERIOD_M30, MA_prm_5, i );
}
double vRSI = iRSI( Symbol(), PERIOD_M5, RSI_period5, PRICE_CLOSE, 0 ) 。
double vRSI2 = iRSI( Symbol(), PERIOD_M1, RSI_period1, PRICE_CLOSE, 0 );
for( i = 0 ; i < DEF_MA_TYP ; i++ ){
if((Buf_MA[2] < Buf_MA[1]) && (Buf_MA[1] < Buf_MA[0])){
trend_up++;
}
}
如果((trend_up > 3) && (vRSI <= RSI_lower) && (vRSI2 <= RSI_lower)){
TradeSign[SIG_Buy] = true;
enable_trade = true;
}
for( i = 0 ; i < DEF_MA_TYP ; i++ ){
if((Buf_MA[2] > Buf_MA[1]) && (Buf_MA[1] > Buf_MA[0])){
trend_down++;
}
}
如果((trend_down > 3) && (vRSI >= RSI_upper) && (vRSI2 >= RSI_upper)){
TradeSign[SIG_Sell] = true;
enable_trade = true;
}
}
return(enable_trade);
}
double calc_SMA( int timeframe, int period, int offset )
{
double vMA = 0;
double sum=0;
int i;
for( i = 0 ; i < period ; i++ ){
sum +=iClose( Symbol(), timeframe, i + offset ) 。
}
vMA = sum / period;
return(vMA);
}
有一个部分 "trendup>3",这是从数组中计算出来的吗?数组是如何工作的,所以可以给出 "trendup>3"?这是为了了解单线的平均数(该线可能会上升或下降)吗?我不明白它是如何工作的。如何在达到目标利润时重置专家? 我在使用马丁格尔策略,但它没有按顺序打开手数......
例如:手数0.1, 0.2, 0.4, 0.8, 1.6
打开手数:0.1, 0.2, 0.4 -> 在手数0.4处获利,但接下来的手数是0.8, 0.1, 0.2, 0.4...
有谁能帮忙吗?
for(int i=0;i<OrdersTotal();i++) {
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol() && OrderComment()==Name_ExpertS)
{ T++;
if(OrderType()==OP_BUY) s=1;
if(OrderType()==OP_SELL) s=2;
Last=OrderOpenPrice();
}}
if (Lots<0.1) Lots=0.1;
for (int j=0;j<T;j++)
{
Lots=LotsUP[j];
}有标准的高/低点
我试图编写一个指标,在说明一个蜡烛是真正的高点或真正的低点之前寻找特定的东西。 基本上是这样的标准(我附上了一个图表来帮助解释)。
1. 寻找低于之前所有20个收盘价的收盘价(第二个箭头是这个点),然后(2)12个柱子之后的收盘价必须高于之前的12个收盘价(第三个箭头)。 这种上升趋势将持续到(3)出现低于之前7个收盘价的收盘价(第四个箭头)。
我一直在尝试使用iLowest函数,但没有太大成功。 我认为我最好的办法是使用一个数组,但我对数组的了解有限。
有没有关于如何使用ArrayMinimum 和ArrayMaximum的想法或例子? 或者是否有办法让iLowest和iHighest发挥作用?