新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 126 1...119120121122123124125126127128129130131132133...1953 新评论 Vitalie Postolache 2017.02.14 14:36 #1251 MosheDayan: 你能告诉我更多关于这个信号的情况吗,它是由MT还是第三方提供的? 你可以,这里 写着呢。它只是简单地广播你的交易,而不是水平,如果他们喜欢这个系统,每个人都可以加入进来。 Fam 2017.02.14 14:56 #1252 谢谢你的帮助,修好了。 Andrei Sokolov 2017.02.14 16:20 #1253 是否有可能在整个终端或单个专家顾问上停止/启动自动交易,例如,根据某个指标? Vitalie Postolache 2017.02.14 17:18 #1254 Andrey Sokolov: 能否在整个终端或单个EA上禁用/停止自动交易,例如,根据某个指标的数据?你可以使用终端的全局变量,为所有这些变量规定相同的GP,并监测其值,例如,当它为0时 - 所有的EA都不交易。另外,你可以使用WinAPI在终端面板上找到自动交易按钮并按下它。 Andrei Sokolov 2017.02.14 17:20 #1255 Vitalie Postolache 谢谢 Vladimir Tyumentsev 2017.02.14 21:23 #1256 你好,有什么代码可以在图表上显示不随图表移动而固定的文字(贴纸、提醒)吗?谢谢你! Artyom Trishkin 2017.02.14 21:25 #1257 Vladimir.Tyumen: 你好,有什么代码可以在图表上显示不随图表移动而固定的文字(贴纸、提醒)吗?谢谢你!OBJ_LABEL Voznesen 2017.02.16 01:23 #1258 大家好,刚开始学习语言,最近看到一个创建网格EA的视频教程,写了,编译了,0错误,0警告。但我看不到我的机器人打开的交易,我想问问谁不太懒))))。提前感谢!extern double Lots = 0.1;extern double Profit = 50;extern int Step = 30;extern int Magic = 6677;extern int Slippage = 5;extern int maPeriod =100;extern int maShift =1;double ma, FindLastBuyPrice, price;//------------------------------------------------------------------//___ПРОВЕРКА_ЗНАКОВ_ПОСЛЕ_ТОЧКИ___ //------------------------------------------------------------------int OnInit(){ if (Digits == 3 || Digits == 5) { Step *= 10; Slippage *= 10; } return(INIT_SUCCEEDED);}//---------------------------------------------void OnDeinit(const int reason){}//------------------------------------------------------------------////------------------------------------------------------------------void OnTick(){ ma = iMA(Symbol(),0,maPeriod, maShift, MODE_SMA, PRICE_CLOSE, 0); if (CountBuy() && CountSell() == 0 && Bid < ma)// { if (OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, 0, 0, "", Magic, 0, Red) < 1) Print ("Неудалось открыть ордер на Продажу"); } if (CountBuy() && CountSell() == 0 && Ask < ma) { if (OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, "", Magic, 0, Blue) < 1) Print ("Неудалось открыть ордер на Покупку"); } if (CountBuy() >=1) { price = FindLastBuyPrice(); if ((price - Ask) >= Step*Point) { if (OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, "", Magic, 0, Blue) < 1) Print ("Неудалось открыть ордер на Покупку"); } } if (CountSell() >=1) { price = FindLastBuyPrice(); if ((Bid - price) >= Step*Point) { if (OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, 0, 0, "", Magic, 0, Red) < 1) Print ("Неудалось открыть ордер на Ппродажу"); } } double op = CalculateProfit(); if (op >= Profit) { CloseAll(); } }//------------------------------------------------------------------void CloseAll(){ for (int i = OrdersTotal()-1; i>=0; i--) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) { if (OrderType() == OP_BUY) { if (!OrderClose(OrderTicket(), OrderLots(), Bid, Slippage)) { Print ("Не удалось закрыть ордер на ПОКУПКУ"); } } if (OrderType() == OP_SELL) { if (!OrderClose(OrderTicket(), OrderLots(), Ask, Slippage)) { Print ("Не удалось закрыть ордер на ПРОДАЖУ"); } } } } }}//------------------------------------------------------------------double CalculateProfit() // Считаем профит по всем ордерам{ double oProfit = 0; for (int i=OrdersTotal() -1; i>=0; i--) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) { if (OrderType() == OP_BUY || OrderType() == OP_SELL) { oProfit += OrderProfit(); } } } } return(oProfit);}//------------------------------------------------------------------double FindLastBuyPrice(){ int oldTicket, ticket = 0; double oldopenPrice = 0; for (int cnt = OrdersTotal()-1; cnt>=0; cnt--) { if (OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol() ==Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_BUY) { oldTicket = OrderTicket(); if (oldTicket > ticket) { ticket = oldTicket; oldopenPrice = OrderOpenPrice(); } } } } return(oldopenPrice);}double FindLastSellPrice(){ int oldTicket, ticket = 0; double oldopenPrice = 0; for (int cnt = OrdersTotal()-1; cnt>=0; cnt--) { if (OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol() ==Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_SELL) { oldTicket = OrderTicket(); if (oldTicket > ticket) { ticket = oldTicket; oldopenPrice = OrderOpenPrice(); } } } } return(oldopenPrice);}//+------------------------------------------------------------------+//+------------------------------------------------------------------+int CountBuy(){ int count = 0; for (int trade = OrdersTotal()-1; trade >=0; trade--) { if (OrderSelect(trade, SELECT_BY_POS, MODE_TRADES) == true) { if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_BUY) count++; } } return(count);}//+------------------------------------------------------------------+int CountSell(){ int count = 0; for (int trade = OrdersTotal()-1; trade >=0; trade--) { if (OrderSelect(trade, SELECT_BY_POS, MODE_TRADES) == true) { if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_SELL) count++; } } return(count);}//+------------------------------------------------------------------+ Any questions from newcomers EA: Lucky 請高手指教!!!關於修改程序!!! 請高手幫幫忙,急需中.... Mickey Moose 2017.02.16 05:56 #1259 大家好。这里有一个问题。我有一个带库的指标,我需要为它写一个专家顾问。什么行动方案是必要的,以避免文件倍增,应该有两个或一个作为结果。我想同时使用它们。Voznesen:大家好,刚开始学习语言,最近看到一个视频教程,是关于如何创建网格EA的,写了,编译了,0错误,0警告。但机器人没有打开交易。我把代码放出来,看看是否有人偷懒))) 它应该如何开放交易? 在什么条件下? Alexey Viktorov 2017.02.16 06:05 #1260 trader781:大家好。这里有一个问题。我有一个带库的指标,我需要为它写一个专家顾问。什么行动方案是必要的,以避免文件倍增,应该有两个或一个作为结果。理想情况下,它们应该结合起来。与作为资源连接的自定义指标一起工作 对于mql4-程序的工作,你可能需要一个或多个自定义指标,所有这些都可以包含在可执行的mql4-程序的代码中。将指标作为资源纳入,可以简化方案分配。 唯一的问题是,如果另一台计算机上没有包含文件,它将无法编译。 Ресурсы - Программы MQL4 - Справочник MQL4 docs.mql4.com Ресурсы - Программы MQL4 - Справочник MQL4 1...119120121122123124125126127128129130131132133...1953 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
你能告诉我更多关于这个信号的情况吗,它是由MT还是第三方提供的?
谢谢你的帮助,修好了。
能否在整个终端或单个EA上禁用/停止自动交易,例如,根据某个指标的数据?
你可以使用终端的全局变量,为所有这些变量规定相同的GP,并监测其值,例如,当它为0时 - 所有的EA都不交易。
另外,你可以使用WinAPI在终端面板上找到自动交易按钮并按下它。
你好,有什么代码可以在图表上显示不随图表移动而固定的文字(贴纸、提醒)吗?谢谢你!
提前感谢!
extern double Lots = 0.1;
extern double Profit = 50;
extern int Step = 30;
extern int Magic = 6677;
extern int Slippage = 5;
extern int maPeriod =100;
extern int maShift =1;
double ma, FindLastBuyPrice, price;
//------------------------------------------------------------------
//___ПРОВЕРКА_ЗНАКОВ_ПОСЛЕ_ТОЧКИ___
//------------------------------------------------------------------
int OnInit()
{
if (Digits == 3 || Digits == 5)
{
Step *= 10;
Slippage *= 10;
}
return(INIT_SUCCEEDED);
}
//---------------------------------------------
void OnDeinit(const int reason)
{
}
//------------------------------------------------------------------
//
//------------------------------------------------------------------
void OnTick()
{
ma = iMA(Symbol(),0,maPeriod, maShift, MODE_SMA, PRICE_CLOSE, 0);
if (CountBuy() && CountSell() == 0 && Bid < ma)//
{
if (OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, 0, 0, "", Magic, 0, Red) < 1)
Print ("Неудалось открыть ордер на Продажу");
}
if (CountBuy() && CountSell() == 0 && Ask < ma)
{
if (OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, "", Magic, 0, Blue) < 1)
Print ("Неудалось открыть ордер на Покупку");
}
if (CountBuy() >=1)
{
price = FindLastBuyPrice();
if ((price - Ask) >= Step*Point)
{
if (OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, "", Magic, 0, Blue) < 1)
Print ("Неудалось открыть ордер на Покупку");
}
}
if (CountSell() >=1)
{
price = FindLastBuyPrice();
if ((Bid - price) >= Step*Point)
{
if (OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, 0, 0, "", Magic, 0, Red) < 1)
Print ("Неудалось открыть ордер на Ппродажу");
}
}
double op = CalculateProfit();
if (op >= Profit)
{
CloseAll();
}
}
//------------------------------------------------------------------
void CloseAll()
{
for (int i = OrdersTotal()-1; i>=0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
{
if (OrderType() == OP_BUY)
{
if (!OrderClose(OrderTicket(), OrderLots(), Bid, Slippage))
{
Print ("Не удалось закрыть ордер на ПОКУПКУ");
}
}
if (OrderType() == OP_SELL)
{
if (!OrderClose(OrderTicket(), OrderLots(), Ask, Slippage))
{
Print ("Не удалось закрыть ордер на ПРОДАЖУ");
}
}
}
}
}
}
//------------------------------------------------------------------
double CalculateProfit() // Считаем профит по всем ордерам
{
double oProfit = 0;
for (int i=OrdersTotal() -1; i>=0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
{
if (OrderType() == OP_BUY || OrderType() == OP_SELL)
{
oProfit += OrderProfit();
}
}
}
}
return(oProfit);
}
//------------------------------------------------------------------
double FindLastBuyPrice()
{
int oldTicket, ticket = 0;
double oldopenPrice = 0;
for (int cnt = OrdersTotal()-1; cnt>=0; cnt--)
{
if (OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol() ==Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_BUY)
{
oldTicket = OrderTicket();
if (oldTicket > ticket)
{
ticket = oldTicket;
oldopenPrice = OrderOpenPrice();
}
}
}
}
return(oldopenPrice);
}
double FindLastSellPrice()
{
int oldTicket, ticket = 0;
double oldopenPrice = 0;
for (int cnt = OrdersTotal()-1; cnt>=0; cnt--)
{
if (OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol() ==Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_SELL)
{
oldTicket = OrderTicket();
if (oldTicket > ticket)
{
ticket = oldTicket;
oldopenPrice = OrderOpenPrice();
}
}
}
}
return(oldopenPrice);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
int CountBuy()
{
int count = 0;
for (int trade = OrdersTotal()-1; trade >=0; trade--)
{
if (OrderSelect(trade, SELECT_BY_POS, MODE_TRADES) == true)
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_BUY)
count++;
}
}
return(count);
}
//+------------------------------------------------------------------+
int CountSell()
{
int count = 0;
for (int trade = OrdersTotal()-1; trade >=0; trade--)
{
if (OrderSelect(trade, SELECT_BY_POS, MODE_TRADES) == true)
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_SELL)
count++;
}
}
return(count);
}
//+------------------------------------------------------------------+
大家好。这里有一个问题。
我有一个带库的指标,我需要为它写一个专家顾问。
什么行动方案是必要的,以避免文件倍增,应该有两个或一个作为结果。我想同时使用它们。
大家好。这里有一个问题。
我有一个带库的指标,我需要为它写一个专家顾问。
什么行动方案是必要的,以避免文件倍增,应该有两个或一个作为结果。理想情况下,它们应该结合起来。
与作为资源连接的自定义指标一起工作
对于mql4-程序的工作,你可能需要一个或多个自定义指标,所有这些都可以包含在可执行的mql4-程序的代码中。将指标作为资源纳入,可以简化方案分配。