编码帮助 - 页 281 1...274275276277278279280281282283284285286287288...786 新评论 FxSteven 2014.05.19 16:27 #2801 mladen: stevenpun 你说买入有0.1手+0.2手,卖出应该是0.4手。你能澄清一下吗? 你好,mladen,很抱歉这么晚才回复。 因为我已经病了好几天了。 我做了一个图片 例如,当买入有2个开放的订单(0.1手+0.2手),但突然火车已经改变为卖出。 EA将打开一个0.1手的卖盘,但我希望它打开0.4手。 有可能修改吗? 附加的文件: lot_explain.jpg 121 kb Mladen Rakic 2014.05.19 16:33 #2802 hermes: 再次问好。我试着用上面的注释,但它只显示Max。你能帮助我实现两个功能吗?一个是显示出价以上的即时行价,另一个是显示出价以下的行价。谢谢你。 以下是代码。 //+------------------------------------------------------------------+ //| SimpleGrid.mq4+ //+------------------------------------------------------------------+ #include #include #property strict //导出的变量 extern string GridStartingPrice = " Start Price to Place Lines "; 外置双倍GSP = 0.0; extern int GR = 5; 外置双倍GridStep = 5; External color CGL = Gold; External color BGL = Green; Extern color SGL = Red; 外部 bool ClearAllObjects = False; // 本地变量 double PipValue=1; // 这个变量是用来支持5位数的经纪人的。 bool Terminated = false; string LF = "\n"; // 在需要换行的自定义或实用程序块中使用这个变量。 int NDigits = 4; // 主要用于Flex类型块中的NormalizeDouble。 int ObjCount = 0; // 计算图表上创建的所有对象,允许创建具有唯一名称的对象 int current = 0; int init() { NDigits = Digits; if (false) ObjectsDeleteAll(); // 清除图表 Comment(""); // 清除图表 return(0); } // 专家开始 int start() { 如果(Bars < 10) { Comment("没有足够的条数")。 返回(0)。 } 如果(Terminated == true) { Comment("EA终止了。")。 返回(0)。 } OnEveryTick7(); 返回(0)。 } 空白的OnEveryTick7() { PipValue = 1。 如果(NDigits == 3 || NDigits == 5)PipValue = 10; CentreGridLine(); } 空白CentreGridLine() { 如果(ObjectFind("CGL") == (-1) ) { { string objName = "CGL" ; ObjectCreate(objName, OBJ_HLINE, 0, Time[0],GSP)。 ObjectSet(objName, OBJPROP_PRICE1, GSP)。 ObjectSet(objName, OBJPROP_COLOR,CGL); } TradeLine()。 UprBnd(); LwrBnd(); } } 无效TradeLine() { int i; 双重GridStep1= (GridStep*2); double BGSP= (GSP+((GridStep/2)*PipValue*Point)) ; 双SGSP= (GSP-((GridStep/2)*PipValue*Point))。 双倍 BBGSP= (BGSP-((GridStep*(GR))*PipValue*Point)) ; 双SSGSP= (SGSP+((GridStep*(GR))*PipValue*Point))。 { for(i=0; i<GR;i++) { SGL("出售 "+i,BBGSP+GridStep1*i*PipValue*Point)。 } } { for(i=0; i<GR;i++) { BGL("购买 "+i,SSGSP-GridStep1*i*PipValue*Point)。 } } } void BGL(string objName, double price) { ObjectCreate(objName, OBJ_HLINE, 0, 0, price); ObjectSet(objName, OBJPROP_STYLE, STYLE_SOLID)。 ObjectSet(objName, OBJPROP_WIDTH, 1); ObjectSet(objName, OBJPROP_COLOR, BGL); } void SGL(string objName, double price) { ObjectCreate(objName, OBJ_HLINE, 0, 0, price); ObjectSet(objName, OBJPROP_STYLE, STYLE_SOLID)。 ObjectSet(objName, OBJPROP_WIDTH, 1); ObjectSet(objName, OBJPROP_COLOR, SGL); } 无效的UprBnd() { 如果(ObjectFind("UPRBND") == (-1) ) { double BGSP= (GSP+((GridStep/2)*PipValue*Point)) 。 双倍价格= (BGSP+((GridStep*(GR))*PipValue*Point)) 。 string objName = "UPRBND" ; ObjectCreate(objName, OBJ_HLINE, 0, Time[0], price )。 ObjectSet(objName, OBJPROP_PRICE1,price); ObjectSet(objName, OBJPROP_COLOR, DodgerBlue); ObjectSet(objName, OBJPROP_WIDTH,3); } } 空白的LwrBnd() { 如果(ObjectFind("LWRBND") == (-1) ) { double SGSP= (GSP-((GridStep/2)*PipValue*Point))。 双倍价格= (SGSP-((GridStep*(GR))*PipValue*Point))。 string objName = "LWRBND" ; ObjectCreate(objName, OBJ_HLINE, 0, Time[0], price )。 ObjectSet(objName, OBJPROP_PRICE1,price); ObjectSet(objName, OBJPROP_COLOR, Tomato); ObjectSet(objName, OBJPROP_WIDTH, 3); } } int deinit() { 如果(ClearAllObjects)ObjectsDeleteAll()。 返回(0)。 } //+------------------------------------------------------------------+ 赫米斯 你能附上mq4文件吗? hermes 2014.05.19 17:08 #2803 mladen: Hermes 你能附上mq4文件吗? 在这里,它是。谢谢 附加的文件: simpleg.mq4 4 kb [删除] 2014.05.19 17:27 #2804 我需要帮助。 我需要帮助,我做了一个Ea,它与2个移动平均线 和2个不同的时间框架有关,以过滤趋势,我想添加一个RSI指标,以过滤交易,设置例如RSI周期8的水平50,如果高于RSI水平50的交叉,我们只打开卖出市场订单,如果低于RSI水平50的交叉,我们只打开购买市场订单。我附上Ea,起初与keltnerchannels相连,但现在我想只作为Ma1和Ma2使用。 有谁能帮助我完成这一改变? 谢谢你。 附加的文件: key_of_the_day_1.00.mq4 15 kb Mladen Rakic 2014.05.19 19:00 #2805 hermes: 在这里,它是。谢谢 赫尔墨斯 试试这个 :simpleg_1.mq4 附加的文件: simpleg_1.mq4 6 kb Mladen Rakic 2014.05.19 19:25 #2806 daniel1983: 你好。我需要帮助,我做了一个Ea,它与2个移动平均线和2个不同的时间框架有关,以过滤趋势,我想添加一个RSI指标,以过滤交易,设置例如RSI周期8的水平50,如果高于RSI水平50的交叉,我们只打开卖出市场订单,如果低于RSI水平50的交叉,我们只打开购买市场订单。我附上Ea,起初与keltnerchannels相连,但现在我想只作为Ma1和Ma2使用。 有人能帮助我完成这一改变吗? 谢谢你 daniel1983 几乎可以肯定的是,你永远不会同时得到mas和rsis的交叉点(意思是--你几乎不会得到信号)。试试吧:做一个简单的指标,做你所描述的那样,你会发现这些情况很少同时发生。 [删除] 2014.05.19 20:29 #2807 mladen: daniel1983 几乎可以肯定的是,你永远不会在同一时间得到mas和RSI的交叉点(意味着--你几乎永远不会得到信号)。试试吧:做一个简单的指标,做你所描述的那样,你会发现这些情况很少同时发生。 嗨,Mladen, 我的意思是 - 在0和50之间的任何水平上只能卖出 - 在50和100之间的任何水平只能买入。 不是在这个相同的交叉点,交叉点可以在任何水平(43,41,18,25)买入市场订单,确认更高的时间框架趋势。我已经测试过了,大约80%的订单看起来是用这个过滤器不会向相反的方向打开。 现在,Ea在交叉点开始下降趋势时打开买入订单,用这个过滤器在80%的情况下会过滤这个交叉点,而不在这个点上输入订单,这些Ma交叉点。 在这个Ea中,我输入了高时间框架,但我做了测试,使用低时间框架来过滤趋势,效果更好。 我附上一个测试例子的图片。 对于欧元兑美元 在这种情况下,我使用EMA2和EMA67,RSI(8)时间框架1分钟和Hitimeframe 5分钟,在这种情况下,你有一个无利可图的买入市场订单,这个买入市场订单发生在EMa的交叉点,但RSI在50以下的水平。 然后你有一个卖出市场订单,在交叉点开盘,但RSI低于50,这个订单是正确的市场订单,我想从所有信号中过滤。 有可能做到这一点吗? 谢谢你。 丹尼尔 附加的文件: rsi_filter.png 32 kb hermes 2014.05.20 03:21 #2808 mladen: 爱马仕 试试这个 :simpleg_1.mq4 你好,Mladen。 用这个终于可以工作了。谢谢你 空白的LoopBS() { double max =(ObjectGet("UPRBND",OBJPROP_PRICE1))。 double min =(ObjectGet("LWRBND",OBJPROP_PRICE1))。 for (int i =ObjectsTotal()-1; i>=0; i--) { string name = ObjectName(i); 如果(StringSubstr(name,0,3)=="购买") { double BS=ObjectGet(name,OBJPROP_PRICE1); 如果((Ask<BS) && (BSmin)) { max = ObjectGet(name,OBJPROP_PRICE1); { 评论(DoubleToStr(BS,Digits)," ")。 } } } } } Coding help 问吧! 新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 dmnik 2014.05.20 04:48 #2809 不准确的信号 不准确的信号 亲爱的,工匠们!你能不能发出更好的信号来做。M1,M5,M15 附加的文件: binary-alert.rar 10 kb .......png 31 kb Mladen Rakic 2014.05.20 05:01 #2810 DMNIK: 不准确的信号 亲爱的,工匠们!你能不能发出更好的信号。M1, M5, M15 它只是显示过去3个收盘价是大于还是小于过去3个开盘价。这方面没有什么需要改进的地方 1...274275276277278279280281282283284285286287288...786 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
stevenpun 你说买入有0.1手+0.2手,卖出应该是0.4手。你能澄清一下吗?
你好,mladen,很抱歉这么晚才回复。
因为我已经病了好几天了。
我做了一个图片
例如,当买入有2个开放的订单(0.1手+0.2手),但突然火车已经改变为卖出。
EA将打开一个0.1手的卖盘,但我希望它打开0.4手。
有可能修改吗?
再次问好。
我试着用上面的注释,但它只显示Max。你能帮助我实现两个功能吗?一个是显示出价以上的即时行价,另一个是显示出价以下的行价。谢谢你。
以下是代码。
//+------------------------------------------------------------------+
//| SimpleGrid.mq4+
//+------------------------------------------------------------------+
#include
#include
#property strict
//导出的变量
extern string GridStartingPrice = " Start Price to Place Lines ";
外置双倍GSP = 0.0;
extern int GR = 5;
外置双倍GridStep = 5;
External color CGL = Gold;
External color BGL = Green;
Extern color SGL = Red;
外部 bool ClearAllObjects = False;
// 本地变量
double PipValue=1; // 这个变量是用来支持5位数的经纪人的。
bool Terminated = false;
string LF = "\n"; // 在需要换行的自定义或实用程序块中使用这个变量。
int NDigits = 4; // 主要用于Flex类型块中的NormalizeDouble。
int ObjCount = 0; // 计算图表上创建的所有对象,允许创建具有唯一名称的对象
int current = 0;
int init()
{
NDigits = Digits;
if (false) ObjectsDeleteAll(); // 清除图表
Comment(""); // 清除图表
return(0);
}
// 专家开始
int start()
{
如果(Bars < 10)
{
Comment("没有足够的条数")。
返回(0)。
}
如果(Terminated == true)
{
Comment("EA终止了。")。
返回(0)。
}
OnEveryTick7();
返回(0)。
}
空白的OnEveryTick7()
{
PipValue = 1。
如果(NDigits == 3 || NDigits == 5)PipValue = 10;
CentreGridLine();
}
空白CentreGridLine()
{ 如果(ObjectFind("CGL") == (-1) )
{
{
string objName = "CGL" ;
ObjectCreate(objName, OBJ_HLINE, 0, Time[0],GSP)。
ObjectSet(objName, OBJPROP_PRICE1, GSP)。
ObjectSet(objName, OBJPROP_COLOR,CGL);
}
TradeLine()。
UprBnd();
LwrBnd();
}
}
无效TradeLine()
{
int i;
双重GridStep1= (GridStep*2);
double BGSP= (GSP+((GridStep/2)*PipValue*Point)) ;
双SGSP= (GSP-((GridStep/2)*PipValue*Point))。
双倍 BBGSP= (BGSP-((GridStep*(GR))*PipValue*Point)) ;
双SSGSP= (SGSP+((GridStep*(GR))*PipValue*Point))。
{
for(i=0; i<GR;i++)
{
SGL("出售 "+i,BBGSP+GridStep1*i*PipValue*Point)。
}
}
{
for(i=0; i<GR;i++)
{
BGL("购买 "+i,SSGSP-GridStep1*i*PipValue*Point)。
}
}
}
void BGL(string objName, double price)
{
ObjectCreate(objName, OBJ_HLINE, 0, 0, price);
ObjectSet(objName, OBJPROP_STYLE, STYLE_SOLID)。
ObjectSet(objName, OBJPROP_WIDTH, 1);
ObjectSet(objName, OBJPROP_COLOR, BGL);
}
void SGL(string objName, double price)
{
ObjectCreate(objName, OBJ_HLINE, 0, 0, price);
ObjectSet(objName, OBJPROP_STYLE, STYLE_SOLID)。
ObjectSet(objName, OBJPROP_WIDTH, 1);
ObjectSet(objName, OBJPROP_COLOR, SGL);
}
无效的UprBnd()
{ 如果(ObjectFind("UPRBND") == (-1) )
{
double BGSP= (GSP+((GridStep/2)*PipValue*Point)) 。
双倍价格= (BGSP+((GridStep*(GR))*PipValue*Point)) 。
string objName = "UPRBND" ;
ObjectCreate(objName, OBJ_HLINE, 0, Time[0], price )。
ObjectSet(objName, OBJPROP_PRICE1,price);
ObjectSet(objName, OBJPROP_COLOR, DodgerBlue);
ObjectSet(objName, OBJPROP_WIDTH,3);
}
}
空白的LwrBnd()
{ 如果(ObjectFind("LWRBND") == (-1) )
{
double SGSP= (GSP-((GridStep/2)*PipValue*Point))。
双倍价格= (SGSP-((GridStep*(GR))*PipValue*Point))。
string objName = "LWRBND" ;
ObjectCreate(objName, OBJ_HLINE, 0, Time[0], price )。
ObjectSet(objName, OBJPROP_PRICE1,price);
ObjectSet(objName, OBJPROP_COLOR, Tomato);
ObjectSet(objName, OBJPROP_WIDTH, 3);
}
}
int deinit()
{
如果(ClearAllObjects)ObjectsDeleteAll()。
返回(0)。
}
//+------------------------------------------------------------------+赫米斯
你能附上mq4文件吗?
Hermes 你能附上mq4文件吗?
在这里,它是。谢谢
我需要帮助。
我需要帮助,我做了一个Ea,它与2个移动平均线 和2个不同的时间框架有关,以过滤趋势,我想添加一个RSI指标,以过滤交易,设置例如RSI周期8的水平50,如果高于RSI水平50的交叉,我们只打开卖出市场订单,如果低于RSI水平50的交叉,我们只打开购买市场订单。我附上Ea,起初与keltnerchannels相连,但现在我想只作为Ma1和Ma2使用。
有谁能帮助我完成这一改变?
谢谢你。
在这里,它是。谢谢
赫尔墨斯
试试这个 :simpleg_1.mq4
你好。
我需要帮助,我做了一个Ea,它与2个移动平均线和2个不同的时间框架有关,以过滤趋势,我想添加一个RSI指标,以过滤交易,设置例如RSI周期8的水平50,如果高于RSI水平50的交叉,我们只打开卖出市场订单,如果低于RSI水平50的交叉,我们只打开购买市场订单。我附上Ea,起初与keltnerchannels相连,但现在我想只作为Ma1和Ma2使用。
有人能帮助我完成这一改变吗?
谢谢你daniel1983
几乎可以肯定的是,你永远不会同时得到mas和rsis的交叉点(意思是--你几乎不会得到信号)。试试吧:做一个简单的指标,做你所描述的那样,你会发现这些情况很少同时发生。
daniel1983 几乎可以肯定的是,你永远不会在同一时间得到mas和RSI的交叉点(意味着--你几乎永远不会得到信号)。试试吧:做一个简单的指标,做你所描述的那样,你会发现这些情况很少同时发生。
嗨,Mladen,
我的意思是
- 在0和50之间的任何水平上只能卖出
- 在50和100之间的任何水平只能买入。
不是在这个相同的交叉点,交叉点可以在任何水平(43,41,18,25)买入市场订单,确认更高的时间框架趋势。我已经测试过了,大约80%的订单看起来是用这个过滤器不会向相反的方向打开。
现在,Ea在交叉点开始下降趋势时打开买入订单,用这个过滤器在80%的情况下会过滤这个交叉点,而不在这个点上输入订单,这些Ma交叉点。
在这个Ea中,我输入了高时间框架,但我做了测试,使用低时间框架来过滤趋势,效果更好。
我附上一个测试例子的图片。
对于欧元兑美元
在这种情况下,我使用EMA2和EMA67,RSI(8)时间框架1分钟和Hitimeframe 5分钟,在这种情况下,你有一个无利可图的买入市场订单,这个买入市场订单发生在EMa的交叉点,但RSI在50以下的水平。
然后你有一个卖出市场订单,在交叉点开盘,但RSI低于50,这个订单是正确的市场订单,我想从所有信号中过滤。
有可能做到这一点吗?
谢谢你。
丹尼尔
爱马仕 试试这个 :simpleg_1.mq4
你好,Mladen。
用这个终于可以工作了。谢谢你
空白的LoopBS()
{
double max =(ObjectGet("UPRBND",OBJPROP_PRICE1))。
double min =(ObjectGet("LWRBND",OBJPROP_PRICE1))。
for (int i =ObjectsTotal()-1; i>=0; i--)
{
string name = ObjectName(i);
如果(StringSubstr(name,0,3)=="购买")
{
double BS=ObjectGet(name,OBJPROP_PRICE1);
如果((Ask<BS) && (BSmin))
{
max = ObjectGet(name,OBJPROP_PRICE1);
{
评论(DoubleToStr(BS,Digits)," ")。
}
}
}
}
}
不准确的信号
不准确的信号
亲爱的,工匠们!你能不能发出更好的信号来做。M1,M5,M15
不准确的信号 亲爱的,工匠们!你能不能发出更好的信号。M1, M5, M15
它只是显示过去3个收盘价是大于还是小于过去3个开盘价。这方面没有什么需要改进的地方