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

このQ&Aのポイント
  • MT4初心者がカウントダウン方式のEA作成にチャレンジしています。ストップロスとテイクプロフィットの値を0にしないとエントリーが出来ないことに気づきました。OCO注文のプログラムについて教えてください。
  • MT4初心者がカウントダウン方式でのEA作成に挑戦していますが、注文が出来ない問題に直面しています。OCO注文のプログラムの組み方を教えていただけますか?
  • MT4のデモトレードでカウントダウン方式のEAを作成している初心者です。エントリーは成功しましたが、OCO注文が入らない問題に悩んでいます。OCO注文のプログラムについて教えてください。
回答を見る
  • ベストアンサー

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注文(出来れば値幅をパラメーターとした注文)のプログラムの組み方をご存知の方がいらっしゃいましたら教えていただけますでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • fhat6014
  • ベストアンサー率94% (34/36)
回答No.1

OrderModify()を使用する場合は、OrderSelect()で注文を指定する必要があります。

norinori109
質問者

お礼

お礼が遅くなり、申し訳ありません。 ご回答いただきありがとうございました。 OrderSelect()を使う必要があったのですね。 いろいろと試した結果、注文が入るようになりました。 ありがとうございました。

関連するQ&A

  • ★ 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;  }   } }

  • MT4の自作EAがうまく決済注文を出してくれない

    MT4の自作EAがうまく決済注文を出してくれません。新規注文用のMAのGC・DCで新規注文をだし、決済用のMAのGC・DCで決済注文をだす、EAなのですが、うまく決済注文がでず、テイクプロフィットとストップで決済してしまいます。2つのMAで、決済を確実にするにはどうしたらよいのでしょうか。たいへん困っています。よろしくお願いします。

  • MT4のEAに関して質問です

    MT4のEAに興味を持ち、以前もこのサイトに質問したことがあります。 http://okwave.jp/qa/q7406815.html ご回答いただいた書籍を購入し連休前ぐらいから勉強し始めて、EAのプログラムを見て正確にではありませんが、プログラムで実行しようとしていることが分かるようになってきました。 完璧には理解していないのですが、まずは習うより慣れろ的な感覚で、購入した書籍に記載されているサンプルプログラム(ボリンジャーバンドを使った逆張り)をちょっといじってバックテストをしてみました。 バックテストは一応、問題無く実行されましたが、プログラムが現在のローソク足でエントリーするものなので、 デモトレードで売買が成立する所を見てみたいと思い、実行してみましたが、 expert function calls are not allowed; 'MyLib'-'MyCurrentOrders' という文がターミナルウィンドのExpertsの部分に表示されて expert stoppedと表示され、EAが作動してないような感じです。 これは何が原因で起きているのでしょうか? 又、どのようにしたら、EAが作動するようになるのでしょうか? 因みに、プログラムの最初の行に#include<MyLib.mqh>と書いて、ライブラリー化された注文に関する関数のプrグラムファイルを読み込んでいると思います。 本来なら、プログラムを記載して質問した方が分かりやすいのでしょうが、本に記載されているものであり、著作権の問題に触れるのではと思って、プログラムは記載しておりませんが、お分かりの方がいらっしゃいましたら教えていただけますでしょうか。

  • メタトレーダー(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.指値注文の自動売買は、ストラテジーテスターにてビジュアルモードで検証出来ないので検証する方法があれば知りたい。(指値に達しても約定しない) 以上宜しくお願い致します。

  • GMOクリック証券のCFDについて

    決済注文と逆指値注文は個別に出すことはできず、ストップロスを置くにはOCO注文しかないと言われたのですがCFD(もしくは他の商品全般も?)ってそういうものなのでしょうか?BTCFXでは出来るので戸惑ってます。

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

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

  • FX会社の乗り換えについて

    現在、サイバーエージェントFXで取引をしています。 この会社は、取引ツール:Cymoの使い勝手は非常によいのですが、 逆指値を指定する場合、5銭以上でないと注文できず困っています。 http://www.cyberagentfx.jp/gaikaex/information/order/#04 他者への乗り換えを検討しているのですが、以下の条件を満たす 会社はありますでしょうか。 ((1)以外は、Cymoがすべて満たしているのですが、、、) (1)逆指値(OCO注文)に注文できない範囲がない(せめて1銭以上) (2)ワンクリックで成り行き発注+OCO注文が出来る。 (3)OCO注文は、事前に値幅を指定しておける。 (4)損益がリアルタイムで表示される。 (5)スプレッドが小さい(0.5銭が理想) 各社のHPを見ましたが、取引のこまかいルールについての説明が ないところが多く、困っています。 情報をご存知の方がいらっしゃいましたら、教えてください。

  • 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がエントリーしません

    上向きの移動平均線をローソク足が下から抜けたら買いエントリーし、4本値すべて移動平均線の下にいったらイグジット、売りは逆というEAをiCutomの本を見ながら作ってみたのですが、ポンド円の一分足で半日稼働したけれど全くエントリーしませんでした。どこがわるいのでしょうか?宜しくお願いします。(以下が内容です)因みにコンパイルしてエラーはありませんでした。 // マジックナンバーの定義 #define MAGIC 5582 // パラメーターの設定// extern int MA_Period = 21; // 短期移動平均線の期間設定 extern int MA_Shift = 0; // 移動平均を右にシフトするバー数の設定 extern int MA_Method = 0; // 移動平均方法の設定 extern double Lots = 1.0; // 取引ロット数 extern int Slip = 100; // 許容スリッページ数 extern string Comments = " "; // コメント // 変数の設定// int Ticket_L = 0; // 買い注文の結果をキャッチする変数 int Ticket_S = 0; // 売り注文の結果をキャッチする変数 int Exit_L = 0; // 買いポジションの決済注文の結果をキャッチする変数 int Exit_S = 0; // 売りポジションの決済注文の結果をキャッチする変数 double MA_2 = 0; double MA_1 = 0; int start() { MA_2 = iCustom(NULL,0,"Moving Averages",MA_Period,MA_Shift,MA_Method,0,2); MA_1 = iCustom(NULL,0,"Moving Averages",MA_Period,MA_Shift,MA_Method,0,1); // 買いポジションのエグジット if( MA_1 >= High[1] && ( Ticket_L != 0 && Ticket_L != -1 )) { Exit_L = OrderClose(Ticket_L,Lots,Bid,Slip,Red); if( Exit_L ==1 ) {Ticket_L = 0;} } // 売りポジションのエグジット if( MA_1 <= Low[1] && ( Ticket_S != 0 && Ticket_S != -1 )) { Exit_S = OrderClose(Ticket_S,Lots,Ask,Slip,Blue); if( Exit_S ==1 ) {Ticket_S = 0;} } // 買いエントリー if( MA_2 <= MA_1 && MA_1 > Open[1]&& MA_1 > Close[1] && ( Ticket_L == 0 || Ticket_L == -1 ) && ( Ticket_S == 0 || Ticket_S == -1 )) { Ticket_L = OrderSend(Symbol(),OP_BUY,Lots,Ask,Slip,0,0,Comments,MAGIC,0,Red); } // 売りエントリー if( MA_2 >= MA_1 && MA_1 < Open[1]&& MA_1 > Close[1] && ( Ticket_S == 0 || Ticket_S == -1 ) && ( Ticket_L == 0 || Ticket_L == -1 )) { Ticket_S = OrderSend(Symbol(),OP_SELL,Lots,Bid,Slip,0,0,Comments,MAGIC,0,Blue); } return(0); }

  • 日経225取引で指値、逆指値を期間指定

    現在取引している証券会社のシステムはOCO注文、決済等が当日のみです。 自分はスイング主体なので当日で終了してしまうシステムだと毎日ストップロスを入れないとなりません。 日経225取引で指値、逆指値を期間指定で行える証券会社を知りませんか?