初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 63 1...565758596061626364656667686970...1503 新しいコメント Yedelkin 2012.11.07 05:44 #621 Gumko: ガム子 :で、このタスクが最初に出てくるまで、どのくらいかかるんですか......? もう2日も立っているんですよ。 8~10日待って、あきらめて電源を切りました。 ACSID 2012.11.07 07:25 #622 テスターソフトのバックグラウンドでのCPU負荷はどの程度なのか気になるところです。 mario 2012.11.09 14:34 #623 皆さん、こんにちは。 改造と問題点 外部機能。 bool ModifyPosition(const string symbol,double StopLoss,double Takeprofit){。//---- バインディング構造と貿易実績 MqlTradeRequest リクエスト。 MqlTradeResultの結果。//---- 取引検索 MqlTradeRequest の構造体初期化(ポジション変更用 request.action =TRADE_ACTION_SLTP; request.symbol = symbol; request.sl = StopLoss; request.tp = Takeprofit; 文字列 word = ""; StringConcatenate(word,"<< ========== Modifyposition(): 位置の修正", symbol," ============ >>"); Print(word)です。//---- ポジションを変更し、トレードサーチの結果を確認する。 if(!OrderSend(request,result) || result.deal==0){ Print("Modify error =", GetLastError(); return(false)です。} return(true)です。} でも、こうはいきません。 どうすればいいのか? ありがとうございました :) Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций www.mql5.com Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций - Документация по MQL5 Questions from Beginners MQL5 [アーカイブ!】どんなルーキーの質問でも、フォーラムを散らかさないように。プロフェッショナルの皆さん、通り過ぎないでください。あなたなしではどこにも行けない - 2. エラー、バグ、質問 Yedelkin 2012.11.09 15:57 #624 mario065: しかし、そのように動作しません。 どうすればよいのでしょうか? ありがとうございました。) この方法で試してみてください。MqlTradeRequest request={0}; MqlTradeResult result ={0}; mario 2012.11.10 08:36 #625 Yedelkin: この方法で試してみてください。 イェデルキン ありがとうございます、うまくいかなかったんですね。 関数呼び出しの開始を正しくカウントしているか確認しました。 その方法はこうだ。 double Bid = NormalizeDouble(SymbolInfoDouble(Currency,SYMBOL_BID),_Digits); double Ask = NormalizeDouble(SymbolInfoDouble(Currency,SYMBOL_ASK),_Digits)。 double Open = NormalizeDouble(PositionGetDouble(POSITION_PRICE_OPEN),_Digits); double SL = NormalizeDouble(PositionGetDouble(POSITION_SL),_Digits); if(オープン > 0){. start_buy = Ask - Open; Print("start_buy=",start_buy); start_sel = Open - Bid;Print("start_sel=",start_sel);} ログでびっくり。 MR 0 Core 1 10:21:49 2012.10.01 10:12:42 取引 #2 売り 0.10 EURUSD at 1.28146 完了 (注文 #2 に基づいています) GH 0 Core 1 10:21:49 2012.10.01 01:12:42 取引実行 [#2 sell 0.10 EURUSD at 1.28146]. NI 0 Core 1 10:21:49 2012.10.01 01:12:42 order performed sell 0.10 at 1.28146 [#2 sell 0.10 EURUSD at 1.28146 (0.00000) OF 0 コア 1 10:21:49 2012.10.01 01:12:43 start_buy=0.00012999999999635 DR 0 コア 1 10:21:49 2012.10.01 01:12:43start_sel=5.000000000010552e-005 LE 0 コア 1 10:21:49 2012.10.01 01:12:43 start_buy=0.00010999999998325 EN 0 コア 1 10:21:49 2012.10.01 01:12:43start_sel=7.00000000000145e-005 もちろん、私もセラだけ気になっていたのですが、この数字はどこから出てきたのでしょうか? 表示されているように、正しく関数を書いたつもりです。 SLおよびTPの変更 ストップロスやテイクプロフィットレベルを変更するための取引注文。4つのフィールドが必要です。 アクションシンボルSLTP Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства позиций www.mql5.com Стандартные константы, перечисления и структуры / Торговые константы / Свойства позиций - Документация по MQL5 Questions from Beginners MQL5 [ARCHIVE]Any rookie question, so [ARCHIVE]フォーラムを乱立させないために、どんなルーキーの質問でも。プロフェッショナルの皆さん、通り過ぎないでください。あなたなしではどこにも行けない - 5. Yedelkin 2012.11.10 09:30 #626 mario065: ありがとうございます、うまくいきませんでした。では、具体的に何が「失敗」したのでしょうか? mario065 : 関数呼び出しの開始が正しくカウントされるかどうか確認したところ、以下のようになりました。 コードを 正しく挿入 する(Ctrl+Alt+M)。 double Bid = NormalizeDouble(SymbolInfoDouble(Currency,SYMBOL_BID),_Digits); double Ask = NormalizeDouble(SymbolInfoDouble(Currency,SYMBOL_ASK),_Digits); double Open = NormalizeDouble(PositionGetDouble(POSITION_PRICE_OPEN),_Digits); double SL = NormalizeDouble(PositionGetDouble(POSITION_SL),_Digits); if(Open > 0) { start_buy = Ask - Open;Print("start_buy=",start_buy); start_sel = Open - Bid;Print("start_sel=",start_sel); }ここでは、正規化を別の順序で行う必要がある。1.SymbolInfoDouble(Currency,SYMBOL_BID) タイプの値がサーバーから送られてくるので、すでに正規化されたものとみなされる。また、2回目の正規化を行う必要はありません。つまり、書くだけでいいんです。double Bid = SymbolInfoDouble(Currency,SYMBOL_BID);2.ただし、何らかの算術演算を した後は正規化がなくなるので、正規化された数値を得る必要がある場合は、次のように書きます。start_buy = NormalizeDouble(Ask - Open,_Digits);あとはまだ考え中です。 Yedelkin 2012.11.10 09:39 #627 mario065: ログでびっくり。DR 0 Core 1 10:21:49 2012.10.01 01:12:43start_sel=5.000000000010552e-005 EN 0 Core 1 10:21:49 2012.10.01 01:12:43start_sel=7.0000000145e-005 もちろん、そのような数字がどこから出てきたのか、ということにしか興味はないのですが。 7.00000000000145e-005は、実数の値の書き方のひとつに過ぎない。科学的」ということですね。詳しくはこちらをご覧ください。"MQL5 Reference Guide /Language Basics / Data Types / Real Types (double, float)" を参照してください。 Документация по MQL5 - языку автоматического трейдинга и тестированию торговых стратегий www.mql5.com Справочник MetaQuotes Language 5 (MQL5) - Документация на MQL5.com mario 2012.11.10 10:16 #628 Yedelkin:7.00000000000145e-005は、実数の値の書き方のひとつに過ぎない。科学的」ということですね。詳しくはこちらをご覧ください。"MQL5 Reference Guide /Language Basics / Data Types / Real Types (double, float)" を参照してください。 イェデルキン 問題に取り組んでいただき、ありがとうございます。 ポジションを開くための関数は、Nikolay Kositsin氏によって書かれたものです。 ファイル: MTB_E.mq5 9 kb Leser 2012.11.10 21:26 #629 No.2ウィンドウに属するMAをEAで指定する方法と場所を教えてください。 例えば、MFIにMAを追加し、このMAをEAに登録したいのですが。どこでどうすればいいのかわからない。 ご返信ありがとうございます) Yedelkin 2012.11.11 06:54 #630 mario065: 以下はそのコードです。ポジション開設のための機能は、ニコライ・コシチンが書きました。ニコライ・コシチン 1.私が言いたいのは、他人のコードを使うときは細心の注意を払ってほしいということです。他人のコードということは、他人のミスもあるということですから。2.ここ(https://www.mql5.com/ru/forum/6343/page64#comment_357008) では、変数を使う前に正しくゼロにすることを心がけるよう提案しました。しかし、あなたのコードはまだこの提案を実装していません。さらに、あなたのコードには次のようなタイプのコンストラクトが含まれています。//+------------------------------------------------------------------+ //| Modify position. | //+------------------------------------------------------------------+ bool ModifyPosition(const string symbol,double StopLoss,double Takeprofit) { //---- обявяване на структурата и резултата на търговското искане MqlTradeRequest request; MqlTradeResult result; //---- структурна инициализация на търговското искане MqlTradeRequest за модифициране на позиция request.action = ... request.symbol = ... request.sl = ... request.tp = ... ... //---- модифицираме позицията и проверяваме резултата от търговското искане if(!OrderSend(request,result) || result.deal==0) { ... } ZeroMemory(request); ZeroMemory(result); return(true); }この構成では、リクエスト変数と結果変数が使用される前ではなく、使用された後に ゼロになることはお分かりでしょう。また、これらの局所変数がゼロになると、関数は動作を停止する。つまり、ゼロにすること自体に意味がないのである。つまり、このような構成は、MqlTradeRequestと MqlTradeResultの 変数がゼロにならない ようにするための良い例です。というわけで、熱心な方は、ぜひ、正しく変数をクリアしてみてください。うまくいかないときは、何が「うまくいかない」のか、具体的に教えてください。3.標準ライブラリには、「MQL5 Reference / Standard Library / Trade Classes / CTrade」というトレードクラスがあります。実際にどのように適用するかを考えてみてください。語学に没頭する最初の段階では、このクラスで十分かもしれません。例えば、このクラスは次のメソッドを持っています:「MQL5 Reference / Standard Library / Trade Classes / 2CTrade/ PositionModify」。以下のように実装されています。//+------------------------------------------------------------------+ //| Modify specified opened position | //+------------------------------------------------------------------+ bool CTrade::PositionModify(const string symbol,const double sl,const double tp) { //--- check stopped if(IsStopped(__FUNCTION__)) return(false); //--- clean ClearStructures(); //--- setting request m_request.action=TRADE_ACTION_SLTP; m_request.symbol=symbol; m_request.magic =m_magic; m_request.sl =sl; m_request.tp =tp; //--- action and return the result return(OrderSend(m_request,m_result)); }その中の'ClearStructures();の行で、変数m_requestを使用する前に クリアしています。 1...565758596061626364656667686970...1503 新しいコメント 理由: キャンセル 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
Gumko:
もう2日も立っているんですよ。
皆さん、こんにちは。
改造と問題点
外部機能。
bool ModifyPosition(const string symbol,double StopLoss,double Takeprofit){。
//---- バインディング構造と貿易実績
MqlTradeRequest リクエスト。
MqlTradeResultの結果。
//---- 取引検索 MqlTradeRequest の構造体初期化(ポジション変更用
request.action =TRADE_ACTION_SLTP;
request.symbol = symbol;
request.sl = StopLoss;
request.tp = Takeprofit;
文字列 word = "";
StringConcatenate(word,
"<< ========== Modifyposition(): 位置の修正",
symbol," ============ >>");
Print(word)です。
//---- ポジションを変更し、トレードサーチの結果を確認する。
if(!OrderSend(request,result) || result.deal==0)
{
Print("Modify error =", GetLastError();
return(false)です。
}
return(true)です。
}
でも、こうはいきません。
どうすればいいのか?
ありがとうございました :)
この方法で試してみてください。
この方法で試してみてください。
イェデルキン
ありがとうございます、うまくいかなかったんですね。
関数呼び出しの開始を正しくカウントしているか確認しました。
その方法はこうだ。
double Bid = NormalizeDouble(SymbolInfoDouble(Currency,SYMBOL_BID),_Digits);
double Ask = NormalizeDouble(SymbolInfoDouble(Currency,SYMBOL_ASK),_Digits)。
double Open = NormalizeDouble(PositionGetDouble(POSITION_PRICE_OPEN),_Digits);
double SL = NormalizeDouble(PositionGetDouble(POSITION_SL),_Digits);
if(オープン > 0){.
start_buy = Ask - Open; Print("start_buy=",start_buy);
start_sel = Open - Bid;Print("start_sel=",start_sel);
}
ログでびっくり。
MR 0 Core 1 10:21:49 2012.10.01 10:12:42 取引 #2 売り 0.10 EURUSD at 1.28146 完了 (注文 #2 に基づいています)
GH 0 Core 1 10:21:49 2012.10.01 01:12:42 取引実行 [#2 sell 0.10 EURUSD at 1.28146].
NI 0 Core 1 10:21:49 2012.10.01 01:12:42 order performed sell 0.10 at 1.28146 [#2 sell 0.10 EURUSD at 1.28146 (0.00000)
OF 0 コア 1 10:21:49 2012.10.01 01:12:43 start_buy=0.00012999999999635
DR 0 コア 1 10:21:49 2012.10.01 01:12:43start_sel=5.000000000010552e-005
LE 0 コア 1 10:21:49 2012.10.01 01:12:43 start_buy=0.00010999999998325
EN 0 コア 1 10:21:49 2012.10.01 01:12:43start_sel=7.00000000000145e-005
もちろん、私もセラだけ気になっていたのですが、この数字はどこから出てきたのでしょうか?
表示されているように、正しく関数を書いたつもりです。
SLおよびTPの変更
ストップロスやテイクプロフィットレベルを変更するための取引注文。4つのフィールドが必要です。
では、具体的に何が「失敗」したのでしょうか?
コードを 正しく挿入 する(Ctrl+Alt+M)。
ここでは、正規化を別の順序で行う必要がある。
1.SymbolInfoDouble(Currency,SYMBOL_BID) タイプの値がサーバーから送られてくるので、すでに正規化されたものとみなされる。また、2回目の正規化を行う必要はありません。つまり、書くだけでいいんです。
2.ただし、何らかの算術演算を した後は正規化がなくなるので、正規化された数値を得る必要がある場合は、次のように書きます。
あとはまだ考え中です。
DR 0 Core 1 10:21:49 2012.10.01 01:12:43start_sel=5.000000000010552e-005
EN 0 Core 1 10:21:49 2012.10.01 01:12:43start_sel=7.0000000145e-005
もちろん、そのような数字がどこから出てきたのか、ということにしか興味はないのですが。
7.00000000000145e-005は、実数の値の書き方のひとつに過ぎない。科学的」ということですね。詳しくはこちらをご覧ください。"MQL5 Reference Guide /Language Basics / Data Types / Real Types (double, float)" を参照してください。
イェデルキン
問題に取り組んでいただき、ありがとうございます。
ポジションを開くための関数は、Nikolay Kositsin氏によって書かれたものです。
例えば、MFIにMAを追加し、このMAをEAに登録したいのですが。どこでどうすればいいのかわからない。
ご返信ありがとうございます)
1.私が言いたいのは、他人のコードを使うときは細心の注意を払ってほしいということです。他人のコードということは、他人のミスもあるということですから。
2.ここ(https://www.mql5.com/ru/forum/6343/page64#comment_357008) では、変数を使う前に正しくゼロにすることを心がけるよう提案しました。しかし、あなたのコードはまだこの提案を実装していません。さらに、あなたのコードには次のようなタイプのコンストラクトが含まれています。
この構成では、リクエスト変数と結果変数が使用される前ではなく、使用された後に ゼロになることはお分かりでしょう。また、これらの局所変数がゼロになると、関数は動作を停止する。つまり、ゼロにすること自体に意味がないのである。つまり、このような構成は、MqlTradeRequestと MqlTradeResultの 変数がゼロにならない ようにするための良い例です。というわけで、熱心な方は、ぜひ、正しく変数をクリアしてみてください。うまくいかないときは、何が「うまくいかない」のか、具体的に教えてください。
3.標準ライブラリには、「MQL5 Reference / Standard Library / Trade Classes / CTrade」というトレードクラスがあります。実際にどのように適用するかを考えてみてください。語学に没頭する最初の段階では、このクラスで十分かもしれません。例えば、このクラスは次のメソッドを持っています:「MQL5 Reference / Standard Library / Trade Classes / 2CTrade/ PositionModify」。以下のように実装されています。
その中の'ClearStructures();の行で、変数m_requestを使用する前に クリアしています。