如何编码? - 页 231 1...224225226227228229230231232233234235236237238...347 新评论 purplxd 2010.04.14 05:52 #2301 非常好,谢谢! witsnpips 2010.04.14 11:01 #2302 伙计,数组和函数,不是我的那杯茶。 ellhn 2010.04.15 06:56 #2303 对EA的帮助 我想做以下事情。 使用M15框架,通过比较当前价格和前一个M15收盘价(close[1]),在这个区间内开出两个最大订单。然而,我不知道如何编写代码,因为我希望这个过程在接下来的每一个M15帧中都能发生。由于开始函数 总是自己执行,如何保持正确的变量来计算每个M15的2个订单的最大值? 谢谢你。 fbrooks 2010.04.16 16:17 #2304 需要帮助打开待定订单 的脚本。 我知道这里有很多打开和关闭订单的脚本,但我找不到一个可以打开挂单的脚本。 我需要的是2个脚本,一个Sellstop和一个Buystop。 我希望Buystop能在日线枢轴上方15个点的位置打开一个Buystop订单,SellStop能在日线枢轴下方15个点的位置打开。 我玩了一下,得到了下面的SellStop的代码,但我不是一个程序员,它没有工作。我想我是漏掉了什么。 谁能帮我解决这个问题呢? PS.算了吧,我知道了。我不得不把我的投标价格改为PVT绿色。我得到了一个130的错误。 现在可以了... 好吧,还有一个问题,谁能告诉我如何将到期时间从24小时后改为当天22:00。 //+------------------------------------------------------------------+ //| script "send pending order with expiration data" | //+------------------------------------------------------------------+ int start() { int ticket,expiration; double point; double PVTYellow = iCustom(NULL, 0, "pivot_alllevels", 0, 0, 0); double PVTBlue = iCustom(NULL, 0, "pivot_alllevels", 0, 1, 0); double PVTGreen = iCustom(NULL, 0, "pivot_alllevels", 0, 2, 0); double PVTRed = iCustom(NULL, 0, "pivot_alllevels", 0, 3, 0); double PVTMagenta = iCustom(NULL, 0, "pivot_alllevels", 0, 4, 0); //---- point=MarketInfo(Symbol(),MODE_POINT); expiration=TimeCurrent()+PERIOD_D1*60; //---- while(true) { ticket = OrderSend(Symbol(),OP_SELLSTOP, 0.10, PVTGreen-15*Point, 3, PVTGreen+20*Point, PVTGreen-20*Point, 0,0,expiration,Red); if(ticket<=0) Print("Error = ",GetLastError()); else { Print("ticket = ",ticket); break; } //---- 10 seconds wait Sleep(10000); } //---- return(0); } //+------------------------------------------------------------------+ How to code? script for putting pending pending ticket cannot executed. luxinterior 2010.04.16 22:17 #2305 要使到期时间为22:00,你可以这样做...... int iHour = TimeHour(TimeCurrent()); int iMinute = TimeMinute(TimeCurrent()); int iDiff = 22%iHour; datetime dtExpiryDate = (TimeCurrent()+(iDiff*60*60))-(iMinute*60); Print(TimeToStr(dtExpiryDate)); 没有错误检查,所以如果你认为你会需要它,请务必添加它。 卢克斯 soheilpro 2010.04.17 00:38 #2306 抓住市场观察的符号 大家好。 我想知道是否有办法抓取市场观察中的所有符号进行监控,而不是手动输入EA? 换句话说,我想让我的EA通过市场观察窗口中的任何符号,并根据一定的标准监测它们。 如果有任何帮助,我将不胜感激。 Forexlist 2010.04.17 19:22 #2307 帮助我 -帐户余额 星期日 你好。 我从昨天开始尝试修补我所有一周以来的账户余额周日(市场成功开盘)显示的缓存。 我需要将周日成功开市时的EA账户余额正确地运行到股票经理那里。 double usedacc = 0; ... 如果(usedacc == 0 | | DayOfWeek () == 0) usedacc = 账户余额()。 ... 只是不工作 也许有人可以帮助我,因为我是最好的。 对不起,我的英语不好 rm78 2010.04.24 04:59 #2308 请删除此帖 - 谢谢 derumuro 2010.04.25 04:03 #2309 如何从指标中获取数据 大家好。 我需要在EA中从指标中获取FIBO100和FIBO0的值。我怎样才能得到它呢? 谢谢 德鲁姆罗 附加的文件: zigzagy_auto_fibo.mq4 22 kb scottyb 2010.04.25 15:37 #2310 你是如何得到它的? 伙计,我遇到了一个类似的问题 斯科特 MQL中的 "脚本间 "通信(或 "指标间 "通信)完全通过缓冲区进行。这段代码: trendset = iCustom(NULL,0, "VGA HISTOGRAM~",0,0)。 意味着你想从 "VGA HISTOGRAM~"指标的第一个(公共)缓冲区获取当前条形图的值。你可以尝试使用全局变量,但是全局变量的操作比较麻烦,而且出错的几率比正常工作要大,或者你可以写一个DLL(metatrader每个图表只使用一个DLL实例。不管参数是什么,所以你可以做一个 "信号",根据任何类型的ID来保持和返回数值 - 这将确保mql代码之间的通信,并避免错误的变量读取(例如全局变量很容易被误解,你可以从一个完全不同的图表中读取变量而不知道))。 问候 Mladen 实际上,我做了一个解决这个问题的方法,我将与你分享。 在你的指标中建立一个新的函数,这样事情就不会变得很混乱。 void PASSINFO() { int trendcondtemp; //把它改成你想要的名字,这并不重要,如果你懒的话就不改。 if (Close[1] > Open[2] && Volume[1] < Volume[2]) trendcondtemp=1; //看涨 - 这只是为变量设置一个值,使用你的代码。 if (Close[1] < Open[2] && Volume[1] < Volume[2]) trendcondtemp=2; //看跌 - 同样的事情,不同的味道。 if (Volume[1] > Volume[2])trendcondtemp=3; //fuckall happening - meh 如果(Symbol()=="USDCHF") GlobalVariableSet("TRENDSETUSDCHF",trendcondtemp); 如果(Symbol()=="GBPUSD") GlobalVariableSet("TRENDSETGBPUSD",trendcondtemp); 如果(Symbol()=="EURUSD") GlobalVariableSet("TRENDSETEURUSD",trendcondtemp); 如果(Symbol()=="USDJPY") GlobalVariableSet("TRENDSETUSDJPY",trendcondtemp); 如果(Symbol()=="USDCAD") GlobalVariableSet("TRENDSETUSDCAD",trendcondtemp); 如果(Symbol()=="NZDUSD") GlobalVariableSet("TRENDSETNZDUSD",trendcondtemp); 如果(Symbol()=="AUDUSD") GlobalVariableSet("TRENDSETAUDUSD",trendcondtemp); 如果(Symbol()=="AUDNZD") GlobalVariableSet("TRENDSETAUDNZD",trendcondtemp); 如果(Symbol()=="AUDCAD") GlobalVariableSet("TRENDSETAUDCAD",trendcondtemp); 如果(Symbol()=="EURUSD") GlobalVariableSet("TRENDSETEURUSD",trendcondtemp); 如果(Symbol()=="AUDCHF") GlobalVariableSet("TRENDSETAUDCHF",trendcondtemp); 如果(Symbol()=="AUDJPY") GlobalVariableSet("TRENDSETAUDJPY",trendcondtemp); 如果(Symbol()=="CHFJPY") GlobalVariableSet("TRENDSETCHFJPY",trendcondtemp); 如果(Symbol()=="EURGBP") GlobalVariableSet("TRENDSETEURGBP",trendcondtemp); 如果(Symbol()=="EURAUD") GlobalVariableSet("TRENDSETEURAUD",trendcondtemp); 如果(Symbol()=="EURCHF") GlobalVariableSet("TRENDSETEURCHF",trendcondtemp); 如果(Symbol()=="EURJPY") GlobalVariableSet("TRENDSETEURJPY",trendcondtemp); 如果(Symbol()=="EURNZD") GlobalVariableSet("TRENDSETEURNZD",trendcondtemp); 如果(Symbol()=="GBPCHF") GlobalVariableSet("TRENDSETGBPCHF",trendcondtemp); 如果(Symbol()=="GBPAUD") GlobalVariableSet("TRENDSETGBPAUD",trendcondtemp); 如果(Symbol()=="GBPCAD") GlobalVariableSet("TRENDSETGBPCAD",trendcondtemp); 如果(Symbol()=="GBPJPY") GlobalVariableSet("TRENDSETGBPJPY",trendcondtemp); 如果(Symbol()=="NZDJPY") GlobalVariableSet("TRENDSETNZDJPY",trendcondtemp); //在这之后添加石油/黄金/白金/任何你交易的东西,我涵盖了我的经纪人所做的一切 } 好了,现在因为它与货币有关,所以它没有机会与另一种货币交叉并将价值塞满。 你现在必须在调用数值之前,把这个放到你的start/whatever函数中。 int trendset。 如果(Symbol()=="USDCHF") trendset= GlobalVariableGet("TRENDSETUSDCHF")。 如果(Symbol()=="GBPUSD") trendset=GlobalVariableGet("TRENDSETGBPUSD"); 如果(Symbol()=="EURUSD") trendset=GlobalVariableGet("TRENDSETEURUSD")。 如果(Symbol()=="USDJPY") trendset=GlobalVariableGet("TRENDSETUSDJPY"); 如果(Symbol()=="USDCAD") trendset= GlobalVariableGet("TRENDSETUSDCAD"); 如果(Symbol()=="NZDUSD") trendset=GlobalVariableGet("TRENDSETNZDUSD")。 如果(Symbol()=="AUDUSD") trendset=GlobalVariableGet("TRENDSETAUDUSD")。 如果(Symbol()=="AUDNZD") trendset=GlobalVariableGet("TRENDSETAUDNZD")。 如果(Symbol()=="AUDCAD") trendset=GlobalVariableGet("TRENDSETAUDCAD")。 如果(Symbol()=="EURUSD") trendset=GlobalVariableGet("TRENDSETEURUSD"); 如果(Symbol()=="AUDCHF") trendset=GlobalVariableGet("TRENDSETAUDCHF"); 如果(Symbol()=="AUDJPY") trendset=GlobalVariableGet("TRENDSETAUDJPY"); 如果(Symbol()=="CHFJPY") trendset=GlobalVariableGet("TRENDSETCHFJPY"); 如果(Symbol()=="EURGBP") trendset= GlobalVariableGet("TRENDSETEURGBP"); 如果(Symbol()=="EURAUD") trendset=GlobalVariableGet("TRENDSETEURAUD"); 如果(Symbol()=="EURCHF") trendset=GlobalVariableGet("TRENDSETEURCHF"); 如果(Symbol()=="EURJPY") trendset=GlobalVariableGet("TRENDSETEURJPY"); 如果(Symbol()=="EURNZD") trendset=GlobalVariableGet("TRENDSETEURNZD"); 如果(Symbol()=="GBPCHF") trendset= GlobalVariableGet("TRENDSETGBPCHF")。 如果(Symbol()=="GBPAUD") trendset= GlobalVariableGet("TRENDSETGBPAUD"); 如果(Symbol()=="GBPCAD") trendset=GlobalVariableGet("TRENDSETGBPCAD"); 如果(Symbol()=="GBPJPY") trendset=GlobalVariableGet("TRENDSETGBPJPY"); 如果(Symbol()=="NZDJPY") trendset=GlobalVariableGet("TRENDSETNZDJPY"); 请注意!!!(你可能已经意识到这一点),但你必须让指标在你的EA运行的货币上运行,以使数值发生变化,否则你只会得到在MT4中存储了数周的旧变量。 How to code? 任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. EA能在其中一张图表交易多品种吗? 1...224225226227228229230231232233234235236237238...347 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
非常好,谢谢!
伙计,数组和函数,不是我的那杯茶。
对EA的帮助
我想做以下事情。
使用M15框架,通过比较当前价格和前一个M15收盘价(close[1]),在这个区间内开出两个最大订单。然而,我不知道如何编写代码,因为我希望这个过程在接下来的每一个M15帧中都能发生。由于开始函数 总是自己执行,如何保持正确的变量来计算每个M15的2个订单的最大值?
谢谢你。
需要帮助打开待定订单 的脚本。
我知道这里有很多打开和关闭订单的脚本,但我找不到一个可以打开挂单的脚本。
我需要的是2个脚本,一个Sellstop和一个Buystop。
我希望Buystop能在日线枢轴上方15个点的位置打开一个Buystop订单,SellStop能在日线枢轴下方15个点的位置打开。
我玩了一下,得到了下面的SellStop的代码,但我不是一个程序员,它没有工作。我想我是漏掉了什么。
谁能帮我解决这个问题呢?
PS.算了吧,我知道了。我不得不把我的投标价格改为PVT绿色。我得到了一个130的错误。
现在可以了...
好吧,还有一个问题,谁能告诉我如何将到期时间从24小时后改为当天22:00。
//| script "send pending order with expiration data" |
//+------------------------------------------------------------------+
int start()
{
int ticket,expiration;
double point;
double PVTYellow = iCustom(NULL, 0, "pivot_alllevels", 0, 0, 0);
double PVTBlue = iCustom(NULL, 0, "pivot_alllevels", 0, 1, 0);
double PVTGreen = iCustom(NULL, 0, "pivot_alllevels", 0, 2, 0);
double PVTRed = iCustom(NULL, 0, "pivot_alllevels", 0, 3, 0);
double PVTMagenta = iCustom(NULL, 0, "pivot_alllevels", 0, 4, 0);
//----
point=MarketInfo(Symbol(),MODE_POINT);
expiration=TimeCurrent()+PERIOD_D1*60;
//----
while(true)
{
ticket = OrderSend(Symbol(),OP_SELLSTOP, 0.10, PVTGreen-15*Point, 3, PVTGreen+20*Point, PVTGreen-20*Point, 0,0,expiration,Red);
if(ticket<=0) Print("Error = ",GetLastError());
else { Print("ticket = ",ticket); break; }
//---- 10 seconds wait
Sleep(10000);
}
//----
return(0);
}
//+------------------------------------------------------------------+要使到期时间为22:00,你可以这样做......
int iHour = TimeHour(TimeCurrent());
int iMinute = TimeMinute(TimeCurrent());
int iDiff = 22%iHour;
datetime dtExpiryDate = (TimeCurrent()+(iDiff*60*60))-(iMinute*60);
Print(TimeToStr(dtExpiryDate));
没有错误检查,所以如果你认为你会需要它,请务必添加它。
卢克斯
抓住市场观察的符号
大家好。
我想知道是否有办法抓取市场观察中的所有符号进行监控,而不是手动输入EA?
换句话说,我想让我的EA通过市场观察窗口中的任何符号,并根据一定的标准监测它们。
如果有任何帮助,我将不胜感激。
帮助我 -帐户余额 星期日
你好。
我从昨天开始尝试修补我所有一周以来的账户余额周日(市场成功开盘)显示的缓存。
我需要将周日成功开市时的EA账户余额正确地运行到股票经理那里。
double usedacc = 0;
...
如果(usedacc == 0 | | DayOfWeek () == 0) usedacc = 账户余额()。
...
只是不工作
也许有人可以帮助我,因为我是最好的。
对不起,我的英语不好
请删除此帖 - 谢谢
如何从指标中获取数据
大家好。
我需要在EA中从指标中获取FIBO100和FIBO0的值。我怎样才能得到它呢?
谢谢
德鲁姆罗
你是如何得到它的?
伙计,我遇到了一个类似的问题
斯科特
MQL中的 "脚本间 "通信(或 "指标间 "通信)完全通过缓冲区进行。这段代码:
trendset = iCustom(NULL,0, "VGA HISTOGRAM~",0,0)。
意味着你想从 "VGA HISTOGRAM~"指标的第一个(公共)缓冲区获取当前条形图的值。你可以尝试使用全局变量,但是全局变量的操作比较麻烦,而且出错的几率比正常工作要大,或者你可以写一个DLL(metatrader每个图表只使用一个DLL实例。不管参数是什么,所以你可以做一个 "信号",根据任何类型的ID来保持和返回数值 - 这将确保mql代码之间的通信,并避免错误的变量读取(例如全局变量很容易被误解,你可以从一个完全不同的图表中读取变量而不知道))。
问候
Mladen
实际上,我做了一个解决这个问题的方法,我将与你分享。
在你的指标中建立一个新的函数,这样事情就不会变得很混乱。
void PASSINFO() {
int trendcondtemp; //把它改成你想要的名字,这并不重要,如果你懒的话就不改。
if (Close[1] > Open[2] && Volume[1] < Volume[2]) trendcondtemp=1; //看涨 - 这只是为变量设置一个值,使用你的代码。
if (Close[1] < Open[2] && Volume[1] < Volume[2]) trendcondtemp=2; //看跌 - 同样的事情,不同的味道。
if (Volume[1] > Volume[2])trendcondtemp=3; //fuckall happening - meh
如果(Symbol()=="USDCHF") GlobalVariableSet("TRENDSETUSDCHF",trendcondtemp);
如果(Symbol()=="GBPUSD") GlobalVariableSet("TRENDSETGBPUSD",trendcondtemp);
如果(Symbol()=="EURUSD") GlobalVariableSet("TRENDSETEURUSD",trendcondtemp);
如果(Symbol()=="USDJPY") GlobalVariableSet("TRENDSETUSDJPY",trendcondtemp);
如果(Symbol()=="USDCAD") GlobalVariableSet("TRENDSETUSDCAD",trendcondtemp);
如果(Symbol()=="NZDUSD") GlobalVariableSet("TRENDSETNZDUSD",trendcondtemp);
如果(Symbol()=="AUDUSD") GlobalVariableSet("TRENDSETAUDUSD",trendcondtemp);
如果(Symbol()=="AUDNZD") GlobalVariableSet("TRENDSETAUDNZD",trendcondtemp);
如果(Symbol()=="AUDCAD") GlobalVariableSet("TRENDSETAUDCAD",trendcondtemp);
如果(Symbol()=="EURUSD") GlobalVariableSet("TRENDSETEURUSD",trendcondtemp);
如果(Symbol()=="AUDCHF") GlobalVariableSet("TRENDSETAUDCHF",trendcondtemp);
如果(Symbol()=="AUDJPY") GlobalVariableSet("TRENDSETAUDJPY",trendcondtemp);
如果(Symbol()=="CHFJPY") GlobalVariableSet("TRENDSETCHFJPY",trendcondtemp);
如果(Symbol()=="EURGBP") GlobalVariableSet("TRENDSETEURGBP",trendcondtemp);
如果(Symbol()=="EURAUD") GlobalVariableSet("TRENDSETEURAUD",trendcondtemp);
如果(Symbol()=="EURCHF") GlobalVariableSet("TRENDSETEURCHF",trendcondtemp);
如果(Symbol()=="EURJPY") GlobalVariableSet("TRENDSETEURJPY",trendcondtemp);
如果(Symbol()=="EURNZD") GlobalVariableSet("TRENDSETEURNZD",trendcondtemp);
如果(Symbol()=="GBPCHF") GlobalVariableSet("TRENDSETGBPCHF",trendcondtemp);
如果(Symbol()=="GBPAUD") GlobalVariableSet("TRENDSETGBPAUD",trendcondtemp);
如果(Symbol()=="GBPCAD") GlobalVariableSet("TRENDSETGBPCAD",trendcondtemp);
如果(Symbol()=="GBPJPY") GlobalVariableSet("TRENDSETGBPJPY",trendcondtemp);
如果(Symbol()=="NZDJPY") GlobalVariableSet("TRENDSETNZDJPY",trendcondtemp);
//在这之后添加石油/黄金/白金/任何你交易的东西,我涵盖了我的经纪人所做的一切
}
好了,现在因为它与货币有关,所以它没有机会与另一种货币交叉并将价值塞满。 你现在必须在调用数值之前,把这个放到你的start/whatever函数中。
int trendset。
如果(Symbol()=="USDCHF") trendset= GlobalVariableGet("TRENDSETUSDCHF")。
如果(Symbol()=="GBPUSD") trendset=GlobalVariableGet("TRENDSETGBPUSD");
如果(Symbol()=="EURUSD") trendset=GlobalVariableGet("TRENDSETEURUSD")。
如果(Symbol()=="USDJPY") trendset=GlobalVariableGet("TRENDSETUSDJPY");
如果(Symbol()=="USDCAD") trendset= GlobalVariableGet("TRENDSETUSDCAD");
如果(Symbol()=="NZDUSD") trendset=GlobalVariableGet("TRENDSETNZDUSD")。
如果(Symbol()=="AUDUSD") trendset=GlobalVariableGet("TRENDSETAUDUSD")。
如果(Symbol()=="AUDNZD") trendset=GlobalVariableGet("TRENDSETAUDNZD")。
如果(Symbol()=="AUDCAD") trendset=GlobalVariableGet("TRENDSETAUDCAD")。
如果(Symbol()=="EURUSD") trendset=GlobalVariableGet("TRENDSETEURUSD");
如果(Symbol()=="AUDCHF") trendset=GlobalVariableGet("TRENDSETAUDCHF");
如果(Symbol()=="AUDJPY") trendset=GlobalVariableGet("TRENDSETAUDJPY");
如果(Symbol()=="CHFJPY") trendset=GlobalVariableGet("TRENDSETCHFJPY");
如果(Symbol()=="EURGBP") trendset= GlobalVariableGet("TRENDSETEURGBP");
如果(Symbol()=="EURAUD") trendset=GlobalVariableGet("TRENDSETEURAUD");
如果(Symbol()=="EURCHF") trendset=GlobalVariableGet("TRENDSETEURCHF");
如果(Symbol()=="EURJPY") trendset=GlobalVariableGet("TRENDSETEURJPY");
如果(Symbol()=="EURNZD") trendset=GlobalVariableGet("TRENDSETEURNZD");
如果(Symbol()=="GBPCHF") trendset= GlobalVariableGet("TRENDSETGBPCHF")。
如果(Symbol()=="GBPAUD") trendset= GlobalVariableGet("TRENDSETGBPAUD");
如果(Symbol()=="GBPCAD") trendset=GlobalVariableGet("TRENDSETGBPCAD");
如果(Symbol()=="GBPJPY") trendset=GlobalVariableGet("TRENDSETGBPJPY");
如果(Symbol()=="NZDJPY") trendset=GlobalVariableGet("TRENDSETNZDJPY");
请注意!!!(你可能已经意识到这一点),但你必须让指标在你的EA运行的货币上运行,以使数值发生变化,否则你只会得到在MT4中存储了数周的旧变量。