テスターでSLとTPをドラッグ&ドロップします。 - ページ 13 1...67891011121314 新しいコメント khorosh 2016.02.17 14:31 #121 Artyom Trishkin: あるいは、キーパッドのボタンと組み合わせることもできます ;) はい、それも選択肢の一つです。 Artyom Trishkin 2016.02.17 15:00 #122 khorosh: だから、ここが間違いなんです。注文の開始線からSLとTPの両方を引く必要がある場合、何を引けばいいのかが分からないという問題があるので、それはできない。そこで、実際のチャート上でカーソルの方向と同じように、キーボードキーを使うか、アクションの種類を設定するボタンを作成するかして、アクションの種類を特定する必要があるのです。最初のオプションは実際のチャートで使用されており、私の意見では最良である。 Ctrl+mouse - 停止します。ジャストマウス - テイク。そして、必要な場所を一度にドラッグする。 削除済み 2016.02.17 15:43 #123 Artyom Trishkin: はい、クリアです。どういうことかというと、ストップがない場合は、注文自体のラインを引っ張れば、ラインを「引っ張った」ところにストップが設定されるということなんです。持ち帰り加工がない場合です。また、ストップとトーの両方の処理があるにもかかわらず、注文にどちらもない場合、注文線を引くとしたら、何を設定すればいいのでしょうか?テイクかストップか?あわよくば例:買いの場合:引き上げたらタップ、引き下げたらスル Artyom Trishkin 2016.02.17 16:09 #124 pako:あわよくば例:買いの場合:引き上げたらタップ、引き下げたらスル 端末ではこのように動作します。そして、ストップをBuyのプロフィットゾーンに移動させること-これが今回の議論です。 削除済み 2016.02.17 16:30 #125 Artyom Trishkin: 端末ではこのようになっています。そして、Buyストップをプロフィットゾーンに移動させること-それが、今回の議論です。 それは、端末のように作るということです Artyom Trishkin 2016.02.17 16:54 #126 pako: 端末と同じように作れってことだよ。 端末のようにやるというのは、すでに言われていることです。今は、端末でどうしたらいいかということです。 削除済み 2016.02.17 18:16 #127 Artyom Trishkin: 端末でのやり方は、すでに説明したとおりです。今は、端末でどうしたらいいかということです。 ロシア語で書いているようです Artyom Trishkin 2016.02.17 20:13 #128 pako: ロシア語で書いているつもりです。 同じ言葉で答えているのに...。;) khorosh 2016.02.18 08:18 #129 今朝、すっきりした頭で、解決策を見つけました。さらに、修正関数の余分なループを取り除きました。2つのバリエーションに対応した改造機能を作りました。1) 注文にSLとTPが設定されていない場合、注文をクリックするとSLとTPが50ポイントでポップアップ表示されます。必要であれば、必要な場所にドラッグ&ドロップしてください。もし注文にすでにSLとTPがあれば、それを好きな場所にドラッグする。2) 実際のチャートでのやり方のバリエーション。SLとTPがない場合は、オーダーラインからドラッグして、好きなところに移動させるのです。最初のバリエーション。void ModifySlTp(double priceModify=0) { double sl=0,tp=0; if(TicketModifyOrder==0) { for(int i=0; i<OrdersTotal(); i++) { if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber) { if(MathAbs(OrderStopLoss()-priceModify)<30*Point()) {OnSL=true;} if(MathAbs(OrderTakeProfit()-priceModify)<30*Point()) {OnTP=true;} if(MathAbs(OrderOpenPrice()-priceModify)<30*Point()) {OnOrd=true;} { if(OnSL || OnTP || OnOrd) { TicketModifyOrder=OrderTicket(); break; } } } } } } if(TicketModifyOrder>0) { if(OrderSelect(TicketModifyOrder, SELECT_BY_TICKET)) { bool typOrdBuy = OrderType()==OP_BUY || OrderType()==OP_BUYSTOP || OrderType()==OP_BUYLIMIT; bool typOrdSell= OrderType()==OP_SELL || OrderType()==OP_SELLSTOP || OrderType()==OP_SELLLIMIT; if(OnOrd) { if(typOrdBuy) { sl = NormalizeDouble(OrderOpenPrice()-500*Point(),Digits); tp = NormalizeDouble(OrderOpenPrice()+500*Point(),Digits); } if(typOrdSell) { sl = NormalizeDouble(OrderOpenPrice()+500*Point(),Digits); tp = NormalizeDouble(OrderOpenPrice()-500*Point(),Digits); } } if(OnSL) {sl=NormalizeDouble(priceModify,Digits);tp=OrderTakeProfit();} if(OnTP) {tp=NormalizeDouble(priceModify,Digits);sl=OrderStopLoss();} ModifyOrder1(-1, sl, tp, 0); } } }2つ目の選択肢。void ModifySlTp(double priceModify=0) { double sl=0,tp=0; if(TicketModifyOrder==0) { for(int i=0; i<OrdersTotal(); i++) { if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber) { if(MathAbs(OrderStopLoss()-priceModify)<50*Point()) {OnSL=true;} if(MathAbs(OrderTakeProfit()-priceModify)<50*Point()) {OnTP=true;} if(MathAbs(OrderOpenPrice()-priceModify)<50*Point()) {OnOrd=true;} { if(OnSL || OnTP || OnOrd) { TicketModifyOrder=OrderTicket(); break; } } } } } } if(TicketModifyOrder>0) { if(OrderSelect(TicketModifyOrder, SELECT_BY_TICKET)) { bool typOrdBuy = OrderType()==OP_BUY || OrderType()==OP_BUYSTOP || OrderType()==OP_BUYLIMIT; bool typOrdSell= OrderType()==OP_SELL || OrderType()==OP_SELLSTOP || OrderType()==OP_SELLLIMIT; if(OnOrd) { if(typOrdBuy) { if(priceModify>OrderOpenPrice()) {tp=NormalizeDouble(priceModify,Digits);sl=OrderStopLoss();} if(priceModify<OrderOpenPrice()) {sl=NormalizeDouble(priceModify,Digits);tp=OrderTakeProfit();} } if(typOrdSell) { if(priceModify<OrderOpenPrice()) {tp=NormalizeDouble(priceModify,Digits);sl=OrderStopLoss();} if(priceModify>OrderOpenPrice()) {sl=NormalizeDouble(priceModify,Digits);tp=OrderTakeProfit();} } } if(OnSL) {sl=NormalizeDouble(priceModify,Digits);tp=OrderTakeProfit();} if(OnTP) {tp=NormalizeDouble(priceModify,Digits);sl=OrderStopLoss();} ModifyOrder1(-1, sl, tp, 0); } } } グローバル変数 OnSL, OnTp, OnOrdの宣言を忘れてはならない。また、TicketModifyOrderが リセットされるExpert Advisorでは、これらの変数のリセットを追加して ください。また、EAにおける一部の変数名や修正関数名を修正しました。感謝の気持ちを込めて、拍手を待っています。紳士は拍手して解散しましょう)。 khorosh 2016.02.21 12:34 #130 第3の選択肢も考えてみました。SLやTPを持ち運ぶのが苦手な方向けです。SLとTPを設定するアルゴリズムは以下の通りです:注文を一度クリックして選択し(チケットを定義します)、次にSLを設定したいチャートポイント(通常はローカル価格の最小値と最大値を超えたポイントです)を一度クリックする必要があります。同時に、SLは選択されたポイントに設定され、TPはSLのKt倍離れたポイントに設定されます。KtpはSLがSLより何倍大きいかであり、外部変数で定義される。TicketModifyOrderとOnOrdは、OnTick()のボディではなく、関数自体でリセットされるようになったことに注意してください。OnTick()本体でこれらの変数をリセットすることを削除する。このバリエーションでSLとTPをドラッグできるようにすることもできますが、考えるのが億劫です。必要であれば、1バリアントに切り替えればいいのです。そして、ボタン形式のスイッチ。void ModifySlTp2(double priceModify=0) { double sl=0,tp=0; for(int i=0; i<OrdersTotal(); i++) { if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber) { OnOrd=false; if(MathAbs(OrderOpenPrice()-priceModify)<30*Point()) {OnOrd=true;} if(OnOrd) { TicketModifyOrder=OrderTicket(); return; } } } } if(TicketModifyOrder>0) { if(OrderSelect(TicketModifyOrder, SELECT_BY_TICKET)) { bool typOrdBuy = OrderType()==OP_BUY || OrderType()==OP_BUYSTOP || OrderType()==OP_BUYLIMIT; bool typOrdSell= OrderType()==OP_SELL || OrderType()==OP_SELLSTOP || OrderType()==OP_SELLLIMIT; if(!OnOrd) { if(typOrdBuy) { sl = NormalizeDouble(priceModify,Digits); tp = NormalizeDouble(OrderOpenPrice()+Ktp*(OrderOpenPrice()-sl),Digits); } if(typOrdSell) { sl = NormalizeDouble(priceModify,Digits); tp = NormalizeDouble(OrderOpenPrice()-Ktp*(sl-OrderOpenPrice()),Digits); } ModifyOrder1(-1, sl, tp, 0); TicketModifyOrder = 0; } } } } 1...67891011121314 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
あるいは、キーパッドのボタンと組み合わせることもできます ;)
だから、ここが間違いなんです。注文の開始線からSLとTPの両方を引く必要がある場合、何を引けばいいのかが分からないという問題があるので、それはできない。そこで、実際のチャート上でカーソルの方向と同じように、キーボードキーを使うか、アクションの種類を設定するボタンを作成するかして、アクションの種類を特定する必要があるのです。最初のオプションは実際のチャートで使用されており、私の意見では最良である。
はい、クリアです。どういうことかというと、ストップがない場合は、注文自体のラインを引っ張れば、ラインを「引っ張った」ところにストップが設定されるということなんです。持ち帰り加工がない場合です。また、ストップとトーの両方の処理があるにもかかわらず、注文にどちらもない場合、注文線を引くとしたら、何を設定すればいいのでしょうか?テイクかストップか?
あわよくば
例:買いの場合:引き上げたらタップ、引き下げたらスル
あわよくば
例:買いの場合:引き上げたらタップ、引き下げたらスル
端末ではこのようになっています。そして、Buyストップをプロフィットゾーンに移動させること-それが、今回の議論です。
端末と同じように作れってことだよ。
端末でのやり方は、すでに説明したとおりです。今は、端末でどうしたらいいかということです。
ロシア語で書いているつもりです。
今朝、すっきりした頭で、解決策を見つけました。さらに、修正関数の余分なループを取り除きました。2つのバリエーションに対応した改造機能を作りました。
1) 注文にSLとTPが設定されていない場合、注文をクリックするとSLとTPが50ポイントでポップアップ表示されます。必要であれば、必要な場所にドラッグ&ドロップしてください。もし注文にすでにSLとTPがあれば、それを好きな場所にドラッグする。
2) 実際のチャートでのやり方のバリエーション。SLとTPがない場合は、オーダーラインからドラッグして、好きなところに移動させるのです。
最初のバリエーション。
2つ目の選択肢。
グローバル変数 OnSL, OnTp, OnOrdの宣言を忘れてはならない。また、TicketModifyOrderが リセットされるExpert Advisorでは、これらの変数のリセットを追加して ください。また、EAにおける一部の変数名や修正関数名を修正しました。
感謝の気持ちを込めて、拍手を待っています。紳士は拍手して解散しましょう)。
第3の選択肢も考えてみました。SLやTPを持ち運ぶのが苦手な方向けです。SLとTPを設定するアルゴリズムは以下の通りです:注文を一度クリックして選択し(チケットを定義します)、次にSLを設定したいチャートポイント(通常はローカル価格の最小値と最大値を超えたポイントです)を一度クリックする必要があります。同時に、SLは選択されたポイントに設定され、TPはSLのKt倍離れたポイントに設定されます。KtpはSLがSLより何倍大きいかであり、外部変数で定義される。TicketModifyOrderとOnOrdは、OnTick()のボディではなく、関数自体でリセットされるようになったことに注意してください。OnTick()本体でこれらの変数をリセットすることを削除する。このバリエーションでSLとTPをドラッグできるようにすることもできますが、考えるのが億劫です。必要であれば、1バリアントに切り替えればいいのです。そして、ボタン形式のスイッチ。