如何编码? - 页 231

 

非常好,谢谢!

 

伙计,数组和函数,不是我的那杯茶。

 

对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中存储了数周的旧变量。