• 締切済み

MetaTraderで逆指値注文する方法は?

MetaTraderのEAプログラムで逆指値注文する方法を教えてください。 逆指値注文でのブレイクアウトを検証したいためです。 下記のように逆指値買い注文をする場合、Priceに逆指値の値をセットすればよいのでしょうか? OrderSend(Symbol(),OP_BUYSTOP,Lot,Price ・・・ また、このプログラムをStrategyTesterでテストする場合、モデルはEvery tick,ControlPoints,Open prices onlyの何れでも良いでしょうか? ※ブレイクアウト逆指値注文のサンプルプログラム等参考になるものがありましたら、アドバイス願います。

みんなの回答

回答No.1

仰るとおり、逆指値の価格をセットするだけで、発注できます。 ただし、業者によって、現在の価格と(逆)指値との隔たりが決められています(ODLは10 pips、121証券は20 pips)ので、ライブではその点に注意は必要かと思います。 サンプルプログラムは下記参考URLの"Breakout_Beta_3dmr.mq4"などいかがでしょうか。

参考URL:
http://www.abysse.co.jp/mt4/indicator_name_b.html

関連するQ&A

  • 逆指値注文の成行買い

    スイングです。 逆指値で、前日高値を1tick超えたところで成行買い注文を入れたとします。 例) 前日高値100円。 +1tickの101円で逆指値成行買い注文。 翌日、1tick超えたところで自分が発注した成行買いが発動したとします。 その瞬間に強烈な売り注文が入って値が一気に98円まで下げたとしたら、 101円以上ではなく、98円で成行の買いが約定する場合もあるのでしょうか?

  • MetaTraderで現在のtimeframeを取得する方法は?

    MetaTraderのEAプログラムで、現在EAを動かしているチャートの足(timeframe)の取得方法(プログラミング)を教えてください。 通貨ペアはSymbol()で取得できますが、timeflameもそのような関数はないでしょうか?

  • メタトレーダー(MT4)にて半自動売買のソフトを作成しております。

    メタトレーダー(MT4)にて半自動売買のソフトを作成しております。 プログラミングに行き詰まっておりますので、どなたか経験のある方ご存じの方がいらっしゃいましたらご教授下さいませ。 下記の様に指値売り又は指値買いのプログラムを作っております。 これは、ある条件のトラップを仕掛け、希望の指値に達すると売り注文または買い注文を行います。 このトラップを複数仕掛けております。 このうち一つでも決済されれば、あるものは損切りもしくは決済を行ったり、注文取消を行ったりしたいのです。 例えば95円で売り注文、ストップロスが「95+0.6」,決済値が「95-0.3」。 double pr1 = 95;  //例えば95円 chiket1 = OrderSend(Symbol(),OP_SELLLIMIT,lots ,pr1,3,pr1+0.6,pr1-0.3,"",123451,0,Red); chiket2 = OrderSend(Symbol(),OP_SELLLIMIT,lots ,pr2,3,pr2+0.6,pr2-0.3,"",123452,0,Red); chiket3 = OrderSend(Symbol(),OP_SELLLIMIT,lots ,pr3,3,pr3+0.6,pr3-0.3,"",123453,0,Red); chiket4 = OrderSend(Symbol(),OP_SELLLIMIT,lots ,pr4,3,pr4+0.6,pr4-0.3,"",123454,0,Red); chiket5 = OrderSend(Symbol(),OP_SELLLIMIT,lots ,pr5,3,pr5+0.6,pr5-0.3,"",123455,0,Red); 質問1.この注文のうち、どれが決済されたかが確認出来る方法もしくは関数が知りたいのです。 マジックナンバーもしくはチケットナンバーで判明出来れば有りがたいのですが。 出来れば質問2もお願いします。 質問2.指値注文の自動売買は、ストラテジーテスターにてビジュアルモードで検証出来ないので検証する方法があれば知りたい。(指値に達しても約定しない) 以上宜しくお願い致します。

  • MT4でのカウントダウン方式でのEAについて

    MT4初心者です。 サイバーエージェントMT4のデモトレードでEA作成にチャレンジしております。 EAのプログラムではストップロスの値幅とテイクプロフィットの値幅をexternでパラメーターに設定し、OrderSend関数の引数として代入していたのですが、サイバーエージェントではカウントダウン注文方式なので、エントリーの際にOrderSend関数でスリッページとストップロス、テイクプロフィットの値を0にしないとエントリーが出来ない事を知りました。 とりあえず、上記の値を0にしデモトレードをしてみたのですが、エントリーには成功しました。 ただ、エントリーは出来ても当然、指値・逆指値の注文が入らないので、エントリー後に注文を入れようと思い、OrderModfiyの関数を使ってみて下記の様なプログラムを組んでみたのですが、エントリー後もOCO注文は入りません。 MyOrderSendSL(OP_BUY, Lots, Ask, 0, 0, 0, COMMENT, MAGIC); OrderModify(OrderTicket(), 0, OrderOpenPrice()-SLpips*Point, OrderOpenPrice()+TPpips*Point, 0); 初心者の為、全くのおかど違いな事をしているのかも分からない状態です。 エントリー後、直ぐににオープンポジション(約定値)に対してのOCO注文(出来れば値幅をパラメーターとした注文)のプログラムの組み方をご存知の方がいらっしゃいましたら教えていただけますでしょうか。

  • MT4(MetaTrader4)のプログラムで

    MT4(MetaTrader4)のプログラム(Indicator)の書き方の質問です。 現在からさかのぼって、価格がボリンジャーバンドの「±1シグマ」の どちらに到達したのが最新かをオブジェクトで表示させたいのです。 たとえば、「+1シグマ」到達が最新なら「上矢印」を表示させる (逆になるまで、表示させたままにする)ような感じです。 iCustomでボリンジャーバンドのIndicatorを呼び出して、 PRICE_HIGHやPRICE_LOWとの云々...というイメージはあるのですが、 それ以上が進めません。 いろいろと検索してみましたが、それらしいのが見つからないので、 ご存知の方、よろしくお願いします。

  • MT4のSendOrderについて

    最近MetaTrader4(MT4)に興味を持ち始めたものです。 早速試しに簡単なEAを作ってみているのですが、 OrderSendを行う際に思う様に約定できずこまっています。 詳細としてはOrderSendにて、成行注文と同時に利益確定注文、 損切り注文をだしていますが、常にチケットが「-1」で約定する気配がありません。 問題となっている部分は利益確定と損切り注文の部分である可能性が非常に高いです。 通貨:EUR/USD デモ口座:OLD、Forex ※OLDは成行注文と利益確定、損切りを同時に出せない? 一部買い注文する部分のソースを抜粋します。 //損切、利確用変数初期化 double TakeProfit = 0.0020; double StopLoss = 0.0015; //現在の終値より損切、利確の値の計算 TakeProfit = Close[0] + TakeProfit; StopLoss = Close[0] - StopLoss; //注文 Ticket_L = OrderSend(Symbol(),OP_BUY,Lots,Ask,10,StopLoss,TakeProfit,Comments,MAGIC,0,Red); ちなみに「利益確定と損切り注文の部分である可能性が非常に高い」の理由としては 以下の様に、利益確定と損切りをしない注文を行うと正常に約定されるためです。 Ticket_L = OrderSend(Symbol(),OP_BUY,Lots,Ask,10,0,0,Comments,MAGIC,0,Red); 利益確定と損切り注文が取得ポジションに近すぎるのかな?とも少しおもっているのですが、 ストップレベルという値を取得するとわかるみたいな情報があったので、取得してみると、 「ストップレベル:1.00000000」この値についてもどう解釈すればよいのかが不明です。 この内容で質問として情報が足りているか少し不安ですが、ご教授お願いします。 (その他、実際のMT4口座選で、ここはオススメなどあれば教えてもらえるとうれしいです。)

  • mt4のプログラムについて

    プログラムのコンパイルは問題ありませんが、エラー130が出てバックテストが出来ない状況です。 原因を教えて頂けますか。 int start() { if(OrderTotal()==0){ ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,StopLoss,TakeProfit,Magic,0,Color) } //ordertotalがなければ成り行きでbuyを建てる if(OrdersTotal()==1){ if(OrderSelect(ticket,SELECT_BY_POS,MODETRADES)=1){ ticket=OrderSend(Symbol(),OP_SELLSTOP,Lots,OrderOpenPrice()-0.20*Point,Slippage,StopLoss,TakeProfit,Magic,0Color) } //ordertotalが1で、且つ約定ポジションと未約定ポジションの合計が1の場合、orderopenpriceから-20pip下がった所にsellstopの注文を入れる。 } 以上の様にeaを制作したところ、buyは問題なく建ちましたが、sellの注文がエラー130となり注文が出来ない状態です。 ポイントは20離しておりますので、ポイント制限には該当しておりません。 何故stop値が無効となるのでしょうか?

  • ★ MT4のEAで待ち時間を設定する ★

    いつもご質問に答えていただいてありがとうございます。 メタトレーダーのEAの自作に挑戦しているのですが うまく動作せず困っています。(注文が執行されない)。 EAの内容は、 ストップロスでポジションが無くなったあと、 5分間ウェイト時間をおいてから、 次の買いの条件になったら(BB下を割ったら) 買い注文を出す、というものです。 すいませんが何かヒントを教えてくださいませんでしょうか? Sleep関数を使ってもうまくいきませんでした… // ポジションチェック 無し if(CurrentPosition == -1){    if (BarCount != Bars) { BarCount = Bars; if (WaitTime != 0) WaitTime--; }   if(WaitTime <= 0)  {     //買いサイン      if(iClose(NULL,0,0) < iBands(NULL,0,20,2,0,PRICE_CLOSE,MODE_LOWER,0)){       //買いポジション       Ticket = OrderSend(Symbol(), OP_BUY, 1, Ask, 3, Ask-(200*Point), Ask+(400*Point), "Buy", 0, 0, Blue);      //ストップロスかかったとこでWaitTimeを5分にセットする WaitTime = 5;  }   } }

  • メタトレーダーについて

    メタトレーダーのEAの商材がけッこういろいろ販売されていますがなかにはバックテストのけッか取引明細が見れる商材サイトもありますが、それをみるとポジションを建てたらすぐに指値と逆指値をやるシステムもあるみたいですが、その指値と逆指値がピップスベースでいッていでおこなッているみたいなのですが、たとえば指値はポジションから10ピップスのところに指値して逆指値はポジションから70ピップス離れたところに逆指値してということでそれがポジションを持つたびにいッていで注文されているようなのですが、メタトレーダー自体は指値逆指値ともピップスベースでしか注文できない使用かはわかる人はいますか?もしピップスベースだと単純に値幅ベースの注文しかできないように思いますが、まあ普通はその証拠金に対しての値幅率に応じて注文すると思いますが、たとえばドル円が83.00で10%のあげは91.30になりますが、ユーロ円が100.00で10%あげは110.00になりますが、やはり証拠金がちがうだけで値幅がドル円が8.30でユーロ円が10.00になりますが、ここをどうしても値幅(ピップスベース)だとちょッと変な気がするのでやはり指値などはふつう値幅率での注文がふつうだと思いますが、たとえば日経平均が3万円ごろのときは当然値幅が大きいですし1万円台だと当然せまいですし、それを見ても当然値幅率で考えるのがふつうですが、そうするとメタトレーダーのEA自動売買を組む時の指値はピップスベースだけしかできないかわかる人はいますか?まあピップスベースだけの指値しかできないとなると単純に値幅だけの注文指値しか自動売買で組めないみれますが、自動売買は値幅率の指値逆指値で組むことは可能かわかる人はいますか?まあ値幅率でEAが組めないとなるとそこはメタトレーダー自動売買のけッてんだと思いますが。自分で指値するときは当然率ベースでやッているので・・・・・・・・。

  • 【MQL4】ZigZagの天底の値の取得

    最近MT4の入門書を買ってMQL4の勉強を始めた者です。よろしくお願いします。 EAでZigZagの天底を現在レートがブレイクアウトしたところでエントリーするシステムを作りたいのですが、ZigZagの頂点(底点)の値の取得の仕方がわかりません。 iCustomで標準搭載のZigZagを呼び出して条件式を書いてみましたが売買できませんでした。 (以下のような文です) double zig = iCustom(NULL, 0,"ZigZag",12,5,3,0,0); if(zig <Ask) { OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,"",0,0,Blue); } おそらく見当違いのことをしているのだとは思います。 私が知りたいことは以下の2点です。 1.一つ前のZigZagの頂点(底点)の値。 2.二つ前のZigZagの頂点(底点)の値。 どうかよろしくお願い致します。