KimIV的有用功能 - 页 5 123456789101112...128 新评论 kombat 2008.03.20 19:05 #41 谢谢你的接受...;) 什么是和、或、非 并不难理解,我只是对代码中的这些小东西和它们的 用途感兴趣。 或者,比如说,这个。 - 条件a 等于b 很容易实现,a==b - 但是a 与b 不平等的条件很难实现......。 很抱歉再次提起这些基本知识,但这对许多初学者来说可能会很有用...... 这里有一个现成的带有战斗训练条件的代码。:) 它拥有一切...从定义和安排字段到程序员的笔迹... https://www.mql5.com/ru/forum/51521 Igor Kim 2008.03.20 19:24 #42 kombat писал (а): - 但条件a 与b 不平等,已经造成了困难......。a!=b; igor 2008.03.20 19:39 #43 在我看来,伊戈尔,你似乎有点偏离了主题,进入了解释。 如果你不介意我这么说,我想建议一个在任务栏快捷方式中显示一些东西的功能。 我在工作中用它来监测EA的性能,而不需要打开终端(很多人在窥视)。 ,它在其他情况下也可能有用。 //----------- 任务栏中的可视化功能 ------------------------------------- void ProfMT(string X) { int hwnd1 = WindowHandle(Symbol(), Period()); int hwnd_parent1 = 0; while ( !IsStopped() { hwnd1= GetParent(hwnd1); if (hwnd1 == 0) break; hwnd_parent1 = hwnd1; } if (hwnd_parent1 !=0) SetWindowTextA(hwnd_parent1,X); } 谢谢。 kombat 2008.03.20 19:44 #44 就这样吧...还有什么地方可以比在论坛上更快地了解真相呢...。;) 谢谢你!对不起,我说漏了嘴。 我将尝试在书的主题中提出更多问题... Igor Kim 2008.03.21 05:11 #45 测试器的OpenPosition()函数。 旨在开立头寸--按市场价格买入或卖出的交易操作。这个功能是通用的和多货币的,允许为任何符号开仓,而不仅仅是为当前的符号。例如,一个EA可以在欧元兑美元图表上运行,并交易美元兑加元。 //+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru | //+----------------------------------------------------------------------------+ //| Версия : 13.06.2007 | //| Описание : Открытие позиции. Версия функции для тестов на истории. | //+----------------------------------------------------------------------------+ //| Параметры: | //| sy - наименование инструмента ("" - текущий символ) | //| op - операция | //| ll - лот | //| sl - уровень стоп | //| tp - уровень тейк | //| mn - MagicNumber | //+----------------------------------------------------------------------------+ void OpenPosition(string sy, int op, double ll, double sl=0, double tp=0, int mn=0) { color clOpen; double pp; int err, ticket; if (sy=="") sy=Symbol(); if (op==OP_BUY) { pp=MarketInfo(sy, MODE_ASK); clOpen=clOpenBuy; } else { pp=MarketInfo(sy, MODE_BID); clOpen=clOpenSell; } ticket=OrderSend(sy, op, ll, pp, Slippage, sl, tp, "", mn, 0, clOpen); if (ticket<0) { err=GetLastError(); Print("Error(",err,") open ",GetNameOP(op),": ",ErrorDescription(err)); Print("Ask=",Ask," Bid=",Bid," sy=",sy," ll=",ll, " pp=",pp," sl=",sl," tp=",tp," mn=",mn); } } Igor Kim 2008.03.21 05:13 #46 OpenPosition()函数用于在线。 //+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru | //+----------------------------------------------------------------------------+ //| Версия : 21.03.2008 | //| Описание : Открывает позицию и возвращает её тикет. | //+----------------------------------------------------------------------------+ //| Параметры: | //| sy - наименование инструмента (NULL или "" - текущий символ) | //| op - операция | //| ll - лот | //| sl - уровень стоп | //| tp - уровень тейк | //| mn - MagicNumber | //+----------------------------------------------------------------------------+ int OpenPosition(string sy, int op, double ll, double sl=0, double tp=0, int mn=0) { color clOpen; datetime ot; double pp, pa, pb; int dg, err, it, ticket=0; string lsComm=WindowExpertName()+" "+GetNameTF(Period()); if (sy=="" || sy=="0") sy=Symbol(); if (op==OP_BUY) clOpen=clOpenBuy; else clOpen=clOpenSell; for (it=1; it<=NumberOfTry; it++) { if (!IsTesting() && (!IsExpertEnabled() || IsStopped())) { Print("OpenPosition(): Остановка работы функции"); break; } while (!IsTradeAllowed()) Sleep(5000); RefreshRates(); dg=MarketInfo(sy, MODE_DIGITS); pa=MarketInfo(sy, MODE_ASK); pb=MarketInfo(sy, MODE_BID); if (op==OP_BUY) pp=pa; else pp=pb; pp=NormalizeDouble(pp, dg); ot=TimeCurrent(); ticket=OrderSend(sy, op, ll, pp, Slippage, sl, tp, lsComm, mn, 0, clOpen); if (ticket>0) { if (UseSound) PlaySound(NameFileSound); break; } else { err=GetLastError(); if (pa==0 && pb==0) Message("Проверьте в Обзоре рынка наличие символа "+sy); // Вывод сообщения об ошибке Print("Error(",err,") opening position: ",ErrorDescription(err),", try ",it); Print("Ask=",pa," Bid=",pb," sy=",sy," ll=",ll," op=",GetNameOP(op), " pp=",pp," sl=",sl," tp=",tp," mn=",mn); // Блокировка работы советника if (err==2 || err==64 || err==65 || err==133) { gbDisabled=True; break; } // Длительная пауза if (err==4 || err==131 || err==132) { Sleep(1000*300); break; } if (err==128 || err==142 || err==143) { Sleep(1000*66.666); if (ExistPositions(sy, op, mn, ot)) { if (UseSound) PlaySound(NameFileSound); break; } } if (err==140 || err==148 || err==4110 || err==4111) break; if (err==141) Sleep(1000*100); if (err==145) Sleep(1000*17); if (err==146) while (IsTradeContextBusy()) Sleep(1000*11); if (err!=135) Sleep(1000*7.7); } } return(ticket); } Igor Kim 2008.03.21 05:25 #47 使用OpenPosition()函数的例子。 1.买入当前工具的0.1手 OpenPosition(NULL, OP_BUY, 0.1); 2.卖出0.2手欧元兑美元 string sy="EURUSD"; double pa=MarketInfo("EURUSD", MODE_ASK); double pb=MarketInfo("EURUSD", MODE_BID); double po=MarketInfo("EURUSD", MODE_POINT); OpenPosition(sy, OP_SELL, 0.2); 3.卖出0.12手美元兑加元,止损20点 string sy="USDCAD"; double pa=MarketInfo("USDCAD", MODE_ASK); double pb=MarketInfo("USDCAD", MODE_BID); double po=MarketInfo("USDCAD", MODE_POINT); OpenPosition("USDCAD", OP_SELL, 0.12, pb+20*po); 4.买入0.15手USDJPY,40个点的止损。 string sy="USDJPY"; double pa=MarketInfo("USDJPY", MODE_ASK); double pb=MarketInfo("USDJPY", MODE_BID); double po=MarketInfo("USDJPY", MODE_POINT); OpenPosition("USDJPY", OP_BUY, 0.15, 0, pa+40*po); 5.卖出0.1手GBPJPY,止损23,回撤44点 string sy="GBPJPY"; double pa=MarketInfo("GBPJPY", MODE_ASK); double pb=MarketInfo("GBPJPY", MODE_BID); double po=MarketInfo("GBPJPY", MODE_POINT); OpenPosition("GBPJPY", OP_SELL, 0.1, pb+23*po, pb-44*po); 拖车是一个测试OpenPosition() 函数的脚本。前4个例子被注释掉了。 附加的文件: test_openposition.mq4 11 kb lukyanov 2008.03.21 10:50 #48 KimIV: OpenPosition()函数用于在线。 //+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 21.03.2008 |//| Описание : Открывает позицию и возвращает её тикет. |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента (NULL или "" - текущий символ) |//| op - операция |//| ll - лот |//| sl - уровень стоп |//| tp - уровень тейк |//| mn - MagicNumber |//+----------------------------------------------------------------------------+int OpenPosition(string sy, int op, double ll, double sl=0, double tp=0, int mn=0) {//-- skip -- string lsComm=WindowExpertName()+" "+GetNameTF(Period());//-- skip -- 为什么不把lsComm放在函数参数中? 例如,像这样。int OpenPosition(string sy, int op, double ll, double sl=0, double tp=0, string lsComm="", int mn=0) { color clOpen; datetime ot; double pp, pa, pb; int dg, err, it, ticket=0; if (lsComm=="" || lsComm=="0") lsComm=WindowExpertName()+" "+GetNameTF(Period()); if (sy=="" || sy=="0") sy=Symbol(); 我认为,功能的 "灵活性 "扩大了... Igor Kim 2008.03.21 11:19 #49 Lukyanov писал (а): 为什么不把lsComm放在函数参数中? 我认为,功能的 "灵活性 "扩大了... 我不介意...我的意思是我允许你这样做 :-) lukyanov 2008.03.21 13:02 #50 我是为了自己才这样做的。只是可能会对某人有帮助。:-) 123456789101112...128 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
谢谢你的接受...;)
什么是和、或、非
并不难理解,我只是对代码中的这些小东西和它们的 用途感兴趣。
或者,比如说,这个。
- 条件a 等于b 很容易实现,a==b
- 但是a 与b 不平等的条件很难实现......。
很抱歉再次提起这些基本知识,但这对许多初学者来说可能会很有用......
这里有一个现成的带有战斗训练条件的代码。:)
它拥有一切...从定义和安排字段到程序员的笔迹...
https://www.mql5.com/ru/forum/51521
- 但条件a 与b 不平等,已经造成了困难......。
如果你不介意我这么说,我想建议一个在任务栏快捷方式中显示一些东西的功能。
我在工作中用它来监测EA的性能,而不需要打开终端(很多人在窥视)。
,它在其他情况下也可能有用。
//----------- 任务栏中的可视化功能 -------------------------------------
void ProfMT(string X)
{
int hwnd1 = WindowHandle(Symbol(), Period());
int hwnd_parent1 = 0;
while ( !IsStopped()
{
hwnd1= GetParent(hwnd1);
if (hwnd1 == 0) break;
hwnd_parent1 = hwnd1;
}
if (hwnd_parent1 !=0) SetWindowTextA(hwnd_parent1,X);
}
谢谢。
就这样吧...还有什么地方可以比在论坛上更快地了解真相呢...。;)
谢谢你!对不起,我说漏了嘴。
我将尝试在书的主题中提出更多问题...
测试器的OpenPosition()函数。
旨在开立头寸--按市场价格买入或卖出的交易操作。这个功能是通用的和多货币的,允许为任何符号开仓,而不仅仅是为当前的符号。例如,一个EA可以在欧元兑美元图表上运行,并交易美元兑加元。
OpenPosition()函数用于在线。
使用OpenPosition()函数的例子。
1.买入当前工具的0.1手
2.卖出0.2手欧元兑美元
3.卖出0.12手美元兑加元,止损20点
4.买入0.15手USDJPY,40个点的止损。
5.卖出0.1手GBPJPY,止损23,回撤44点
拖车是一个测试OpenPosition() 函数的脚本。前4个例子被注释掉了。OpenPosition()函数用于在线。
为什么不把lsComm放在函数参数中?
我认为,功能的 "灵活性 "扩大了...