[ARCHIVE!] フォーラムを散らかさないように、どんなルーキーの質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしではどこにも行けない - 4. - ページ 588 1...581582583584585586587588589590591592593594595...631 新しいコメント 削除済み 2012.12.07 09:43 #5871 lottamer: 1) 理解できる2) 今確認したところ、アルパリでは、ストップ&テイクはオープニングでは設定できず、その後の修正で設定するようです。3)戦略がある。 それなら、ご指摘のようにシンプルですね。修正後、チェックボックスを設定し、修正前の状態を確認します。これは、注文が1つである場合です。複数ある場合は、自分で注文を計上する必要があります。やり方は記事欄で。 削除済み 2012.12.07 09:47 #5872 TarasBY: 私たち(凡人)には理解できない!?;))) 私の真空をちょっとだけ読んでみる ))) Alexey Oreshkin 2012.12.07 10:13 #5873 ロールオーバーで注文が再開された場合、ストップ値とテイクアウェイ値にスリッページが発生するかどうかアドバイスいただけますか? また、ロールオーバー後のオープン価格と ストップ値の差が、レベリングしたストップ値より小さい場合、ストップ値はどのように設定されるのでしょうか?私の仕事は次のようなものです。成行注文がある場合、その注文がロールオーバーでオープンされたかどうかを確認し、オープンされた場合は、クローズされた前の注文のチケットを取得する必要があります。もしかしたら、どなたか検索アルゴリズムを教えてくれるかもしれませんね。 私は現在、以下のようにしています。1.最初のオープンオーダーを選択します。 2.23:40から00:20に開かれたのであれば、さらにこの注文をチェックし続ける(40分の窓は念のため取っているが、理論的には23:50から23:59まで取ることができる) 3.チケット、ストップ、テイクプライスを覚えている 4. 履歴で、コメントにスワップという言葉が含まれていて、通貨ペアが一致するすべてのクローズドオーダーを確認する 5.ストップとテイクオーバーのデータを比較し、一致すればここで必要なオーダーペアとなり、一致しない場合はステップ1に戻る elllfix 2012.12.07 10:39 #5874 答えは出ているのですが(個人的に)、歴史に残る投稿をします:))))----------------------------------が、ここからが面白いところ...。あるスクリプト(オンラインで入手)があるのですが、これは未決済注文を修正するものです。私のアイデアは、これを全体として捉え、ユーザー定義関数としてExpert Advisorに挿入し、必要なときに呼び出すことです。問題は、コンパイラーが "'MB_OK' - variable not defined G:\Program_Files_2MT4-demo-experts33.mq4 (153, 37)" -最後から3行目のエラーを表示することです。しかし、スクリプト自体をコンパイルすれば、すべてがクリアになるのです MV_OCの正体はわかったのですが、スクリプトでは動くのにExpert Advisorでは警告されるのはなぜでしょう?//+------------------------------------------------------------------+ //| Изменить стопы.mq4 | //| Мефодий | //| ppc-2@mail.ru | //+------------------------------------------------------------------+ #property copyright "Мефодий" #property link "ppc-2@mail.ru" #include <WinUser32.mqh> extern int StopLoss = 500; extern int TakeProfit = 500; // #property show_confirm // #property show_inputs //+------------------------------------------------------------------+ //| script program start function | //+------------------------------------------------------------------+ int start() { bool result; double stop_loss,take_profit,point,bid,ask, lotsize; int cmd, total, error, spread; string message; //---- total=OrdersTotal(); //---- for(int i=0; i<total; i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { //---- print selected order OrderPrint(); cmd=OrderType(); point=MarketInfo(OrderSymbol(),MODE_POINT); bid= MarketInfo(OrderSymbol(),MODE_BID); ask= MarketInfo(OrderSymbol(),MODE_ASK); spread=MarketInfo(OrderSymbol(),MODE_SPREAD); //---- buy or sell orders are considered if(cmd==OP_BUY || cmd==OP_SELL) { //---- modify first market order while(true) { if(cmd==OP_BUY){ string type = "buy"; if(OrderStopLoss()!=0)stop_loss=OrderStopLoss(); else stop_loss=OrderOpenPrice()-StopLoss*point; if(OrderTakeProfit()!=0)take_profit=OrderTakeProfit(); else take_profit=OrderOpenPrice()+TakeProfit*point; } else{ type = "sell"; if(OrderStopLoss()!=0)stop_loss=OrderStopLoss(); else stop_loss=OrderOpenPrice()+StopLoss*point; if(OrderTakeProfit()!=0)take_profit=OrderTakeProfit(); else take_profit=OrderOpenPrice()-TakeProfit*point; } result=OrderModify(OrderTicket(), OrderOpenPrice(), stop_loss, take_profit, 0, CLR_NONE); if(result!=true) { error=GetLastError(); Print("LastError = ",error);} else {error=0;} if(error==135) RefreshRates(); else break; } if(error==0){ message=message+"Ордер #"+OrderTicket()+" - "+type+" - "+DoubleToStr(OrderLots(), 2)+" успешно модифицирован.\n"; } else{ if(error == 130){string error_desc = " - Неправильные стопы";} else error_desc = ""; if(error != 1) message=message+"Ошибка модификации ордера #"+OrderTicket()+" - "+type+" - "+DoubleToStr(OrderLots(), 2)+". "+error_desc+" \n"; } //---- print modified order (it still selected after modify) OrderPrint(); continue; } } else { Print( "Error when order select ", GetLastError()); break;} } int ret=MessageBox(message, NULL, MB_OK); //if(ret==IDOK) return(0); //---- return(0); } //+------------------------------------------------------------------+ elllfix 2012.12.07 10:42 #5875 その結果、#include <WinUser32.mqh> という行が存在しなければならないことが判明しました。で、このファイルはincludeにあります。 elllfix 2012.12.07 10:49 #5876 われながらを使えば、修正時にフラグは必要ありません。 if条件(例えばcross-means)で、関数BUYとMODIFYを括弧{}で囲んで使用することを参考にすれば良いのです。といった具合に、両方のアクションに条件が伝搬していきます :))このように{My_buy ();My_modify (); }. TarasBY 2012.12.07 11:01 #5877 lottamer:このように{My_buy ();My_modify (); }. このようなプログラムコードの緩やかな解釈は、明確にする必要があります。 if (условие == true) { if (Tvoi_buy() == true) // как вариант {Tvoi_Modify();} }:))) elllfix 2012.12.07 11:06 #5878 TarasBY:このようなプログラムコードの緩やかな解釈には、明確な説明が必要です。:))) なんでまた、My_buy (非ブール変数) を TRUE-FALSE でチェックすることはできますか? 変更は確実に行われます - 注文はオープンです - ストップストックを設定する必要があります... --- 2012.12.07 11:12 #5879 lottamer:改造は確実に行われている - 注文はオープン - ストップスティークを設定する必要がある... では、なぜ括弧 { } の中に if (例えばクロス平均) を入れたのでしょうか。 elllfix 2012.12.07 11:21 #5880 目の前でお母さんになるんだ!」。(つまり、家長になる!) :))もうひとつは注文を修正すると、その後に通知ウィンドウがポップアップして、注文が正常に修正されたことを知らせてくれるようになったのです。さらに、そのウィンドウが表示された後にEAを無効にすると、メッセージウィンドウでOKを押した後、EAは常にその動作(この場合、ポジションを閉じる)を修復するようになります。面白いことに、EAが消えても、そのコマンドはまだ実行されているのです。少し考えて、行を削除する必要がありました。message=message+"注文変更エラー#"+OrderTicket()+" - "+type+" - "+DoubleToStr(OrderLots(), 2)+"."+error_desc+"\n"その後、すべてが元通りになりました。ウィンドウもなく、すべてが開いたり閉じたり...。が開いたり閉じたり...が開いたり閉じたり...:))))))))))))追伸を削除してもOrderPrint(); を続ける。変わらない......線と同じだ。if(ret==IDOK) return(0); あってもなくても変わらない。どうしてそうなのか [ARCHIVE!] Any rookie question, mql4アドバイザーを無料で書かせていただきます。 MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 1...581582583584585586587588589590591592593594595...631 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
1) 理解できる
2) 今確認したところ、アルパリでは、ストップ&テイクはオープニングでは設定できず、その後の修正で設定するようです。
3)戦略がある。
それなら、ご指摘のようにシンプルですね。修正後、チェックボックスを設定し、修正前の状態を確認します。これは、注文が1つである場合です。複数ある場合は、自分で注文を計上する必要があります。やり方は記事欄で。
私たち(凡人)には理解できない!?;)))
私の真空をちょっとだけ読んでみる )))
ロールオーバーで注文が再開された場合、ストップ値とテイクアウェイ値にスリッページが発生するかどうかアドバイスいただけますか? また、ロールオーバー後のオープン価格と ストップ値の差が、レベリングしたストップ値より小さい場合、ストップ値はどのように設定されるのでしょうか?
私の仕事は次のようなものです。成行注文がある場合、その注文がロールオーバーでオープンされたかどうかを確認し、オープンされた場合は、クローズされた前の注文のチケットを取得する必要があります。もしかしたら、どなたか検索アルゴリズムを教えてくれるかもしれませんね。 私は現在、以下のようにしています。
1.最初のオープンオーダーを選択します。
2.23:40から00:20に開かれたのであれば、さらにこの注文をチェックし続ける(40分の窓は念のため取っているが、理論的には23:50から23:59まで取ることができる)
3.チケット、ストップ、テイクプライスを覚えている
4. 履歴で、コメントにスワップという言葉が含まれていて、通貨ペアが一致するすべてのクローズドオーダーを確認する
5.ストップとテイクオーバーのデータを比較し、一致すればここで必要なオーダーペアとなり、一致しない場合はステップ1に戻る
答えは出ているのですが(個人的に)、歴史に残る投稿をします:))))
----------------------------------
が、ここからが面白いところ...。
あるスクリプト(オンラインで入手)があるのですが、これは未決済注文を修正するものです。
私のアイデアは、これを全体として捉え、ユーザー定義関数としてExpert Advisorに挿入し、必要なときに呼び出すことです。
問題は、コンパイラーが "'MB_OK' - variable not defined G:\Program_Files_2MT4-demo-experts33.mq4 (153, 37)" -最後から3行目のエラーを表示することです。
しかし、スクリプト自体をコンパイルすれば、すべてがクリアになるのです
MV_OCの正体はわかったのですが、スクリプトでは動くのにExpert Advisorでは警告されるのはなぜでしょう?
その結果、#include <WinUser32.mqh> という行が存在しなければならないことが判明しました。
で、このファイルはincludeにあります。
われながら
を使えば、修正時にフラグは必要ありません。
if条件(例えばcross-means)で、関数BUYとMODIFYを括弧{}で囲んで使用することを参考にすれば良いのです。
といった具合に、両方のアクションに条件が伝搬していきます :))
このように
{My_buy ();
My_modify (); }.
lottamer:
このように
{My_buy ();
My_modify (); }.
このようなプログラムコードの緩やかな解釈は、明確にする必要があります。
:)))このようなプログラムコードの緩やかな解釈には、明確な説明が必要です。
:)))なんで
また、My_buy (非ブール変数) を TRUE-FALSE でチェックすることはできますか?
変更は確実に行われます - 注文はオープンです - ストップストックを設定する必要があります...
改造は確実に行われている - 注文はオープン - ストップスティークを設定する必要がある...
目の前でお母さんになるんだ!」。(つまり、家長になる!) :))
もうひとつは
注文を修正すると、その後に通知ウィンドウがポップアップして、注文が正常に修正されたことを知らせてくれるようになったのです。さらに、そのウィンドウが表示された後にEAを無効にすると、メッセージウィンドウでOKを押した後、EAは常にその動作(この場合、ポジションを閉じる)を修復するようになります。面白いことに、EAが消えても、そのコマンドはまだ実行されているのです。
少し考えて、行を削除する必要がありました。
message=message+"注文変更エラー#"+OrderTicket()+" - "+type+" - "+DoubleToStr(OrderLots(), 2)+"."+error_desc+"\n"
その後、すべてが元通りになりました。ウィンドウもなく、すべてが開いたり閉じたり...。が開いたり閉じたり...が開いたり閉じたり...
:))))))))))))
追伸
を削除しても
を続ける。
変わらない......線と同じだ。
if(ret==IDOK) return(0);
あってもなくても変わらない。
どうしてそうなのか