KimIVの便利な機能 - ページ 5 123456789101112...128 新しいコメント kombat 2008.03.20 19:05 #41 受け入れていただきありがとうございます...;) AND, OR, NOTとは は難しいことではなく、こういうちょっとしたコードの使い方や用途に興味があるだけなんです。 あるいは、たとえばこんなことも。 -aと bが 等しいという条件は簡単に実装できる a==b - しかし、aが bに対して unequalという条件は、実装が難しい...。 また基本的な ことを持ち出して申し訳ありませんが、これはおそらく多くの初心者に重宝されるでしょう...。 ここでは、戦闘訓練条件を含む既成のコードを紹介します。:) フィールドの定義や配置から、プログラマーの手書きまで......すべてが揃っている。 https://www.mql5.com/ru/forum/51521 Igor Kim 2008.03.20 19:24 #42 kombat писал (а): - しかし、a is UNEQUAL tobという 条件がすでに難点になっている...。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()関数です。 ポジションを開くように設計されている - 市場価格で購入または売却する取引操作。この機能は多通貨に対応しており、現在のシンボルだけでなく、任意のシンボルのポジションを建てることができます。例えば、EURUSDのチャート上でEAを実行し、USDCADを取引することができます。 //+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. 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.EURUSDを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.USDCADを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.USDJPYを0.15ロット、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.GBPJPYを0.1ロット売り、ストップ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千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
受け入れていただきありがとうございます...;)
AND, OR, NOTとは
は難しいことではなく、こういうちょっとしたコードの使い方や用途に興味があるだけなんです。
あるいは、たとえばこんなことも。
-aと bが 等しいという条件は簡単に実装できる a==b
- しかし、aが bに対して unequalという条件は、実装が難しい...。
また基本的な ことを持ち出して申し訳ありませんが、これはおそらく多くの初心者に重宝されるでしょう...。
ここでは、戦闘訓練条件を含む既成のコードを紹介します。:)
フィールドの定義や配置から、プログラマーの手書きまで......すべてが揃っている。
https://www.mql5.com/ru/forum/51521
- しかし、a is UNEQUAL tobという 条件がすでに難点になっている...。
もしよろしければ、タスクバーのショートカットに何でも表示する機能を提案させてください。
、仕事中にターミナルを開かずに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()関数です。
ポジションを開くように設計されている - 市場価格で購入または売却する取引操作。この機能は多通貨に対応しており、現在のシンボルだけでなく、任意のシンボルのポジションを建てることができます。例えば、EURUSDのチャート上でEAを実行し、USDCADを取引することができます。
オンライン用のOpenPosition()関数です。
OpenPosition()関数の使用例です。
1.現在の商品を0.1ロット購入する
2.EURUSDを0.2ロット売ります。
3.USDCADを0.12ロット、20ピップスで売ります。
4.USDJPYを0.15ロット、40ピップスで購入
5.GBPJPYを0.1ロット売り、ストップ23、テイクアウェイ44ピップス。
トレーラーは、OpenPosition() 関数をテストするためのスクリプトです。最初の4つの例はコメントアウトされています。オンライン用のOpenPosition()関数です。
関数のパラメータに lsComm を入れてはどうでしょうか。
イマイチ、機能の「柔軟性」が広がらない...。