问吧! - 页 88 1...818283848586878889909192939495...182 新评论 Juan 2007.11.30 20:07 #871 [删除] 2007.11.30 22:06 #872 谢谢Ralph,我试过了,但它又给出了另一个错误列表--说包含文件中的所有变量都没有被定义--但它们是被定义的。 我将在周末再试一次,目前这让我有点沮丧。 @faqcya - 我怀疑你把它放在一个脚本里是对的,但我不知道如何处理调用它,除非我有一个shell EA来把它放进去。 也许我会看一下模板,看看我是否可以从中调用它,或者更好的是把它变成一个EA,我只想让它保持原样,不做其他事情。 谢谢你的帮助。 凯文 ralph.ronnquist:@pgtips:把第二行改成只有#define MAGIC 20051120,即没有等号和逗号。 Putz 2007.12.09 20:51 #873 试图学习编程 首先,我读了Corder's Guru的整个课程,发现它非常有趣。我得出的结论是,尝试一种策略的唯一合理方式是通过编写程序来确保其完全准确。不幸的是,谈到这个问题,我完全是个菜鸟。 我一直在尝试写一个基本的程序,但甚至不能让它发挥作用。至少我没有再出现任何错误,但它不接受任何订单。我很执着,会继续尝试,但希望看到我的错误的人能够提供一些帮助。 在这一点上,我所要做的是跟踪最低价格(CurrentLow),然后当它回调到一定数量(Ret1)时,下一个卖单,TP为低点。 请不要笑,但以下是我到目前为止所写的内容。 //---- 输入参数 extern double TP1=75.0; extern double Ret1=75.0; extern double SL1=150.0; extern double Lots=0.1; //+------------------------------------------------------------------+ //|专家初始化函数 | //+------------------------------------------------------------------+ int init() { //---- //---- return(0); } //+------------------------------------------------------------------+ //|专家的去初始化功能| //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //|专家启动功能| //+------------------------------------------------------------------+ int start() { int ticket=0。 如果(Bars<100) { Print("条数小于100")。 return(0); } 双倍CurrentLow,CurrentHigh。 如果(Bid < CurrentLow) { CurrentLow = Bid; 如果(Bid > CurrentHigh) { CurrentHigh = Bid; 如果(CurrentHigh >= CurrentLow+(Point*Ret1)) { ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+(SL1*Point),Bid-(TP1*Point), "Albatross_v1",7575,0,Green); 返回(0)。 } 返回(0)。 } return(0); } } Ask! 编码帮助 如何编码? Michel 2007.12.09 21:51 #874 Putz: 首先,我阅读了Corder's Guru的整个课程,发现它非常有趣。我得出的结论是,尝试一个策略的唯一合理方式是编写一个程序,以确保其完全准确。不幸的是,在这方面我完全是个新手。 我一直在尝试写一个基本程序,但甚至不能让它工作。至少我没有再出现任何错误,但它不接受任何订单。我很执着,会继续尝试,但希望看到我的错误的人能够提供一些帮助。 在这一点上,我所要做的是跟踪最低价格(CurrentLow),然后当它回调到一定数量(Ret1)时,下一个卖单,TP为低点。 请不要笑,但以下是我到目前为止所写的内容。 //---- 输入参数 extern double TP1=75.0; extern double Ret1=75.0; extern double SL1=150.0; extern double Lots=0.1; //+------------------------------------------------------------------+ //|专家初始化函数 | //+------------------------------------------------------------------+ int init() { //---- //---- return(0); } //+------------------------------------------------------------------+ //|专家的去初始化功能| //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //|专家启动功能| //+------------------------------------------------------------------+ int start() { int ticket=0。 如果(Bars<100) { Print("条数小于100")。 return(0); } 双倍CurrentLow,CurrentHigh。 如果(Bid < CurrentLow) { CurrentLow = Bid; 如果(Bid > CurrentHigh) { CurrentHigh = Bid; 如果(CurrentHigh >= CurrentLow+(Point*Ret1)) { ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+(SL1*Point),Bid-(TP1*Point), "Albatross_v1",7575,0,Green)。 返回(0)。 } 返回(0)。 } return(0); } } 在Bid<CurrentLow的真实条件下检查Bid>CurrentHigh似乎是错误的;我认为你应该有这样的独立测试。 double CurrentLow,CurrentHigh; int start() { if(Bid < CurrentLow) CurrentLow = Bid; if(Bid > CurrentHigh) CurrentHigh = Bid; if(Bid >= CurrentLow+(Point*Ret1)) OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+(SL1*Point),Bid-(TP1*Point),"Albatross_v1",757575,0,Green); return(0); } 现在,有三点意见。 - 你必须在全局范围内声明CurrentHigh和CurrentLow,即在任何函数 之外(start()是一个函数),否则这些变量将在函数的每次调用中被初始化为0。 - 你不需要CurrentHigh,因为它不被使用。 - 你必须实现一些逻辑来重置/更新CurrentLow的值,并可能限制在CurrentLow+(Point*Ret1)以上的每个tick的开仓。) Ask! Can anybody help me 新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 Putz 2007.12.09 22:54 #875 嗨,米歇尔。 非常感谢你的及时回复和帮助。 我已经删除了CurrentHigh,现在明白了很多。我还在程序的顶部定义了CurrentLow,现在它确实下了订单。 我还添加了基于更大回撤的第二个订单,这似乎是有效的。现在我必须弄清楚如何阻止它在每一个刻度 上创建一个新的订单,但现在我将自己解决这个问题,因为我将以这种方式更好地学习它。 我肯定会带着更多问题回到这里。 再次感谢。 普茨 Michel 2007.12.09 23:33 #876 Putz: 嗨,米歇尔。非常感谢你的及时回复和帮助。 我已经删除了CurrentHigh,现在明白了很多。我还在程序的顶部定义了CurrentLow,现在它确实下了订单。 我还添加了基于更大回撤的第二笔订单,这似乎是有效的。现在我必须弄清楚如何阻止它在每一个刻度上创建一个新的订单,但现在我将自己解决这个问题,因为我将以这种方式更好地学习它。 我肯定会带着更多问题回到这里。 再次感谢。 普茨 不要忘了用一个大的值来初始化CurrentLow(如1000);如果它的初始化值为0,你将永远不会出现Bid < 0的情况。 Hong Hwa Lim 2007.12.10 04:43 #877 我应该学习哪种编程语言? codersguru: 嗨,朋友们。我收到很多私人信息,要求我帮助处理一些代码。 在这里,您可以发布与MQL4有关的问题,我将尽力回答。 亲爱的编码大师。 如果我想学习编写MQL4代码,我应该学习哪种编程语言?Visual basic还是C++?谢谢您的回答。 Putz 2007.12.11 03:21 #878 请提供更多帮助 你好。 我回来寻求更多帮助。我一直在阅读和查看许多其他的EA,试图弄清楚它,但我仍然无法让它正常工作。 我想做的是下两个订单。 1)一旦价格回调到Ret1(75点),卖出0.1手,TP1(75)和SL1(150)。 2) 一旦价格回撤到Ret2(150点),卖出0.2手,TP1(75)和SL1(75)。 从长期来看,我想根据趋势的方向,得到一个像上面那样的买入订单。我还没有确定我将使用哪个指标来确定趋势,但我将在某个时候到达那里。 以下是我目前的情况。它似乎能正确下第一笔订单,但第二笔订单从未被触发。如果有任何帮助,我将非常感激。 exern string Expert_Name = "Albatross v1"; 外部int MagicNumber = 757575; extern int Slippage = 3.0; //---- 输入参数 extern double TP1=75.0; 外置双倍TP2=75.0。 外置双倍Ret1=75.0。 外置双倍Ret2=150.0。 外置双倍数SL1=150.0。 外置双倍SL2=75.0。 外置双倍数Lots=0.1。 double CurrentLow=1000; //double CurrentHigh=0; int OpenOrders=0,cnt=0; //+------------------------------------------------------------------+ //|自定义指标 初始化函数 //+------------------------------------------------------------------+ //int init() // { //---- 指标 //---- // return(0); // } //+------------------------------------------------------------------+ //|自定义指标去初始化功能| //+------------------------------------------------------------------+ // int deinit() // { //---- TODO:在这里添加你的代码 //---- // return(0)。 //+------------------------------------------------------------------+ //| 自定义指标迭代函数| //+------------------------------------------------------------------+ // int start() // { //---- TODO:在这里添加你的代码 //---- // return(0)。 // } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //|专家初始化函数 | //+------------------------------------------------------------------+ int init() { //---- //---- return(0); } //+------------------------------------------------------------------+ //|专家的去初始化功能| //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| 检查打开位置控制 //+------------------------------------------------------------------+ int CheckOpenTrades() { int cnt; int NumTrades; // 这个符号的买入和卖出交易的数量 NumTrades = 0。 for(cnt=OrdersTotal()-1;cnt>=0;cnt--) { OrderSelect (cnt, SELECT_BY_POS, MODE_TRADES); if ( OrderSymbol() != Symbol() ) 继续。 if ( OrderMagicNumber() != MagicNumber) 继续。 如果(OrderType() == OP_BUY ) NumTrades++; 如果(OrderType() == OP_SELL ) NumTrades++; } 返回(NumTrades)。 } //+------------------------------------------------------------------+ //|专家启动功能| //+------------------------------------------------------------------+ int start() { int cnt, ticket, total; 双重TP。 如果(Bars<100) { Print("小于100的条数")。 return(0); } total = CheckOpenTrades(); if(total < 1) { 如果(Bid < CurrentLow) CurrentLow = Bid; 如果(Bid >= CurrentLow+(Point*Ret1)) OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+(SL1*Point),Bid-(TP1*Point), "Albatross_v1",MagicNumber,0,Green) 。 } if(total < 2) { if(Bid >= CurrentLow+(Point*Ret2)) OrderSend(Symbol(),OP_SELL,Lots*2,Bid+(Point*Ret2),3,Bid+(SL2*Point),Bid-(TP2*Point), "Albatross_v1",MagicNumber,0,Green)。 返回(0)。 } } //+------------------------------------------------------------------+ Ask! 如何编码? 原始想法 Dave137 2007.12.13 03:37 #879 很抱歉用这个问题来打扰你 你如何创建一个充满颜色的对象? 戴夫 <<< syedks 2007.12.13 09:07 #880 大家好,我是一个程序员,已经用C++语言编写了很长时间的代码,但我对FX和MQL4的了解是非常基本的。我正在阅读某人写的EA,并试图理解代码...... 你能不能用简单的英语解释一下,什么是iMA方法中的SHIFT参数? double iMA(string symbol,int timeframe,int period,int ma_shift,int ma_method,int applied_price, int shift) 根据MT4的帮助,它是 "从指标缓冲区 获取的数值的索引(相对于当前条形图,在给定的时间段之前移动)"。- 什么是指标缓冲区? 他还在做以下工作...... int RealTime = 0; if( UseCompletedBars ) { if(timeprev==Time[0]){return(0);} timeprev = Time[0]; RealTime = 1; } double MA11 = iMA(NULL,0,MA1Periods,0,MA1MethodSelected, MA1ArraySelected,0+RealTime); double MA12 = iMA(NULL,0,MA1Periods,0,MA1MethodSelected, MA1ArraySelected,1+RealTime); double MA21 = iMA(NULL,0,MA2Periods,0,MA2MethodSelected, MA2ArraySelected,0+RealTime); double MA22 = iMA(NULL,0,MA2Periods,0,MA2MethodSelected, MA2ArraySelected,1+RealTime); if( MA11 > MA21 && MA12 < MA22 ) { EnterLong = True; } if( MA11 MA22 ) { EnterShort = True; } 因为我不知道移位,我想这就是为什么我不能得到它...... 你的答案将得到高度评价。 请帮助。 Ask! Please check my first Aggressive scalp ea 1...818283848586878889909192939495...182 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
谢谢Ralph,我试过了,但它又给出了另一个错误列表--说包含文件中的所有变量都没有被定义--但它们是被定义的。
我将在周末再试一次,目前这让我有点沮丧。
@faqcya - 我怀疑你把它放在一个脚本里是对的,但我不知道如何处理调用它,除非我有一个shell EA来把它放进去。
也许我会看一下模板,看看我是否可以从中调用它,或者更好的是把它变成一个EA,我只想让它保持原样,不做其他事情。
谢谢你的帮助。
凯文
@pgtips:把第二行改成只有
试图学习编程
首先,我读了Corder's Guru的整个课程,发现它非常有趣。我得出的结论是,尝试一种策略的唯一合理方式是通过编写程序来确保其完全准确。不幸的是,谈到这个问题,我完全是个菜鸟。
我一直在尝试写一个基本的程序,但甚至不能让它发挥作用。至少我没有再出现任何错误,但它不接受任何订单。我很执着,会继续尝试,但希望看到我的错误的人能够提供一些帮助。
在这一点上,我所要做的是跟踪最低价格(CurrentLow),然后当它回调到一定数量(Ret1)时,下一个卖单,TP为低点。
请不要笑,但以下是我到目前为止所写的内容。
//---- 输入参数
extern double TP1=75.0;
extern double Ret1=75.0;
extern double SL1=150.0;
extern double Lots=0.1;
//+------------------------------------------------------------------+
//|专家初始化函数 |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//|专家的去初始化功能|
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//|专家启动功能|
//+------------------------------------------------------------------+
int start()
{
int ticket=0。
如果(Bars<100)
{
Print("条数小于100")。
return(0);
}
双倍CurrentLow,CurrentHigh。
如果(Bid < CurrentLow)
{
CurrentLow = Bid;
如果(Bid > CurrentHigh)
{
CurrentHigh = Bid;
如果(CurrentHigh >= CurrentLow+(Point*Ret1))
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+(SL1*Point),Bid-(TP1*Point), "Albatross_v1",7575,0,Green);
返回(0)。
}
返回(0)。
}
return(0);
}
}
首先,我阅读了Corder's Guru的整个课程,发现它非常有趣。我得出的结论是,尝试一个策略的唯一合理方式是编写一个程序,以确保其完全准确。不幸的是,在这方面我完全是个新手。
我一直在尝试写一个基本程序,但甚至不能让它工作。至少我没有再出现任何错误,但它不接受任何订单。我很执着,会继续尝试,但希望看到我的错误的人能够提供一些帮助。
在这一点上,我所要做的是跟踪最低价格(CurrentLow),然后当它回调到一定数量(Ret1)时,下一个卖单,TP为低点。
请不要笑,但以下是我到目前为止所写的内容。
//---- 输入参数
extern double TP1=75.0;
extern double Ret1=75.0;
extern double SL1=150.0;
extern double Lots=0.1;
//+------------------------------------------------------------------+
//|专家初始化函数 |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//|专家的去初始化功能|
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//|专家启动功能|
//+------------------------------------------------------------------+
int start()
{
int ticket=0。
如果(Bars<100)
{
Print("条数小于100")。
return(0);
}
双倍CurrentLow,CurrentHigh。
如果(Bid < CurrentLow)
{
CurrentLow = Bid;
如果(Bid > CurrentHigh)
{
CurrentHigh = Bid;
如果(CurrentHigh >= CurrentLow+(Point*Ret1))
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+(SL1*Point),Bid-(TP1*Point), "Albatross_v1",7575,0,Green)。
返回(0)。
}
返回(0)。
}
return(0);
}
}在Bid<CurrentLow的真实条件下检查Bid>CurrentHigh似乎是错误的;我认为你应该有这样的独立测试。
double CurrentLow,CurrentHigh;
int start()
{
if(Bid < CurrentLow) CurrentLow = Bid;
if(Bid > CurrentHigh) CurrentHigh = Bid;
if(Bid >= CurrentLow+(Point*Ret1))
OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+(SL1*Point),Bid-(TP1*Point),"Albatross_v1",757575,0,Green);
return(0);
}现在,有三点意见。
- 你必须在全局范围内声明CurrentHigh和CurrentLow,即在任何函数 之外(start()是一个函数),否则这些变量将在函数的每次调用中被初始化为0。
- 你不需要CurrentHigh,因为它不被使用。
- 你必须实现一些逻辑来重置/更新CurrentLow的值,并可能限制在CurrentLow+(Point*Ret1)以上的每个tick的开仓。)
嗨,米歇尔。
非常感谢你的及时回复和帮助。
我已经删除了CurrentHigh,现在明白了很多。我还在程序的顶部定义了CurrentLow,现在它确实下了订单。
我还添加了基于更大回撤的第二个订单,这似乎是有效的。现在我必须弄清楚如何阻止它在每一个刻度 上创建一个新的订单,但现在我将自己解决这个问题,因为我将以这种方式更好地学习它。
我肯定会带着更多问题回到这里。
再次感谢。
普茨
嗨,米歇尔。
非常感谢你的及时回复和帮助。
我已经删除了CurrentHigh,现在明白了很多。我还在程序的顶部定义了CurrentLow,现在它确实下了订单。
我还添加了基于更大回撤的第二笔订单,这似乎是有效的。现在我必须弄清楚如何阻止它在每一个刻度上创建一个新的订单,但现在我将自己解决这个问题,因为我将以这种方式更好地学习它。
我肯定会带着更多问题回到这里。
再次感谢。
普茨不要忘了用一个大的值来初始化CurrentLow(如1000);如果它的初始化值为0,你将永远不会出现Bid < 0的情况。
我应该学习哪种编程语言?
嗨,朋友们。
我收到很多私人信息,要求我帮助处理一些代码。
在这里,您可以发布与MQL4有关的问题,我将尽力回答。亲爱的编码大师。
如果我想学习编写MQL4代码,我应该学习哪种编程语言?Visual basic还是C++?谢谢您的回答。
请提供更多帮助
你好。
我回来寻求更多帮助。我一直在阅读和查看许多其他的EA,试图弄清楚它,但我仍然无法让它正常工作。
我想做的是下两个订单。
1)一旦价格回调到Ret1(75点),卖出0.1手,TP1(75)和SL1(150)。
2) 一旦价格回撤到Ret2(150点),卖出0.2手,TP1(75)和SL1(75)。
从长期来看,我想根据趋势的方向,得到一个像上面那样的买入订单。我还没有确定我将使用哪个指标来确定趋势,但我将在某个时候到达那里。
以下是我目前的情况。它似乎能正确下第一笔订单,但第二笔订单从未被触发。如果有任何帮助,我将非常感激。
exern string Expert_Name = "Albatross v1";
外部int MagicNumber = 757575;
extern int Slippage = 3.0;
//---- 输入参数
extern double TP1=75.0;
外置双倍TP2=75.0。
外置双倍Ret1=75.0。
外置双倍Ret2=150.0。
外置双倍数SL1=150.0。
外置双倍SL2=75.0。
外置双倍数Lots=0.1。
double CurrentLow=1000;
//double CurrentHigh=0;
int OpenOrders=0,cnt=0;
//+------------------------------------------------------------------+
//|自定义指标 初始化函数
//+------------------------------------------------------------------+
//int init()
// {
//---- 指标
//----
// return(0);
// }
//+------------------------------------------------------------------+
//|自定义指标去初始化功能|
//+------------------------------------------------------------------+
// int deinit()
// {
//---- TODO:在这里添加你的代码
//----
// return(0)。
//+------------------------------------------------------------------+
//| 自定义指标迭代函数|
//+------------------------------------------------------------------+
// int start()
// {
//---- TODO:在这里添加你的代码
//----
// return(0)。
// }
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//|专家初始化函数 |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//|专家的去初始化功能|
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| 检查打开位置控制
//+------------------------------------------------------------------+
int CheckOpenTrades()
{
int cnt;
int NumTrades; // 这个符号的买入和卖出交易的数量
NumTrades = 0。
for(cnt=OrdersTotal()-1;cnt>=0;cnt--)
{
OrderSelect (cnt, SELECT_BY_POS, MODE_TRADES);
if ( OrderSymbol() != Symbol() ) 继续。
if ( OrderMagicNumber() != MagicNumber) 继续。
如果(OrderType() == OP_BUY ) NumTrades++;
如果(OrderType() == OP_SELL ) NumTrades++;
}
返回(NumTrades)。
}
//+------------------------------------------------------------------+
//|专家启动功能|
//+------------------------------------------------------------------+
int start()
{
int cnt, ticket, total;
双重TP。
如果(Bars<100)
{
Print("小于100的条数")。
return(0);
}
total = CheckOpenTrades();
if(total < 1)
{
如果(Bid < CurrentLow) CurrentLow = Bid;
如果(Bid >= CurrentLow+(Point*Ret1))
OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+(SL1*Point),Bid-(TP1*Point), "Albatross_v1",MagicNumber,0,Green) 。
}
if(total < 2)
{
if(Bid >= CurrentLow+(Point*Ret2))
OrderSend(Symbol(),OP_SELL,Lots*2,Bid+(Point*Ret2),3,Bid+(SL2*Point),Bid-(TP2*Point), "Albatross_v1",MagicNumber,0,Green)。
返回(0)。
}
}
//+------------------------------------------------------------------+
很抱歉用这个问题来打扰你
你如何创建一个充满颜色的对象?
戴夫
<<<
大家好,我是一个程序员,已经用C++语言编写了很长时间的代码,但我对FX和MQL4的了解是非常基本的。我正在阅读某人写的EA,并试图理解代码......
你能不能用简单的英语解释一下,什么是iMA方法中的SHIFT参数?
double iMA(string symbol,int timeframe,int period,int ma_shift,int ma_method,int applied_price, int shift)
根据MT4的帮助,它是 "从指标缓冲区 获取的数值的索引(相对于当前条形图,在给定的时间段之前移动)"。- 什么是指标缓冲区?
他还在做以下工作......
int RealTime = 0;
if( UseCompletedBars )
{
if(timeprev==Time[0]){return(0);} timeprev = Time[0];
RealTime = 1;
}
double MA11 = iMA(NULL,0,MA1Periods,0,MA1MethodSelected, MA1ArraySelected,0+RealTime);
double MA12 = iMA(NULL,0,MA1Periods,0,MA1MethodSelected, MA1ArraySelected,1+RealTime);
double MA21 = iMA(NULL,0,MA2Periods,0,MA2MethodSelected, MA2ArraySelected,0+RealTime);
double MA22 = iMA(NULL,0,MA2Periods,0,MA2MethodSelected, MA2ArraySelected,1+RealTime);
if( MA11 > MA21 && MA12 < MA22 ) { EnterLong = True; }
if( MA11 MA22 ) { EnterShort = True; }因为我不知道移位,我想这就是为什么我不能得到它......
你的答案将得到高度评价。
请帮助。